UNIX下的緩沖區(qū)溢出深度防御體系_第1頁(yè)
UNIX下的緩沖區(qū)溢出深度防御體系_第2頁(yè)
UNIX下的緩沖區(qū)溢出深度防御體系_第3頁(yè)
UNIX下的緩沖區(qū)溢出深度防御體系_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第第頁(yè)UNIX下的緩沖區(qū)溢出深度防御體系UNIX下的緩沖區(qū)溢出深度防御體系

發(fā)表于:2023-06-09來(lái)源::點(diǎn)擊數(shù):標(biāo)簽:UnixUNIX防御體系緩沖區(qū)深度

談及防御之前首先簡(jiǎn)要回顧一下緩沖區(qū)溢出的攻擊大系:◆棧溢出(stacksmashing)未檢查輸入緩沖區(qū)長(zhǎng)度,導(dǎo)致數(shù)組越界,覆蓋棧中局部變量空間之上的棧楨指針%ebp以及函數(shù)返回地址retaddr,當(dāng)函數(shù)返回執(zhí)行ret指令時(shí),retaddr從

談及防御之前

首先簡(jiǎn)要回顧一下緩沖區(qū)溢出的攻擊大系:

◆棧溢出(stacksmashing)

未檢查輸入緩沖區(qū)長(zhǎng)度,導(dǎo)致數(shù)組越界,覆蓋棧中局部變量空間之上的棧楨指針%ebp以及函數(shù)返回地址retaddr,當(dāng)函數(shù)返回執(zhí)行ret指令時(shí),retaddr從棧中彈出,作為下一條指令的地址賦給%eip寄存器,繼而改變?cè)绦虻膱?zhí)行流程指向我們的shellcode。

◆堆溢出(malloc/freeheapcorruption)

一種是和傳統(tǒng)的棧溢出一樣,當(dāng)輸入超出malloc()預(yù)先分配的空間大小,就會(huì)覆蓋掉這段空間之后的一段存儲(chǔ)區(qū)域,如果該存儲(chǔ)區(qū)域有一個(gè)重要的變量比如euid,那么我就可以用它來(lái)攻擊。另一種是典型的double-free堆腐敗,在內(nèi)存回收操作中,合并相鄰空閑塊重新插入雙向鏈表時(shí)會(huì)有一個(gè)寫(xiě)4字節(jié)內(nèi)存的操作,如果弱點(diǎn)程序由于編程錯(cuò)誤free()一個(gè)不存在的塊,我們就可以精心偽造這個(gè)塊,從而覆蓋任何我們想要的值:函數(shù)的返回地址、庫(kù)函數(shù)的.plt地址等

◆格式化字符竄漏洞(formatstringvulnerability)

如果格式竄由用戶定制,攻擊者就可以任意偽造格式竄,利用*printf()系列函數(shù)的特性就可以窺探堆??臻g的內(nèi)容,超常輸入可以引發(fā)傳統(tǒng)的緩沖區(qū)溢出,或是用”%n”覆蓋指針、返回地址等。

◆整形變量溢出(integervariableoverflow)

利用整數(shù)的范圍、符號(hào)等問(wèn)題觸發(fā)安全漏洞,大多數(shù)整形溢出不能直接利用,但如果該整形變量決定內(nèi)存分配等操作,我們就有可能間接利用該漏洞。

◆其他的攻擊手法(others)

只能算是手法,不能算是一種單獨(dú)的類別。利用ELF文件格式的特性如:覆蓋.plt(過(guò)程連接表)、.dtor(析構(gòu)函數(shù)指針)、.got(全局偏移表)、return-to-libc(返回庫(kù)函數(shù))等的方式進(jìn)行攻擊。

一、編譯保護(hù)技術(shù)

◆Stackguard

因?yàn)榫彌_區(qū)溢出的通常都會(huì)改寫(xiě)函數(shù)返回地址,stackguard是個(gè)編譯器補(bǔ)丁,它產(chǎn)生一個(gè)"canary"值(一個(gè)單字)放到返回地址的前面,如果當(dāng)函數(shù)返回時(shí),發(fā)現(xiàn)這個(gè)canary的值被改變了,就證明可能有人正在試圖進(jìn)行緩沖區(qū)溢出攻擊,程序會(huì)立刻響應(yīng),發(fā)送一條入侵警告消息給syslogd,然后終止進(jìn)程。"canary"包含:NULL(0x00),CR(0x0d),LF(0x0a)和EOF(0xff)四個(gè)字符,它們應(yīng)該可以阻止大部分的字符串操作,使溢出攻擊無(wú)效。一個(gè)隨機(jī)數(shù)canary在程序執(zhí)行的時(shí)候被產(chǎn)生。所以攻擊者不能通過(guò)搜索程序的二進(jìn)制文件得到"canary"值。如果/dev/urandom存在,隨機(jī)數(shù)就從那里取得。否則,就從通過(guò)對(duì)當(dāng)前時(shí)間進(jìn)行編碼得到。其隨機(jī)性足以阻止絕大部分的預(yù)測(cè)攻擊。Immunix系統(tǒng)為采用stackguard編譯的RedHatLinux,但stackguard所提供的保護(hù)并非絕對(duì)安全,滿足一些條件就可以突破限制:如覆蓋一個(gè)函數(shù)指針、可能存在的exit()或_exit()系統(tǒng)調(diào)用地址、GOT等。

Stackguard官方鏈接:

/

◆Stackshield

StackShield使用了另外一種不同的技術(shù)。它的做法是創(chuàng)建一個(gè)特別的堆棧用來(lái)儲(chǔ)存函數(shù)返回地址的一份拷貝。它在受保護(hù)的函數(shù)的開(kāi)頭和結(jié)尾分別增加一段代碼,開(kāi)頭處的代碼用來(lái)將函數(shù)返回地址拷貝到一個(gè)特殊的表中,而結(jié)尾處的代碼用來(lái)將返回地址從表中拷貝回堆棧。因此函數(shù)執(zhí)行流程不會(huì)改變,將總是正確返回到主調(diào)函數(shù)中。在新的版本中已經(jīng)增加了一些新的保護(hù)措施,當(dāng)調(diào)用一個(gè)地址在非文本段內(nèi)的函數(shù)指針時(shí),將終止函數(shù)的執(zhí)行。

Stacksh

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論