計(jì)算機(jī)病毒分析_第1頁(yè)
計(jì)算機(jī)病毒分析_第2頁(yè)
計(jì)算機(jī)病毒分析_第3頁(yè)
計(jì)算機(jī)病毒分析_第4頁(yè)
計(jì)算機(jī)病毒分析_第5頁(yè)
已閱讀5頁(yè),還剩65頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、計(jì)算機(jī)病毒分析計(jì)算機(jī)病毒分析 彭國(guó)軍彭國(guó)軍 2003.3.292003.3.29將要介紹的幾種病毒類型vDOS病毒v引導(dǎo)區(qū)病毒v文件型病毒v混合型病毒vWindows病毒vVBS腳本病毒v宏病毒v網(wǎng)頁(yè)病毒vWin32 PE病毒引導(dǎo)區(qū)病毒v什么是主引導(dǎo)記錄?v硬盤的主引導(dǎo)記錄在硬盤的0磁頭0柱面1扇區(qū)。主引導(dǎo)記錄由三部分組成:v主引導(dǎo)程序;v四個(gè)分區(qū)表;v主引導(dǎo)記錄有效標(biāo)志字。DOS引導(dǎo)區(qū)病毒v引導(dǎo)區(qū)病毒v所謂引導(dǎo)區(qū)病毒是指一類專門感染軟盤引導(dǎo)扇區(qū)和硬盤主引導(dǎo)扇區(qū)的計(jì)算機(jī)病毒程序。v如果被感染的磁盤被作為系統(tǒng)啟動(dòng)盤使用,則在啟動(dòng)系統(tǒng)時(shí),病毒程序即被自動(dòng)裝入內(nèi)存,從而使現(xiàn)行系統(tǒng)感染上病毒。v在系統(tǒng)

2、帶毒的情況下,如果進(jìn)行了磁盤IO操作,則病毒程序就會(huì)主動(dòng)地進(jìn)行傳染,從而使其它的磁盤感染上病毒。 DOS的正常啟動(dòng)過(guò)程 v加電開(kāi)機(jī)后進(jìn)入系統(tǒng)的檢測(cè)程序并執(zhí)行該程序?qū)ο到y(tǒng)的基本設(shè)備進(jìn)行檢測(cè); v檢測(cè)正常后從系統(tǒng)盤0面0道1扇區(qū)即邏輯0扇區(qū)讀入Boot引導(dǎo)程序到內(nèi)存的0000: 7C00處; v轉(zhuǎn)入Boot執(zhí)行之;vBoot判斷是否為系統(tǒng)盤, 如果不是系統(tǒng)盤則提示: non-system disk or disk error Replace and strike any key when ready 否則, 讀入IBM BIO.COM和IBM DOS.COM兩個(gè)隱含文件; DOS的正常啟動(dòng)過(guò)程v執(zhí)

3、行IBM BIO.COM和IBM DOS.COM兩個(gè)隱含文件, 將COMMAND.COM裝入內(nèi)存; v系統(tǒng)正常運(yùn)行, DOS啟動(dòng)成功。v引導(dǎo)區(qū)病毒實(shí)際上就是先保存軟盤的引導(dǎo)記錄或者硬盤的主引導(dǎo)記錄,然后用病毒程序替換原來(lái)的引導(dǎo)記錄,這樣,當(dāng)系統(tǒng)引導(dǎo)時(shí),便先執(zhí)行病毒程序,然后將控制權(quán)轉(zhuǎn)交給正常的引導(dǎo)程序。帶毒盤引導(dǎo)的啟動(dòng)過(guò)程v將Boot區(qū)中病毒代碼首先讀入內(nèi)存的0000: 7C00處; v病毒將自身全部代碼讀入內(nèi)存的某一安全地區(qū)、常駐內(nèi)存, 監(jiān)視系統(tǒng)的運(yùn)行;v修改INT 13H中斷服務(wù)處理程序的入口地址, 使之指向病毒控制模塊并執(zhí)行之。因?yàn)槿魏我环N病毒要感染軟盤或者硬盤,都離不開(kāi)對(duì)磁盤的讀寫操作

