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