一種基于虛擬機的0day/惡意文檔檢測系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明是關(guān)于軟件漏洞檢測與分析技術(shù)領(lǐng)域,特別涉及一種基于虛擬機的ODAY/惡意文檔檢測系統(tǒng)及方法。
【背景技術(shù)】
[0002]軟件漏洞的成因是由于開發(fā)語言本身的局限性,或是由于軟件作者因開發(fā)期時期編寫程序不完善或安全意識不夠而疏忽大意而造成的。緩沖區(qū)溢出即是一種最常見的軟件漏洞。其原理是向程序的緩沖區(qū)寫入超過其限定長度的內(nèi)容,造成緩沖區(qū)數(shù)據(jù)的溢出,從而破壞程序的堆棧,使程序崩潰或轉(zhuǎn)而執(zhí)行其他指令,達到攻擊的目的。軟件漏洞還包括邏輯漏洞,SQL注入等。
[0003]惡意文檔,是根據(jù)加載文檔的軟件存在的漏洞而故意制作的不正常文件。如文檔可為DOC,PDF, XLS, PPT等文檔,根據(jù)加載該文檔的軟件存在的漏洞(如緩沖區(qū)溢出漏洞)而特制的文檔,在特定的環(huán)境下打開該文檔后會成功執(zhí)行惡意指令等。
[0004]目前對惡意文檔的檢測方法主要是靜態(tài)檢測,如OfficeMalScanner定位微軟Office (DOC, XLS和PPT)文件中的she I Icode和VBA宏;OffVis顯示微軟Office文件的原始內(nèi)容和結(jié)構(gòu),并能鑒別一些常見的exploit等。但靜態(tài)檢測存在一定的誤報和漏報。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的主要目的在于克服現(xiàn)有技術(shù)中的不足,提供一種能通過動態(tài)執(zhí)行的方法檢測惡意文檔的檢測系統(tǒng)及方法。為解決上述技術(shù)問題,本發(fā)明的解決方案是:
[0006]提供一種基于虛擬機的ODAY/惡意文檔檢測系統(tǒng),能動態(tài)檢測加載在Ring3虛擬機上的文檔進程,所述ODAY/惡意文檔檢測系統(tǒng)包括文檔執(zhí)行模塊、Ring3虛擬機模塊、Shellcode檢測模塊、Except1n檢測模塊、ROP檢測模塊、日志模塊,能加載在用于運行文檔進程的Ring3虛擬機上;
[0007]所述文檔執(zhí)行模塊,用于加載文檔;
[0008]所述Ring3虛擬機模塊,用于解析每條二進制指令并跟蹤二進制指令的流向;
[0009]所述Shellcode檢測模塊,用于檢測是否有shellcode ;
[0010]所述Except1n檢測模塊,用于記錄崩潰及異常信息;
[0011 ] 所述ROP檢測模塊,用于檢測ROP行為;
[0012]所述日志模塊,用于記錄Shellcode檢測模塊、Except1n檢測模塊和ROP檢測模塊的檢測結(jié)果。
[0013]提供基于所述的ODAY/惡意文檔檢測系統(tǒng)的檢測方法,用于檢測文檔是否為惡意文檔,具體步驟如下所述:
[0014]步驟A:加載所需檢測文檔的進程(如WINWORD.EXE等)運行在Ring3虛擬機上;
[0015]步驟B:在Ring3虛擬機上加載Shellcode檢測模塊、Except1n檢測模塊、ROP檢測模塊、日志模塊;
[0016]步驟C:動態(tài)跟蹤程序指令,各檢測模塊進行實時檢測;
[0017]步驟D:日志模塊將步驟C中檢測到的結(jié)果,保存到日志文件中;若日志文件中存有檢測結(jié)果信息,則說明該文檔為惡意文檔。
[0018]在本發(fā)明中,所述步驟C中,Shellcode檢測模塊進行檢測時,當(dāng)同時滿足以下兩個條件時表示檢測到shellcode:
[0019]條件I)記錄進程及其調(diào)用的模塊的地址空間,如遇到程序執(zhí)行時二進制指令執(zhí)行的地址不屬于調(diào)用到的模塊或進程所屬的地址空間時,將進程標(biāo)記為可疑;
[0020]條件2)判斷運行條件I)中二進制指令執(zhí)行的地址的內(nèi)存屬性,當(dāng)指令地址不具備可執(zhí)行屬性時,將進程標(biāo)記為可疑。
[0021]在本發(fā)明中,所述步驟C中,Except1n檢測模塊進行檢測時,實時監(jiān)控異常,當(dāng)檢測到的異常代碼為OxcOOOOOOO到Oxcfffffff之間或等于0x80000003時,表明該文檔為異常文檔。
[0022]在本發(fā)明中,所述步驟C中,ROP檢測模塊針對指定函數(shù),檢測函數(shù)的返回地址所指向的指令的前一條指令是否為call指令,若不是Call指令則說明檢測到ROP行為;
[0023]所述指定函數(shù)包括VirtualProtect、VirtualProtectEx、VirtualAlloc、VirtualAllocEx^ HeapCreate、 LoadLibraryA^ LoadLibraryExA^ LoadLibraryExff^CreateProcessA、CreateProcessff^ CreateProcessInternalA^ CreateProcessInternalff^CreateRemoteThread、WriteProcessMemory、WinExec> CreateFile、CreateFileA、CreateFileff> CreateFileMappingA、CreateFiIeMappingW、MapViewOfFi Ie、MapViewOfFi IeEx、GetTempPathA、GetTempPathff0
[0024]在本發(fā)明中,所述檢測方法是指令級別的檢測方法。
[0025]在本發(fā)明中,所述檢測方法是函數(shù)級別的檢測方法。
[0026]在本發(fā)明中,所述檢測方法是軌跡級別的檢測方法。
[0027]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:
[0028]本發(fā)明通過動態(tài)執(zhí)行的方法,來檢測文檔是否為惡意文檔,增加了檢測的準(zhǔn)確性;并且本發(fā)明能根據(jù)日志文件中記錄的信息,對惡意文檔進行快速有效的后續(xù)分析。
【附圖說明】
[0029]圖1為本發(fā)明中ODAY/惡意文檔檢測系統(tǒng)的示意框圖。
[0030]圖2為本發(fā)明中基于ODAY/惡意文檔檢測系統(tǒng)的檢測方法的流程圖。
【具體實施方式】
[0031]下面結(jié)合附圖與【具體實施方式】對本發(fā)明作進一步詳細(xì)描述:
[0032]如圖1、圖2所示,基于Ring3虛擬機的ODAY/惡意文檔檢測系統(tǒng)的檢測方法,對文檔是否為惡意文檔進行檢測的具體步驟為:
[0033]步驟1:加載文檔的進程(如WINWORD.EXE等)運行在Ring3虛擬機之上。
[0034]步驟2:裝載shellcode檢測模塊,except1n檢測模塊,ROP檢測模塊,日志記錄模塊。
[0035]步驟3:動態(tài)跟蹤程序指令,各模塊實時檢測。
[0036]其中,shellcode模塊的進行檢測時,當(dāng)同時滿足以下兩個條件時表示檢測到shellcode:
[0037]I)記錄進程及其調(diào)用的模塊的地址空間,如遇到指令地址不屬于以上地址空間時,標(biāo)記為可疑;
[0038]2)判斷運行指令地址的內(nèi)存屬性,當(dāng)指令地址不具備可執(zhí)行屬性時標(biāo)記為可疑。
[0039]其中,except1n模塊的檢測方法如下:
[0040]實時監(jiān)控異常,當(dāng)檢測到的異常代碼為OxcOOOOOOO到Oxcfffffff之間或等于0x80000003時表明該文檔為異常文檔。
[0041 ] 其中,ROP模塊的檢測方法如下:
[0042]檢測指定的函數(shù),函數(shù)包括kernel32.CreateFileW、kernel32.WinExec、kernel32.CreateProcessInternalffNkerne132.VirtualProtectEx 等 24 個函數(shù),檢測這些函數(shù)的返回地址所指向的指令的前一條指令是否為call指令,針對32位操作系統(tǒng)主要檢測四種類型:
[0043]①針對“call xxxxxxxx”的間接跳轉(zhuǎn);
[0044]②針對“call AAAABBBBBBBB”的直接遠(yuǎn)跳,其“AAAA”代表16位的段選擇子,“BBBBBBBB”代表32位偏移;
[0045]③針對“call[內(nèi)存地址]’,,opcode 為 “FFl5 [xxxxxxxx] ’,;
[0046]④針對“callfar [內(nèi)存地址]”,opcode 為“FF1D[xxxxxxxx] ”。
[0047]步驟4:將檢測到的結(jié)果保存到日志文件中。
[0048]最后,需要注意的是,以上所述,僅為本發(fā)明較佳的【具體實施方式】,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)該以權(quán)利要求的保護范圍為準(zhǔn)。
【主權(quán)項】
1.一種基于虛擬機的ODAY/惡意文檔檢測系統(tǒng),能動態(tài)檢測加載在Ring3虛擬機上的文檔進程,其特征在于,所述ODAY/惡意文檔檢測系統(tǒng)包括文檔執(zhí)行模塊、Ring3虛擬機模塊、Shellcode檢測模塊、Except1n檢測模塊、ROP檢測模塊、日志模塊,能加載在用于運行文檔進程的Ring3虛擬機上; 所述文檔執(zhí)行模塊,用于加載文檔; 所述Ring3虛擬機模塊,用于解析每條二進制指令并跟蹤二進制指令的流向; 所述Shellcode檢測模塊,用于檢測是否有shellcode ; 所述Exert1n檢測模塊,用于記錄崩潰及異常信息; 所述ROP檢測模塊,用于檢測ROP行為; 所述日志模塊,用于記錄Shellcode檢測模塊、Except1n檢測模塊和ROP檢測模塊的檢測結(jié)果。2.基于權(quán)利要求1所述的ODAY/惡意文檔檢測系統(tǒng)的檢測方法,用于檢測文檔是否為惡意文檔,其特征在于,具體步驟如下所述: 步驟A:加載所需檢測文檔的進程運行在Ring3虛擬機上; 步驟B:在Ring3虛擬機上加載Shellcode檢測模塊、Except1n檢測模塊、ROP檢測模塊、日志模塊; 步驟C:動態(tài)跟蹤程序指令,各檢測模塊進行實時檢測; 步驟D:日志模塊將步驟C中檢測到的結(jié)果,保存到日志文件中;若日志文件中存有檢測結(jié)果信息,則說明該文檔為惡意文檔。3.根據(jù)權(quán)利要求2所述的檢測方法,其特征在于,所述步驟C中,Shellcode檢測模塊進行檢測時,當(dāng)同時滿足以下兩個條件時表示檢測到shellcode: 條件I)記錄進程及其調(diào)用的模塊的地址空間,如遇到程序執(zhí)行時二進制指令執(zhí)行的地址不屬于調(diào)用到的模塊或進程所屬的地址空間時,將進程標(biāo)記為可疑; 條件2)判斷運行條件I)中二進制指令執(zhí)行的地址的內(nèi)存屬性,當(dāng)指令地址不具備可執(zhí)行屬性時,將進程標(biāo)記為可疑。4.根據(jù)權(quán)利要求2所述的檢測方法,其特征在于,所述步驟C中,Except1n檢測模塊進行檢測時,實時監(jiān)控異常,當(dāng)檢測到的異常代碼為OxcOOOOOOO到Oxcfffffff之間或等于0x80000003時,表明該文檔為異常文檔。5.根據(jù)權(quán)利要求2所述的檢測方法,其特征在于,所述步驟C中,ROP檢測模塊針對指定函數(shù),檢測函數(shù)的返回地址所指向的指令的前一條指令是否為call指令,若不是Call指令則說明檢測到ROP行為; 所述指定函數(shù)包括 VirtualProtect、VirtualProtectEx、VirtualAlloc、VirtualAllocEx^ HeapCreate、 LoadLibraryA^ LoadLibraryExA^ LoadLibraryExff^CreateProcessA、CreateProcessff^ CreateProcessInternalA^ CreateProcessInternalff^CreateRemoteThread、WriteProcessMemory^ WinExec> CreateFile、CreateFileA、CreateFileff> CreateFileMappingA、CreateFiIeMappingW、MapViewOfFi Ie、MapViewOfFi IeEx、GetTempPathA、GetTempPathff06.根據(jù)權(quán)利要求2所述的檢測方法,其特征在于,所述檢測方法是指令級別的檢測方法。7.根據(jù)權(quán)利要求2所述的檢測方法,其特征在于,所述檢測方法是函數(shù)級別的檢測方法。8.根據(jù)權(quán)利要求2所述的檢測方法,其特征在于,所述檢測方法是軌跡級別的檢測方法。
【專利摘要】本發(fā)明涉及軟件漏洞檢測與分析技術(shù)領(lǐng)域,旨在提供一種基于虛擬機的0DAY/惡意文檔檢測系統(tǒng)及方法。該種基于虛擬機的0DAY/惡意文檔檢測系統(tǒng)包括文檔執(zhí)行模塊、Ring3虛擬機模塊、Shellcode檢測模塊、Exception檢測模塊、ROP檢測模塊、日志模塊,能動態(tài)檢測加載在Ring3虛擬機上的文檔進程;該檢測方法包括步驟:加載所需檢測文檔的進程運行在Ring3虛擬機上,各檢測模塊進行實時檢測,日志模塊將檢測結(jié)果保存到日志文件并判斷該文檔是否為惡意文檔。本發(fā)明通過動態(tài)執(zhí)行的方法進行檢測,增加了檢測的準(zhǔn)確性,并且本發(fā)明能根據(jù)日志文件中記錄的信息,對惡意文檔進行快速有效的后續(xù)分析。
【IPC分類】G06F21/56, G06F21/57
【公開號】CN105117648
【申請?zhí)枴緾N201510456001
【發(fā)明人】吳棟, 范淵, 吳卓群
【申請人】杭州安恒信息技術(shù)有限公司
【公開日】2015年12月2日
【申請日】2015年7月29日