4、, 修改INT13H中斷服務(wù)程序的入口地址是一項(xiàng)少不了的操作;v病毒程序全部被讀入內(nèi)存后才讀入正常的Boot內(nèi)容到內(nèi)存的0000: 7C00處, 進(jìn)行正常的啟動(dòng)過(guò)程;v病毒程序伺機(jī)等待隨時(shí)準(zhǔn)備感染新的系統(tǒng)盤或非系統(tǒng)盤。 感染過(guò)程v是否在讀寫軟盤?v是,則將目標(biāo)盤的引導(dǎo)扇區(qū)讀入內(nèi)存, 對(duì)該盤進(jìn)行判別是否傳染了病毒;v當(dāng)滿足傳染條件時(shí), 則將病毒的全部或者一部分寫入Boot區(qū), 把正常的磁盤的引導(dǎo)區(qū)程序?qū)懭氪疟P特寫位置;v返回正常的INT 13H中斷服務(wù)處理程序, 完成了對(duì)目標(biāo)盤的傳染。感染過(guò)程引導(dǎo)型病毒的主要特點(diǎn) v引導(dǎo)型病毒是在安裝操作系統(tǒng)之前進(jìn)入內(nèi)存,寄生對(duì)象又相對(duì)固定,因此該類型病毒基本上

5、不得不采用減少操作系統(tǒng)所掌管的內(nèi)存容量方法來(lái)駐留內(nèi)存高端。而正常的系統(tǒng)引導(dǎo)過(guò)程一般是不減少系統(tǒng)內(nèi)存的。v引導(dǎo)型病毒需要把病毒傳染給軟盤,一般是通過(guò)修改INT 13H的中斷向量,而新INT 13H中斷向量段址必定指向內(nèi)存高端的病毒程序。v引導(dǎo)型病毒感染硬盤時(shí),必定駐留硬盤的主引導(dǎo)扇區(qū)或引導(dǎo)扇區(qū),并且只駐留一次,因此引導(dǎo)型病毒一般都是在軟盤啟動(dòng)過(guò)程中把病毒傳染給硬盤的。 文件型病毒v什么是文件型病毒?v所有通過(guò)操作系統(tǒng)的文件系統(tǒng)進(jìn)行感染的病毒都稱作文件病毒 。v我們將會(huì)介紹的兩種病毒vCOM文件型病毒vEXE文件型病毒COM文件型病毒vCOM文件被載入內(nèi)存后的格式COM文件型病毒v病毒要感染COM

6、文件一般采用兩種方法:v加在文件尾部COM文件型病毒v加在文件頭部EXE文件型病毒vMZ文件頭格式v偏移 大 小 描述v00 2 bytes .EXE 文件類型標(biāo)記:4d5ahv02 2 bytes 文件的最后一個(gè)扇區(qū)的字節(jié)數(shù)v04 2 bytes 文件的總扇區(qū)數(shù) 文件大小=(總扇區(qū)數(shù)-1)*512+最后一頁(yè)字節(jié)數(shù)v06 2 bytes 重定位項(xiàng)的個(gè)數(shù)v08 2 bytesexe文件頭的大小 (16 bytes*this value)v0a2 bytes最小分配數(shù)(16 bytes*this value)v0c2 bytes最大分配數(shù)(16 bytes*this value)v0e2 byte

7、s堆棧初始段址(SS)v102 bytes堆棧初始指針(SP)v122 bytes補(bǔ)碼校驗(yàn)和v142 bytes初始代碼段指針(IP)v162 bytes初始代碼段段址(CS)v182 bytes定位表的偏移地址v1a2 bytes覆蓋號(hào)The overlay number make by linkEXE文件型病毒的感染v頭寄生EXE文件型病毒的感染v尾寄生EXE文件型病毒的感染v插入寄生 EXE文件型病毒的感染v伴隨型EXE文件型病毒的感染v病毒感染的方式還有很多,譬如DIRII屬于一種鏈接型鏈接型的病毒,還有無(wú)入口點(diǎn)的病毒,沒(méi)有任何美感的覆蓋型病毒等。v病毒如何感染,一直是病毒研究的話題,

8、這并不存在非常固定的模式。病毒作者完全可以任意發(fā)揮自己的想象?;旌闲筒《緑什么是混合型病毒?v所謂混合型病毒,就是指既可以感染引導(dǎo)區(qū)又可以感染文件的病毒。v但是這種病毒絕對(duì)不是引導(dǎo)區(qū)病毒和文件型病毒的簡(jiǎn)單相加。v文件型病毒大多采用INT 21H,但是引導(dǎo)型病毒是在引導(dǎo)階段進(jìn)行感染駐留,這時(shí)DOS系統(tǒng)還沒(méi)有啟動(dòng),因此混合型病毒此時(shí)無(wú)法采用21號(hào)中斷。如何解決這個(gè)問(wèn)題?VBS腳本病毒如何感染vVBS腳本病毒是直接通過(guò)自我復(fù)制來(lái)感染文件的病毒中的絕大部分代碼都可以直接附加在其他同類程序的中間.v新歡樂(lè)時(shí)光病毒可以將自己的代碼附加在.htm文件的尾部,并在頂部加入一條調(diào)用病毒代碼的語(yǔ)句.v愛(ài)蟲(chóng)病毒則是

