專利名稱:惡意程序行為自動(dòng)化分析、檢測(cè)與分類系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明屬于系統(tǒng)安全與網(wǎng)絡(luò)安全相關(guān)領(lǐng)域,更進(jìn)一步涉及惡意程序動(dòng)態(tài)行為自動(dòng)化分析的方法。本發(fā)明用于對(duì)已知惡意程序動(dòng)態(tài)行為規(guī)則的建立,和對(duì)未知惡意程序動(dòng)態(tài)行為的高準(zhǔn)確度判斷。
背景技術(shù):
在惡意程序分析領(lǐng)域,為了更加準(zhǔn)確、更加全面的、更加迅速的獲得惡意程序的行為特征,采用動(dòng)態(tài)行為自動(dòng)化分析方法。電子科技大學(xué)的專利申請(qǐng)“惡意程序動(dòng)態(tài)行為自動(dòng)化分析系統(tǒng)與方法”(公開號(hào)CN101154258,申請(qǐng)日2007.08.14)中公開了一種惡意程序動(dòng)態(tài)分析的方法。這種動(dòng)態(tài)分析的具體步驟包括(I)初始化部件啟動(dòng)目標(biāo)二進(jìn)制程序;(2)初始化部件加載虛擬執(zhí)行部件和行為監(jiān)控部件;(3)反匯編部件獲取目標(biāo)程序二進(jìn)制代碼流的匯編指令;(4)虛擬執(zhí)行部件切片生成相應(yīng)的執(zhí)行塊;(5)行為控制部件判斷基本塊內(nèi)是否存在規(guī)則庫(kù)中的惡意行為;(6)若存在惡意行為,將控制權(quán)交給行為分析部件,記錄該惡意行為;(7)虛擬執(zhí)行基本塊中的每條指令;(8)停止分析后,行為分析部件提交惡意行為分析報(bào)告。雖然這種方法提供了自動(dòng)化惡意程序動(dòng)態(tài)行為分析系統(tǒng),可用于對(duì)未知惡意程序動(dòng)態(tài)行為的粗粒度劃分,但是由于該系統(tǒng)缺少對(duì)惡意程序的靜態(tài)分析、缺少主機(jī)事件模擬、缺少主機(jī)環(huán)境模擬、缺少常見的網(wǎng)絡(luò)環(huán)境的模擬等,所以該系統(tǒng)對(duì)惡意程序的動(dòng)態(tài)行為的獲取很不全面;并且該系統(tǒng)僅能對(duì)二進(jìn)制可執(zhí)行文件進(jìn)行分析,對(duì)其他格式文件如服務(wù)程序、DLL文件或非PE文件都不能進(jìn)行分析,系統(tǒng)使用的局限性很大;同時(shí),該系統(tǒng)對(duì)獲得惡意程序行為特征之后如何進(jìn)行行為抽象,以及如何對(duì)未知二進(jìn)制程序的惡意行為進(jìn)行分析歸類未能給出方法。綜上所述,這些不足影響到該系統(tǒng)的實(shí)用性、準(zhǔn)確性以及分類效率。
發(fā)明內(nèi)容
本發(fā)明針對(duì)現(xiàn)有的惡意程序分析、檢測(cè)與分類的技術(shù)的不足,提出一種靜態(tài)分析、動(dòng)態(tài)分析與網(wǎng)絡(luò)分析相結(jié)合,行為抽象與集成學(xué)習(xí)相結(jié)合的惡意程序自動(dòng)化分析、檢測(cè)與分類方法。目標(biāo)是提供實(shí)用性較強(qiáng)的惡意程序自動(dòng)化分析、檢測(cè)與分類系統(tǒng)及方法,它支持加載運(yùn)行PE文件和常見的非PE文件,支持對(duì)惡意程序執(zhí)行的完全監(jiān)控,監(jiān)控惡意程序加載執(zhí)行期間的進(jìn)程注入、注冊(cè)表操作、內(nèi)存操作、文件操作等主機(jī)行為以及網(wǎng)絡(luò)重定向、DNS尋址、ftp連接、http訪問、email登錄與發(fā)送等網(wǎng)絡(luò)行為,提供對(duì)進(jìn)程、內(nèi)存、文件、注冊(cè)表、主機(jī)環(huán)境、網(wǎng)絡(luò)等各類系統(tǒng)資源的惡意訪問行為,提供U盤插入、光盤插入等主機(jī)事件的模擬。同時(shí),根據(jù)惡意程序自動(dòng)化分析生成的報(bào)告對(duì)每個(gè)惡意程序的行為進(jìn)行系統(tǒng)化、規(guī)則化的抽象,形成惡意程序行為特征庫(kù),利用集成學(xué)習(xí)方法對(duì)這些行為特征進(jìn)行分析和量化,建立起分類模型,有效提高了對(duì)未知樣本文件分類的準(zhǔn)確率。本發(fā)明通過(guò)虛擬化技術(shù)實(shí)現(xiàn)的沙盒監(jiān)控、獲取惡意程序靜態(tài)信息并捕獲惡意程序行為特征、基于行為特征的惡意程序檢測(cè)及分類這一整套系統(tǒng)化的方法來(lái)實(shí)現(xiàn)惡意程序自動(dòng)化分析與準(zhǔn)確分類,以解決現(xiàn)有技術(shù)中特征碼提取難度大、難以應(yīng)對(duì)復(fù)雜的加殼、多態(tài)和變形技術(shù)的惡意程序、惡意程序行為捕獲不完整、行為抽象和檢測(cè)分類方法不明確等缺點(diǎn),提高了惡意程序的檢測(cè)率和分類準(zhǔn)確率。本發(fā)明提供的惡意程序自動(dòng)化分析、檢測(cè)與分類系統(tǒng)包括了下述模塊I.靜態(tài)分析模塊在對(duì)樣本文件進(jìn)行沙盒動(dòng)態(tài)分析之前,可以對(duì)可執(zhí)行文件(PF文件)的結(jié)構(gòu)進(jìn)行靜態(tài)分析,以得到盡可能多的與樣本相關(guān)的信息,由這些信息得到樣本文件的靜態(tài)分析報(bào)告,和之后的各種報(bào)告成為行為抽象模塊最原始的數(shù)據(jù)來(lái)源。2.沙盒調(diào)度管理模塊本發(fā)明包括多個(gè)沙盒,需要有獨(dú)立的沙盒調(diào)度管理模塊管理每個(gè)沙盒、協(xié)調(diào)樣本和數(shù)據(jù)的傳輸、控制樣本自動(dòng)化分析的流程。沙盒調(diào)度管理模塊控制每一個(gè)沙盒的啟動(dòng)和退出,實(shí)現(xiàn)與每一個(gè)沙盒的信息交換與文件傳輸,控制樣本的執(zhí)行和主機(jī)環(huán)境模擬??偟膩?lái)說(shuō),沙盒調(diào)度管理模塊是一個(gè)協(xié)助沙盒監(jiān)控模塊自動(dòng)化完成相應(yīng)功能的模塊,是一個(gè)重要的輔助模塊。3.沙盒監(jiān)控模塊沙盒監(jiān)控模塊以捕獲特定進(jìn)程發(fā)起的API調(diào)用及其參數(shù)為主要目標(biāo),同時(shí)提取該進(jìn)程加載模塊和操作系統(tǒng)為其維護(hù)的相關(guān)內(nèi)核數(shù)據(jù)。本發(fā)明使用開源模擬器Qemu作為基礎(chǔ)的虛擬機(jī)軟件,并且對(duì)其CPU模擬中的指令解釋執(zhí)行部分核心代碼進(jìn)行修改,實(shí)現(xiàn)監(jiān)控特定進(jìn)程主機(jī)行為的目的。這種基于指令集仿真環(huán)境的行為監(jiān)測(cè)技術(shù)可以從指令級(jí)開始自下而上實(shí)現(xiàn)系統(tǒng)調(diào)用、進(jìn)程等內(nèi)核模塊重構(gòu)來(lái)獲取惡意程序動(dòng)態(tài)執(zhí)行中的行為,并且宿主機(jī)與惡意程序執(zhí)行的沙盒環(huán)境相隔離,在很大程度上避免了惡意程序在執(zhí)行過(guò)程中對(duì)宿主機(jī)的影響。為了克服傳統(tǒng)API攔截方法中由于修改被監(jiān)控程序源代碼引起的破壞程序穩(wěn)定執(zhí)行、容易被檢測(cè)出分析工具的存在以逃避監(jiān)控、收集操作系統(tǒng)內(nèi)核數(shù)據(jù)時(shí),需要驅(qū)動(dòng)程序,技術(shù)難度大等缺點(diǎn),沙盒監(jiān)控模塊以不修改目標(biāo)程序,靜默監(jiān)控測(cè)試程序的執(zhí)行,收集多種可用信息為目標(biāo)。被監(jiān)控程序運(yùn)行在客戶操作系統(tǒng)中,程序行為的監(jiān)控實(shí)現(xiàn)在比客戶操作系統(tǒng)有著更高特權(quán)等級(jí)的Qemu監(jiān)控器單元。由于行為監(jiān)控實(shí)現(xiàn)于更高的特權(quán)等級(jí),測(cè)試程序難以逃脫分析,并且無(wú)需修改測(cè)試程序源代碼。4.行為抽象模塊在沙盒監(jiān)控模塊完成對(duì)惡意程序的執(zhí)行和API的捕獲之后,可以獲得該樣本程序運(yùn)行期間使用的API函數(shù)及其參數(shù)的報(bào)告。但是該API報(bào)告直接用于惡意程序分類,存在一些障礙,所以需要從API序列中抽象得到樣本表現(xiàn)的行為。這個(gè)將樣本API序列抽象為樣本行為的過(guò)程,稱為“行為抽象”。惡意程序樣本經(jīng)過(guò)沙盒分析,得到的是其API調(diào)用序列。雖然該調(diào)用序列含有較多的與惡意程序行為相關(guān)的信息,但是在后續(xù)分類算法處理,以及生成人容易理解的報(bào)告的過(guò)程中,API序列的抽象層次程度過(guò)低。所以需要定義一些規(guī)則,將API調(diào)用序列抽象為算法容易處理的數(shù)據(jù)形式,更進(jìn)一步還需要抽象成為人容易理解的表述形式。5.檢測(cè)與分類模塊惡意程序檢測(cè)任務(wù)是一個(gè)標(biāo)準(zhǔn)的多分類任務(wù)。為了判斷用戶提交的分析文件是否是惡意程序,若是需進(jìn)一步判斷屬于哪一種惡意程序,必須首先建立起分類模型。本系統(tǒng)采用集成學(xué)習(xí)的思想建立分類模型。集成學(xué)習(xí)的思想使用不同的策略將一個(gè)大問題劃分為若干的小問題分別求解,或是生成多個(gè)學(xué)習(xí)器解決同一問題,接著通過(guò)集成策略將不同子分類器的輸出結(jié)果合成,得到單一的最終輸出結(jié)果。生成多個(gè)分類器進(jìn)行表決,能夠有效提高分類問題的準(zhǔn)確率,是本系統(tǒng)中算法設(shè)計(jì)的核心。集成學(xué)習(xí)算法分為兩個(gè)關(guān)鍵環(huán)節(jié)子分類器生成和分類器集成。本系統(tǒng)選擇增強(qiáng)學(xué)習(xí)中經(jīng)典的AdaBoost算法作為集成框架,選擇決策樹算法C4. 5作為子分類器生成算法。本發(fā)明與現(xiàn)有技術(shù)相比具有以下優(yōu)點(diǎn)第一,本發(fā)明基于指令集仿真環(huán)境的行為監(jiān)測(cè)技術(shù),可以從指令級(jí)開始自下而上實(shí)現(xiàn)系統(tǒng)調(diào)用、進(jìn)程等內(nèi)核模塊重構(gòu)來(lái)獲取惡意程序動(dòng)態(tài)執(zhí)行中的行為,由于行為監(jiān)控實(shí)現(xiàn)于更高的特權(quán)等級(jí),測(cè)試程序難以逃脫分析,并且無(wú)需修改測(cè)試程序源代碼,因此克服了傳統(tǒng)API攔截方法中由于修改被監(jiān)控程序源代碼引起的破壞程序穩(wěn)定執(zhí)行,容易被檢測(cè)出分析工具的存在以逃避監(jiān)控,收集操作系統(tǒng)內(nèi)核數(shù)據(jù)時(shí)需要驅(qū)動(dòng)程序、技術(shù)難度大等缺點(diǎn)。第二,本發(fā)明在沙盒中通過(guò)環(huán)境配置和修改服務(wù)器程序等手段構(gòu)建虛擬Internet,模擬普遍的網(wǎng)絡(luò)服務(wù),使得惡意程序發(fā)起的DNS解析、http訪問、文件下載、Email登錄、郵件發(fā)送等操作能夠成功執(zhí)行,誘騙惡意程序產(chǎn)生惡意網(wǎng)絡(luò)行為,同時(shí)確保這些網(wǎng)絡(luò)行為不會(huì)對(duì)宿主機(jī)和真實(shí)網(wǎng)絡(luò)造成破壞,克服了惡意程序動(dòng)態(tài)行為分析中惡意程序網(wǎng)絡(luò)行為無(wú)法充分表現(xiàn)等缺點(diǎn)。第三,本發(fā)明在沙盒中通過(guò)環(huán)境配置和程序等手段模擬多種主機(jī)事件和主機(jī)環(huán)境,使得惡意程序?qū)盤插入、光盤插入、網(wǎng)絡(luò)共享文件夾連接等事件或?qū)溈孙L(fēng)、攝像頭等環(huán)境敏感時(shí)都能夠成功表現(xiàn)出后續(xù)的行為,誘騙惡意程序產(chǎn)生更多的行為,克服了惡意程序動(dòng)態(tài)行為分析中惡意程序?qū)χ鳈C(jī)事件或主機(jī)環(huán)境敏感時(shí)無(wú)法充分表現(xiàn)行為等缺點(diǎn)。
第四,本發(fā)明實(shí)現(xiàn)了一種對(duì)于惡意程序行為的抽象算法,通過(guò)分析和處理沙盒得到的惡意程序行為原始數(shù)據(jù),可以得到形式整齊、較少冗余的抽象行為數(shù)據(jù)。該行為抽象算法可以快速得到可供后續(xù)行為檢測(cè)與分類算法使用的數(shù)據(jù),為后續(xù)算法提供良好的數(shù)據(jù)基礎(chǔ),克服了傳統(tǒng)行為抽象算法抽象速度慢、表示方式復(fù)雜、通用性不強(qiáng)等缺點(diǎn)。第五,本發(fā)明在惡意程序行為檢測(cè)與分類過(guò)程中使用了先進(jìn)的集成學(xué)習(xí)算法AdaBoost。作為現(xiàn)代機(jī)器學(xué)習(xí)十大算法之一,AdaBoost算法可以將若干性能較弱的分類器通過(guò)自適應(yīng)線性組合,得到性能較強(qiáng)的分類器,同時(shí)隱式優(yōu)化分類邊界,避免過(guò)擬合帶來(lái)的負(fù)面影響。在惡意程序行為檢測(cè)與分類過(guò)程中采用AdaBoost算法,可以有效提高分類準(zhǔn)確率,尤其是對(duì)于新樣本的泛化準(zhǔn)確率??朔藗鹘y(tǒng)惡意程序行為檢測(cè)與分類過(guò)程中分類效果不理想、容易過(guò)擬合導(dǎo)致泛化能力差等缺點(diǎn)。
圖I為本發(fā)明惡意程序行為自動(dòng)化分析、檢測(cè)與分類系統(tǒng)及方法的流程圖;圖2為本發(fā)明惡意程序行為自動(dòng)化分析、檢測(cè)與分類系統(tǒng)及方法沙盒監(jiān)控模塊的體系結(jié)構(gòu)圖;圖3為本發(fā)明惡意程序行為自動(dòng)化分析、檢測(cè)與分類系統(tǒng)及方法的沙盒監(jiān)控模塊與沙盒調(diào)度管理模塊之間交互工作流程圖。圖4為本發(fā)明惡意程序行為自動(dòng)化分析、檢測(cè)與分類系統(tǒng)及方法的Qemu監(jiān)控器單元工作圖。圖5為本發(fā)明惡意程序行為自動(dòng)化分析、檢測(cè)與分類系統(tǒng)及方法的行為抽象示意圖。
圖6為本發(fā)明惡意程序行為自動(dòng)化分析、檢測(cè)與分類系統(tǒng)及方法的行為抽象流程圖。
具體實(shí)施例方式以下結(jié)合具體實(shí)施例,對(duì)本發(fā)明進(jìn)行詳細(xì)說(shuō)明。參考圖1,步驟1,靜態(tài)分析模塊首先對(duì)可執(zhí)行樣本文件的結(jié)構(gòu)進(jìn)行靜態(tài)分析,獲得樣本的編譯器版本、構(gòu)建時(shí)間、多國(guó)語(yǔ)言信息、PE文件的節(jié)信息、PE文件的導(dǎo)入表、PE文件是否加殼以及加殼類型等,靜態(tài)分析模塊將得到與惡意程序相關(guān)的信息,并結(jié)合沙盒監(jiān)控模塊獲得的惡意程序動(dòng)態(tài)分析信息,為最后的集成分類算法的分類提供更豐富的數(shù)據(jù)。步驟2,靜態(tài)分析完成以后,樣本文件將進(jìn)入動(dòng)態(tài)分析自動(dòng)化過(guò)程。樣本文件的動(dòng)態(tài)分析過(guò)程將由沙盒調(diào)度管理模塊自動(dòng)化管理。沙盒調(diào)度管理模塊啟動(dòng)沙盒,將樣本文件上傳至Guest OS單元,在Guest OS單元中運(yùn)行樣本,沙盒監(jiān)控模塊中的Qemu監(jiān)控器單元監(jiān)控樣本的執(zhí)行或加載,產(chǎn)生樣本文件的API序列的報(bào)告,沙盒監(jiān)控模塊中GuestOS單元的網(wǎng)絡(luò)數(shù)據(jù)包監(jiān)控功能監(jiān)控Guest OS單元產(chǎn)生的網(wǎng)絡(luò)數(shù)據(jù)包,產(chǎn)生樣本文件的網(wǎng)絡(luò)數(shù)據(jù)包報(bào)告。樣本執(zhí)行正常結(jié)束或超時(shí)結(jié)束后,如果是非EXE樣本文件,將進(jìn)行注冊(cè)表及文件系統(tǒng)的快照對(duì)比,產(chǎn)生注冊(cè)表、文件快照對(duì)比報(bào)告。這些報(bào)告將與樣本執(zhí)行過(guò)程中生成的文件一起傳輸給沙盒調(diào)度管理模塊,這些報(bào)告將是對(duì)一個(gè)惡意程序樣本進(jìn)行行為抽象的原始數(shù)據(jù)。圖2為沙盒監(jiān)控模塊的體系結(jié)構(gòu)圖。圖中詳細(xì)描述了沙盒監(jiān)控模塊的體系結(jié)構(gòu),以及沙盒監(jiān)控模塊通過(guò)沙盒調(diào)度管理模塊與宿主機(jī)進(jìn)行交互的情況。沙盒監(jiān)控模塊包括作為惡意程序虛擬執(zhí)行環(huán)境的Guest OS單元;改造過(guò)的全系統(tǒng)模擬器Qemu監(jiān)控器單元。Guest OS單元包括了網(wǎng)絡(luò)數(shù)據(jù)包監(jiān)控、快照對(duì)比、主機(jī)事件模擬等功能,Qemu監(jiān)控器單元包括了進(jìn)程識(shí)別與多進(jìn)程監(jiān)控、API監(jiān)控、API依賴關(guān)系分析與冗余數(shù)據(jù)過(guò)濾等功能。下面2a-2b分別詳細(xì)介紹各單元的功能,以及工作流程。2a). Guest OS(客戶操作系統(tǒng))單元是運(yùn)行惡意程序樣本的環(huán)境,我們選擇Windows XP操作系統(tǒng)作為Guest OS0 Guest OS單元與宿主機(jī)之間通過(guò)虛擬網(wǎng)絡(luò)連接,由沙
盒調(diào)度管理模塊負(fù)責(zé)交互。參考圖3,詳細(xì)描述了 Guest OS單元與沙盒調(diào)度管理模塊進(jìn)行交互,以及GuestOS單元操作惡意程序樣本的工作流程。下面詳細(xì)介紹該工作流程。i>沙盒調(diào)度管理模塊啟動(dòng)沙盒,通過(guò)虛擬網(wǎng)絡(luò)將樣本文件從宿主機(jī)上傳至GuestOS單元。ii>Guest OS啟動(dòng)基于主機(jī)數(shù)據(jù)包的監(jiān)控。開始執(zhí)行樣本文件。ii i>Qemu監(jiān)控器單元在樣本文件正常結(jié)束或超時(shí)結(jié)束后向沙盒調(diào)度管理模塊發(fā)送樣本分析結(jié)束的消息。iv>若樣本文件不是可執(zhí)行文件則進(jìn)行注冊(cè)表及文件系統(tǒng)快照比對(duì),生成快照比對(duì)報(bào)告,否則直接進(jìn)行下一步。v>若樣本文件在執(zhí)行過(guò)程中釋放了其他文件,則將這些文件通過(guò)虛擬網(wǎng)絡(luò)傳給宿主機(jī),否則直接進(jìn)行下一步。vi>Guest OS單元將網(wǎng)絡(luò)數(shù)據(jù)包監(jiān)控報(bào)告?zhèn)鹘o宿主機(jī)。vii>沙盒調(diào)度管理模塊關(guān)閉沙盒。
2b). Qemu監(jiān)控器單元比Guest OS單元有著更高特權(quán)等級(jí),用于監(jiān)控目標(biāo)程序的行為。Qemu監(jiān)控器單元使用開源模擬器Qemu作為基礎(chǔ)的虛擬機(jī)軟件,但是對(duì)其CPU模擬中的指令解釋執(zhí)行部分核心代碼進(jìn)行修改,實(shí)現(xiàn)監(jiān)控特定進(jìn)程主機(jī)行為的目的。參考圖4,描述了 Qemu監(jiān)控器單元的工作過(guò)程,下面詳細(xì)介紹該工作過(guò)程。i>QemU監(jiān)控器單元識(shí)別當(dāng)前正在運(yùn)行的進(jìn)程是否是目標(biāo)進(jìn)程,若不是目標(biāo)進(jìn)程,則直接放過(guò)執(zhí)行,否則進(jìn)行下一步。ii>若執(zhí)行到API入口點(diǎn)處代碼,則保存返回地址到返回地址棧,并調(diào)用前端回調(diào)函數(shù),前端回調(diào)函數(shù)在API入口點(diǎn)處代碼執(zhí)行時(shí)讀取in和in_out參數(shù)的in值。iii>若執(zhí)行的不是API入口點(diǎn)處代碼,則與返回地址棧棧頂元素進(jìn)行比較,若不相等,則說(shuō)明當(dāng)前調(diào)用的API是嵌套調(diào)用的API,這些嵌套調(diào)用的API不代表程序真正的行為而是操作系統(tǒng)的內(nèi)部實(shí)現(xiàn),所以放過(guò)執(zhí)行而不監(jiān)控。否則,若相等,則調(diào)用后端回調(diào)函數(shù),后端回調(diào)函數(shù)在調(diào)用返回時(shí)讀取返回值和out參數(shù)的值,之后對(duì)返回地址棧進(jìn)行相應(yīng)的修改。Qemu監(jiān)控器單元使用開源模擬器Qemu作為基礎(chǔ)的虛擬機(jī)軟件,但是對(duì)CPU模擬中的指令解釋執(zhí)行部分核心代碼進(jìn)行修改,修改Qemu的過(guò)程中涉及到多個(gè)技術(shù)難點(diǎn),下面2c-2g分別介紹各技術(shù)難點(diǎn)及本發(fā)明的解決方法。2c). Qemu監(jiān)控器單元的進(jìn)程識(shí)別未經(jīng)改造的虛擬機(jī)僅對(duì)計(jì)算機(jī)硬件進(jìn)行嚴(yán)格模擬,模擬CPU執(zhí)行每一條指令的過(guò)程,并不理解操作系統(tǒng)級(jí)別的“進(jìn)程”概念。從Qemu監(jiān)控器中向上監(jiān)控運(yùn)行于客戶操作系統(tǒng)中的目標(biāo)進(jìn)程,首先必須在Qemu監(jiān)控器中重構(gòu)出客戶操作系統(tǒng)中當(dāng)前運(yùn)行的所有進(jìn)程,僅在目標(biāo)進(jìn)程被調(diào)度執(zhí)行時(shí),進(jìn)行行為數(shù)據(jù)的捕獲。本系統(tǒng)在Qemu監(jiān)控器單元進(jìn)行進(jìn)程識(shí)別的方法是沙盒監(jiān)控模塊在每一個(gè)翻譯塊開始執(zhí)行前,利用虛擬內(nèi)存讀寫函數(shù),以內(nèi)核數(shù)據(jù)結(jié)構(gòu)KPCR(Kernel Process ControlRegion,內(nèi)核處理器控制區(qū))為線索,找到系統(tǒng)中當(dāng)前正在執(zhí)行進(jìn)程的EPR0CESS結(jié)構(gòu)體起始地址。接著,通過(guò)EPR0CESS(執(zhí)行體進(jìn)程塊)結(jié)構(gòu)中保存的進(jìn)程名判斷當(dāng)前正在執(zhí)行進(jìn)程是否是目標(biāo)進(jìn)程,若是則從中讀取操作系統(tǒng)分配給該進(jìn)程的頁(yè)目錄基址值。之后,將該值與虛擬CR3寄存器中存儲(chǔ)的值做比較,判斷監(jiān)控進(jìn)程是否正在執(zhí)行。僅在目標(biāo)進(jìn)程執(zhí)行時(shí)進(jìn)行行為數(shù)據(jù)采集。2d). API調(diào)用分析框架與讀取參數(shù)的回調(diào)函數(shù)=Qemu以基本塊為單位進(jìn)行指令模擬,每一個(gè)代碼塊均以跳轉(zhuǎn)指令結(jié)束。因而,任何API其入口點(diǎn)處的代碼都位于一個(gè)翻譯塊的開始。在翻譯塊的開始,基于API入口地址比較的原理,便可在Qemu監(jiān)控器單元實(shí)現(xiàn)靜默式監(jiān)控特定進(jìn)程發(fā)起的API調(diào)用。每一個(gè)監(jiān)控中的API都有與之對(duì)應(yīng)的回調(diào)函數(shù),負(fù)責(zé)從虛擬內(nèi)存中讀取傳遞給該API的調(diào)用參數(shù)。API監(jiān)控通過(guò)需要修改Qemu指令翻譯例程來(lái)實(shí)現(xiàn),向其中插入回調(diào)函數(shù)調(diào)用框架,在API入口點(diǎn)代碼執(zhí)行之前,由框架程序判斷是否需要調(diào)用相應(yīng)的回調(diào)函數(shù)獲取參數(shù)信息。API調(diào)用參數(shù)的獲取是行為數(shù)據(jù)采集的核心,僅得到API調(diào)用名不足以分析惡意程序行為。在執(zhí)行到API入口點(diǎn)處代碼時(shí),使用虛擬內(nèi)存讀取函數(shù)便可以從虛擬ESP寄存器指示的地址中讀取返回地址,從ESP+4指示的地址中讀取第一個(gè)參數(shù),從ESP+8指示的地址中讀取第二個(gè)參數(shù),以此類推。API調(diào)用時(shí),超過(guò)32位的參數(shù)(如字符串、結(jié)構(gòu)體等),以指向該參數(shù)指針代替參數(shù)的實(shí)際值。對(duì)于這些參數(shù),一次讀取虛擬內(nèi)存得到的僅僅是參數(shù)
9在內(nèi)存中的存儲(chǔ)地址,對(duì)分析沒有任何作用,必須多次讀取虛擬內(nèi)存直到讀出參數(shù)的實(shí)際值為止。API監(jiān)控由兩段式的回調(diào)函數(shù)完成,前端回調(diào)函數(shù)在API入口點(diǎn)處代碼執(zhí)行時(shí)讀取in參數(shù)(輸入?yún)?shù))和in_out參數(shù)(輸入輸出參數(shù))的in值,后端回調(diào)函數(shù)在調(diào)用返回時(shí)讀取返回值和out參數(shù)(輸出參數(shù))的值。前后端回調(diào)函數(shù)通過(guò)公共緩沖區(qū)進(jìn)行通信,配合工作。使用API入口地址比較法,不可避免的會(huì)監(jiān)控到嵌套調(diào)用的API是另一個(gè)重要問題。操作系統(tǒng)在實(shí)現(xiàn)某個(gè)API時(shí),有可能調(diào)用其它API。例如CopyFile間接調(diào)用CreateFile和WriteFile完成其功能。這些嵌套調(diào)用的API不代表程序真正的行為而是操作系統(tǒng)的內(nèi)部實(shí)現(xiàn)。為了過(guò)濾這一類嵌套調(diào)用API,回調(diào)函數(shù)調(diào)用框架維護(hù)一個(gè)返回地址棧。僅在棧深度為I時(shí)輸出記錄以過(guò)濾嵌套API。2e).缺頁(yè)異常處理虛擬內(nèi)存由Qemu進(jìn)程堆空間模擬,數(shù)據(jù)采集所需的各種信息都位于其中。在本地主機(jī)中定位虛擬內(nèi)存中的數(shù)據(jù),繞過(guò)Qemu虛擬內(nèi)存模擬例程直接讀取所需信息是在Qemu監(jiān)控器單元靜默式收集目標(biāo)進(jìn)程行為數(shù)據(jù)的核心技術(shù)。但是,由于Windows虛擬內(nèi)存管理采用“懶策略”,若需要讀取的數(shù)據(jù)不在虛擬內(nèi)存,而是在虛擬硬盤中時(shí),強(qiáng)行讀取虛擬內(nèi)存會(huì)導(dǎo)致缺頁(yè)異常,客戶操作系統(tǒng)中正在執(zhí)行的分析進(jìn)程異常終止,破壞了監(jiān)控進(jìn)程的正常執(zhí)行,是不可被接受的。為了避免分析者從虛擬內(nèi)存中提取行為數(shù)據(jù)時(shí)引發(fā)缺頁(yè)異常破壞分析程序的正常執(zhí)行,沙盒監(jiān)控模塊使用“三步法”來(lái)解決這一問題。具體過(guò)程如下讀取之前首先測(cè)試是否存在缺頁(yè)現(xiàn)象,若出現(xiàn)缺頁(yè),等待該頁(yè)被調(diào)入虛擬內(nèi)存,若等待不成功,由分析程序強(qiáng)行讀取該地址空間中的數(shù)據(jù),觸發(fā)客戶操作系統(tǒng)缺頁(yè)異常處理例程,將所缺頁(yè)調(diào)入虛擬內(nèi)存,接著嘗試再次讀取數(shù)據(jù)。為了提高執(zhí)行效率,在沙盒監(jiān)控模塊中,并非所有虛擬內(nèi)存讀寫都使用“三步法”,而是僅在最有可能發(fā)生缺頁(yè)時(shí),執(zhí)行以上缺頁(yè)異常避免策略。Windows系統(tǒng)中,直接從棧中讀取的數(shù)據(jù)(32位參數(shù))不會(huì)引起缺頁(yè),字符串和結(jié)構(gòu)體參數(shù)通常情況下數(shù)據(jù)量小也不會(huì)引發(fā)缺頁(yè),均不需要進(jìn)行缺頁(yè)測(cè)試。只有在涉及I/O過(guò)程或是大緩沖區(qū)讀寫時(shí),才有可能出現(xiàn)缺頁(yè)異常。2f). API依賴關(guān)系分析與冗余數(shù)據(jù)過(guò)濾在API調(diào)用中,若某個(gè)API的返回值或是out參數(shù)是另一個(gè)API的in參數(shù),那么稱這兩個(gè)API之間存在調(diào)用依賴關(guān)系。在成功截獲特定進(jìn)程發(fā)起的API調(diào)用之后,API調(diào)用序列分析仍然面臨以下三個(gè)難題。第,為了對(duì)抗API頻率統(tǒng)計(jì)和API時(shí)序分析,部分惡意程序的編寫使用了冗余API插入和API重排,使得API時(shí)序調(diào)用序列難以刻畫惡意程序的特征行為;第二,動(dòng)態(tài)分析在運(yùn)行時(shí)收集監(jiān)控程序的行為數(shù)據(jù),由于程序中存在循環(huán)與搜索,造成某些API重復(fù)調(diào)用,為后續(xù)行為分析帶來(lái)了沉重的數(shù)據(jù)負(fù)擔(dān);第三,Windows API存在二義性,例如CreateFile可以是打開文件,創(chuàng)建文件,打開命名管道,或是創(chuàng)建命名管道等,這就導(dǎo)致API調(diào)用并不真正等價(jià)于程序行為。盡管API調(diào)用頻率和API調(diào)用時(shí)序會(huì)發(fā)生變化,但API之間的調(diào)用依賴關(guān)系相對(duì)穩(wěn)定,并且對(duì)同一對(duì)象重復(fù)操作的API之間存在依賴關(guān)系?;诖?,Qemu監(jiān)控器單元中的API依賴關(guān)系分析與冗余數(shù)據(jù)過(guò)濾功能復(fù)雜處理以下三種情況以提取出惡意程序的特征行為。第一,在Windows平臺(tái)下,句柄代表著系統(tǒng)資源,以句柄為依據(jù)將對(duì)同一資源的重復(fù)操作合并為一次。第二,對(duì)進(jìn)程注入事件進(jìn)行監(jiān)控。第三,通過(guò)依賴關(guān)系分析消除Create系列API的二義性。2g).多進(jìn)程監(jiān)控=Qemu監(jiān)控器單元中的多進(jìn)程監(jiān)控功能用于監(jiān)控主進(jìn)程創(chuàng)建的子進(jìn)程和進(jìn)程注入中被注入進(jìn)程的行為。在主進(jìn)程運(yùn)行過(guò)程中,自動(dòng)識(shí)別并添加需要監(jiān)控的新的目標(biāo)進(jìn)程是多進(jìn)程監(jiān)控的難點(diǎn)。沙盒監(jiān)控模塊以捕獲API調(diào)用為核心,因此,實(shí)現(xiàn)多進(jìn)程監(jiān)控依然從API角度出發(fā)。多進(jìn)程監(jiān)控的第一步是獲取需要監(jiān)控進(jìn)程的進(jìn)程名,在操作系統(tǒng)初始化進(jìn)程時(shí),以進(jìn)程名為線索,找到操作系統(tǒng)分配給該進(jìn)程的頁(yè)目錄基址的值。對(duì)于創(chuàng)建子進(jìn)程這一行為,可通過(guò)監(jiān)控NtCreateProcess這一內(nèi)核API來(lái)實(shí)現(xiàn)。改造NtCreateProcess對(duì)應(yīng)的前端回調(diào)函數(shù),從調(diào)用參數(shù)中抽取出被創(chuàng)建進(jìn)程的進(jìn)程名,通過(guò)上文介紹的運(yùn)行時(shí)內(nèi)存分析方法,找到該進(jìn)程頁(yè)目錄基址的值,傳遞給API調(diào)用管理框架,以實(shí)現(xiàn)子進(jìn)程監(jiān)控的擴(kuò)充。第二步,Qemu監(jiān)控器單元中的進(jìn)程識(shí)別功能維護(hù)一個(gè)敏感頁(yè)目錄基址值列表,在每一個(gè)翻譯塊執(zhí)行前,與虛擬CR3寄存器中存儲(chǔ)的值做比較,當(dāng)虛擬CR3寄存器切換到任一個(gè)敏感頁(yè)目錄基址值時(shí),Qemu監(jiān)控器單元中的API監(jiān)控功能開始工作。進(jìn)程注入行為的監(jiān)控主要分為識(shí)別進(jìn)程注入行為和提取被注入進(jìn)程的進(jìn)程名兩個(gè)步驟,都涉及到運(yùn)行時(shí)多個(gè)API之間依賴關(guān)系的分析。進(jìn)程注入實(shí)現(xiàn)時(shí)通常從進(jìn)程枚舉開始,由于每一個(gè)被枚舉進(jìn)程都是一個(gè)潛在的被注入進(jìn)程,進(jìn)程識(shí)別功能維護(hù)一個(gè)全局進(jìn)程注入事件模板,當(dāng)監(jiān)控到EnumProcess、Process32First和Process32Next等用于進(jìn)程枚舉的API被調(diào)用時(shí),為每一個(gè)被找到進(jìn)程填寫一個(gè)進(jìn)程注入事件模板,記錄進(jìn)程名、進(jìn)程ID、進(jìn)程句柄等信息。實(shí)現(xiàn)進(jìn)程注入的核心API包括0penProcess、VirtualAllocEx>WriteProcessMemory。修改與這些API對(duì)應(yīng)的前端回調(diào)函數(shù),當(dāng)這些API被調(diào)用時(shí),通過(guò)調(diào)用參數(shù)索引相應(yīng)的進(jìn)程注入事件模板,更新模板,直到WriteProcessMemory成功調(diào)用,標(biāo)志著進(jìn)程注入事件的發(fā)生。這時(shí)從模板中讀取被注入進(jìn)程名,找到該進(jìn)程的頁(yè)目錄基址,再傳遞給進(jìn)程識(shí)別功能,便成功添加被注入進(jìn)程為監(jiān)控目標(biāo)。隨后API調(diào)用管理框架會(huì)自動(dòng)分析被注入進(jìn)程發(fā)起的行為。步驟3,在惡意程序樣本動(dòng)態(tài)分析結(jié)束之后,將會(huì)獲得一系列的報(bào)告,這些報(bào)告將由行為抽象模塊進(jìn)行處理,得到樣本行為。結(jié)合附圖5行為抽象示意圖,行為抽象模塊的主要步驟是原始數(shù)據(jù)清理、行為抽象、行為存儲(chǔ)。結(jié)合附圖6行為抽象流程圖,行為抽象模塊的每個(gè)步驟將細(xì)化為多個(gè)細(xì)則。下面進(jìn)行詳細(xì)的介紹。3a).原始數(shù)據(jù)清理由于原始API序列中存在一些無(wú)效、冗余的API函數(shù)調(diào)用記錄,為了防止這些記錄對(duì)后面的行為抽象步驟產(chǎn)生影響,在該步驟中對(duì)原始API序列技術(shù)文件進(jìn)行清理。需要被清理的API函數(shù)包含以下幾類。<i>. API調(diào)用名及調(diào)用參數(shù)完全相同的的連續(xù)N個(gè)API調(diào)用,僅保留第一個(gè),清除后N-I個(gè)API調(diào)用。連續(xù)N次以同樣的參數(shù)調(diào)用同一個(gè)API函數(shù),并不能表現(xiàn)出更多的行為,反而會(huì)給后續(xù)的行為抽象過(guò)程造成額外的計(jì)算負(fù)擔(dān)。<ii>.無(wú)效的句柄參數(shù)
在原始數(shù)據(jù)清理邏輯中,維護(hù)了全局的句柄信息表,任何有效函數(shù)的傳入句柄都應(yīng)該是之前的函數(shù)傳出的句柄參數(shù)或者返回值。如果發(fā)現(xiàn)某函數(shù)使用了未出現(xiàn)在全局句柄信息表中的句柄作為傳入?yún)?shù),那么可以認(rèn)為該函數(shù)調(diào)用無(wú)效。使用了無(wú)效句柄值。某些句柄值表示的是無(wú)效句柄,對(duì)這些句柄的使用是沒有意義的,所以認(rèn)為該函數(shù)調(diào)用無(wú)效。3b).行為抽象該步驟是整個(gè)行為抽象流程的核心,首先從數(shù)據(jù)庫(kù)中讀取預(yù)定義的行為抽象規(guī)則,之后按照這些抽象規(guī)則,對(duì)清理后的API序列記錄文件進(jìn)行解析,獲取樣本的行為信息。由于捕獲的API調(diào)用記錄以文本文件的形式存儲(chǔ),所以行為抽象的過(guò)程是對(duì)該文本文件的讀取和解析過(guò)程。打開API序列記錄文件后,針對(duì)文件中所有API調(diào)用函數(shù)記錄進(jìn)行逐一分析,對(duì)于每一個(gè)捕獲的API函數(shù),有如下幾種可能出現(xiàn)的情況<i>.該函數(shù)與行為抽象無(wú)關(guān)。即該函數(shù)不是關(guān)鍵函數(shù),這種情況下,該函數(shù)通常是一些不會(huì)對(duì)系統(tǒng)關(guān)鍵部分進(jìn)行任何操作的,例如Sleep、GetSystemTime等。這類函數(shù)可以直接跳過(guò)。<ii>.該函數(shù)可以形成輔助行為。如果該函數(shù)是關(guān)鍵函數(shù)并且可以形成輔助行為,這種情況下,需要獲取該函數(shù)的參數(shù)并進(jìn)行處理,例如字符串轉(zhuǎn)換和合成等,然后將形成的輔助行為暫存入數(shù)據(jù)庫(kù)。該函數(shù)可以形成抽象行為。如果該函數(shù)是關(guān)鍵函數(shù)并且可以形成抽象行為,這種情況下,需要獲取該函數(shù)的參數(shù)并進(jìn)行處理,例如字符串轉(zhuǎn)換和合成等,然后將形成的抽象行為存入數(shù)據(jù)庫(kù)。在整個(gè)文件分析完成后,這些抽象行為將按照預(yù)定的擴(kuò)展規(guī)則擴(kuò)展為決策向量。3c).行為存儲(chǔ)為了便于后續(xù)分類算法的處理,行為抽象過(guò)程中得出的數(shù)據(jù),包括抽象行為和決策向量將被存儲(chǔ)到數(shù)據(jù)庫(kù)中,同時(shí)在樣本分析的過(guò)程中,針對(duì)實(shí)際樣本的情況可能會(huì)對(duì)行為抽象的規(guī)則進(jìn)行一定程度的改動(dòng),以適應(yīng)具體樣本類別的特點(diǎn)。步驟4,經(jīng)過(guò)行為抽象后,將得到樣本的行為信息并被存儲(chǔ)在數(shù)據(jù)庫(kù)中,隨著訓(xùn)練樣本的增多,數(shù)據(jù)庫(kù)中將存儲(chǔ)大量的樣本行為信息。為了判斷用戶提交的分析文件是否是惡意程序,或者屬于哪一種惡意程序,必須首先建立起分類模型。本系統(tǒng)采用集成學(xué)習(xí)思想利用訓(xùn)練樣本的行為信息建立分類模型,通過(guò)訓(xùn)練多個(gè)子分類器對(duì)同一個(gè)樣本分類結(jié)果進(jìn)行投票表決,以提高在多分類情況下的分類精度。集成學(xué)習(xí)算法分為兩個(gè)關(guān)鍵環(huán)節(jié)子分類器生成和分類器集成。從算法處理數(shù)據(jù)的特點(diǎn)看,沙盒行為監(jiān)控和靜態(tài)分析采集到的數(shù)據(jù)有API序列、文件靜態(tài)特征、網(wǎng)絡(luò)數(shù)據(jù)包等。這些數(shù)據(jù)來(lái)自于不同的數(shù)據(jù)源,是離散型非數(shù)值數(shù)據(jù);從檢測(cè)任務(wù)要求看,要求分類算法能夠處理多分類問題而不是簡(jiǎn)單的二分類。綜合以上要求,系統(tǒng)選擇經(jīng)典決策樹C4. 5算法作為子分類器算法。系統(tǒng)使用決策樹算法作為子分類器算法,AdaBoost算法作為集成算法,對(duì)惡意程序檢測(cè)與分類結(jié)果進(jìn)行增強(qiáng)。步驟5,輸出惡意程序行為報(bào)告、檢測(cè)和分類的結(jié)果。應(yīng)當(dāng)理解的是,對(duì)本領(lǐng)域普通技術(shù)人員來(lái)說(shuō),可以根據(jù)上述說(shuō)明加以改進(jìn)或變換,而所有這些改進(jìn)和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1.一種惡意程序行為自動(dòng)化分析、檢測(cè)與分類系統(tǒng),其特征在于,包括如下模塊(1).靜態(tài)分析模塊在對(duì)樣本文件進(jìn)行沙盒動(dòng)態(tài)分析之前,可以對(duì)可執(zhí)行文件的結(jié)構(gòu)進(jìn)行靜態(tài)分析,以得到盡可能多的與樣本相關(guān)的信息,由這些信息得到樣本文件的靜態(tài)分析報(bào)告,和之后的各種報(bào)告成為行為抽象模塊最原始的數(shù)據(jù)來(lái)源;(2).沙盒調(diào)度管理模塊沙盒調(diào)度管理模塊管理每個(gè)沙盒、協(xié)調(diào)樣本和數(shù)據(jù)的傳輸、控制樣本自動(dòng)化分析的流程;沙盒調(diào)度管理模塊控制每一個(gè)沙盒的啟動(dòng)和退出,實(shí)現(xiàn)與每一個(gè)沙盒的信息交換與文件傳輸,控制樣本的執(zhí)行和主機(jī)環(huán)境模擬;(3).沙盒監(jiān)控模塊沙盒監(jiān)控模塊以捕獲特定進(jìn)程發(fā)起的API調(diào)用及其參數(shù)為主要目標(biāo),同時(shí)提取該進(jìn)程加載模塊和操作系統(tǒng)為其維護(hù)的相關(guān)內(nèi)核數(shù)據(jù)。本發(fā)明使用開源模擬器Qemu作為基礎(chǔ)的虛擬機(jī)軟件,并且對(duì)其CPU模擬中的指令解釋執(zhí)行部分核心代碼進(jìn)行修改,實(shí)現(xiàn)監(jiān)控特定進(jìn)程主機(jī)行為的目的。這種基于指令集仿真環(huán)境的行為監(jiān)測(cè)技術(shù)可以從指令級(jí)開始自下而上實(shí)現(xiàn)系統(tǒng)調(diào)用、進(jìn)程等內(nèi)核模塊重構(gòu)來(lái)獲取惡意程序動(dòng)態(tài)執(zhí)行中的行為,并且宿主機(jī)與惡意程序執(zhí)行的沙盒環(huán)境相隔離,在很大程度上避免了惡意程序在執(zhí)行過(guò)程中對(duì)宿主機(jī)的影響;(4).行為抽象模塊在沙盒監(jiān)控模塊完成對(duì)惡意程序的執(zhí)行和API的捕獲之后,可以獲得該樣本程序運(yùn)行期間使用的API函數(shù)及其參數(shù)的報(bào)告;但是該API報(bào)告直接用于惡意程序分類,存在一些障礙,所以需要從API序列中抽象得到樣本表現(xiàn)的行為;(5).檢測(cè)與分類模塊惡意程序檢測(cè)任務(wù)是一個(gè)標(biāo)準(zhǔn)的多分類任務(wù)。為了判斷用戶提交的分析文件是否是惡意程序,若是需進(jìn)一步判斷屬于哪一種惡意程序,必須首先建立起分類模型;采用集成學(xué)習(xí)的思想建立分類模型,集成學(xué)習(xí)的思想使用不同的策略將一個(gè)大問題劃分為若干的小問題分別求解,或是生成多個(gè)學(xué)習(xí)器解決同一問題,接著通過(guò)集成策略將不同子分類器的輸出結(jié)果合成,得到單一的最終輸出結(jié)果。
2.根據(jù)權(quán)利要求I所述的惡意程序行為自動(dòng)化分析、檢測(cè)與分類系統(tǒng),其特征在于沙盒監(jiān)控模塊包括作為惡意程序虛擬執(zhí)行環(huán)境的Guest OS單元;改造過(guò)的全系統(tǒng)模擬器Qemu監(jiān)控器單元;GueSt OS單元包括了網(wǎng)絡(luò)數(shù)據(jù)包監(jiān)控、快照對(duì)比、主機(jī)事件模擬等功能,Qemu監(jiān)控器單元包括了進(jìn)程識(shí)別與多進(jìn)程監(jiān)控、API監(jiān)控、API依賴關(guān)系分析與冗余數(shù)據(jù)過(guò)濾功能。
3.根據(jù)權(quán)利要求2所述的惡意程序行為自動(dòng)化分析、檢測(cè)與分類系統(tǒng),其特征在于Guest OS單元是運(yùn)行惡意程序樣本的環(huán)境,選擇Windows XP操作系統(tǒng)作為GuestOS ;GuestOS單元與宿主機(jī)之間通過(guò)虛擬網(wǎng)絡(luò)連接,由沙盒調(diào)度管理模塊負(fù)責(zé)交互。
4.根據(jù)權(quán)利要求2所述的惡意程序行為自動(dòng)化分析、檢測(cè)與分類系統(tǒng),其特征在于沙盒監(jiān)控模塊的Qemu監(jiān)控器單元比Guest OS單元有著更高特權(quán)等級(jí),用于監(jiān)控目標(biāo)程序的行為;QemU監(jiān)控器單元使用開源模擬器Qemu作為基礎(chǔ)的虛擬機(jī)軟件,但是對(duì)其CPU模擬中的指令解釋執(zhí)行部分核心代碼進(jìn)行修改,實(shí)現(xiàn)監(jiān)控特定進(jìn)程主機(jī)行為的目的。
5.根據(jù)權(quán)利要求4所述的惡意程序行為自動(dòng)化分析、檢測(cè)與分類系統(tǒng),其特征在于所述的Qemu監(jiān)控器單元進(jìn)行進(jìn)程識(shí)別的方法是沙盒監(jiān)控模塊在每一個(gè)翻譯塊開始執(zhí)行前,利用虛擬內(nèi)存讀寫函數(shù),以內(nèi)核數(shù)據(jù)結(jié)構(gòu)KPCR為線索,找到系統(tǒng)中當(dāng)前正在執(zhí)行進(jìn)程的EPR0CESS結(jié)構(gòu)體起始地址;接著,通過(guò)EPR0CESS結(jié)構(gòu)中保存的進(jìn)程名判斷當(dāng)前正在執(zhí)行進(jìn)程是否是目標(biāo)進(jìn)程,若是則從中讀取操作系統(tǒng)分配給該進(jìn)程的頁(yè)目錄基址值;之后,將該值與虛擬CR3寄存器中存儲(chǔ)的值做比較,判斷監(jiān)控進(jìn)程是否正在執(zhí)行;僅在目標(biāo)進(jìn)程執(zhí)行時(shí)進(jìn)行行為數(shù)據(jù)采集。
6.根據(jù)權(quán)利要求1-5任一所述的惡意程序行為自動(dòng)化分析、檢測(cè)與分類系統(tǒng),其特征在于所述沙盒監(jiān)控模塊使用“三步法”來(lái)解決這一問題;具體過(guò)程如下讀取之前首先測(cè)試是否存在缺頁(yè)現(xiàn)象,若出現(xiàn)缺頁(yè),等待該頁(yè)被調(diào)入虛擬內(nèi)存,若等待不成功,由分析程序強(qiáng)行讀取該地址空間中的數(shù)據(jù),觸發(fā)客戶操作系統(tǒng)缺頁(yè)異常處理例程,將所缺頁(yè)調(diào)入虛擬內(nèi)存,接著嘗試再次讀取數(shù)據(jù);為了提高執(zhí)行效率,在沙盒監(jiān)控模塊中,并非所有虛擬內(nèi)存讀寫都使用“三步法”,而是僅在最有可能發(fā)生缺頁(yè)時(shí),執(zhí)行以上缺頁(yè)異常避免策略;WindowS系統(tǒng)中,直接從棧中讀取的數(shù)據(jù)不會(huì)引起缺頁(yè),字符串和結(jié)構(gòu)體參數(shù)通常情況下數(shù)據(jù)量小也不會(huì)引發(fā)缺頁(yè),均不需要進(jìn)行缺頁(yè)測(cè)試;只有在涉及I/O過(guò)程或是大緩沖區(qū)讀寫時(shí),才有可能出現(xiàn)缺頁(yè)異常。
7.根據(jù)權(quán)利要求4所述的惡意程序行為自動(dòng)化分析、檢測(cè)與分類系統(tǒng),其特征在于Qemu監(jiān)控器單元中的多進(jìn)程監(jiān)控功能用于監(jiān)控主進(jìn)程創(chuàng)建的子進(jìn)程和進(jìn)程注入中被注入進(jìn)程的行為;本系統(tǒng)進(jìn)行多進(jìn)程監(jiān)控的方法是第一步,獲取需要監(jiān)控進(jìn)程的進(jìn)程名,在操作系統(tǒng)初始化進(jìn)程時(shí),以進(jìn)程名為線索,找到操作系統(tǒng)分配給該進(jìn)程的頁(yè)目錄基址的值。對(duì)于創(chuàng)建子進(jìn)程這一行為,可通過(guò)監(jiān)控NtCreateProcess這一內(nèi)核API來(lái)實(shí)現(xiàn)。改造NtCreateProcess對(duì)應(yīng)的前端回調(diào)函數(shù),從調(diào)用參數(shù)中抽取出被創(chuàng)建進(jìn)程的進(jìn)程名,通過(guò)上文介紹的運(yùn)行時(shí)內(nèi)存分析方法,找到該進(jìn)程頁(yè)目錄基址的值,傳遞給API調(diào)用管理框架,以實(shí)現(xiàn)子進(jìn)程監(jiān)控的擴(kuò)充。第二步,Qemu監(jiān)控器單元中的進(jìn)程識(shí)別功能維護(hù)一個(gè)敏感頁(yè)目錄基址值列表,在每一個(gè)翻譯塊執(zhí)行前,與虛擬CR3寄存器中存儲(chǔ)的值做比較,當(dāng)虛擬CR3寄存器切換到任一個(gè)敏感頁(yè)目錄基址值時(shí),Qemu監(jiān)控器單元中的API監(jiān)控功能開始工作。
8.根據(jù)權(quán)利要求7所述的惡意程序行為自動(dòng)化分析、檢測(cè)與分類系統(tǒng),其特征在于本系統(tǒng)進(jìn)行進(jìn)程注入行為監(jiān)控的方法是第一步,識(shí)別進(jìn)程注入行為進(jìn)程注入實(shí)現(xiàn)時(shí)通常從進(jìn)程枚舉開始,由于每一個(gè)被枚舉進(jìn)程都是一個(gè)潛在的被注入進(jìn)程,Qemu監(jiān)控器單元中的進(jìn)程識(shí)別功能維護(hù)一個(gè)全局進(jìn)程注入事件模板,當(dāng)監(jiān)控到EnumProcess、Process32First和Process32Next等用于進(jìn)程枚舉的API被調(diào)用時(shí),為每一個(gè)被找到進(jìn)程填寫一個(gè)進(jìn)程注入事件模板,記錄進(jìn)程名、進(jìn)程ID、進(jìn)程句柄等信息;實(shí)現(xiàn)進(jìn)程注入的核心API包括0penProcess、VirtualAllocEx>WriteProcessMemory ;修改與這些API對(duì)應(yīng)的前端回調(diào)函數(shù),當(dāng)這些API被調(diào)用時(shí),通過(guò)調(diào)用參數(shù)索引相應(yīng)的進(jìn)程注入事件模板,更新模板,直到WriteProcessMemory成功調(diào)用,標(biāo)志著進(jìn)程注入事件的發(fā)生;第二步,提取被注入進(jìn)程的進(jìn)程名從模板中讀取被注入進(jìn)程名,找到該進(jìn)程的頁(yè)目錄基址,再傳遞給進(jìn)程識(shí)別功能,便成功添加被注入進(jìn)程為監(jiān)控目標(biāo);隨后API調(diào)用管理框架會(huì)自動(dòng)分析被注入進(jìn)程發(fā)起的行為。
9.一種惡意程序行為自動(dòng)化分析、檢測(cè)與分類方法,其特征在于,步驟如下步驟(I),靜態(tài)分析模塊首先對(duì)可執(zhí)行樣本文件的結(jié)構(gòu)進(jìn)行靜態(tài)分析,獲得可執(zhí)行樣本文件的靜態(tài)信息;步驟(2),靜態(tài)分析完成以后,樣本文件將進(jìn)入動(dòng)態(tài)分析自動(dòng)化過(guò)程樣本文件的動(dòng)態(tài)分析過(guò)程將由沙盒調(diào)度管理模塊自動(dòng)化管理,沙盒調(diào)度管理模塊啟動(dòng)沙盒、將樣本文件上傳至Guest OS單元,在Guest OS單元運(yùn)行樣本,沙盒監(jiān)控模塊監(jiān)控樣本的執(zhí)行或加載,產(chǎn)生樣本文件的API序列的報(bào)告,網(wǎng)絡(luò)數(shù)據(jù)包監(jiān)控程序Guest OS單元產(chǎn)生的網(wǎng)絡(luò)數(shù)據(jù)包,產(chǎn)生樣本文件的網(wǎng)絡(luò)數(shù)據(jù)包報(bào)告;樣本執(zhí)行正常結(jié)束或超時(shí)結(jié)束后,如果是非EXE樣本文件,將進(jìn)行注冊(cè)表及文件系統(tǒng)的快照對(duì)比,產(chǎn)生注冊(cè)表、文件快照對(duì)比報(bào)告,所述報(bào)告將與樣本執(zhí)行過(guò)程中生成的文件一起傳輸給沙盒調(diào)度管理模塊,所述報(bào)告將是對(duì)一個(gè)惡意程序樣本進(jìn)行行為抽象的原始數(shù)據(jù);步驟(3),在惡意程序樣本動(dòng)態(tài)分析結(jié)束之后,將會(huì)獲得一系列的報(bào)告,所述報(bào)告將由行為抽象模塊進(jìn)行處理,得到樣本行為;步驟(4),經(jīng)過(guò)行為抽象后,將得到樣本的行為信息并被存儲(chǔ)在數(shù)據(jù)庫(kù)中,隨著訓(xùn)練樣本的增多,數(shù)據(jù)庫(kù)中將存儲(chǔ)大量的樣本行為信息;為了判斷用戶提交的分析文件是否是惡意程序,或者屬于哪一種惡意程序,必須首先建立起分類模型;采用集成學(xué)習(xí)思想利用訓(xùn)練樣本的行為信息建立分類模型,通過(guò)訓(xùn)練多個(gè)子分類器對(duì)同一個(gè)樣本分類結(jié)果進(jìn)行投票表決,以提高在多分類情況下的分類精度;步驟(5),輸出惡意程序行為報(bào)告、檢測(cè)和分類的結(jié)果。
10.根據(jù)權(quán)利要求2所述的惡意程序行為自動(dòng)化分析、檢測(cè)與分類方法,其特征在于行為抽象的主要步驟(1)原始數(shù)據(jù)清理;(2)行為抽象;(3)行為存儲(chǔ);原始數(shù)據(jù)清理的API函數(shù)包括以下幾類(1)API調(diào)用名及調(diào)用參數(shù)完全相同的的連續(xù)N個(gè)API調(diào)用,僅保留第一個(gè),清除后N-I個(gè)API調(diào)用;(2)如果發(fā)現(xiàn)某函數(shù)使用了未出現(xiàn)在全局句柄信息表中的句柄作為傳入?yún)?shù),那么可以認(rèn)為該函數(shù)調(diào)用無(wú)效;(3)某些句柄值表示的是無(wú)效句柄,對(duì)這些句柄的使用是沒有意義的,所以認(rèn)為該函數(shù)調(diào)用無(wú)效;行為抽象的過(guò)程是對(duì)文件中所有API調(diào)用記錄進(jìn)行逐一分析的過(guò)程,對(duì)于每一個(gè)捕獲的API調(diào)用,有如下幾種可能出現(xiàn)的情況(1)該函數(shù)與行為抽象無(wú)關(guān)即該函數(shù)不是關(guān)鍵函數(shù),這種情況下,該函數(shù)通常是一些不會(huì)對(duì)系統(tǒng)關(guān)鍵部分進(jìn)行任何操作的,這類函數(shù)可以直接跳過(guò);(2)該函數(shù)可以形成輔助行為如果該函數(shù)是關(guān)鍵函數(shù)并且可以形成輔助行為,這種情況下,需要獲取該函數(shù)的參數(shù)并進(jìn)行處理,然后將形成的輔助行為暫存入數(shù)據(jù)庫(kù);(3)該函數(shù)可以形成抽象行為如果該函數(shù)是關(guān)鍵函數(shù)并且可以形成抽象行為,這種情況下,需要獲取該函數(shù)的參數(shù)并進(jìn)行處理,然后將形成的抽象行為存入數(shù)據(jù)庫(kù);在整個(gè)文件分析完成后,這些抽象行為將按照預(yù)定的擴(kuò)展規(guī)則擴(kuò)展為決策向量。
全文摘要
本發(fā)明公開了一種惡意程序行為自動(dòng)化分析、檢測(cè)與分類系統(tǒng)及方法。該系統(tǒng)包括靜態(tài)分析模塊、沙盒調(diào)度管理模塊、沙盒監(jiān)控模塊、行為抽象模塊和檢測(cè)與分類模塊。本發(fā)明與現(xiàn)有技術(shù)相比具有以下優(yōu)點(diǎn)第一,本發(fā)明基于指令集仿真環(huán)境的行為監(jiān)測(cè)技術(shù)。第二,本發(fā)明在沙盒中通過(guò)環(huán)境配置和修改服務(wù)器程序等手段構(gòu)建虛擬Internet,模擬普遍的網(wǎng)絡(luò)服務(wù),使得惡意程序發(fā)起的DNS解析、http訪問、文件下載、Email登錄、郵件發(fā)送等操作能夠成功執(zhí)行,誘騙惡意程序產(chǎn)生惡意網(wǎng)絡(luò)行為,同時(shí)確保這些網(wǎng)絡(luò)行為不會(huì)對(duì)宿主機(jī)和真實(shí)網(wǎng)絡(luò)造成破壞,克服了惡意程序動(dòng)態(tài)行為分析中惡意程序網(wǎng)絡(luò)行為無(wú)法充分表現(xiàn)等缺點(diǎn)。
文檔編號(hào)G06F21/56GK102930210SQ201210408358
公開日2013年2月13日 申請(qǐng)日期2012年10月14日 優(yōu)先權(quán)日2012年10月14日
發(fā)明者鄒艷, 劉建港, 苗啟廣, 曹瑩, 謝國(guó)勝, 黃有成, 劉家辰, 鄭春陽(yáng) 申請(qǐng)人:江蘇金陵科技集團(tuán)公司