實(shí)驗(yàn)2:緩沖區(qū)溢出_第1頁
實(shí)驗(yàn)2:緩沖區(qū)溢出_第2頁
實(shí)驗(yàn)2:緩沖區(qū)溢出_第3頁
實(shí)驗(yàn)2:緩沖區(qū)溢出_第4頁
實(shí)驗(yàn)2:緩沖區(qū)溢出_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、實(shí)驗(yàn)二:緩沖區(qū)溢出國家計(jì)算機(jī)網(wǎng)絡(luò)入侵防范中心內(nèi)容摘要實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)工具實(shí)驗(yàn)步驟實(shí)驗(yàn)報(bào)告1.實(shí)驗(yàn)?zāi)康恼莆站彌_區(qū)溢出的原理掌握常用的緩沖區(qū)溢出方法理解緩沖區(qū)溢出的危害性掌握防范和避免緩沖區(qū)溢出攻擊的方法2.實(shí)驗(yàn)工具溢出對象:CCProxy 6.2 (課上分析)war- (自己分析)3CT 2.0.1 (自己分析)調(diào)試工具:CDB/NTSD/WinDbg:這三個(gè)工具都包含在Debugging Tools for Windows中(網(wǎng)上有下載)OllyDBG/IDAPro etc.需要使用高級語言編程虛擬機(jī)(可選,自行安裝)3.實(shí)驗(yàn)步驟介紹CCProxy 6.2CCProxy 6.2緩沖區(qū)溢出漏洞說明C

2、CProxy 6.2緩沖區(qū)溢出漏洞演示CCProxy 6.2緩沖區(qū)溢出漏洞利用3.1 介紹CCProxyCCProxy因其設(shè)置簡單和使用方便等特點(diǎn),成為國內(nèi)最受歡迎的代理服務(wù)器軟件。CCProxy不但支持常見的HTTP和SOCKS代理,而且還支持FTP和Telnet這類不常用的協(xié)議及其它協(xié)議。3.2 漏洞說明CCProxy在代理Telnet協(xié)議時(shí),可以接受Ping命令Ping命令格式:ping hostnamern當(dāng)hostname的長度大于或者等于1010字節(jié)時(shí),CCProxy 6.2會發(fā)生緩沖區(qū)溢出,導(dǎo)致程序崩潰3.3 漏洞演示在目標(biāo)主機(jī)運(yùn)行CCProxy,使用默認(rèn)設(shè)置運(yùn)行CCProxy的

3、機(jī)器IP是29使用telnet命令連接CCProxy:telnet 29 23返回信息:3.3 漏洞演示輸入ping命令,后接畸形數(shù)據(jù):ping AAAA在ping命令后接10個(gè)字符A,觀察返回信息將字符A的數(shù)量變?yōu)?00個(gè)、1000個(gè)、2000個(gè),觀察返回信息如果終端提示“Host not found”,說明CCProxy正確地處理了這個(gè)畸形數(shù)據(jù),仍工作正常如果終端提示“失去了跟主機(jī)的連接”,表明CCProxy已經(jīng)崩潰3.3 漏洞演示輸入1000個(gè)A輸入10個(gè)A3.3 漏洞演示輸入2000個(gè)A3.4 漏洞利用于是,我們可以考慮利用CCProxy 6.2的這個(gè)緩沖區(qū)溢出漏洞,利用ping命令向

4、其發(fā)送一個(gè)長的字符串,溢出局部變量,覆蓋RET的位置,從而實(shí)現(xiàn)程序跳轉(zhuǎn)。定位RET尋找跳轉(zhuǎn)指令地址構(gòu)造shellcode定位shellcode存放位置 編寫攻擊程序局部變量n局部變量1EBPRET函數(shù)實(shí)參1函數(shù)實(shí)參m函數(shù)棧布局3.4.1 定位RET在目標(biāo)主機(jī)上運(yùn)行CCProxy用CDB將其掛起cdb pn ccproxy.exe3.4.1 定位RET輸入g繼續(xù)運(yùn)行在攻擊主機(jī)上按前面所述telnet到目標(biāo)主機(jī)上,并通過ping命令把2000個(gè)A組成的字符串發(fā)送到CCProxy時(shí),CDB捕捉到CCProxy的Access Violation事件3.4.1 定位RET可以發(fā)現(xiàn),EIP的內(nèi)容為(字符A

5、的ASCII碼是0 x41)這是因?yàn)闂V写娣臨ET值的地方已經(jīng)被覆蓋,當(dāng)函數(shù)返回時(shí),就將這個(gè)值彈出到EIP寄存器EIP中存放的是程序下一條指令的地址。但程序在0 x41414141地址處找不到可執(zhí)行的指令,因此報(bào)錯(cuò)很容易想到,如果覆蓋RET位置的不是0 x41414141,而是指向某個(gè)跳轉(zhuǎn)指令(eg. Jmp esp)的地址呢?3.4.1 定位RET查看一下此時(shí)各寄存器中的內(nèi)容ESP和ESI指向的內(nèi)容都有我們植入的字符串3.4.1 定位RET我們選擇ESP寄存器來實(shí)現(xiàn)程序流程跳轉(zhuǎn)即:將shellcode放在ESP寄存器中,然后在RET位置填充一條指向jmp esp指令的地址,于是函數(shù)返回時(shí),就