9、直接生成一個(gè)文件的副本,將病毒代碼拷入其中,并以原文件名作為病毒文件名的前綴,vbs作為后綴。VBS腳本病毒如何感染v文件感染的部分關(guān)鍵代碼 set fso=createobject(“scripting.filesystemobject”) 創(chuàng)建一個(gè)文件系統(tǒng)對(duì)象set self=fso.opentextfile(wscript.scriptfullname,1) 讀打開(kāi)當(dāng)前文件(即病毒本身)vbscopy=self.readall 讀取病毒全部代碼到字符串變量vbscopy set ap=fso.opentextfile(目標(biāo)文件.path,2,true) 寫打開(kāi)目標(biāo)文件,準(zhǔn)備寫入病毒代碼a

10、p.write vbscopy 將病毒代碼覆蓋目標(biāo)文件ap.closeset cop=fso.getfile(目標(biāo)文件.path) 得到目標(biāo)文件路徑cop.copy(目標(biāo)文件.path & .vbs) 創(chuàng)建另外一個(gè)病毒文件(以.vbs為后綴)目標(biāo)文件.delete(true) 刪除目標(biāo)文件 VBS腳本病毒如何搜索文件 該函數(shù)主要用來(lái)尋找滿足條件的文件,并生成對(duì)應(yīng)文件的一個(gè)病毒副本sub scan(folder_) scan函數(shù)定義, on error resume next 如果出現(xiàn)錯(cuò)誤,直接跳過(guò),防止彈出錯(cuò)誤窗口 set folder_=fso.getfolder(folder_)

11、set files=folder_.files 當(dāng)前目錄的所有文件集合 for each file in files ext=fso.GetExtensionName(file) 獲取文件后綴 ext=lcase(ext) 后綴名轉(zhuǎn)換成小寫字母 if ext=“mp5” then 如果后綴名是mp5,則進(jìn)行感染。 Wscript.echo (file) end if next set subfolders=folder_.subfolders for each subfolder in subfolders 搜索其他目錄;遞歸調(diào)用scan( ) scan(subfolder) next end

12、 sub VBS腳本病毒如何獲得控制權(quán)1)1)修改注冊(cè)表項(xiàng)修改注冊(cè)表項(xiàng)vwindows在啟動(dòng)的時(shí)候,會(huì)自動(dòng)加載HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun項(xiàng)下的各鍵值所執(zhí)向的程序。腳本病毒可以在此項(xiàng)下加入一個(gè)鍵值指向病毒程序,這樣就可以保證每次機(jī)器啟動(dòng)的時(shí)候拿到控制權(quán)。vbs修改貯冊(cè)表的方法比較簡(jiǎn)單,直接調(diào)用下面語(yǔ)句即可。wsh.RegWrite(strName, anyValue ,strType)2 2)通過(guò)映射文件執(zhí)行方式)通過(guò)映射文件執(zhí)行方式v譬如,新歡樂(lè)時(shí)光將dll的執(zhí)行方式修改為wscript.exe。甚至可

13、以將exe文件的映射指向病毒代碼。VBS腳本病毒如何獲得控制權(quán)3)3)欺騙用戶,讓用戶自己執(zhí)行欺騙用戶,讓用戶自己執(zhí)行這種方式其實(shí)和用戶的心理有關(guān)。譬如,病毒在發(fā)送附件時(shí),采用雙后綴的文件名,由于默認(rèn)情況下,后綴并不顯示,舉個(gè)例子,文件名為beauty.jpg.vbs的vbs程序顯示為beauty.jpg,這時(shí)用戶往往會(huì)把它當(dāng)成一張圖片去點(diǎn)擊。同樣,對(duì)于用戶自己磁盤中的文件,病毒在感染它們的時(shí)候,將原有文件的文件名作為前綴,vbs作為后綴產(chǎn)生一個(gè)病毒文件,并刪除原來(lái)文件,這樣,用戶就有可能將這個(gè)vbs文件看作自己原來(lái)的文件運(yùn)行。4)4)desktop.inidesktop.ini和和folde

14、r.httfolder.htt互相配合互相配合這兩個(gè)文件可以用來(lái)配置活動(dòng)桌面,也可以用來(lái)自定義文件夾。如果用戶的目錄中含有這兩個(gè)文件,當(dāng)用戶進(jìn)入該目錄時(shí),就會(huì)觸發(fā)folder.htt中的病毒代碼。這是新歡樂(lè)時(shí)光病毒采用的一種比較有效的獲取控制權(quán)的方法。VBS腳本病毒的網(wǎng)上傳播1)通過(guò))通過(guò)Email附件傳播附件傳播 設(shè)置 Outlook對(duì)象 = 腳本引擎.創(chuàng)建對(duì)象(Outlook.Application) 設(shè)置 MAPI對(duì)象 = Outlook對(duì)象.獲取名字空間(MAPI)For i=1 to MAPI對(duì)象.地址表.地址表的條目數(shù) /兩個(gè)for語(yǔ)句用來(lái)遍歷整個(gè)地址簿 設(shè)置 地址對(duì)象 = MAP

15、I對(duì)象.地址表(i) For j=1 To地址對(duì)象.地址欄目.地址欄目數(shù) 設(shè)置 郵件對(duì)象 = Outlook對(duì)象.創(chuàng)建項(xiàng)目(0) 設(shè)置 地址入口 地址對(duì)象.地址欄目(j) 郵件對(duì)象.收件人地址入口.郵件地址 郵件對(duì)象.主題 = “你好!” 郵件對(duì)象.附件標(biāo)題 = “好看的東東,請(qǐng)打開(kāi)” 郵件對(duì)象.附件.增加(“test.jpg.vbs“) 郵件對(duì)象.發(fā)送 郵件對(duì)象.發(fā)送后刪除真 Next Next VBS腳本病毒的網(wǎng)上傳播2 2)通過(guò)局域網(wǎng)共享傳播)通過(guò)局域網(wǎng)共享傳播在局域網(wǎng)中,用戶之間為了方便文件交流,通常會(huì)設(shè)置共享目錄,并且通常具有可寫權(quán)限。病毒可以利用共享目錄,進(jìn)行病毒傳播擴(kuò)散。3 3)

16、通過(guò)感染)通過(guò)感染htmhtm、aspasp、jspjsp、phpphp等網(wǎng)頁(yè)文件傳等網(wǎng)頁(yè)文件傳播播如今,WWW服務(wù)已經(jīng)變得非常普遍,病毒通過(guò)感染htm等文件,勢(shì)必會(huì)導(dǎo)致所有訪問(wèn)過(guò)該網(wǎng)頁(yè)的用戶機(jī)器感染病毒。 VBS腳本病毒的網(wǎng)上傳播4 4)通過(guò))通過(guò)IRCIRC聊天通道傳播聊天通道傳播隨著即時(shí)聊天系統(tǒng)的普及和基于瀏覽的瀏覽逐漸成為交流的主要方式,這種方式病毒采用的機(jī)會(huì)相對(duì)比較小,譬如叛逃者病毒就采用了這種傳播方式。 5 5)通過(guò))通過(guò)P2PP2P共享工具進(jìn)行傳播共享工具進(jìn)行傳播病毒也可以通過(guò)現(xiàn)在廣泛流行的KaZaA等點(diǎn)對(duì)點(diǎn)共享軟件進(jìn)行傳播。病毒將病毒文件拷貝到KaZaA的默認(rèn)共享目錄中,這樣,

17、當(dāng)其他用戶訪問(wèn)這臺(tái)機(jī)器時(shí),就有可能下載該病毒文件并執(zhí)行。這種傳播方法可能會(huì)隨著KaZaA這種點(diǎn)對(duì)點(diǎn)共享工具的流行而發(fā)生作用。 VBS腳本病毒的弱點(diǎn) 1)絕大部分VBS腳本病毒運(yùn)行的時(shí)候需要用到一個(gè)對(duì)象:FileSystemObject。2)VBScript代碼是通過(guò)Windows Script Host來(lái)解釋執(zhí)行的。3)VBS腳本病毒的運(yùn)行需要其關(guān)聯(lián)程序Wscript.exe的支持。4)通過(guò)網(wǎng)頁(yè)傳播的病毒需要ActiveX的支持。5)通過(guò)Email傳播的病毒需要OE的自動(dòng)發(fā)送郵件功能支持,但是絕大部分病毒都是以Email為主要傳播方式的。如何防范如何防范vbsvbs腳本病毒腳本病毒 1) 禁用

