緩沖區(qū)溢出漏洞攻擊——Vulnserver上手指南 |
發(fā)布時(shí)間: 2012/5/28 7:32:17 |
本篇教程的內(nèi)容將以Vulnserver應(yīng)用程序中一個(gè)已知緩沖區(qū)溢出漏洞的攻擊過(guò)程為主。Vulnserver是一款Windows服務(wù)器應(yīng)用程序,其中包含一系列可供利用的緩沖區(qū)溢出漏洞,旨在為大家在學(xué)習(xí)和實(shí)踐基本的fuzzing、調(diào)試以及開(kāi)發(fā)技能方面提供必要的輔助。關(guān)于Vulnserver的更多信息,例如下載鏈接等,請(qǐng)從以下網(wǎng)址處查看:http://grey-corner.blogspot.com/2010/12/introducing-vulnserver.html 。 本篇教程將介紹如何確定某個(gè)特定的、基于堆棧的溢出漏洞是否被利用,以及如何進(jìn)一步挖掘溢出漏洞的價(jià)值。不過(guò)初始發(fā)現(xiàn)漏洞的過(guò)程并不包含在本教程中。如果大家有興趣了解此類漏洞的尋獲方法,不妨查閱我們此前發(fā)表過(guò)的文章: http://resources.infosecinstitute.com/intro-to-fuzzing/ http://resources.infosecinstitute.com/fuzzer-automation-with-spike/ 本教程將假設(shè)讀者具備一定的技術(shù)水平,例如掌握了使用OllyDbg或Immunity Debugger調(diào)試程序的使用方法,以及X86匯編語(yǔ)言的相關(guān)基本知識(shí)。對(duì)于剛剛?cè)腴T的朋友們來(lái)說(shuō),他們可能覺(jué)得自己需要對(duì)上述內(nèi)容進(jìn)行集中復(fù)習(xí),那么下面的鏈接能夠提供大家所需的必要知識(shí): http://resources.infosecinstitute.com/debugging-fundamentals-for-exploit-development/ http://resources.infosecinstitute.com/in-depth-seh-exploit-writing-tutorial-using-ollydbg/ 最后,大家還需要掌握如何利用基于堆棧的緩沖區(qū)在溢出方面的基本知識(shí)。特別是我們將在下文中談到的特定溢出情況,將會(huì)用到一些相對(duì)比較高級(jí)的調(diào)試器應(yīng)用及開(kāi)發(fā)技術(shù),此外在本系列文章的前幾篇中所涉及到的技能也會(huì)被用到。大家可以從下面的鏈接中查看使基于基本堆棧的溢出方法: http://resources.infosecinstitute.com/stack-based-buffer-overflow-tutorial-part-1-%e2%80%94-introduction/ http://resources.infosecinstitute.com/stack-based-buffer-overflow-tutorial-part-2-%e2%80%94-exploiting-the-stack-overflow/ http://resources.infosecinstitute.com/stack-based-buffer-overflow-tutorial-part-3-%e2%80%94-adding-shellcode/ 其它前面沒(méi)有提及,但最好在實(shí)踐前先行閱讀的Vulnserver系列其它文章可以從下面的鏈接中找到: http://resources.infosecinstitute.com/seh-exploit/ 系統(tǒng)要求及安裝 本教程的實(shí)踐過(guò)程會(huì)用到以下軟件: ◆一套32位Windows系統(tǒng)。我強(qiáng)烈建議大家采用最新的Windows桌面系統(tǒng),例如Windows XP SP2、Windows Vista或是Windows 7,因?yàn)檫@些系統(tǒng)都經(jīng)過(guò)了我個(gè)人的親自測(cè)試。Windows 2000桌面版以及服務(wù)器版系統(tǒng)可能也沒(méi)問(wèn)題,但我不打包票。 ◆Windows系統(tǒng)中的Vulnserver。大家可以從下面的鏈接中獲取該程序的相關(guān)信息(使用前請(qǐng)?jiān)敿?xì)閱讀)并下載:http://grey-corner.blogspot.com/2010/12/introducing-vulnserver.html ◆Windows系統(tǒng)中的OllyDbg 1.10。如果各位愿意,也可以使用Immunity Debugger,不過(guò)這樣一來(lái)大家的顯示結(jié)果可能會(huì)與教程中的情況略有不同,而且在本教程中與OllyDbg相關(guān)的部分插件可能無(wú)法運(yùn)行。OllyDbg可通過(guò)下述鏈接獲取: http://www.ollydbg.de/ ◆Perl腳本解釋器實(shí)例。大家可以將其運(yùn)行于自己的Windows或是Linux攻擊系統(tǒng)中。Linux系統(tǒng)應(yīng)該是已經(jīng)預(yù)安裝過(guò)Perl了,但如果各位想在Windows中進(jìn)行,請(qǐng)從以下鏈接中獲取免費(fèi)下載:http://www.activestate.com/activeperl ◆Metasploit 4的最新副本。它同樣可以運(yùn)行于Windows或者Linux攻擊系統(tǒng)中,不過(guò)我個(gè)人建議采用Linux系統(tǒng)加以處理,具體細(xì)節(jié)請(qǐng)查看后文。Metaspoit的Windows或Linux版本可從下列網(wǎng)址處獲得:http://www.metasploit.com/ ◆Netcat副本。大多數(shù)Linux系統(tǒng)應(yīng)該已經(jīng)預(yù)安裝過(guò)了,而其Windows版本可以在此鏈接中找到:http://joncraton.org/blog/46 ◆如果大家想安裝本文中所提到的shellcode,則必須具備一套安裝過(guò)的nasm副本,獲取地址為:http://www.nasm.us/。其實(shí)nasm的使用范圍很窄,包括在本教程中也同樣,因此只作為備選考量。不過(guò)如果大家是打算定期編寫溢出漏洞,那么nasm絕對(duì)是各位工具箱中必不可少的?汀 我在編寫本教程時(shí)所使用的個(gè)人設(shè)置是一套能夠運(yùn)行Metasploit命令及Perl腳本的Linux主機(jī);操作系統(tǒng)為Ubuntu,而且Vulnserver運(yùn)行于虛擬機(jī)中的Windows XP SP2當(dāng)中。也就是說(shuō),本文中所涉及的命令語(yǔ)法所指向的都是Linux系統(tǒng);如果大家使用的是Windows,請(qǐng)適當(dāng)根據(jù)個(gè)人情況對(duì)命令加以修改。我之所以選擇在Linux上運(yùn)行Metasploit與Perl,是因?yàn)镸etasploit Framework等組件會(huì)被大部分常用的Windows系統(tǒng)防病毒解決方案所破壞。 如果各位的Windows系統(tǒng)運(yùn)行著防火墻或是HIPS(即主機(jī)入侵防御系統(tǒng)),大家可能需要對(duì)白名單進(jìn)行一些相應(yīng)設(shè)置,并適當(dāng)?shù)亟媚承┍Wo(hù)功能,這樣本教程才能順利執(zhí)行。我們將創(chuàng)建一個(gè)溢出漏洞,使得Vulnserver在新綁定的TCP端口處監(jiān)聽(tīng)shell會(huì)話,而這很可能導(dǎo)致防火墻及HIPS軟件無(wú)法正常工作。某些HIPS軟件也許能夠?qū)崿F(xiàn)ASLR(即地址空間布局隨機(jī)化)功能,但這同樣會(huì)帶來(lái)問(wèn)題。討論防火墻與HIPS的旁路技術(shù)有點(diǎn)超出本教程的涵蓋范圍,因此請(qǐng)以適當(dāng)?shù)姆绞郊右耘渲靡悦獍l(fā)生上述問(wèn)題。 為了本教程的順利展開(kāi),我同樣假設(shè)各位的Windows系統(tǒng)沒(méi)有為所有程序設(shè)置硬件DEP(即數(shù)據(jù)執(zhí)行保護(hù))。在Windows XP、Windows Vista以及Windows 7中,默認(rèn)的設(shè)置就是只為基本W(wǎng)indows程序及服務(wù)項(xiàng)目配置硬件DEP,因此除非大家曾經(jīng)刻意修改過(guò)自己系統(tǒng)中的DEP設(shè)定,否則默認(rèn)情況應(yīng)該是處于正確的狀態(tài)。要了解更多信息請(qǐng)參閱以下鏈接: http://en.wikipedia.org/wiki/Data_Execution_Prevention http://support.microsoft.com/kb/875352 我的Windows Vulnserver系統(tǒng)在192.168.56.101地址的9999 TCP端口處進(jìn)行監(jiān)聽(tīng),因此該目標(biāo)地址就是我在運(yùn)行Perl腳本時(shí)所要使用的。如果大家的Vulnserver實(shí)例運(yùn)行在其它位置,請(qǐng)確保該值與自己的實(shí)際情況保持一致。 關(guān)于使用不同Windows操作系統(tǒng)版本的說(shuō)明: 請(qǐng)注意,如果大家沒(méi)有像我一樣使用Windows XP SP2系統(tǒng)運(yùn)行Vulnserver,那么各位在為自己的溢出漏洞設(shè)定緩沖區(qū)大小時(shí)所使用的值可能與我所做的有所不同。不過(guò)只要大家確保跟隨我的緩沖區(qū)定義流程,而不是簡(jiǎn)單地復(fù)制我所使用的具體數(shù)值,那么整個(gè)過(guò)程應(yīng)該可以順利完成。我將在以下教程的必要位置處向大家再次強(qiáng)調(diào)這一問(wèn)題。 流程概述 我們將使用以下高端處理流程以完全控制該程序: ◆控制掌握著CPU執(zhí)行代碼的EIP寄存器,將我們所選擇的值加入其設(shè)定。 ◆確定哪些代碼能夠完成我們溢出漏洞的目標(biāo),在目標(biāo)系統(tǒng)中尋獲或是添加進(jìn)程序,并將EIP重新 定向至我們所選擇的代碼。 正如我們?cè)诶镁彌_區(qū)溢出漏洞系列之前的文章中所提到(詳見(jiàn)簡(jiǎn)介部分的鏈接),所需步驟列表既負(fù)責(zé)實(shí)施層面的寫入及溢出效果,又可以確定目標(biāo)漏洞是否能夠被利用。我們將對(duì)給定漏洞加以評(píng)估,以審核這些特定步驟能否奏效,而一旦得到了肯定的結(jié)論,我們就會(huì)明確目標(biāo)的可行性并進(jìn)一步找尋將理論付諸實(shí)踐的具體方式。一直關(guān)注本系列文章的讀者可能會(huì)注意到,上面所描述的整個(gè)流程與此前相比并無(wú)變化。盡管工作過(guò)程本身變得愈發(fā)復(fù)雜,但在執(zhí)行的一般性基礎(chǔ)步驟方面卻始終保持著一致。惟一不同的只是在具體實(shí)施的細(xì)節(jié)技術(shù)上有所變動(dòng)。 正如在介紹部分中所說(shuō),大家應(yīng)該先在緩沖區(qū)溢出漏洞的一般寫入方式上有所了解,然后再嘗試本教程。我們今天所要關(guān)注的是一種特定的漏洞,而要利用它進(jìn)行工作則需要一種新的技術(shù)。本教程的重點(diǎn),正是指導(dǎo)大家如何實(shí)施這一新技術(shù),并且探明在何種情況下使用該技術(shù)。我仍然會(huì)在涉及的時(shí)候列出本系列的前幾篇文章作為技術(shù)參考,而不是在本文中繼續(xù)深入討論原先提過(guò)的細(xì)節(jié),正如我之前所做過(guò)的一樣。因此如果大家對(duì)于本文中的初始步驟感到困惑,請(qǐng)拿出點(diǎn)時(shí)間來(lái)將本系列的前幾篇文章仔細(xì)閱讀一遍。具體鏈接簡(jiǎn)介部分中已經(jīng)給出了。 本文出自:億恩科技【m.1tcdy.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |