




已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
寫這一系列文章的目的有兩個(gè):一是告訴大家絕影還在。二是嘗試向大家介紹一種新的技術(shù),我把他叫做“動(dòng)態(tài)感染”,也許這樣命名不規(guī)范,但我至今仍未找到對這一技術(shù)的比較科學(xué)合理的命名方式。所以姑且把它叫做“動(dòng)態(tài)感染”吧。 所謂的“感染”大家應(yīng)該比較熟悉,它的原理是在一個(gè)PE文件中新添加一個(gè)節(jié)(或者從已有的節(jié)中尋找一塊足夠大的可用空間),將感染代碼寫入,再修改原PE文件的EntryPoint的代碼,改為Jmp XXXXXXXX(XXXXXXXX為感染代碼的起始位置),當(dāng)感染代碼執(zhí)行完畢后,再使用一條Jmp OldEntryPoint代碼跳回PE程序的原入口點(diǎn)。這樣當(dāng)PE文件運(yùn)行時(shí)就會(huì)先執(zhí)行我們寫入的感染代碼。對PE文件的分析和更改技術(shù)都比較成熟,唯一的難點(diǎn)是所有感染代碼都要使用自定位代碼,或者修改PE文件的導(dǎo)入表等,加入對感染代碼所使用的DLL函數(shù)的支持。這一感染過程是靜態(tài)的,必須在PE文件沒有運(yùn)行的情況下進(jìn)行;同時(shí)這一方法也是很不妥的,畢竟修改了原始的PE文件,恢復(fù)起來相當(dāng)困難,幾乎對其進(jìn)行了不可逆的破壞。 以下要講的“動(dòng)態(tài)感染”,都是在內(nèi)核態(tài)下,所以我們要做的,也就是一個(gè)內(nèi)核模塊(有些人叫做“驅(qū)動(dòng)”,但我覺得這樣并不嚴(yán)格)。當(dāng)一個(gè)PE文件開始執(zhí)行時(shí),內(nèi)核中先要進(jìn)行很多工作:分配內(nèi)存、創(chuàng)建線程、加載導(dǎo)入表中的DLL等,這里就不詳細(xì)闡述了。我們想要做的,是在執(zhí)行到EntryPoint之前,用ZwAllocateVirtualMemory向目標(biāo)進(jìn)程中分配內(nèi)存,寫入感染代碼,將原始的EntryPoint修改為感染代碼的起始,然后我們的感染代碼執(zhí)行一系列操作,最后Jmp OldEntryPoint,將控制權(quán)交回原來的代碼。整個(gè)過程不修改原始PE文件,可隨時(shí)卸載我們的內(nèi)核模塊。 這一技術(shù)的意義在于我們要?jiǎng)討B(tài)地保護(hù)指定的應(yīng)用程序不被其他DLL入侵(防止木馬等)。我們知道DLL入侵是比較普遍的入侵方式,可以用鉤子,也可以用遠(yuǎn)程線程。鉤子的方法相信大家都比較熟悉,遠(yuǎn)程線程的方法除了可以用LoadLibrary作為線程函數(shù)加載一個(gè)入侵DLL,還有一種改進(jìn)的辦法,就是直接用純自定位代碼注入目標(biāo)進(jìn)程。這類方法在沒有殺毒軟件的情況防范還是有一定的困難,況且現(xiàn)在很多病毒還能關(guān)閉殺毒軟件,或者欺騙殺毒軟件。如果我們在目標(biāo)進(jìn)程已經(jīng)運(yùn)行起來的情況下再來保護(hù),可能已經(jīng)來不及了,有些DLL的注入是非??斓?。而我們現(xiàn)在要討論的技術(shù),是在整個(gè)進(jìn)程還沒有完全啟動(dòng)的情況下(尚沒有一個(gè)線程被創(chuàng)建)來進(jìn)行,我們的代碼進(jìn)入目標(biāo)進(jìn)程的時(shí)間相當(dāng)早,有足夠的時(shí)間來完成防護(hù)準(zhǔn)備。如果你使用OllyDbg來調(diào)試我們的被保護(hù)程序,你會(huì)發(fā)現(xiàn),當(dāng)OD中斷在程序的入口點(diǎn)時(shí),我們的代碼已經(jīng)完成了運(yùn)行。 這系列文章我會(huì)分為幾個(gè)部分來寫:使用匯編語言編寫內(nèi)核態(tài)程序;獲取內(nèi)核基址、SSDT基址;Hook SSDT監(jiān)視進(jìn)程創(chuàng)建;在進(jìn)程的第一個(gè)線程執(zhí)行前向目標(biāo)進(jìn)程分配內(nèi)存并注入代碼;編寫自定位的感染代碼(代碼簡單,因?yàn)槟闳绻呀?jīng)學(xué)到這里了,你自己就可以寫復(fù)雜的代碼,也可以使用LoadLibrary載入DLL來實(shí)現(xiàn)復(fù)雜的功能)。 為什么要用匯編語言來寫內(nèi)核態(tài)程序呢?一是因?yàn)槲乙呀?jīng)習(xí)慣了;二是SSDT鉤子函數(shù)的簡便;三是由于要寫自定位的代碼,對高級語言來說還是相當(dāng)困難(至少我還沒找到簡單有效的方法,例如要計(jì)算注入的代碼的長度,除非你事先反匯編);四是你順便可以學(xué)習(xí)用匯編語言來編寫程序。當(dāng)你學(xué)完了這個(gè)系列的文章,你會(huì)發(fā)現(xiàn),在我們寫的這個(gè)小程序中,大部分是內(nèi)核態(tài)下的代碼,同時(shí)又有用戶態(tài)下的代碼(注入到目標(biāo)進(jìn)程中的感染代碼),這是個(gè)非常有意思的小東西。 要學(xué)習(xí)這系列的文章,你首先要準(zhǔn)備以下工具: 一、Mirosfot Visual Studio 2003(用這個(gè)只是編輯器,也可以用更高或更低版本的Visual Studio,但某些匯編、連接的設(shè)置可能會(huì)有變化;如果你會(huì)用makefile而且你是編程牛人直接用記事本編寫代碼那就忽略)。 二、MASM32V10開發(fā)包(其實(shí)V9,V8是一樣的)。 三、KmdKit(匯編語言用的驅(qū)動(dòng)程序開發(fā)包)。 四、KmdManager.exe(加載并測試我們編寫的內(nèi)核程序,在KmdKit中有)。 五、OllyDbg(可以測試或者觀察我們的代碼)。 六、VMWare之類的虛擬機(jī)(可選,測試用,免得你的機(jī)器頻繁藍(lán)屏,當(dāng)然,如果你對內(nèi)核開發(fā)很有信心可忽略)。 你需要掌握的技術(shù)知識有以下幾點(diǎn): 一、匯編語言基礎(chǔ)知識(如果你會(huì)使用MASM32開發(fā)包,已經(jīng)用匯編語言寫過小應(yīng)用程序那就OK,否則你還是去看下Windows環(huán)境下匯編語言程序設(shè)計(jì)吧)。 二、用匯編語言編寫內(nèi)核程序的基礎(chǔ)知識(會(huì)用KmdKit就OK,不過不會(huì)也沒關(guān)系,我會(huì)盡力跟大家講解明白)。 三、對內(nèi)核程序的認(rèn)識和理解(請不要再停留在Cxxxx類的使用或某個(gè)Windows API的調(diào)用上,否則你根本就不會(huì)知道我在講什么)。 四、會(huì)使用OllyDbg(會(huì)使用而已,不是說會(huì)破解)。 通過這一系列的文章,你可以學(xué)習(xí)到以下的知識: 一、使用匯編語言開發(fā)內(nèi)核程序的知識(包括使用Visual Studio編寫、匯編、連接匯編語言代碼的知識,makefile我就不講了,我自己也馬不實(shí)在的)。 二、對內(nèi)核有所認(rèn)識和了解(至少知道什么是內(nèi)核,什么是內(nèi)核程序、內(nèi)核基址等概念)。 三、對SSDT有所了解(你現(xiàn)在也可以去baidu上搜索一下什么是SSDT,做好準(zhǔn)備)。 四、在內(nèi)核上Hook SSDT(也可以直接Inline hook某些內(nèi)核函數(shù),但還是先一步一步來,SSDT穩(wěn)當(dāng)些)。 五、通過Hook內(nèi)核的某些函數(shù)監(jiān)視進(jìn)程的創(chuàng)建,在內(nèi)核態(tài)上向用戶態(tài)應(yīng)用程序分配內(nèi)存并拷貝數(shù)據(jù)(或代碼)進(jìn)去。 六、編寫自定位代碼(包括在用戶態(tài)上尋找Kernel32.dll基址等)。 本文所使用的環(huán)境是Windows XP SP3。因?yàn)閄P比較熟悉了,而且買電腦的時(shí)候送的XP是正版,而且KmdKit又沒有Windows 7的版本,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2019-2025年中國脫水土豆丁行業(yè)發(fā)展前景預(yù)測及投資戰(zhàn)略研究報(bào)告
- 2019-2025年中國鮮山崳菜未來趨勢預(yù)測分析及投資規(guī)劃研究建議報(bào)告
- 寧夏隧道施工智能裝備項(xiàng)目投資分析報(bào)告
- 中國數(shù)字化閱讀行業(yè)發(fā)展監(jiān)測及投資前景展望報(bào)告
- 智慧排水管理系統(tǒng)方案可行性研究報(bào)告
- 蔬菜殘留農(nóng)藥快檢箱項(xiàng)目投資可行性研究分析報(bào)告(2024-2030版)
- 中國調(diào)理放大器行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報(bào)告(2024-2030)
- 2025年中國粵港澳大灣區(qū)建設(shè)行業(yè)發(fā)展趨勢及投資前景預(yù)測報(bào)告
- 中國杏鮑菇種植行業(yè)市場調(diào)查研究及發(fā)展戰(zhàn)略規(guī)劃報(bào)告
- 2025年中國利普刀行業(yè)市場全景監(jiān)測及投資前景展望報(bào)告
- 大學(xué)生體能訓(xùn)練知到智慧樹章節(jié)測試課后答案2024年秋華中農(nóng)業(yè)大學(xué)
- 醫(yī)院機(jī)電安裝工程施工方案
- 金融貸款邀約技巧
- 鎢礦開采行業(yè)研究報(bào)告
- 血透護(hù)理記錄書寫規(guī)范
- 高血壓性心臟病護(hù)理
- 【MOOC】大學(xué)物理(熱學(xué)、振動(dòng)波、光學(xué)、近代物理)-東北大學(xué) 中國大學(xué)慕課MOOC答案
- 《工業(yè)園區(qū)培訓(xùn)》課件
- 建筑機(jī)電工程抗震支架設(shè)計(jì)及施工方案
- 孤獨(dú)癥家庭心理調(diào)適
- 《基于核心素養(yǎng)的中學(xué)數(shù)學(xué)探究式教學(xué)研究》2300字(論文)
評論
0/150
提交評論