18、文件系統(tǒng)對(duì)象FileSystemObject方法:用regsvr32 scrrun.dll /u這條命令就可以禁止文件系統(tǒng)對(duì)象。其中regsvr32是WindowsSystem下的可執(zhí)行文件?;蛘咧苯硬檎襰crrun.dll文件刪除或者改名。還有一種方法就是在注冊(cè)表中HKEY_CLASSES_ROOTCLSID下找到一個(gè)主鍵0D43FE01-F093-11CF-8940-00A0C9054228的項(xiàng),咔嚓即可。2) 卸載Windows Scripting Host在Windows 98中(NT 4.0以上同理),打開(kāi)控制面板添加/刪除程序Windows安裝程序附件,取消“Windows Scr

19、ipting Host”一項(xiàng)。和上面的方法一樣,在注冊(cè)表中HKEY_CLASSES_ROOTCLSID下找到一個(gè)主鍵F935DC22-1CF0-11D0-ADB9-00C04FD58A0B的項(xiàng)。3) 刪除VBS、VBE、JS、JSE文件后綴名與應(yīng)用程序的映射點(diǎn)擊我的電腦查看文件夾選項(xiàng)文件類型,然后刪除VBS、VBE、JS、JSE文件后綴名與應(yīng)用程序的映射。如何防范如何防范vbsvbs腳本病毒腳本病毒4)在Windows目錄中,找到WScript.exe,更改名稱或者刪除,如果你覺(jué)得以后有機(jī)會(huì)用到的話,最好更改名稱好了,當(dāng)然以后也可以重新裝上。5)要徹底防治VBS網(wǎng)絡(luò)蠕蟲(chóng)病毒,還需設(shè)置一下你的瀏

20、覽器。我們首先打開(kāi)瀏覽器,單擊菜單欄里“Internet 選項(xiàng)”安全選項(xiàng)卡里的自定義級(jí)別按鈕。把“ActiveX控件及插件”的一切設(shè)為禁用,這樣就不怕了。呵呵,譬如新歡樂(lè)時(shí)光的那個(gè)ActiveX組件如果不能運(yùn)行,網(wǎng)絡(luò)傳播這項(xiàng)功能就玩完了。6) 禁止OE的自動(dòng)收發(fā)郵件功能如何防范如何防范vbsvbs腳本病毒腳本病毒7)由于蠕蟲(chóng)病毒大多利用文件擴(kuò)展名作文章,所以要防范它就不要隱藏系統(tǒng)中已知文件類型的擴(kuò)展名。Windows默認(rèn)的是“隱藏已知文件類型的擴(kuò)展名稱”,將其修改為顯示所有文件類型的擴(kuò)展名稱。8)將系統(tǒng)的網(wǎng)絡(luò)連接的安全級(jí)別設(shè)置至少為“中等”,它可以在一定程度上預(yù)防某些有害的Java程序或者某些

21、ActiveX組件對(duì)計(jì)算機(jī)的侵害。9)最后一項(xiàng):殺毒軟件確實(shí)很必要,盡管有些殺毒軟件挺讓廣大用戶失望,不過(guò)。宏病毒宏病毒v什么是宏病毒?v宏病毒是使用宏語(yǔ)言編寫的程序,可以在一些數(shù)據(jù)處理系統(tǒng)中運(yùn)行(主要是微軟的辦公軟件系統(tǒng),字處理、電子數(shù)據(jù)表和其他Office程序中),存在于字處理文檔、數(shù)據(jù)表格、數(shù)據(jù)庫(kù)、演示文檔等數(shù)據(jù)文件中,利用宏語(yǔ)言的功能將自己復(fù)制并且繁殖到其他數(shù)據(jù)文檔里。 宏病毒宏病毒v宏病毒在某種系統(tǒng)中能否存在,首先需要這種系統(tǒng)具有足夠強(qiáng)大的宏語(yǔ)言,這種宏語(yǔ)言至少要有下面幾個(gè)功能:一段宏程序可以附著在一個(gè)文檔文件后面。宏程序可以從一個(gè)文件拷貝到另外一個(gè)文件。存在這樣一種機(jī)制,宏程序可以

