逆向工程實驗報告_第1頁
逆向工程實驗報告_第2頁
逆向工程實驗報告_第3頁
逆向工程實驗報告_第4頁
逆向工程實驗報告_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

精選word逆向工程實驗報告..精選word.電子科技大學(xué)信息與軟件工程學(xué)院逆向工程實驗報逆向工程實驗報告全文共16頁,當(dāng)前為第1頁。逆向工程實驗報告全文共16頁,當(dāng)前為第1頁。精選word..精選word. 姓名:XXX 學(xué)號:201852090710 指導(dǎo)教師:何興高一、題目基于MBR的Bootkit的逆向分析二、題目梗概利用逆向工程技術(shù),從可運行的程序系統(tǒng)出發(fā),運用解密、反匯編、系統(tǒng)分析、程序理解等多種計算機技術(shù),對軟件的結(jié)構(gòu)、流程、算法、代碼等進行逆向拆解和分析,推導(dǎo)出軟件產(chǎn)品的源代碼、設(shè)計原理、結(jié)構(gòu)、算法、處理過程、運行方法及相關(guān)文檔等。隨著用戶需求的復(fù)雜度越來越高,軟件開發(fā)難度不斷上升,快速高效地軟件開發(fā)已成為項目成敗的關(guān)鍵之一。逆向工程實驗報告全文共16頁,當(dāng)前為第2頁。Bootkit是一種比較舊的技術(shù),這個概念最早是在2005年由eEyeDigital安全公司在他們的“BootRoot"項目中提及的。Rootkit是一種特殊的惡意軟件,它的功能是在安裝目標(biāo)上隱藏自身及指定的文件、進程和網(wǎng)絡(luò)鏈接等信息,比較多見到的是Rootkit一般都和木馬、后門等其他惡意程序結(jié)合使用。Rootkit通過加載特殊的驅(qū)動,修改系統(tǒng)內(nèi)核,進而達到隱藏信息的目的。rootkit并不一定是用作獲得系統(tǒng)root訪問權(quán)限的工具。實際上,rootkit是攻擊者用來隱藏自己的蹤跡和保留root訪問權(quán)限的工具。通常,攻擊者通過遠程攻擊獲得root訪問權(quán)限,或者首先密碼猜測或者密碼強制破譯的方式獲得系統(tǒng)的訪問權(quán)限。進入系統(tǒng)后,如果他還沒有獲得root權(quán)限,再通過某些安全漏洞獲得系統(tǒng)的root權(quán)限。接著,攻擊者會在侵入的主機中安裝rootkit,然后他將經(jīng)常通過rootkit的后門檢查系統(tǒng)是否有其他的用戶登錄,如果只有自己,攻擊者就開始著手清理日志中的有關(guān)信息。通過rootkit的嗅探器獲得其它系統(tǒng)的用戶和密碼之后,攻擊者就會利用這逆向工程實驗報告全文共16頁,當(dāng)前為第3頁。逆向工程實驗報告全文共16頁,當(dāng)前為第2頁。逆向工程實驗報告全文共16頁,當(dāng)前為第3頁。精選word..精選word.所有在開機時比Windows內(nèi)核更早加載,實現(xiàn)內(nèi)核劫持的技術(shù),都可以稱之為Bootkit。Bootkit主要是利用其內(nèi)核準(zhǔn)入和開機過程的隱身技術(shù),在功能上無異于Rootkit。傳統(tǒng)的Rootkit利用系統(tǒng)啟動時提升權(quán)限,而Bootkit主要被安置在外設(shè)的主引導(dǎo)扇區(qū)(也有放于Ntldr文件、BIOS中的Bootkit)并駐留在整個系統(tǒng)的啟動過程。Bootkit屬于Rootkit的一種,但它卻是更加高級的Rootkit,因為其存放于主引導(dǎo)扇區(qū)、啟動文件之類地方,在操作系統(tǒng)啟動之前駐留內(nèi)存并內(nèi)核運行之前劫持內(nèi)核。MBR即主引導(dǎo)扇區(qū)(MasterBootRecord)是裝有Linux系統(tǒng)的硬盤的第一個扇區(qū),即C/H/S地址的0柱面0磁頭1扇區(qū)。這個扇區(qū)是系統(tǒng)開啟時必須訪問的扇區(qū),記錄本磁盤相關(guān)信息以及硬盤各個分區(qū)的大小和信息。本實驗旨在對基于MBR的BootKit的啟動模塊代碼,也就是感染MBR后第1、第61、62扇區(qū)的模塊進行逆向分析。三、涉及知識點在本項目中,逆向涉及到的知識點有以下幾個,分別是:保護模式下的匯編語言實模式下的匯編語言BIOS中斷服務(wù)多級HOOK技術(shù)計算機系統(tǒng)內(nèi)核原理逆向工程實驗報告全文共16頁,當(dāng)前為第4頁。NTLDR(系統(tǒng)加載程序,用于裝載Windowsxp2003等版本逆向工程實驗報告全文共16頁,當(dāng)前為第4頁。精選word..精選word.四、涉及工具在本項目中,涉及到的工具有以下幾個,分別是:IDA(主要靜態(tài)分析Bootkit)、WindbgBochs(主要是用于動態(tài)調(diào)試這個Bootkit)Winhex工具五、源程序見附件六、過程及分析首先介紹一下這個樣本黑盒后的癥狀:感染MBR(感染的具體形式為:真正的MBR被挪到了第63個扇區(qū),Bootkit啟動模塊的代碼在第1、61、62個扇區(qū)。)直接在硬盤上寫入了一個驅(qū)動(這種寫入不是普通的在磁盤上釋放一個文件,在系統(tǒng)的文件系統(tǒng)里面是看不見這個驅(qū)動的,在實驗的虛擬機上是寫入了未分區(qū)的空間中,通過Winhex工具可以查看到);生成一個DLL并運行然后10分鐘后自動關(guān)機。第1、61、62個扇區(qū)的代碼中,第1個扇區(qū)的代碼是實模式下的匯編語言,第61、62個扇區(qū)是保護模式下的匯編語言,所以在用IDA分析的時候要進行選擇,至于這三個扇區(qū)的代碼直接用Winhex截取出來然后進行逆向分析。逆向工程實驗報告全文共16頁,當(dāng)前為第5頁。這個Bootkit的啟動代碼主要用了三級HOOK,分別為HOOKINT13h、HOOKN逆向工程實驗報告全文共16頁,當(dāng)前為第5頁。精選word..精選word.1、第一級HOOK(HOOKINT13h)seg000:7C35 @HOOK_INT13H:seg000:7C35xorbx,bxseg000:7C37moveax,[bx+4Ch]seg000:7C3Bmoves:73h,eaxseg000:7C40movwordptr[bx+4Ch],66h;'f'seg000:7C45movwordptr[bx+4Eh],esseg000:7C48pushesseg000:7C49push4Dh;'M'seg000:7C4Cretf上面的代碼實現(xiàn)了HOOKINT13h,即HOOK了BIOS的磁盤中斷服務(wù)。下面為HOOKINT13h后的主要代碼,其中主要是搜索了NTLDR文件的特征碼,特征碼為:SignatureCodeis:8BF0movesi,eax85F6testesi,esi7421jz$+23h80..............這段代碼運行后內(nèi)核和BootDriver已經(jīng)加載到內(nèi)存中,當(dāng)找到這段代碼以后就對這段特征碼進行HOOK,HOOK的過程用到了CALLNEAR[offset32],即相對的尋址方式。這個HOOK利用了eEyeBootRoot里面的技術(shù)。上面的主要代碼是在第一個扇區(qū)中的代碼實現(xiàn)的,是實模式下執(zhí)行的代碼。逆向工程實驗報告全文共16頁,當(dāng)前為第6頁。逆向工程實驗報告全文共16頁,當(dāng)前為第6頁。精選word..精選word. 這里主要為HOOK了NLTDR以后代碼執(zhí)行的過程,第二個HOOK的代碼主要是在第61個扇區(qū)中實現(xiàn)的。首先第二個HOOK會去搜索NTLDR中的特征碼,搜索這個特征碼是為了定位到BlLoaderBlock這個變量,這個變量中包括了很多有用的信息,如內(nèi)核和BootDriver等等。搜索過程為下圖:圖1當(dāng)搜索到以后就可以定位到BlLoaderBlock,然后[[BlLoaderBlock]+0]就正好為模塊鏈表的指針。這個指針?biāo)赶虻慕Y(jié)構(gòu)的一些主要成員為:+00hLIST_ENTRYmodulelistlinks+08h[10h]不太了解+18hPTRimagebaseaddress+1ChPTRmoduleentrypoint+20hDWORDsizeofloadedmoduleinmemory逆向工程實驗報告全文共16頁,當(dāng)前為第7頁。逆向工程實驗報告全文共16頁,當(dāng)前為第7頁。精選word..精選word.+2ChUNICODE_STRINGmodulefilename下圖的代碼就是利用上面介紹BlLoaderBlock的結(jié)構(gòu)定位到了內(nèi)核的基址。圖2當(dāng)定位到內(nèi)核以后,Bootkit將搜索內(nèi)核的特征代碼,然后對內(nèi)核進行HOOK。搜索的內(nèi)核代碼為:push4Bh6Ah4Bhpush19h6Ah19hcallInbvSetProgressBarSubset(x,x)E8E8DDE6FFpush[ebp+var_470]FFB590FBFFFFcallIoInitSystem(x)E853E6FFFF逆向工程實驗報告全文共16頁,當(dāng)前為第8頁。 當(dāng)搜索到了上面的內(nèi)核特征碼后,就對內(nèi)核的callIoInitSystem(x)逆向工程實驗報告全文共16頁,當(dāng)前為第8頁。精選word..精選word.圖3當(dāng)搜索到特征碼后接下就會對Kernel的特征碼進行HOOK,HOOK的特征碼為:callIoInitSystem(x)E853E6FFFF修改的地方為后面四個字節(jié)的偏移量。通過這個HOOKBootkit就能在內(nèi)核運行的時候再次獲得執(zhí)行的機會。 下面的代碼便是對內(nèi)核進行HOOK的操作:逆向工程實驗報告全文共16頁,當(dāng)前為第9頁。逆向工程實驗報告全文共16頁,當(dāng)前為第9頁。精選word..精選word.圖4從上圖的代碼看出,在這個過程中Bootkit會將HOOK內(nèi)核的代碼挪到內(nèi)存中內(nèi)核映像文件的末尾位置,大小正好為200個字節(jié)。上面便是Bootkit的第二個HOOK所完成的工作。3、第三級HOOK(HOOKKernel的特征碼) 當(dāng)HOOKKernel后的代碼運行時,主要的代碼是在第62個扇區(qū)中。其中的代碼有些復(fù)雜,這里只介紹主要的執(zhí)行流程。這個HOOK代碼主要的功能實現(xiàn)了加載并運行一個驅(qū)動程序。 第三級HOOK中首先是通過內(nèi)核的輸出表定位到ExAllocatePool函數(shù),搜索這個內(nèi)核的函數(shù)是通過Hash的比較。當(dāng)找到這個函數(shù)的地址以后就調(diào)用這個函數(shù)分配一片內(nèi)存池,然后把下面的代碼拷貝到這份內(nèi)存中并在內(nèi)存池中執(zhí)行Bootkit后面的代碼。上面這個過程具體實現(xiàn)如下入所示:圖5逆向工程實驗報告全文共16頁,當(dāng)前為第10頁。接下來Bootkit會把調(diào)用之前被HOOK的IoInitSystem(x)函數(shù),即去Call這個函數(shù),讓IO去初始化系統(tǒng)。當(dāng)執(zhí)行完這步操作以后,則會在內(nèi)核中搜索和多函數(shù),逆向工程實驗報告全文共逆向工程實驗報告全文共16頁,當(dāng)前為第10頁。逆向工程實驗報告全文共16頁,當(dāng)前為第11頁。精選word..精選word.NtReadFile、NtOpenFile、NtClose等函數(shù),調(diào)用這些函數(shù)主要是為了能夠把驅(qū)動直接從磁盤上讀出來,然后運行。具體過程為如下。首先調(diào)用NtOpenFile打開磁盤,并定位那個驅(qū)動的位置。過程為:圖6逆向工程實驗報告全文共16頁,當(dāng)前為第12頁。接下來調(diào)用NtReadFile逆向工程實驗報告全文共16頁,當(dāng)前為第12頁。精選word..精選word.圖7當(dāng)把驅(qū)動讀入到內(nèi)存以后Bootkit還有一個將驅(qū)動進行內(nèi)存對齊的操作。具體過程為下圖所示:圖8逆向工程實驗報告全文共16頁,當(dāng)前為第13頁。逆向工程實驗報告全文共16頁,當(dāng)前為第13頁。精選word..精選word.圖9當(dāng)驅(qū)動執(zhí)行完畢后,則把控制權(quán)交還給Bootkit的啟動代碼,Bootkit最后做的善后處理為:把正在運行的內(nèi)存池里面的代碼清零,然后把控制權(quán)交給操作系統(tǒng)的內(nèi)核,讓內(nèi)核繼續(xù)進行計算機的啟動過程。 以上便是這個Bootkit樣本的啟動模塊代碼執(zhí)行流程。最后附上一個圖,下圖為HOOKKernel處留下的痕跡。圖10CallIoInitSystem(x)被替換成了Call806cee00,而806cee00地址處的代碼是Bootkit第三個HOOK的代碼。七、

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論