資源描述:
《基于war-ftp1.65的緩沖區(qū)溢出攻擊》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、XX大學(xué)實(shí)驗(yàn)報告學(xué)院:計算機(jī)科學(xué)與技術(shù)專業(yè):軟件工程班級:XX姓名XX學(xué)號XX實(shí)驗(yàn)組實(shí)驗(yàn)時間2016/12/25指導(dǎo)教師XX成績實(shí)驗(yàn)項(xiàng)目名稱緩沖區(qū)溢出攻擊實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康?掌握緩沖區(qū)溢出的原理緩沖區(qū)指程序運(yùn)行期間,在內(nèi)存中分配的一個連續(xù)的區(qū)域,用于保存包括字符數(shù)組在內(nèi)的各種數(shù)據(jù)類型。溢出,指所填充的數(shù)據(jù)超出了原有的緩沖區(qū)邊界,并非法占據(jù)了另一段內(nèi)存區(qū)域。緩沖區(qū)溢出,即由于填充數(shù)據(jù)越界而導(dǎo)致原有流程的改變,攻擊者借此精心構(gòu)造填充數(shù)據(jù),讓程序轉(zhuǎn)而執(zhí)行特殊的代碼,最終獲取控制權(quán)。2掌握常用的緩沖區(qū)溢出方法緩沖區(qū)溢出攻擊的目的在于取得程序的控制
2、權(quán),為此,攻擊者必須達(dá)到如下的兩個目標(biāo):在程序的地址空間里安排適當(dāng)?shù)拇a;通過適當(dāng)?shù)某跏蓟拇嫫骱蛢?nèi)存,讓程序跳轉(zhuǎn)到入侵者安排的地址空間執(zhí)行。根據(jù)這兩個目標(biāo)來對緩沖區(qū)溢出攻擊進(jìn)行分類,緩沖區(qū)溢出攻擊分為代碼安排和控制程序執(zhí)行流程兩種方法:在程序的地址空間里安排適當(dāng)?shù)拇a的方法;控制程序轉(zhuǎn)移到攻擊代碼的方法。3理解緩沖區(qū)溢出的危害性緩沖區(qū)溢出的危害性具有破壞性與隱蔽性的特點(diǎn):破壞性體現(xiàn)在易使服務(wù)程序停止運(yùn)行,服務(wù)器死機(jī)甚至刪除服務(wù)器上的數(shù)據(jù)或者可以執(zhí)入并運(yùn)行攻擊代碼。隱蔽性體現(xiàn)在軟件漏洞難以避免,緩沖攻擊的shellcode的執(zhí)行不易
3、被察覺,攻擊的隨機(jī)性及不可預(yù)測性。4掌握防范和避免緩沖區(qū)溢出攻擊的方法通過操作系統(tǒng)使得緩沖區(qū)不可執(zhí)行,從而阻止攻擊者植入攻擊代碼;強(qiáng)制編寫正確的代碼;利用編譯器的邊界檢查來實(shí)現(xiàn)緩沖區(qū)的保護(hù);間接的方法是在程序指針失效前進(jìn)行完整性檢查等。實(shí)驗(yàn)環(huán)境windows10(緩沖區(qū)溢出攻擊端),windowsxpHome(緩沖區(qū)溢出被攻擊端)編程工具:codeblocks(用于發(fā)送exploit代碼),exlipse(用來寫測試代碼字符和轉(zhuǎn)換代碼字符)緩沖區(qū)漏洞軟件:war-ftp1.65系統(tǒng)程序調(diào)試工具:ollydbg網(wǎng)絡(luò)環(huán)境:使用vmare
4、承載windowsxp,window10與xp在同一網(wǎng)段下,可以進(jìn)行相互通信實(shí)驗(yàn)內(nèi)容1.分析war-ftpv1.65的基于用戶名的緩沖溢出漏洞實(shí)踐課件上已指出:向服務(wù)器發(fā)送超過480字節(jié)的用戶名可以觸發(fā)漏洞(即使用命令USERlongStringr),溢出之后,ESP中的內(nèi)容包含了longString中的部分內(nèi)容。需要對其進(jìn)行驗(yàn)證分析。2.分析war-ftpv1.65的堆棧結(jié)構(gòu)即分析堆棧中的EIP、ESP、EBP等的精確位置。3.構(gòu)造針對war-ftpv1.65的exploit根據(jù)上述的分析結(jié)果,參照實(shí)踐課件的例子,從網(wǎng)上(主
5、要是metasploit.com)獲取shellcode,構(gòu)造exploit。實(shí)驗(yàn)數(shù)據(jù)1驗(yàn)證War-ftpv1.65基于用戶名的緩沖溢出漏洞在WindowsXP中使用olldbg裝載war-ftp1.65,degugàrun,允許匿名登錄;在物理主機(jī)使用cuteftp登錄,用戶名使用依次增加的“AAA…”,當(dāng)用戶名長度超過480時,war-ftp1.65出現(xiàn)異常甚至崩潰退出。(正常情況):當(dāng)輸入用戶名的長度超過了485個字符時,系統(tǒng)崩潰:(崩潰時):直接處于卡死狀態(tài)此時的EIP,EBP,ESP如下圖所示:以上證據(jù)表示,war-ftp
6、的確存在登錄的緩沖區(qū)漏洞。2分析War-ftp1.65的堆棧結(jié)構(gòu)由于堆棧Ret里的地址被賦給EIP,CPU繼續(xù)執(zhí)行EIP所指向的命令,即EIP寄存器的內(nèi)容表示將要執(zhí)行的下一條指令地址,所以需要定位RET的精確位置。為了把shellcode放入預(yù)期的EIP指向的ESP或EBP,還需要定位ESP、EBP的精確位置。使用java程序生成長度為1000的不重復(fù)的字符串。隨后將生成的字符串使用cuteftp發(fā)送到被攻擊主機(jī),得到關(guān)于EIP,EBP,ESP的偏移位置如下:EIP:0x540x360x370x48對應(yīng)與H76T在登錄用戶字符串的4
7、85個位置開始ESP:qFju在登錄用戶字符串的493個位置開始EBP:NUof在登錄用戶字符串的581個位置開始結(jié)果表明,EIP指向第485位置(從0開始計數(shù)),ESP指向第493位置,EBP指向第581位置。從而可以得到war-ftp1.65的堆棧結(jié)構(gòu)圖如下:產(chǎn)生隨機(jī)不重復(fù)字符串生成代碼和16進(jìn)制轉(zhuǎn)換代碼:packagecn.fruitd.netsafe;importjava.util.Random;/***Helloworld!**/publicclassApp{publicstaticvoidmain(String[]arg
8、s){//for(inti=0;i<490;i++)//System.out.print(A);//System.out.println();//System.out.println(genarateString(1000));asc