22、不需要用戶的干預(yù)自動(dòng)執(zhí)行。 病毒如何拿到控制權(quán)病毒如何拿到控制權(quán) v利用如下自動(dòng)執(zhí)行宏,將病毒代碼寫在如下宏中,由于這些宏會(huì)自動(dòng)執(zhí)行,因此獲取控制權(quán)。宏病毒如何傳染宏病毒如何傳染 v絕大多數(shù)病毒采用如下語(yǔ)句ActiveDocument.VBProject.VBComponents(guojpeng).Exportc:guojpeng.sys /將文檔中的病毒代碼導(dǎo)出到c:guojpeng.sysNormalTemplate.VBProject.VBComponents.Import c:guojpeng.sys /將病毒代碼從文件導(dǎo)入導(dǎo)通用模板 v也可能采用如下方式:ActiveDocumen

23、t.VBProject.VBComponents.Item(1).Export c:guojpeng.sys NormalTemplate.VBProject.VBComponents(1).CodeModule.AddFromFile c:guojpeng.sys宏病毒的自我隱藏宏病毒的自我隱藏 vOn Error Resume Next /如果發(fā)生錯(cuò)誤,不彈出出錯(cuò)窗口,繼續(xù)執(zhí)行下面語(yǔ)句vApplication.DisplayAlerts = wdAlertsNone /不彈出警告窗口vApplication.EnableCancelKey = wdCancelDisabled /不允許通過(guò)

24、ESC鍵結(jié)束正在運(yùn)行的宏vApplication.DisplayStatusBar = False /不顯示狀態(tài)欄,以免顯示宏的運(yùn)行狀態(tài)Options.VirusProtection = False v /關(guān)閉病毒保護(hù)功能,運(yùn)行前如果包含宏,不提示vOptions.SaveNormalPrompt = False /如果公用模塊被修改,不給用戶提示窗口而直接保存vApplication.ScreenUpdating = False /不讓刷新屏幕,以免病毒運(yùn)行引起速度變慢 網(wǎng)頁(yè)病毒網(wǎng)頁(yè)病毒v我們這里所指的網(wǎng)頁(yè)病毒是指在html文件中用于非法修改用戶機(jī)器配置的html文件。有別于一般通過(guò)網(wǎng)頁(yè)傳染

25、的病毒。 v這種病毒嚴(yán)格意義上講不屬于病毒,它們只是網(wǎng)頁(yè)惡意代碼,這些代碼主要用來(lái)修改用戶的注冊(cè)表。網(wǎng)頁(yè)病毒中常見(jiàn)的代碼網(wǎng)頁(yè)病毒中常見(jiàn)的代碼function runcmd()a=document.applets0;a.setCLSID(F935DC22-1CF0-11D0-ADB9-00C04FD58A0B);a.createInstance();wsh=a.GetObject();wsh.Run(cmd.exe);/改為wsh.Run(cmd.exe,false,1);則程序在后臺(tái)隱藏運(yùn)行setT imeout(runcmd(),10);網(wǎng)頁(yè)病毒主要癥狀網(wǎng)頁(yè)病毒主要癥狀v在用戶IE瀏覽器的標(biāo)

26、題欄打廣告v修改IE的默認(rèn)網(wǎng)址,并且不可以修改v鎖定用戶的注冊(cè)表編輯程序v禁止使用“運(yùn)行”選項(xiàng)v有時(shí)候也可能對(duì)硬盤進(jìn)行格式化,在用戶機(jī)器上創(chuàng)建一些文件Win32 PEWin32 PE病毒病毒v什么是PE病毒?vPE病毒是指所有感染W(wǎng)indows下PE文件格式文件的病毒。vPE病毒大多數(shù)采用Win32匯編編寫。vPE病毒對(duì)于一個(gè)熱衷于病毒技術(shù)的人來(lái)說(shuō),是必須掌握的。v只有在PE病毒中,我們才能真正感受到高超的病毒技術(shù)。編寫Win32病毒的幾個(gè)關(guān)鍵vApi函數(shù)的獲取v不能直接引用動(dòng)態(tài)鏈接庫(kù)v需要自己尋找api函數(shù)的地址,然后直接調(diào)用該地址v一點(diǎn)背景:在PE Loader裝入我們的程序啟動(dòng)后堆棧頂?shù)?/p>