6、能執(zhí)行jmp esp,跳轉(zhuǎn)到ESP中的shellcode上運(yùn)行定位:緩沖區(qū)有多大? RET位置在哪里?3.4.1 定位RET利用一串不重復(fù)的字符填充緩沖區(qū),然后查看覆蓋RET的字符串,計(jì)算它們在整個(gè)字符串中的位置,從而得出緩沖區(qū)的大小及RET的偏移通過patternCreate.pl來生成不重復(fù)的字符3.4.1 定位RET3.4.1 定位RETTelnet到目標(biāo)主機(jī),將這串字符串通過ping命令發(fā)送給CCProxy,CDB捕捉到異常3.4.1 定位RETEIP寄存器的值為:0 x68423768通過patternOffset.pl計(jì)算出它在整個(gè)長為2000的字符串中的偏移是10123.4.1

7、定位RET這說明,RET相對緩沖區(qū)的偏移大小是1012字節(jié)。由于EBP占4字節(jié),故存放局部變量的緩沖區(qū)大小為1008字節(jié)。3.4.2 尋找jmp指令地址前面說到,我們選擇通過jmp esp來實(shí)現(xiàn)程序跳轉(zhuǎn),也就是說,要在RET的位置放置jmp esp指令的地址,那么,到哪里找jmp esp指令呢?最好是能在系統(tǒng)中找到現(xiàn)成的,而不需要我們重新再構(gòu)造事實(shí)上,在Windows系統(tǒng)的許多DLL中都能找到j(luò)mp esp這樣一條指令,一個(gè)通用的地址是0 x7ffa45123.4.2 尋找jmp指令地址前面分析,ping后接字符串的1012字節(jié)位置開始的4個(gè)字節(jié)將覆蓋RET于是,我們便可以在字符串的這個(gè)位置上

8、填充0 x120 x450 xfa0 x7f程序運(yùn)行到此,就會轉(zhuǎn)向地址0 x7ffa4512找到j(luò)mp esp指令并執(zhí)行,其流程發(fā)生變化3.4.3 構(gòu)造shellcode所謂shellcode就是一段能夠完成特定功能的機(jī)器碼,因其最初的功能為獲得目標(biāo)主機(jī)的一個(gè)shell而得名由于受目標(biāo)主機(jī)的緩沖區(qū)大小限制,shellcode長度一般越小越好Shellcode一般構(gòu)造步驟:用C語言實(shí)現(xiàn)功能將其修改為帶有shellcode特點(diǎn)的匯編(精通匯編語言的人可直接使用匯編語言編寫程序)根據(jù)匯編程序得到機(jī)器碼形式的shellcode3.4.3 構(gòu)造shellcode提供了許多通用的Shellcode3.4.

9、3 構(gòu)造shellcode在目標(biāo)主機(jī)中添加一個(gè)用戶賬號hack3.4.4 定位shellcode存放位置我們要把shellcode放置在程序崩潰時(shí)ESP指向的地址處那么,程序崩潰時(shí),ESP指向什么位置呢?同樣,我們可以用定位RET偏移的方法來定位ESP指向的位置3.4.4 定位shellcode存放位置用CDB掛起CCProxy.exe利用patternCreate.pl生成長為2000的字符串用ping命令向目標(biāo)主機(jī)發(fā)送這個(gè)字符串在CDB捕捉到CCProxy.exe的崩潰事件時(shí),查看ESP的內(nèi)容用patternOffset.pl計(jì)算出它在整個(gè)長為2000的字符串中的偏移3.4.4 定位she

10、llcode存放位置這說明ESP指向字符串的第4個(gè)字節(jié)因此,我們把shellcode放在字符串的第4個(gè)字節(jié)處由于這段shellcode長度只有476字節(jié),而緩沖區(qū)大小為1012字節(jié),足夠容納下shellcode構(gòu)造好的exploit的結(jié)構(gòu)如下所示:3.4.5 編寫攻擊程序Socket編程連接目標(biāo)主機(jī)(connect)構(gòu)造溢出字符串(即構(gòu)造后接shellcode的ping命令:ping shellcodern)向目標(biāo)主機(jī)發(fā)送溢出字符串(send)關(guān)閉連接3.4.5 編寫攻擊程序運(yùn)行攻擊程序在目標(biāo)主機(jī)上查看攻擊效果4. 實(shí)驗(yàn)說明可任選CCProxy 6.2/war- 2.0.1進(jìn)行溢出實(shí)驗(yàn)截止時(shí)間

11、:2010-11-13 3(暫定)實(shí)驗(yàn)分值:20分選擇CCProxy:滿分按18分計(jì)選擇war-ftp:滿分按20分計(jì)選擇3CT :滿分按20分計(jì)4. 實(shí)驗(yàn)說明CCProxyCCProxy官方發(fā)現(xiàn)CCProxy 6.2的這個(gè)ping緩沖區(qū)溢出漏洞后,對其進(jìn)行了修補(bǔ),當(dāng)ping請求超過255字節(jié)時(shí),會自動(dòng)截?cái)唷2贿^修補(bǔ)后的CCProxy版本號未變因此,在網(wǎng)上下載的CCProxy 6.2有可能是已修補(bǔ)了該漏洞的程序4. 實(shí)驗(yàn)說明War-ftpwar-ftp漏洞提示:向服務(wù)器發(fā)送超過480字節(jié)的用戶名可以觸發(fā)漏洞(即使用命令USER longStringrn),溢出之后,ESP中的內(nèi)容包含了longString中的部分內(nèi)容4. 實(shí)驗(yàn)說明3CT軟件名稱:3CT影響版本:Current version:2.0.1漏洞描述:畸形的傳輸模式可以

溫馨提示

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

評論

0/150

提交評論