27、地址是是程序的返回地址,肯定在Kernel中! 因此我們可以得到這個(gè)地址,然后向低地址縮減驗(yàn)證一直到找到模塊的起始地址,驗(yàn)證條件為PE頭不能大于4096bytes,PE header的ImageBase值應(yīng)該和當(dāng)前指針相等.v病毒沒(méi)有.data段,變量和數(shù)據(jù)全部放在.code段 編寫Win32病毒的幾個(gè)關(guān)鍵v偏移地址的重定位 Call deltadelta: pop ebp sub ebp,offset delta那么變量var1的真正偏移地址為:var1+ebpv對(duì)PE文件格式的了解編寫Win32病毒的幾個(gè)關(guān)鍵v病毒如何感染其他文件病毒如何感染其他文件 v在文件中添加一個(gè)新節(jié)v該新節(jié)中添加病

28、毒代碼和病毒執(zhí)行后的返回Host程序的代嗎v修改文件頭中代碼開(kāi)始執(zhí)行位置(AddressOfEntryPoint)指向新添加的節(jié),以便程序運(yùn)行后先執(zhí)行病毒代碼。PE病毒感染其他文件的方法還有很多,譬如PE病毒還可以將自己分散插入到每個(gè)節(jié)的空隙中等等,這里不在一一敘述。PE文件格式一覽文件格式一覽DOS MZ headerDOS stubPE headerSection tableSection 1Section 2Section .Section nPE headerPe header 由三部分組成v 字串 “PE00”(Signature)v 映像文件頭(FileHeader)v 可選映像頭

29、(OptionalHeader)字串 “PE00”vSignature 一dword類型,值為50h, 45h, 00h, 00h(PE00)。 本域?yàn)镻E標(biāo)記,我們可以此識(shí)別給定文件是否為有效PE文件。v這個(gè)字串在文件中的位置(e_lfanew),可以在DOS程序頭中找到它的指針,它占用四個(gè)字節(jié),位于文件開(kāi)始偏移3CH字節(jié)中。 映像文件頭v該結(jié)構(gòu)域包含了關(guān)于PE文件物理分布的信息, 比如節(jié)數(shù)目、文件執(zhí)行機(jī)器等。v它實(shí)際上是結(jié)構(gòu)IMAGE_FILE_HEADER的簡(jiǎn)的簡(jiǎn)稱。稱。映像文件頭結(jié)構(gòu) IMAGE_FILE_HEADER STRUCT Machine WORD ? NumberOfSec

30、tions WORD ? TimeDateStamp dd ? PointerToSymbolTable dd ? NumberOfSymbols dd ? SizeOfOptionalHeader WORD ? Characteristics WORD ? IMAGE_FILE_HEADER ENDS映像文件頭的基本信息順序名字 大小(字節(jié))描述1Machine *2機(jī)器類型,x86為14ch2NumberOfSection *2文件中節(jié)的個(gè)數(shù)3TimeDataStamp4生成該文件的時(shí)間4PointerToSymbleTable4COFF符號(hào)表的偏移5NumberOfSymbols4符號(hào)數(shù)

31、目6SizeOfOptionalHeader2可選頭的大小7Characteristics *2關(guān)于文件信息的標(biāo)記,比如文件是exe還是dll可選映像頭voptional header 結(jié)構(gòu)是 IMAGE_NT_HEADERS 中的最后成員。包含了PE文件的邏輯分布信息。該結(jié)構(gòu)共有31個(gè)域,一些是很關(guān)鍵,另一些不太常用。這里只介紹那些真正有用的域。v這兒有個(gè)關(guān)于PE文件格式的常用術(shù)語(yǔ): RVA RVA 代表相對(duì)虛擬地址。它是相對(duì)虛擬空間里的一個(gè)地址 。v舉例說(shuō)明,如果PE文件裝入虛擬地址(VA)空間的400000h處,且進(jìn)程從虛址401000h開(kāi)始執(zhí)行,我們可以說(shuō)進(jìn)程執(zhí)行起始地址在RVA 10

32、00h。每個(gè)RVA都是相對(duì)于模塊的起始VA的??蛇x映像頭名字描述AddressOfEntryPoint *PE裝載器準(zhǔn)備運(yùn)行的PE文件的第一個(gè)指令的RVA。若要改變整個(gè)執(zhí)行的流程,可以將該值指定到新的RVA,這樣新RVA處的指令首先被執(zhí)行。ImageBasePE文件的優(yōu)先裝載地址。比如,如果該值是400000h,PE裝載器將嘗試把文件裝到虛擬地址空間的400000h處。若該地址區(qū)域已被其他模塊占用,那PE裝載器會(huì)選用其他空閑地址。SectionAlignment內(nèi)存中節(jié)對(duì)齊的粒度。FileAlignment文件中節(jié)對(duì)齊的粒度??蛇x映像頭名字描述MajorSubsystemVersionMino

33、rSubsystemVersion win32子系統(tǒng)版本。若PE文件是專門為Win32設(shè)計(jì)的,該子系統(tǒng)版本必定是4.0否則對(duì)話框不會(huì)有3維立體感。SizeOfImage內(nèi)存中整個(gè)PE映像體的尺寸。SizeOfHeaders所有頭+節(jié)表的大小,也就等于文件尺寸減去文件中所有節(jié)的尺寸??梢砸源酥底鳛镻E文件第一節(jié)的文件偏移量。SubsystemNT用來(lái)識(shí)別PE文件屬于哪個(gè)子系統(tǒng)。DataDirectory一IMAGE_DATA_DIRECTORY 結(jié)構(gòu)數(shù)組。每個(gè)結(jié)構(gòu)給出一個(gè)重要數(shù)據(jù)結(jié)構(gòu)的RVA,比如引入地址表等。DataDirectory數(shù)據(jù)目錄v一個(gè)IMAGE_DATA_DIRECTORY數(shù)組,

34、里面放的是這個(gè)可執(zhí)行文件的一些重要部分的RVA和尺寸,目的是使可執(zhí)行文件的裝入更快,數(shù)組的項(xiàng)數(shù)由上一個(gè)域給出。IMAGE_DATA_DIRECTORY包含有兩個(gè)域,如下: IMAGE_DATA_DIRECTORY VitualAddress DD? Size DD? IMAGE_DATA_DIRECTORY ENDS節(jié)表v節(jié)表其實(shí)就是緊挨著 PE header 的一結(jié)構(gòu)數(shù)組。該數(shù)組成員的數(shù)目由 file header (IMAGE_FILE_HEADER) 結(jié)構(gòu)中 NumberOfSections 域的域值來(lái)決定。節(jié)表結(jié)構(gòu)又命名為 IMAGE_SECTION_HEADER。v結(jié)構(gòu)中放的是一個(gè)節(jié)

35、的信息,如名字、地址、長(zhǎng)度、屬性等。IMAGE_SECTION_HEADER順序名字大?。ㄗ止?jié))描述1Name *8節(jié)名2PhysicalAddress或VirtualSize4OBJ文件用作表示本節(jié)物理地址EXE文件中表示節(jié)的真實(shí)尺寸3Virtual *4這個(gè)值+映像基地址=本節(jié)在內(nèi)存中的真正地址。OBJ中無(wú)意義。4SizeOfRawData *4本節(jié)的原始尺寸5PointerToRawData *4本節(jié)原始數(shù)據(jù)在文件中的位置IMAGE_SECTION_HEADER順序名字大?。ㄗ止?jié))描述6PointerToRelocations4OBJ中表示該節(jié)重定位信息的偏移EXE文件中無(wú)意義7Poin

36、terToLinenumbers4行號(hào)偏移8NumberOfRelocations2本節(jié)要重定位的數(shù)目9NumberOfLinenumbers2本節(jié)在行號(hào)表中的行號(hào)數(shù)目10Characteristics *4節(jié)屬性節(jié) “節(jié)(Section)”跟在節(jié)表之后,一般PE文件都有幾個(gè)“節(jié)”。比較常見(jiàn)的有:v代碼節(jié)v已初始化的數(shù)據(jù)節(jié)v未初始化的數(shù)據(jù)節(jié)v資源節(jié)v引入函數(shù)節(jié)v引出函數(shù)節(jié)代碼節(jié)v代碼節(jié)一般名為.text或CODE,該節(jié)含有程序的可執(zhí)行代碼。v每個(gè)PE文件都有代碼節(jié)v在代碼節(jié)中,還有一些特別的數(shù)據(jù),是作為調(diào)用映入函數(shù)之用。如: Call MessageBoxA的調(diào)用,反匯編后該指令被換為call 0040101A,而地址0040101A仍在.text中,它放有一個(gè)跳轉(zhuǎn)指令jmp dword ptr0040304c,即這條跳轉(zhuǎn)指令的目的地址處于.idata節(jié)中的0040304C處,其中放的才

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論