專(zhuān)利名稱(chēng):基于Win32平臺(tái)下病毒行為的自動(dòng)化分析系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)病毒防治技術(shù)領(lǐng)域,特別涉及一種基于病毒行為的自動(dòng) 化分析系統(tǒng)。
背景技術(shù):
隨著計(jì)算機(jī)軟硬件水平的不斷發(fā)展,近年來(lái),計(jì)算機(jī)病毒技術(shù)也是突飛猛 進(jìn),黑客和間諜技術(shù)也在不斷更新改進(jìn)。計(jì)算機(jī)病毒對(duì)人類(lèi)造成的影響也越來(lái) 越大。當(dāng)前,計(jì)算機(jī)病毒正呈現(xiàn)出傳播方式、傳播途徑以及破壞方式更加多樣 化的趨勢(shì)。
據(jù)國(guó)家計(jì)算機(jī)病毒應(yīng)急處理中心綜合觀察分析認(rèn)為:"目前計(jì)算機(jī)病毒的網(wǎng) 絡(luò)化趨勢(shì)更加明顯,病毒的入侵主要來(lái)自蠕蟲(chóng)病毒,同時(shí)集病毒、黑客、木馬
等功能于一身綜合型病毒不斷涌現(xiàn)"。計(jì)算機(jī)病毒表現(xiàn)出以下特點(diǎn)傳播方式和 途徑多樣化;病毒的欺騙性日益增強(qiáng);病毒的傳播速度極快;病毒的制作成本 降低;病毒變種增多;病毒難以控制和根治;病毒傳播更具有不確定性和跳躍 性;病毒版本自動(dòng)在線升級(jí)和自我保護(hù)能力;病毒編制采用了集成方式等。
綜合上述分析,今后計(jì)算機(jī)病毒的發(fā)展趨勢(shì)是群發(fā)郵件病毒將大量出現(xiàn); 針對(duì)系統(tǒng)漏洞的具有遠(yuǎn)程控制功能的病毒將越發(fā)突出;病毒和垃圾郵件編寫(xiě)者 將不斷加強(qiáng)合作;病毒編寫(xiě)者更加年輕化、更有組織性。計(jì)算機(jī)病毒具有極強(qiáng) 的繁殖感染能力,而因計(jì)算機(jī)病毒所造成的危害正在加劇,病毒危害主要包括 系統(tǒng)崩潰、網(wǎng)絡(luò)癱疾、系統(tǒng)設(shè)置被修改、電腦使用受限、數(shù)據(jù)丟失等。
目前,比較常見(jiàn)的病毒檢測(cè)技術(shù)有以下幾種
(-)特征碼技術(shù);
特征碼技術(shù)是一種基于對(duì)已知病毒分析、査解的反病毒技術(shù)。它作為反病 毒技術(shù)中最基本的技術(shù)被沿用至今,也是到目前為止各類(lèi)反病毒軟件仍普遍采 用的技術(shù)。特征碼是一串二進(jìn)制位信息,它能唯一標(biāo)識(shí)某一非法程序,研究人 員通過(guò)對(duì)非法程序樣本的分析,提取出"特征碼"寫(xiě)入反病毒軟件的特征碼庫(kù)。 該技術(shù)對(duì)用戶指定的某個(gè)或某幾個(gè)文件進(jìn)行掃描,以確定是否包含非法程 序的特征碼。在具體實(shí)現(xiàn)時(shí),它最初是采用對(duì)待測(cè)文件全部掃描的方式,在病 毒等非法程序出現(xiàn)的早期,非法程序的種類(lèi)不過(guò)數(shù)百種,采用這種掃描方式還
是比較快捷的。但在目前病毒、木馬、蠕蟲(chóng)及其變種的總數(shù)超過(guò)60000的情況下, 這種方式顯然是效率低下的。為此,出現(xiàn)了一些用來(lái)提高特征碼掃描效率的技 術(shù)。例如,"所羅門(mén)"公司用非法程序內(nèi)部的某段機(jī)器代碼和該代碼距離程序入口 的偏移量來(lái)唯一確定一種非法程序,檢測(cè)時(shí),只需要確定非法程序的程序入口 并從指定的偏移處開(kāi)始查找指定的機(jī)器碼即可。
特征代碼法的優(yōu)點(diǎn)是:檢測(cè)準(zhǔn)確快速、可識(shí)別病毒的名稱(chēng)、誤報(bào)警率低。被 公認(rèn)為檢測(cè)已知病毒的最簡(jiǎn)單、開(kāi)銷(xiāo)較小的方法。其缺點(diǎn)是不能檢測(cè)新病毒、 捕獲已知病毒的特征代碼,費(fèi)用開(kāi)銷(xiāo)大、在網(wǎng)絡(luò)上效率低,因長(zhǎng)時(shí)間檢索會(huì)使 整個(gè)網(wǎng)絡(luò)性能降低。
(二)虛擬機(jī)技術(shù);
虛擬機(jī)技術(shù)是一種啟發(fā)式探測(cè)未知病毒的反病毒技術(shù)。虛擬機(jī)技術(shù)的主要 作用是能夠運(yùn)行一定規(guī)則的描述語(yǔ)言。由于病毒的最終判定準(zhǔn)則是其復(fù)制傳染 性,而這個(gè)標(biāo)準(zhǔn)是不易被使用和實(shí)現(xiàn)的,如果病毒已經(jīng)傳染了才判定它是病毒, 定會(huì)給病毒的清除帶來(lái)麻煩。
虛擬機(jī)實(shí)質(zhì)是在反病毒系統(tǒng)中設(shè)置的一種程序機(jī)制,它能在內(nèi)存中模擬一 個(gè)操作系統(tǒng)環(huán)境,待查文件在虛擬機(jī)上執(zhí)行,其效果如同物理機(jī)。虛擬機(jī)實(shí)際 是用軟件的方法模擬地執(zhí)行所有的或者設(shè)計(jì)者關(guān)心的CPU指令,營(yíng)造一個(gè)虛擬 的、可觀察的、可控制的目標(biāo)程序運(yùn)行環(huán)境。它相當(dāng)于一個(gè)軟件CPU盒,使得 被調(diào)試程序的運(yùn)行局限在一個(gè)透明的箱子里。
采用虛擬機(jī)技術(shù)的殺毒軟件在殺毒時(shí),首先使用的還是特征碼查毒法,當(dāng) 發(fā)現(xiàn)目標(biāo)具有加密病毒的特征時(shí),其才會(huì)啟動(dòng)虛擬機(jī)模塊讓病毒的加密代碼自 行解碼,解碼之后,就可以采用傳統(tǒng)的特征碼査毒法進(jìn)行查殺了??梢?jiàn),對(duì)于 已知加密病毒,提取其特征值也是非常重要的。
目前虛擬機(jī)的處理對(duì)象主要是文件型病毒。對(duì)于引導(dǎo)型病毒、word、 excel 宏病毒、木馬程序在理論上都是可以通過(guò)虛擬機(jī)來(lái)處理的,但目前的實(shí)現(xiàn)水平
仍相距甚遠(yuǎn)。就像病毒編碼變形使得傳統(tǒng)特征值方法失效一樣,針對(duì)虛擬機(jī)的 新病毒可以輕易使得虛擬機(jī)失效。雖然虛擬機(jī)也會(huì)在實(shí)踐中不斷得到發(fā)展。但 是,PC的計(jì)算能力有限,反病毒軟件的制造成本也有限,而病毒的發(fā)展可以說(shuō) 是無(wú)限的。
目前,虛擬機(jī)的實(shí)際應(yīng)用情況是
(1) 在處理加殼或變形的木馬和蠕蟲(chóng)方面,虛擬機(jī)被作為一個(gè)比較理想的選擇。
(2) 在目前各類(lèi)安全軟件中引入的虛擬機(jī)一般都不是完整的仿真環(huán)境,而是 相對(duì)比較簡(jiǎn)單、易于實(shí)現(xiàn)的版本,即便如此,相對(duì)采用其他檢測(cè)技術(shù)的安全軟 件,采用虛擬機(jī)技術(shù)的安全軟件還是占用了更多的系統(tǒng)資源。
(3) 虛擬機(jī)技術(shù)仍與傳統(tǒng)技術(shù)相結(jié)合,其本質(zhì)上的檢測(cè)判斷方法依然是特征 碼檢查,對(duì)于那些經(jīng)過(guò)修改而不是簡(jiǎn)單的加殼后的惡意軟件效果比較有限。
曰啟發(fā)式掃描技術(shù);
啟發(fā)式掃描技術(shù)是一種基于人工智能領(lǐng)域啟發(fā)式分析手段的檢測(cè)技術(shù),啟 發(fā)式掃描能夠發(fā)現(xiàn)一些應(yīng)用了已有機(jī)制或行為方式的未知病毒。啟發(fā)式掃描一 般包括靜態(tài)掃描方式和動(dòng)態(tài)掃描方式兩種。啟發(fā)式掃描是通過(guò)分析指令出現(xiàn)的 順序,或特定組合情況等常見(jiàn)病毒的標(biāo)準(zhǔn)特征來(lái)決定是否為病毒。因?yàn)椴《疽?達(dá)到隱蔽和破壞的目的,通常的行為都會(huì)有一定的特征,例如非常規(guī)讀寫(xiě)文件、 程序自刪除、非常規(guī)切入ringO等等。所以可以根據(jù)掃描特定的行為或多種行為 的組合來(lái)判斷一個(gè)程序是否是病毒。這種啟發(fā)式掃描比起靜態(tài)的特征碼掃描要 先進(jìn),可以達(dá)到一定的未知病毒檢測(cè)處理能力,相對(duì)于特征碼識(shí)別技術(shù),啟發(fā) 式掃描技術(shù)主要有以下優(yōu)勢(shì)-
(1) 逃避啟發(fā)式掃描比特征碼掃描更困難;
(2) 對(duì)未知病毒代碼的檢測(cè)能力優(yōu)于特征碼掃描技術(shù);
卿靜態(tài)啟發(fā)式掃描技術(shù)
靜態(tài)啟發(fā)式掃描技術(shù)和基于特征碼的靜態(tài)掃描類(lèi)似,也是靜態(tài)掃描待測(cè)程 序的代碼,但不同的是前者查找非法程序的特征碼,而后者則査找非法程序的
行為。而這些行為是通過(guò)某些相應(yīng)的代碼序列來(lái)確定的。
靜態(tài)啟發(fā)式掃描的工作流程一般是這樣的掃描某個(gè)待測(cè)文件當(dāng)中的可執(zhí) 行代碼,查找與非法程序行為相對(duì)應(yīng)的代碼序列,掃描結(jié)束后,關(guān)聯(lián)所有査找 到的序列,并與非法程序的典型行為模式相對(duì)照,最終做出判斷。
靜態(tài)掃描的優(yōu)點(diǎn)是這種技術(shù)在掃描代碼時(shí)通過(guò)查找某些代碼序列,確定 程序是否具有某種類(lèi)別的病毒的行為,因此,它也具有了檢測(cè)未知病毒的能力。 它的掃描速度比較快,未知病毒的檢出率也比較高。另外它能在代碼未運(yùn)行的 情況下,就確定代碼的行為并檢測(cè)非法程序。
不過(guò)它的缺點(diǎn)是目前病毒、木馬等非法程序的編寫(xiě)者為了讓這些程序盡 可能地傳播和運(yùn)行,大都對(duì)其作了加密、變形、加殼等處理,那么至少在其未 運(yùn)行的情況下,通常很難在它的代碼當(dāng)中找到對(duì)應(yīng)于非法程序行為的代碼序列。
(5)主動(dòng)防御-,
主動(dòng)防御技術(shù)已被殺毒軟件、軟件防火墻、fflPS等安全軟件廣泛采用,現(xiàn) 有的后門(mén)木馬、Rootkit等惡意軟件面臨嚴(yán)峻考驗(yàn)。無(wú)論傳統(tǒng)的惡意軟件功能有 多強(qiáng)大隱蔽性有多高,初次安裝以及工作時(shí)都會(huì)被主動(dòng)防御功能攔截并提示用 戶,使其無(wú)法正常安裝和工作。
如圖l所示,主動(dòng)防御的主要內(nèi)容包括
(1) 進(jìn)程行為監(jiān)控(代碼注入、安裝全局鉤子、創(chuàng)建新進(jìn)程、終止進(jìn)程等);
(2) 注冊(cè)表監(jiān)控;
(3) 進(jìn)程核心態(tài)(驅(qū)動(dòng)安裝、訪問(wèn)物理內(nèi)存);
(4) 文件監(jiān)控;
(5) 各模塊交融后的邏輯判斷關(guān)系;
通常來(lái)說(shuō)主動(dòng)防御功能指以上這些,后來(lái)有些安全軟件廠商將傳統(tǒng)的監(jiān)控 融合主動(dòng)防御功能,形成更大層面的防御體系。傳統(tǒng)木馬后門(mén)等惡意軟件,比 如,灰鴿子、PcShare,黑洞、PoisonIvy,網(wǎng)絡(luò)神偷、黑客守衛(wèi)者、Byshel10.67、 冰河等面臨嚴(yán)峻的考驗(yàn),因?yàn)榧词构δ茉賹?shí)用,隱蔽性再好,安裝時(shí)被主動(dòng)防 御報(bào)警也是功虧一簣,安裝成功后外連時(shí)無(wú)法穿越基于主機(jī)的防火墻。
主動(dòng)防御的原理主要采用了hook思想,截獲系統(tǒng)相關(guān)API調(diào)用,對(duì)相應(yīng)的可
疑行為進(jìn)行報(bào)警,提示用戶做出選擇。具體來(lái)說(shuō),主動(dòng)防御常用SSDTHook、Inline Hook、 Hook Driver Dispatch、 Filter Driver等內(nèi)核技術(shù),對(duì)惡意程序所需要的各 類(lèi)函數(shù)進(jìn)行掛接,實(shí)行函數(shù)行為掛接,監(jiān)控其行為。另外,有些安全軟件內(nèi)置 小型專(zhuān)家系統(tǒng)(簡(jiǎn)單的可以理解為白名單和黑名單),實(shí)現(xiàn)智能判斷,使操作更 加智能化,較少的需要用戶干預(yù)。SSDT hook工作原理如圖2所示。
幾乎所有的安全軟件在安裝API鉤子時(shí)都會(huì)選擇hook SSDT表,例如KIS6, ZoneAlarm Pro。我們?nèi)绻軌蜻M(jìn)入內(nèi)核模式,就可以使用一個(gè)驅(qū)動(dòng)程序,讀取 系統(tǒng)文件ntoskrnl.exe/ntkrnlpa.exe/ntkrpamp.exe,從中提出我們所希望的SSDT表 的原始函數(shù)地址,替換被安全軟件hook的地址,用此方法可以通用性很好的解 決絕大多數(shù)的API鉤子實(shí)現(xiàn)的進(jìn)程行為監(jiān)控。不過(guò)此方法有一個(gè)前提,就是事先 必須繞過(guò)監(jiān)控進(jìn)入內(nèi)核空間。
常被掛鉤的系統(tǒng)服務(wù)包括NtAllocateVirtualMemoiy 、 NtCreateProcess 、 NtCreateProcessEx 、 NtCreateThread 、 NtDebugActiveProcess 、 NtLoadDriver 、 NtMapViewOfSection 、 NtSetSystemlnformation 、 NtShutdownSystem 、 NtTerminateProcess 、 NtWriteVirtualMemory 、 1SftSetSystemlnfomation 、 NtCreateKey 、 NtReplaceKey 、 NtQueryValueKey 、 NtCreateFile 、 win32k!NtUserSetWindowsHookEx等,如圖3所示。
除了上述技術(shù)方案以外,目前還有有一種行為分析技術(shù)。所謂行為分析就 是采用一系列的規(guī)則定義非法程序,相應(yīng)地采用另一套規(guī)則定義合法程序,如 果某個(gè)程序違背了合法程序的某項(xiàng)規(guī)則或者符合非法程序的某項(xiàng)規(guī)則,便可判 定其非法。
與傳統(tǒng)的基于特征碼的靜態(tài)掃描技術(shù)不同的是,行為分析技術(shù)監(jiān)控并限制 應(yīng)用程序運(yùn)行過(guò)程中的動(dòng)態(tài)行為,和靜態(tài)啟發(fā)式掃描技術(shù)相對(duì),它也被稱(chēng)為動(dòng) 態(tài)啟發(fā)式掃描。某些行為是木馬、后門(mén)和蠕蟲(chóng)等非法程序的共同行為,但在合 法程序中卻比較罕見(jiàn),也就是說(shuō),它們成了非法程序的行為特征,可作為判別 應(yīng)用程序是否非法的依據(jù)或者規(guī)則。
早期采用行為分析技術(shù)的反惡意軟件, 一般通過(guò)對(duì)單個(gè)(類(lèi))具體行為的 識(shí)別,來(lái)判斷應(yīng)用程序是否會(huì)造成潛在的風(fēng)險(xiǎn),也被稱(chēng)為行為識(shí)別。從廣義上
來(lái)說(shuō),主機(jī)防火墻采用的就是行為識(shí)別技術(shù)。由于監(jiān)控的是網(wǎng)絡(luò)操作行為(如 主機(jī)防火墻可監(jiān)控主機(jī)上對(duì)外網(wǎng)絡(luò)連接及服務(wù)端口 ),因此在防治木馬方面取得 了不錯(cuò)的效果。但是,行為分析技術(shù)同樣存在著不足-
(1) 需要盡可能全面的監(jiān)控。如果有害行為沒(méi)有被列入監(jiān)控范圍,可能會(huì)遺 漏掉惡意軟件。例如,如果像主機(jī)防火墻那樣僅對(duì)網(wǎng)絡(luò)行為進(jìn)行識(shí)別,對(duì)于那 些通過(guò)動(dòng)態(tài)鏈接庫(kù)注射方式把自己隱藏到合法網(wǎng)絡(luò)通信程序中的間諜軟件,則 無(wú)法檢測(cè)。
(2) 考慮到軟件的實(shí)用性,行為分析軟件一般不會(huì)采用過(guò)于復(fù)雜的分析算法, 一般多采用簡(jiǎn)單加權(quán)算法來(lái)進(jìn)行分析。它通常為那些值得懷疑的行為設(shè)一個(gè)權(quán) 值,如果一個(gè)程序的總權(quán)值超過(guò)了臨界值,就將其判斷為惡意軟件。如果設(shè)計(jì) 時(shí)將臨界值設(shè)的太低,用戶會(huì)被頻繁的誤報(bào)弄得不知所措,而如果臨界值設(shè)得 太高,則會(huì)遺漏掉惡意軟件。因此,行為分析技術(shù)在進(jìn)行全面監(jiān)控的基礎(chǔ)上, 需要結(jié)合優(yōu)化過(guò)的決策樹(shù)或其它人工智能的算法對(duì)行為進(jìn)行分析,在不增加計(jì) 算復(fù)雜度的情況下盡可能地提高發(fā)現(xiàn)準(zhǔn)確度。
(3) 無(wú)法應(yīng)對(duì)那些能造成直接破壞的惡意代碼。對(duì)于格式化硬盤(pán)等直接破壞 行為,等到檢測(cè)再到經(jīng)過(guò)分析,就來(lái)不及阻止了,考慮到惡意軟件中極少出現(xiàn) 類(lèi)似情況,行為分析技術(shù)對(duì)惡意軟件還是比較適用的,但不一定適合用于反病 毒場(chǎng)合。因此, 一個(gè)完整的反惡意軟件,不能僅僅依賴(lài)行為分析技術(shù)去發(fā)現(xiàn)未 知惡意代碼,仍然需要傳統(tǒng)特征碼匹配技術(shù)的配合。
由于行為分析技術(shù)具有可檢測(cè)未知非法程序的特點(diǎn),所以成為目前反病毒 領(lǐng)域研究的熱點(diǎn)。根據(jù)部分安全軟件廠商對(duì)新增木馬行為分析組件的介紹和說(shuō)
明,并通過(guò)對(duì)具體產(chǎn)品的實(shí)際使用和觀察,不難發(fā)現(xiàn)現(xiàn)有的添加了行為分析 這一功能模塊的軟件一般只檢測(cè)某些單獨(dú)的行為項(xiàng)(如修改注冊(cè)表自啟動(dòng)項(xiàng)、
文件關(guān)聯(lián)、IE瀏覽器的起始頁(yè)等)。它們所表現(xiàn)出來(lái)的工作流程也較為相似,都
是通過(guò)用戶判斷來(lái)學(xué)習(xí)對(duì)某一軟件的識(shí)別,簡(jiǎn)單自反饋(自學(xué))模型,非常類(lèi) 似于防火墻等早期行為識(shí)別軟件。
如圖4示,"自反饋"模型首次檢測(cè)到行為即將發(fā)生時(shí),會(huì)立即通知用戶,通
知中包含較詳細(xì)的文字描述。該模塊根據(jù)用戶的反饋進(jìn)行下一步操作或者阻 止該行為,或者允許該行為,或者終止與該行為相關(guān)聯(lián)的進(jìn)程。另外,用戶還
可進(jìn)行如下的設(shè)置
(1) 一直允許該進(jìn)程的該行為;
(2) —直禁止該進(jìn)程的該行為;
一旦進(jìn)行了上述任何一項(xiàng)設(shè)置,模塊再次檢測(cè)到相同進(jìn)程的相同行為時(shí), 通常不再詢問(wèn)用戶,而根據(jù)設(shè)置自行處理,否則,處理方式仍與首次檢測(cè)到該 行為時(shí)相同。這種行為分析實(shí)現(xiàn),只是對(duì)單個(gè)敏感行為進(jìn)行了監(jiān)控,缺少對(duì)多 個(gè)行為的連貫綜合分析,也缺少對(duì)行為的上下文環(huán)境分析,嚴(yán)重依賴(lài)用戶的判 斷,容易導(dǎo)致較高的誤報(bào)率。
發(fā)明內(nèi)容
本發(fā)明針對(duì)上述現(xiàn)有技術(shù)所存在的不足,而提供一種能夠?qū)Σ《拘袨檫M(jìn)行 自動(dòng)分析且速度快、準(zhǔn)確率高的自動(dòng)化分析系統(tǒng)。
為了達(dá)到所述目的,本發(fā)明所提供的基于Win32平臺(tái)下病毒行為的自動(dòng)化分 析系統(tǒng),該系統(tǒng)主要由數(shù)據(jù)模塊、控制模塊以及運(yùn)行模塊組成,所述控制模塊 工作于物理機(jī)環(huán)境中,所述運(yùn)行模塊工作于由虛擬機(jī)形成的虛擬環(huán)境中;所述 數(shù)據(jù)模塊中樣本數(shù)據(jù)模塊通過(guò)自動(dòng)入庫(kù)模塊連接行為數(shù)據(jù)模塊;所述運(yùn)行模塊 中捕獲引擎模塊與HOOKDELL模塊進(jìn)行數(shù)據(jù)交換;所述控制模塊連接樣本數(shù)據(jù) 模塊以及行為數(shù)據(jù)模塊,并且控制運(yùn)行模塊中的捕獲引擎模塊。
所述樣本數(shù)據(jù)模塊包括有病毒樣本數(shù)據(jù)模塊以及合法程序樣本數(shù)據(jù)模塊。
所述行為數(shù)據(jù)模塊包括有用來(lái)將捕獲的病毒樣本行為數(shù)據(jù)記入數(shù)據(jù)模塊中 并進(jìn)行統(tǒng)計(jì),并轉(zhuǎn)化成易于建模的二維表的病毒樣本行為數(shù)據(jù)模塊和用來(lái)將捕 獲的合法程序樣本行為數(shù)據(jù)記入數(shù)據(jù)模塊中并進(jìn)行統(tǒng)計(jì),并轉(zhuǎn)化成易于建模的 二維表的合法程序樣本行為模塊。
所述捕獲引擎模塊包括捕獲引擎和插件。
所述捕獲引擎在捕獲樣本動(dòng)態(tài)行為通過(guò)以下步驟實(shí)現(xiàn)
(1) 對(duì)指定樣本進(jìn)程進(jìn)行分析,檢查被分析樣本進(jìn)程加載了哪些系統(tǒng)DLL;
(2) 再根據(jù)工作目錄下的HOOKDLL的導(dǎo)出函數(shù)表,來(lái)確定需要在被分析 樣本進(jìn)程中哪些函數(shù)調(diào)用處設(shè)置調(diào)試斷點(diǎn);
(3) 當(dāng)樣本進(jìn)程執(zhí)行到調(diào)試斷點(diǎn)處會(huì)產(chǎn)生中斷事件,通過(guò)調(diào)試子系統(tǒng)獲得
斷點(diǎn)發(fā)生時(shí)被分析樣本進(jìn)程的執(zhí)行環(huán)境(指令寄存器、堆棧寄存器等多個(gè)寄存
器的值),并將中斷時(shí)的堆棧參數(shù)送至HOOKDLL中相應(yīng)的處理函數(shù)進(jìn)行具體分 析。
所述HOOKDLL負(fù)責(zé)接收捕獲引擎捕獲的函數(shù)及其實(shí)際參數(shù),并對(duì)實(shí)際參數(shù) 進(jìn)行具體分析,將分析的結(jié)果進(jìn)行格式化輸出到數(shù)據(jù)庫(kù)或文件中。
所述格式化輸出的分析內(nèi)容有兩種,Trace型即記錄函數(shù)調(diào)用的記錄而不關(guān) 注其參數(shù),Analysis型即把函數(shù)和參數(shù)進(jìn)行結(jié)合判斷后再記錄其行為特征。
所述自動(dòng)入庫(kù)模塊是用于將大量樣本的相關(guān)信息準(zhǔn)確入庫(kù),通過(guò)訪問(wèn)這些 數(shù)據(jù)庫(kù)記錄,可以使得整個(gè)聯(lián)機(jī)系統(tǒng)中的每臺(tái)捕獲引擎都能夠準(zhǔn)確獲取每個(gè)樣 本的路徑信息并能訪問(wèn)樣本庫(kù)所在的物理機(jī)。
所述自動(dòng)入庫(kù)模塊由文件檢測(cè)和數(shù)據(jù)庫(kù)操作兩個(gè)子模塊組成。
所述文件檢測(cè)子模塊通過(guò)以下步驟實(shí)現(xiàn)功能首先對(duì)用戶輸入的信息進(jìn)行 校驗(yàn),判斷輸入數(shù)據(jù)是否正確,然后根據(jù)輸入的參數(shù)信息,判斷是否進(jìn)行數(shù)字 簽名和文件格式檢測(cè),以及相關(guān)的DLL檢測(cè)。
所述數(shù)據(jù)庫(kù)操作子模塊能夠?qū)?shù)據(jù)庫(kù)執(zhí)行讀數(shù)據(jù)操作、寫(xiě)數(shù)據(jù)操作、自定 義的其他操作。
所述控制模塊的處理流程
(1) 連接數(shù)據(jù)庫(kù),從對(duì)象程序表中取得未分析的數(shù)據(jù);
(2) 啟動(dòng)虛擬機(jī),并登陸虛擬機(jī)中的操作系統(tǒng);
(3) 傳送樣本文件至虛擬機(jī)中的操作系統(tǒng),存放在虛擬機(jī)C盤(pán)根目錄下;
(4) 啟動(dòng)捕獲引擎并對(duì)樣本的行為實(shí)施跟蹤,并將行為記錄下如XML文件
中;
(5) 跟蹤完畢后,關(guān)閉虛擬機(jī),并將回傳的XML文件解析,其行為記錄存 入數(shù)據(jù)庫(kù)的跟蹤事件數(shù)據(jù)表。
控制模塊對(duì)數(shù)據(jù)模塊具有如下互斥操作流程 (1)當(dāng)虛擬機(jī)啟動(dòng),首先控制模塊會(huì)向數(shù)據(jù)模塊請(qǐng)求一個(gè)未被分析樣本的 路徑信息,對(duì)數(shù)據(jù)庫(kù)中對(duì)象程序表和跟蹤數(shù)據(jù)表中加X(jué)鎖,查詢對(duì)象程序表中的 istraced和Prog—id兩個(gè)字段的值,若istraced為false且Prog—id的值未在跟蹤數(shù)據(jù)表 中出現(xiàn),則判斷該樣本未被分析過(guò),并向主程序提交路徑信息;(2) 若主程序成功下載病毒樣本,在跟蹤數(shù)據(jù)表插入一條新記錄,并進(jìn)行 初始化操作,系統(tǒng)自動(dòng)填入trace一id和prog一id兩個(gè)字段的值,字段"程序跟蹤狀態(tài)" 設(shè)置為"正在處理";同時(shí)釋放對(duì)象程序表和跟蹤狀態(tài)表的X鎖;
(3) 解析虛擬機(jī)傳回來(lái)的含有病毒行為的XML文件,并記錄至數(shù)據(jù)庫(kù)中的 跟蹤事件數(shù)據(jù)表。
根據(jù)上述技術(shù)方案得到的本發(fā)明,具有以下優(yōu)點(diǎn)具有可檢測(cè)未知非法程 序,對(duì)于工具黑客對(duì)抗性較好,病毒難以通過(guò)簡(jiǎn)單改造甚至程序自動(dòng)化改造逃 避檢測(cè);對(duì)抗一族惡意代碼而不是一個(gè);本發(fā)明的監(jiān)控范圍非常的廣、實(shí)用性 強(qiáng)、可以應(yīng)對(duì)能造成直接破壞的惡意代碼,同時(shí)還能夠?qū)崿F(xiàn)自動(dòng)對(duì)樣本進(jìn)行快 速、準(zhǔn)確的分析使得我們的電腦能夠得到全面的保護(hù)。
以下結(jié)合附圖和具體實(shí)施方式
來(lái)進(jìn)一步說(shuō)明本發(fā)明。
圖l為主動(dòng)防御的層次結(jié)構(gòu)示意圖。
圖2為SSDT HOOK工作原理示意圖。
圖3為常被掛鉤的系統(tǒng)服務(wù)示意圖
圖4為簡(jiǎn)單自反饋模型的示意圖。
圖5為系統(tǒng)模塊的結(jié)構(gòu)示意圖。
圖6為捕獲引擎設(shè)計(jì)原理圖。
圖7為本系統(tǒng)框架。
圖8為本系統(tǒng)網(wǎng)絡(luò)拓?fù)鋱D。
圖9為行為數(shù)據(jù)表E-R圖
圖IO為本系統(tǒng)組件關(guān)系圖。
圖11為文件檢測(cè)流程圖。
圖12為控制程序處理流程圖。
圖13為捕獲引擎的處理流程圖。
圖14為HOOKDLL示意圖。
圖15為HOOKDLL處理流程圖。
圖16為HOOKDLL列表。
具體實(shí)施例方式
為了使本發(fā)明實(shí)現(xiàn)的技術(shù)手段、創(chuàng)作特征、達(dá)成目的與功效易于明白了解, 下面結(jié)合具體圖示,進(jìn)一步闡述本發(fā)明。
常見(jiàn)病毒行為的分析的為現(xiàn)有技術(shù),這里將不加以贅述。
病毒動(dòng)態(tài)行為自動(dòng)化分析系統(tǒng)的主要功能是為了自動(dòng)化獲取并分析樣本程 序的動(dòng)態(tài)行為數(shù)據(jù)。該系統(tǒng)由以下幾個(gè)模塊組成(如圖5所示)
樣本庫(kù)樣本庫(kù)包括兩類(lèi)樣本,分別為黑樣本庫(kù)(病毒樣本)、白樣本庫(kù)(合 法程序)。
入庫(kù)篩選模塊負(fù)責(zé)將指定網(wǎng)絡(luò)上能夠直接訪問(wèn)的某文件或某文件夾里的 文件的信息保存到指定數(shù)據(jù)庫(kù),同時(shí)將檢驗(yàn)樣本是否符合自動(dòng)化行為分析系統(tǒng) 的運(yùn)行條件,只有符合條件的樣本才能存在于相應(yīng)的樣本庫(kù)中。
捕獲引擎模塊包括捕獲引擎和插件,用來(lái)捕獲病毒和合法程序的行為, 并將行為數(shù)據(jù)入庫(kù)。
黑樣本行為庫(kù)用來(lái)將捕獲的黑樣本行為數(shù)據(jù)記入數(shù)據(jù)庫(kù)中并進(jìn)行統(tǒng)計(jì), 并轉(zhuǎn)化成易于建模的二維表。
白樣本行為庫(kù)用來(lái)將捕獲的白樣本行為數(shù)據(jù)記入數(shù)據(jù)庫(kù)中并進(jìn)行統(tǒng)計(jì), 并轉(zhuǎn)化成易于建模的二維表。
捕獲引擎對(duì)程序性質(zhì)已確定的黑白樣本庫(kù)中的程序通過(guò)自動(dòng)入庫(kù)模塊倒入 到系統(tǒng)后進(jìn)行行為捕獲;再將捕獲的數(shù)據(jù)交由黑/白樣本行為庫(kù),并形成格式化 的數(shù)據(jù)。
為實(shí)現(xiàn)本系統(tǒng)的自動(dòng)捕獲功能使用以下兩種關(guān)鍵技術(shù) 一、動(dòng)態(tài)行為捕獲技術(shù)
在自動(dòng)化分析系統(tǒng)中,需要在API函數(shù)的入口處設(shè)置斷點(diǎn)中斷。中斷是一種 使CPU中止正在執(zhí)行的程序而轉(zhuǎn)去處理特殊事件的操作,而程序中安排的中斷 指令I(lǐng)NT產(chǎn)生的中斷被稱(chēng)為軟件中斷,在Intd體系上用于中斷調(diào)試的指令有二
INT1:單步中斷
使用單步中斷可以一條一條指令地跟蹤程序的流程,觀察CPU每執(zhí)行一條 指令后,各個(gè)寄存器及有關(guān)存儲(chǔ)單元的變化,從而指出和確定產(chǎn)生錯(cuò)誤的原因。
INT3:斷點(diǎn)中斷
斷點(diǎn)中斷也是供DEBUG調(diào)試程序使用的,它的中斷類(lèi)型號(hào)為3。通常調(diào)試 程序時(shí),把程序按功能分為幾段,然后每段設(shè)置一個(gè)斷點(diǎn)。當(dāng)CPU執(zhí)行到斷點(diǎn) 時(shí)便產(chǎn)生中斷,這時(shí)可以檢查各寄存器及有關(guān)存儲(chǔ)單元的內(nèi)容。
斷點(diǎn)可以設(shè)置在程序的任何地方,設(shè)置斷點(diǎn)實(shí)際上是把一條斷點(diǎn)指令I(lǐng)NT3 插入樣本程序進(jìn)程中,CPU每執(zhí)行到斷點(diǎn)處的INT3指令便產(chǎn)生一個(gè)中斷。
使用中斷指令來(lái)實(shí)時(shí)劫持OS執(zhí)行,需要注意兩點(diǎn)
定義我們的斷點(diǎn)處理程序和與斷點(diǎn)時(shí)間關(guān)聯(lián)。即設(shè)置探測(cè)點(diǎn),就是在我們 指定的OS調(diào)用函數(shù)的內(nèi)存位置上設(shè)置斷點(diǎn)。 被調(diào)試程序須在用戶空間中執(zhí)行。
當(dāng)樣本進(jìn)程遇到斷點(diǎn)(OxCC),該進(jìn)程會(huì)發(fā)生異常J^BP(INT3), Win32調(diào)試子 系統(tǒng)會(huì)截獲中斷。調(diào)試器通過(guò)此端口完成對(duì)調(diào)試子系統(tǒng)的掛接,進(jìn)而接收和處 理調(diào)試事件。
調(diào)試器實(shí)際上是一個(gè)很寬泛的概念,凡是能夠以某種形式監(jiān)控其他程序執(zhí) 行過(guò)程的程序,都可以泛稱(chēng)為調(diào)試器。在Windows平臺(tái)上,根據(jù)調(diào)試器的實(shí)現(xiàn)原 理大概可以將之分為三類(lèi)內(nèi)核態(tài)調(diào)試器、用戶態(tài)調(diào)試器和偽代碼調(diào)試器。用 戶態(tài)調(diào)試器直接使用Win32API提供的調(diào)試接口,遵循Win32的事件驅(qū)動(dòng)的設(shè)計(jì) 思想,其調(diào)試接口的服務(wù)器端的實(shí)現(xiàn)思路是調(diào)試服務(wù)的服務(wù)器端接口實(shí)際上 是存在于被調(diào)試進(jìn)程的調(diào)試端口(DebugPort),此核心對(duì)象實(shí)現(xiàn)上跟Win32的完 成端口類(lèi)似,都是通過(guò)一個(gè)核心隊(duì)列實(shí)現(xiàn)的LPC端口。啟動(dòng)調(diào)試服務(wù)器實(shí)際上就 是掛接Win32的調(diào)試子系統(tǒng)到被調(diào)試進(jìn)程,并在被調(diào)試進(jìn)程內(nèi)構(gòu)造調(diào)試端口。調(diào) 試器通過(guò)調(diào)試端口與Win32的調(diào)試子系統(tǒng)通訊;調(diào)試子系統(tǒng)響應(yīng)系統(tǒng)操作所引發(fā) 的調(diào)試事件,并通過(guò)調(diào)試端口將調(diào)試事件分發(fā)給用戶態(tài)調(diào)試器。
本發(fā)明設(shè)計(jì)的捕獲引擎正是采用這樣的調(diào)試器技術(shù)。如圖6所示,我們需要 捕獲某個(gè)樣本調(diào)用C叩yFileExA函數(shù)的情況,則在這個(gè)函數(shù)的入口處設(shè)置斷點(diǎn)中 斷。一旦樣本程序執(zhí)行到此斷點(diǎn)處(即樣本調(diào)用CopyFileExA函數(shù)),會(huì)告知Win32 調(diào)試子系統(tǒng),調(diào)試子系統(tǒng)會(huì)檢索是否有用戶調(diào)試器在等待中斷,如果發(fā)生的中 斷屬于某個(gè)調(diào)試器需要監(jiān)視的內(nèi)容范圍,則交由這個(gè)調(diào)試器處理。捕獲引擎在 啟動(dòng)時(shí),創(chuàng)建新的進(jìn)程空間用以執(zhí)行樣本,并告知調(diào)試子系統(tǒng),該進(jìn)程內(nèi)發(fā)生
的斷點(diǎn)中斷事件由捕獲引擎來(lái)處理。 二、虛擬機(jī)控制技術(shù)
本發(fā)明采用虛擬機(jī)技術(shù)實(shí)現(xiàn)對(duì)病毒行為的跟蹤調(diào)試,以防止病毒的擴(kuò)散和
破壞。VMWare是一個(gè)"虛擬PC"軟件,可以在一臺(tái)機(jī)器上同時(shí)運(yùn)行兩個(gè)或更多 Windows、 DOS、 LINUX等系統(tǒng)。與"多啟動(dòng)"系統(tǒng)相比,VMWare采用了完全不 同的概念。"多啟動(dòng)"系統(tǒng)在一個(gè)時(shí)刻只能運(yùn)行一個(gè)系統(tǒng),在系統(tǒng)切換時(shí)需要重新 啟動(dòng)機(jī)器。而VMWare是真正"同時(shí)"在主系統(tǒng)的平臺(tái)上運(yùn)行多個(gè)操作系統(tǒng),就象 標(biāo)準(zhǔn)Windows應(yīng)用程序那樣切換。而且每個(gè)操作系統(tǒng)你都可以進(jìn)行虛擬的分區(qū)、 配置而不影響真實(shí)硬盤(pán)的數(shù)據(jù),甚至可以通過(guò)網(wǎng)卡將幾臺(tái)虛擬機(jī)連接為一個(gè)局 域網(wǎng),極其方便。
VIX API是一種通過(guò)腳本或編程方式來(lái)操作虛擬機(jī)的應(yīng)用函數(shù)接口 ,由于在 應(yīng)用層就可以使用,且接口函數(shù)類(lèi)似于C,所以非常適用于編程。由于VIXAPI 是基于對(duì)象操作的,所以在使用它對(duì)虛擬機(jī)操作就需要用到如下對(duì)象
VM--虛擬機(jī),只能對(duì)它進(jìn)行開(kāi)啟或關(guān)閉的操作;
host-宿主計(jì)算機(jī),既可以是本地計(jì)算機(jī),也可以是遠(yuǎn)程計(jì)算機(jī);
job—相當(dāng)于一個(gè)會(huì)話,包含有異步操作信息;
snapshot-虛擬機(jī)快照;
自動(dòng)化分析系統(tǒng)主要對(duì)虛擬機(jī)進(jìn)行以下幾種控制操作
(1) 虛擬機(jī)的開(kāi)啟
首先,定義一個(gè)虛擬機(jī)控制句柄,然后嘗試去連接虛擬機(jī)。 其次,將定義的主機(jī)句柄的控制權(quán)交與虛擬機(jī)控制句柄。 最后,開(kāi)啟虛擬機(jī)中的操作系統(tǒng)。
(2) 傳送文件至虛擬機(jī)中的操作系統(tǒng)
首先,同樣需要定義虛擬機(jī)控制句柄,并將其交與主機(jī)句柄。 其次,登陸虛擬機(jī)中的操作系統(tǒng)。 最后,所需文件從物理機(jī)傳至虛擬機(jī)中。
(3) 控制虛擬機(jī)中可執(zhí)行文件執(zhí)行。
采用的方法前三步與傳送文件至操作系統(tǒng)的前三步相同,
通過(guò)以上操作實(shí)現(xiàn)對(duì)虛擬機(jī)的開(kāi)啟、關(guān)閉、重啟和加載程序等一系列操作,
從而實(shí)現(xiàn)對(duì)病毒行為的跟蹤調(diào)試。
本病毒動(dòng)態(tài)行為自動(dòng)化分析系統(tǒng)是由以下三層構(gòu)成,如圖7:
數(shù)據(jù)層。該層有兩個(gè)組成部分,樣本庫(kù)和病毒行為庫(kù)。樣本庫(kù)是用來(lái)放置
樣本的文件服務(wù)器,而病毒行為庫(kù)是用來(lái)存放自動(dòng)化行為分析系統(tǒng)的捕獲的行
為數(shù)據(jù)的數(shù)據(jù)庫(kù)。
控制層。該層是一個(gè)物理聯(lián)機(jī)系統(tǒng),每個(gè)集權(quán)單元都有一個(gè)封閉的虛擬運(yùn) 行環(huán)境用來(lái)運(yùn)行病毒樣本。集權(quán)單元的核心是控制程序,它的作用是-
(1) 從樣本庫(kù)中提取病毒樣本;
(2) 向虛擬機(jī)發(fā)送控制指令,如開(kāi)啟虛擬機(jī)、加載樣本程序、運(yùn)行行為捕 獲引擎;
(3) 接受虛擬機(jī)發(fā)送的有病毒行為的XML文件,并解析這個(gè)文件,將相關(guān) 的病毒行為通過(guò)普通socket連接記錄至病毒行為庫(kù)中;
運(yùn)行層。運(yùn)行層可以看作是一個(gè)"沙框"(sandbox)。"沙框"可以看作為一 個(gè)安全的軟件系統(tǒng),用來(lái)將一些未知的或不可信任的程序放置在一個(gè)孤立的且 同外界隔離的環(huán)境中運(yùn)行,因?yàn)檫@些程序是不能冒險(xiǎn)放在個(gè)人系統(tǒng)或網(wǎng)絡(luò)環(huán)境 下運(yùn)行的。而虛擬機(jī)系統(tǒng)為實(shí)現(xiàn)這個(gè)"沙框"創(chuàng)造了技術(shù)條件,因?yàn)樘摂M機(jī)是同操 作系統(tǒng)物理隔離,并且運(yùn)行在我們常用的桌面系統(tǒng),易用且易于控制。如設(shè)計(jì) 得當(dāng),將病毒樣本放置虛擬機(jī)運(yùn)行不會(huì)對(duì)物理操作系統(tǒng)造成任何危害。在運(yùn)行 層中除了 VMware虛擬機(jī)外還有行為捕獲引擎和擴(kuò)展插件。
本系統(tǒng)的運(yùn)行環(huán)境 一、物理機(jī)運(yùn)行環(huán)境
硬件環(huán)境配置4臺(tái)高性能PC (Intel E6320, 4G內(nèi)存)作為行為捕獲引擎, 每臺(tái)捕獲引擎都采用支持Intd VT技術(shù)的硬件,使得VMWare在此平臺(tái)上的運(yùn)行 效率將優(yōu)于其它平臺(tái)。l臺(tái)數(shù)據(jù)庫(kù)服務(wù)器(DELL POWEREDGE 860)。 l臺(tái)百
兆交換機(jī)。
軟件環(huán)境配置Windows XP Professional SP2,數(shù)據(jù)庫(kù)為MySql 5.0, VMWare Workstation6.0.2。系統(tǒng)網(wǎng)絡(luò)配置如圖8。
二、 虛擬機(jī)運(yùn)行環(huán)境
本系統(tǒng)采用VMware Workstation 6.0以上的版本,使用的開(kāi)發(fā)包為VMWare VIX SDK 1.1。
本系統(tǒng)采用的是擁有幾種不同的操作系統(tǒng)的虛擬主機(jī),每一個(gè)操作系統(tǒng)代 表惡意軟件可能攻擊的目標(biāo)。這樣便于在本地環(huán)境中觀察惡意程序。為了對(duì)付 惡意軟件,采取一些預(yù)防措施不讓生產(chǎn)系統(tǒng)網(wǎng)絡(luò)受到感染。具體方法如下
跟上VMware安全補(bǔ)丁的步伐,經(jīng)常瀏覽其網(wǎng)站,下載其最新的補(bǔ)丁。
將某物理主機(jī)用于基于VMware的試驗(yàn)環(huán)境,不用于其它用途。
不將物理試驗(yàn)系統(tǒng)連接到生產(chǎn)性網(wǎng)絡(luò)。
用基于主機(jī)的入侵檢測(cè)軟件監(jiān)視物理主機(jī),如一個(gè)文件集成檢査器。 用克隆軟件定期重鏡象物理主機(jī),如NortonGhots。
搭載病毒樣本的虛擬機(jī)系統(tǒng)與之對(duì)應(yīng)的物理機(jī)進(jìn)行邏輯隔離,本文實(shí)驗(yàn)采 用的具體方法是將這兩種不同的系統(tǒng)分置在不同的網(wǎng)段,以防止如Viking等病 毒,這些病毒具有很強(qiáng)的嗅探能力,能夠突破同局域網(wǎng)下所以機(jī)器的漏洞,并 將其注入。
三、 數(shù)據(jù)庫(kù)設(shè)計(jì)-
系統(tǒng)的數(shù)據(jù)庫(kù)是基于MySql5.0開(kāi)發(fā)設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)及表應(yīng)用數(shù)據(jù)庫(kù)腳本生 成。這些數(shù)據(jù)表之間的E-R圖如圖9。
表tbLprog用來(lái)存放樣本的一些基本信息,比如存放文件路徑,這里要注意 的是文件路徑為共享路徑,這個(gè)路徑應(yīng)當(dāng)被分析引擎順利訪問(wèn)。
表tbljrace用來(lái)記錄被分析樣本的狀態(tài),因?yàn)樵诜治龅倪^(guò)程中,被分析的樣 本會(huì)出現(xiàn)超時(shí)、崩潰等情況。
、、
表tbl一traceevent用來(lái)記錄被分析樣本的API調(diào)用及使用的參數(shù),這里的數(shù)據(jù) 將是建模中的關(guān)鍵性數(shù)據(jù)。
整個(gè)自動(dòng)化分析系統(tǒng)是由如下幾個(gè)組件協(xié)同工作完成
(1) 入庫(kù)程序。入庫(kù)程序是將樣本庫(kù)中的樣本路徑等信息存入數(shù)據(jù)庫(kù)中, 使得控制程序能夠獲取到樣本的路徑信息。
(2) Control (控制程序)。運(yùn)行在物理機(jī)上,用于控制虛擬機(jī)的運(yùn)行,并
負(fù)責(zé)提取病毒樣本和超時(shí)管理。
(3) VMTracer (捕獲引擎)。VMTracer是捕獲系統(tǒng)中的核心,負(fù)責(zé)檢査被 分析樣本進(jìn)程加載了哪些系統(tǒng)DLL,然后根據(jù)HOOKDLL的導(dǎo)出函數(shù)表,來(lái)確定 需要在被分析樣本進(jìn)程中哪些API調(diào)用處設(shè)置調(diào)試斷點(diǎn)。當(dāng)樣本進(jìn)程執(zhí)行到調(diào)試 斷點(diǎn)處會(huì)產(chǎn)生中斷事件,通過(guò)調(diào)試子系統(tǒng)獲得斷點(diǎn)發(fā)生時(shí)被分析樣本進(jìn)程的執(zhí) 行環(huán)境(指令寄存器、堆棧寄存器等多個(gè)寄存器的值),并將中斷時(shí)的堆桟參數(shù) 送至HOOKDLL中相應(yīng)的處理函數(shù)進(jìn)行具體分析。
(4) HOOKDLL。負(fù)責(zé)接收捕獲引擎捕獲的API函數(shù)及其實(shí)際參數(shù),并對(duì) 實(shí)際參數(shù)進(jìn)行具體分析,將分析的結(jié)果進(jìn)行格式化輸出到數(shù)據(jù)庫(kù)或文件中。
從圖10得出在系統(tǒng)的三層框架下,入庫(kù)程序作為組件位于數(shù)據(jù)層中的樣本 庫(kù)文件服務(wù)器中。它作為一個(gè)前端工具,用于將樣本信息存入數(shù)據(jù)庫(kù)中,在自 動(dòng)化系統(tǒng)所有組件中只有入庫(kù)程序是人機(jī)交互的。而控制程序是無(wú)人值守的, 是無(wú)須人機(jī)交互的。控制程序是所有組件的核心,它負(fù)責(zé)從樣本庫(kù)中提取樣本、 運(yùn)行虛擬機(jī)、并向行為庫(kù)傳送病毒行為數(shù)據(jù)。捕獲引擎及其插件(HookDll)是 協(xié)同工作在虛擬環(huán)境下捕獲病毒的行為,并寫(xiě)入XML文件回傳至控制機(jī)。
下面對(duì)上述各組件的具體運(yùn)行進(jìn)行詳細(xì)介紹-
一、自動(dòng)入庫(kù)自動(dòng)入庫(kù)組件是用于將大量樣本的相關(guān)信息準(zhǔn)確入庫(kù)。通 過(guò)訪問(wèn)這些數(shù)據(jù)庫(kù)記錄,可以使得整個(gè)聯(lián)機(jī)系統(tǒng)中的每臺(tái)捕獲引擎都能夠準(zhǔn)確 獲取每個(gè)樣本的路徑信息并能訪問(wèn)樣本庫(kù)所在的物理機(jī)。同時(shí),由于本捕獲引 擎聯(lián)機(jī)系統(tǒng)是在一個(gè)同互聯(lián)網(wǎng)隔絕的封閉網(wǎng)段下運(yùn)行,所以存放病毒樣本的物 理機(jī)無(wú)須采用防火墻,以免自動(dòng)入庫(kù)程序在傳送樣本中受到堵塞。
自動(dòng)入庫(kù)組件由文件檢測(cè)和數(shù)據(jù)庫(kù)操作兩個(gè)子模塊組成。
文件檢測(cè)子模塊的功能
(1) 檢測(cè)樣本文件的數(shù)字簽名是否有效;
(2) 檢測(cè)樣本文件是否是一個(gè)PE32格式的文件;
(3) 如果樣本是可執(zhí)行文件,檢測(cè)樣本是否缺少運(yùn)行必須的DLL文件; 文件檢測(cè)子模塊的輸入項(xiàng)
(1) 輸入樣本文件名;
(2) 輸入檢測(cè)標(biāo)記,比如僅檢測(cè)文件的數(shù)字簽名是否有效;
文件檢測(cè)子模塊的輸出項(xiàng)
輸出檢測(cè)結(jié)果,比如文件是一個(gè)PE32格式的可執(zhí)行文件,并且文件的數(shù)字
簽名有效。
文件檢測(cè)子模塊的接口
提供函數(shù)BOOL CheckPeFile(CHAR *pszFile, DWORD dwCheck)給其他
模塊調(diào)用。
文件檢測(cè)子模塊的處理流程(如圖ll):文件檢測(cè)子模塊首先對(duì)用戶輸入的 信息進(jìn)行校驗(yàn),判斷輸入數(shù)據(jù)是否正確,然后根據(jù)輸入的參數(shù)信息,判斷是否
進(jìn)行數(shù)字簽名和文件格式檢測(cè),以及相關(guān)的DLL檢測(cè)。
數(shù)據(jù)庫(kù)操作子模塊的功能
(1) 對(duì)Mysql數(shù)據(jù)庫(kù)執(zhí)行讀數(shù)據(jù)操作;
(2) 對(duì)Mysql數(shù)據(jù)庫(kù)執(zhí)行寫(xiě)數(shù)據(jù)操作;
(3) 對(duì)Mysql數(shù)據(jù)庫(kù)執(zhí)行自定義的其他操作,比如更新數(shù)據(jù)。 數(shù)據(jù)庫(kù)操作子模塊的輸入項(xiàng)-
(1) 連接數(shù)據(jù)庫(kù)所需的配置信息,包含數(shù)據(jù)庫(kù)名,登陸用戶名,登錄密碼;
(2) 需要寫(xiě)到數(shù)據(jù)庫(kù)的數(shù)據(jù); 數(shù)據(jù)庫(kù)操作子模塊的輸出項(xiàng)
(1) 連接數(shù)據(jù)庫(kù)出錯(cuò)的出錯(cuò)信息;
(2) 讀寫(xiě)數(shù)據(jù)庫(kù)完成的提示信息;
自動(dòng)入庫(kù)實(shí)現(xiàn)過(guò)程中使用的主要類(lèi)庫(kù)有CDataBase和CListFile。 CDataBase 負(fù)責(zé)控制程序全部的數(shù)據(jù)庫(kù)操作,包括查詢、修改、增加和刪除記錄的工作。 CListFile負(fù)責(zé)顯示指定目錄下面的指定文件名.(包含子目錄)。
二、控制程序控制程序功能是病毒動(dòng)態(tài)行為自動(dòng)化分析系統(tǒng)的核心組件, 用于控制虛擬機(jī)的運(yùn)行,并負(fù)責(zé)提取病毒樣本??刂瞥绦蜻\(yùn)行在物理機(jī)的 Windows系統(tǒng)中。
控制程序輸入項(xiàng)-
(1) 存放數(shù)據(jù)的數(shù)據(jù)庫(kù)相關(guān)信息,包括數(shù)據(jù)庫(kù)主機(jī)名,數(shù)據(jù)庫(kù)名,登錄數(shù) 據(jù)庫(kù)需要的賬號(hào)密碼;
(2) 存放樣本數(shù)據(jù)的計(jì)算機(jī)相關(guān)信息,包括存放樣本的網(wǎng)絡(luò)地址,樣本數(shù)
據(jù)文件;
(3) VMWare虛擬機(jī)相關(guān)信息,包括VMWARE虛擬機(jī)鏡像文件位置,虛擬 機(jī)內(nèi)部系統(tǒng)的賬號(hào)和密碼;
(4) 每個(gè)樣本的分析時(shí)間,超時(shí)分析自動(dòng)結(jié)束,比如120秒; 輸入項(xiàng)均為控制程序命令行參數(shù),參數(shù)格式為Control.exe host root pwd db
vmx user pwd StopTime。其中host參數(shù)為數(shù)據(jù)庫(kù)主機(jī)名;root參數(shù)為數(shù)據(jù)庫(kù)登
陸帳號(hào);pwd參數(shù)為數(shù)據(jù)庫(kù)登陸密碼;db參數(shù)為數(shù)據(jù)庫(kù)名稱(chēng);vmx參數(shù)為虛擬
機(jī)文件;user參數(shù)為登陸虛擬機(jī)內(nèi)部系統(tǒng)的帳號(hào);pwd參數(shù)為登陸虛擬機(jī)內(nèi)部系 統(tǒng)的密碼;StopTime參數(shù)為指定超時(shí)時(shí)間,單位秒;例如Control.exe 127.0.0.1 root 123 mydb c:xp.vmx user 1234 120。
控制程序輸出項(xiàng)
(1) 從虛擬機(jī)內(nèi)部取得的樣本文件特征數(shù)據(jù)放到指定數(shù)據(jù)庫(kù)的tb1—event表
中;
(2) 從虛擬機(jī)內(nèi)部取得的樣本文件特征數(shù)據(jù)文件,樣本所在文件夾下,文 件名和樣本文件同名,擴(kuò)展名為.XML;
(3) 生成控制程序運(yùn)行中產(chǎn)生的出錯(cuò)信息文件,并保存到cA—log.bg;
控制程序處理流程,如圖12:
(1) 連接數(shù)據(jù)庫(kù),從對(duì)象程序表中取得未分析的數(shù)據(jù);
(2) 啟動(dòng)虛擬機(jī),并登陸虛擬機(jī)中的操作系統(tǒng);
(3) 傳送樣本文件至虛擬機(jī)中的操作系統(tǒng),存放在虛擬機(jī)C盤(pán)根目錄下;
(4) 啟動(dòng)捕獲引擎并對(duì)樣本的行為實(shí)施跟蹤,并將行為記錄下如XML文件
中;
(5) 跟蹤完畢后,關(guān)閉虛擬機(jī)。并將回傳的XML文件解析,其行為記錄存 入數(shù)據(jù)庫(kù)的跟蹤事件數(shù)據(jù)表;
控制程序?qū)?shù)據(jù)庫(kù)的互斥操作流程
自動(dòng)化分析系統(tǒng)是一個(gè)聯(lián)機(jī)系統(tǒng),該系統(tǒng)由多個(gè)主機(jī)組成,每個(gè)主機(jī)都擁 有一個(gè)控制程序,且控制程序運(yùn)行在物理機(jī)內(nèi)。在取得未分析數(shù)據(jù)的過(guò)程中, 為了實(shí)現(xiàn)合理調(diào)度,避免一個(gè)樣本被多個(gè)主機(jī)重復(fù)分析而造成的數(shù)據(jù)冗余,在 設(shè)計(jì)控制程序過(guò)程中需要實(shí)現(xiàn)如下的互斥操作流程
(1) 一旦啟動(dòng)虛擬機(jī),首先控制程序會(huì)向數(shù)據(jù)庫(kù)請(qǐng)求一個(gè)未被分析樣本的
路徑信息,對(duì)數(shù)據(jù)庫(kù)中對(duì)象程序表和跟蹤數(shù)據(jù)表中加x鎖,査詢對(duì)象程序表中的
istmced和Prog—id兩個(gè)字段的值,如果istraced為false且Prog—id的值未在跟蹤數(shù)據(jù) 表中出現(xiàn),則判斷該樣本未被分析過(guò),并向主程序提交路徑信息;
(2) —旦主程序成功下載病毒樣本,在跟蹤數(shù)據(jù)表插入一條新記錄,并進(jìn) 行初始化操作,系統(tǒng)自動(dòng)填入tmce一id和progjd兩個(gè)字段的值,字段"程序跟蹤狀 態(tài)"設(shè)置為"正在處理";同時(shí)釋放對(duì)象程序表和跟蹤狀態(tài)表的X鎖;
(3) 解析虛擬機(jī)傳回來(lái)的含有病毒行為的XML文件,并記錄至數(shù)據(jù)庫(kù)中的 跟蹤事件數(shù)據(jù)表。
控制程序?qū)崿F(xiàn)過(guò)程中使用的主要類(lèi)庫(kù)和方法
控制程序中主要有兩個(gè)類(lèi)CDataBase和CVixVM。 CDataBase類(lèi)負(fù)責(zé)控制程序 全部的數(shù)據(jù)庫(kù)操作,包括查詢、修改、增加和刪除記錄的工作。CWxVM類(lèi)在控 制程序中負(fù)責(zé)虛擬機(jī)操作的子模塊,包括開(kāi)啟、加載樣本程序、啟動(dòng)捕獲引擎、 出錯(cuò)處理和關(guān)閉虛擬機(jī)。CVixVM用以編程實(shí)現(xiàn)對(duì)VMware虛擬機(jī)的控制。因?yàn)?自動(dòng)化分析系統(tǒng)中樣本是運(yùn)行在封閉的虛擬環(huán)境中的,所以,我們使用VMware 的開(kāi)發(fā)包為VMWareVIXSDKl.l,通過(guò)編程,實(shí)現(xiàn)外部對(duì)虛擬機(jī)內(nèi)部運(yùn)行進(jìn)行 控制。
三、捕獲引擎捕獲引擎(APITracer)是本系統(tǒng)中的核心,在確定對(duì)指定 樣本進(jìn)程進(jìn)行分析之后,檢査被分析樣本進(jìn)程加載了哪些系統(tǒng)DLL,然后根據(jù) 工作目錄下的HOOKDLL的導(dǎo)出函數(shù)表,來(lái)確定需要在被分析樣本進(jìn)程中哪些 API調(diào)用處設(shè)置調(diào)試斷點(diǎn)。當(dāng)樣本進(jìn)程執(zhí)行到調(diào)試斷點(diǎn)處會(huì)產(chǎn)生中斷事件,通過(guò) 調(diào)試子系統(tǒng)獲得斷點(diǎn)發(fā)生時(shí)被分析樣本進(jìn)程的執(zhí)行環(huán)境(指令寄存器、堆棧寄 存器等多個(gè)寄存器的值),并將中斷時(shí)的堆棧參數(shù)送至HOOKDLL中相應(yīng)的處理 函數(shù)進(jìn)行具體分析。
捕獲引擎的功能
(1) 根據(jù)工作目錄下的HOOKDLL對(duì)指定API調(diào)用入口處設(shè)置調(diào)試斷點(diǎn);
(2) 通過(guò)操作系統(tǒng)調(diào)試子系統(tǒng)中獲取需要捕獲的API調(diào)用事件及其參數(shù);
(3) 向HOOKDLL中相應(yīng)的處理函數(shù)傳遞斷點(diǎn)發(fā)生處的堆棧信息; 捕獲引擎的輸入項(xiàng)
(1) 樣本進(jìn)程;
(2) 捕獲引擎的所在目錄;
(3) 目錄下所有HOOKDLL名及HOOKDLL導(dǎo)出函數(shù)表;
捕獲引擎的輸出項(xiàng)
捕獲引擎在捕獲到調(diào)試中斷之后,會(huì)調(diào)用HOOKDLL中相應(yīng)的函數(shù)進(jìn)行處 理,這些函數(shù)采用相同的參數(shù)表,這個(gè)參數(shù)表就是行為捕獲引擎的輸出,定義 為T(mén)racerFunc函數(shù)指針。
以對(duì)SendMessageW函數(shù)的捕獲處理為例,當(dāng)發(fā)生調(diào)試斷點(diǎn)事件之后,捕獲 引擎調(diào)用HOOKDLL中的MySendMessageW函數(shù)進(jìn)行處理。
其中TmceMode若為CALLJTRACE一MODE,表明是在捕獲的API調(diào)用前 進(jìn)行處理。TraceMode若為RETURN一TRACE一MODE,表明是在捕獲的API調(diào)用 后進(jìn)行處理;plnfo為CTracelnfo *類(lèi)型的句柄,用于結(jié)構(gòu)化打印數(shù)據(jù),相當(dāng)于 stdout; pdwRet
用來(lái)通知捕獲引擎修改被捕獲函數(shù)的返回值;pAdvCtrl是系統(tǒng)保留,為了將 來(lái)擴(kuò)充功能保留。Apilnfo為API—TRACE—INFO結(jié)構(gòu)體的指針變量,存儲(chǔ)了斷點(diǎn) 發(fā)生時(shí),被分析樣本進(jìn)程的執(zhí)行環(huán)境,包括API名,堆棧指針等。
捕獲引擎的處理流程,如圖13:
捕獲引擎的主要部分是一個(gè)循環(huán),處理來(lái)自內(nèi)核的調(diào)試事件,循環(huán)體內(nèi)先 等待一個(gè)調(diào)試事件,然后處理之,最后將控制權(quán)交還給調(diào)試服務(wù)器,就好像一 個(gè)窗口消息循環(huán)一樣。
捕獲引擎關(guān)注EXCEPTION—DEBUG—EVENT調(diào)試事件的發(fā)生,每次 Win32API—旦被調(diào)用,就觸發(fā)一次EXCEPTION一DEBUG—EVENT事件。每調(diào)用 一次Win32API, APITracer査找這些動(dòng)態(tài)鏈接庫(kù)是否存在有同名函數(shù), 一旦發(fā)現(xiàn) 即轉(zhuǎn)入HOOLDLL動(dòng)態(tài)鏈接庫(kù)。
其實(shí)現(xiàn)的方法是在調(diào)試器開(kāi)始的時(shí)候,啟動(dòng)要調(diào)試程序的新進(jìn)程或者掛 接(attach)到一個(gè)已運(yùn)行進(jìn)程上,此時(shí)啟動(dòng)調(diào)試接口的服務(wù)器端;使用 WaitForDebugEvent函數(shù)等待調(diào)試服務(wù)器端的調(diào)試事件的發(fā)生;根據(jù)事件進(jìn)行相 應(yīng)的處理;最后使用ContinueDebugEvent函數(shù)請(qǐng)求調(diào)試服務(wù)器繼續(xù)執(zhí)行被調(diào)試進(jìn) 程,以等待并處理下一個(gè)調(diào)試事件。
四、HOOKDLL組件HOOKDLL組件主要是接收捕獲引擎捕獲的API函數(shù) 及其實(shí)際參數(shù),并對(duì)實(shí)際參數(shù)進(jìn)行具體分析,將分析的結(jié)果進(jìn)行格式化輸出到 數(shù)據(jù)庫(kù)或文件中。格式化輸出的分析內(nèi)容有兩種,Tmce型即記錄API調(diào)用的記錄 而不關(guān)注其參數(shù),Analysis型即把API和參數(shù)進(jìn)行結(jié)合判斷后再記錄其行為特征。
HOOKDLL的功能
(1) 解析捕獲引擎?zhèn)鬟f的函數(shù)參數(shù)內(nèi)容;
(2) 檢查參數(shù)內(nèi)容與對(duì)應(yīng)的API可能產(chǎn)生的惡意行為做規(guī)則匹配;
(3) 輸出Trace類(lèi)型記錄;
(4) 輸出Analysis類(lèi)型記錄; HOOKDLL的輸入項(xiàng)
以對(duì)WSAConnect函數(shù)的捕獲處理為例,病毒調(diào)用此API函數(shù),必定引用了 系統(tǒng)DLL,即Ws2—32.dll,與之對(duì)應(yīng)的HOOKDLL是H一Ws2—32.dll,則對(duì) WS ACo皿ect函數(shù)參數(shù)的具體分析轉(zhuǎn)入H一Ws2一32.d11中的My WSAConnect函數(shù)進(jìn) 行處理,MyWSAConnect首先判斷TraceMode的類(lèi)型,然后從API—TRACE—INFO 中的堆棧指針獲得參數(shù)內(nèi)容在內(nèi)存的地址,進(jìn)而讀取這些內(nèi)容并將其解析。Tmce 類(lèi)型的記錄就是API調(diào)用事件和參數(shù)內(nèi)容的輸出,Analysis類(lèi)型的記錄是分析函 數(shù)參數(shù)的內(nèi)容是否同與該函數(shù)相關(guān)的惡意代碼行為規(guī)則所匹配,如果匹配則該 行為作為Analysis類(lèi)型的記錄被輸出。
HOOKDLL的輸出項(xiàng)
HOOKDLL的輸出項(xiàng)是使用類(lèi)CTracelnfo派生的對(duì)象進(jìn)行控制和輸出。 HOOKDLL的處理流程
一旦調(diào)試事件EXCEPTION一DEBUG一EVENT發(fā)生,捕獲引擎即阻塞被跟蹤 程序的執(zhí)行,示意圖見(jiàn)圖14。
如上圖14, APITracer在跟蹤至某一系統(tǒng)API函數(shù)TestFunc(),此時(shí)中斷 TestFunc(),記錄當(dāng)前函數(shù)地址0xl7fa,并指針轉(zhuǎn)至能夠處理該函數(shù)的擴(kuò)展插件, 這個(gè)插件我們命名為HOOKDLL。然后,HOOKDLL記錄下此API調(diào)用,此外還 有調(diào)用的時(shí)間戳及其相關(guān)參數(shù),比如關(guān)聯(lián)的文件名、訪問(wèn)的磁盤(pán)分區(qū)或修改注 冊(cè)表的鍵值。完畢后,將指針重定向至0xl7fa處,釋放中斷。
HOOKDLL的內(nèi)部處理流程如圖15所示
TraceMode為C ALLJTRACE—MOED表明當(dāng)前API函數(shù)的參數(shù)內(nèi)容可以在調(diào) 用前得到,而TraceMode為RETURN一TRACE一MOED則表明當(dāng)前API函數(shù)的參數(shù) 必須在函數(shù)調(diào)用后得到,同時(shí)還需要指明是否修改函數(shù)返回值。
HOOKDLL實(shí)現(xiàn)過(guò)程中使用的主要類(lèi)庫(kù)和變量是CTracelnfo類(lèi)和 API—TRACE—INFO結(jié)構(gòu)。CTracelnfo類(lèi)在CommUtils.h頭文件中聲明,該類(lèi)主要 用于分析處理和記錄調(diào)試的相關(guān)信息。API—TRACE—INFO結(jié)構(gòu)在CommUtils.h 中聲明。這個(gè)結(jié)構(gòu)包含了被攔截dll函數(shù)所在的進(jìn)程句柄(hProcess),調(diào)用本函 數(shù)的模塊名(Caller),調(diào)用本函數(shù)的D11名(DllName),以及本函數(shù)的函數(shù)名 (ApiName),函數(shù)參數(shù)堆棧指針(dwStackAddr)等。dwRet用來(lái)設(shè)置被攔截函 數(shù)的返回值,而pAdvCtrl是為了將來(lái)擴(kuò)充功能保留。本系統(tǒng)中設(shè)計(jì)和實(shí)現(xiàn)了八個(gè) HOOKDLL,如圖16。
以上顯示和描述了本發(fā)明的基本原理和主要特征和本發(fā)明的優(yōu)點(diǎn)。本行業(yè) 的技術(shù)人員應(yīng)該了解,本發(fā)明不受上述實(shí)施例的限制,上述實(shí)施例和說(shuō)明書(shū)中 描述的只是說(shuō)明本發(fā)明的原理,在不脫離本發(fā)明精神和范圍的前提下,本發(fā)明 還會(huì)有各種變化和改進(jìn),這些變化和改進(jìn)都落入要求保護(hù)的本發(fā)明范圍內(nèi)。本 發(fā)明要求保護(hù)范圍由所附的權(quán)利要求書(shū)及其等效物界定。
權(quán)利要求
1.基于Win32平臺(tái)下病毒行為的自動(dòng)化分析系統(tǒng),該系統(tǒng)主要由數(shù)據(jù)模塊、控制模塊以及運(yùn)行模塊組成,所述控制模塊工作于物理機(jī)環(huán)境中,所述運(yùn)行模塊工作于由虛擬機(jī)形成的虛擬環(huán)境中;其特征在于,所述數(shù)據(jù)模塊中樣本數(shù)據(jù)模塊通過(guò)自動(dòng)入庫(kù)模塊連接行為數(shù)據(jù)模塊;所述運(yùn)行模塊中捕獲引擎模塊與HOOKDELL模塊進(jìn)行數(shù)據(jù)交換;所述控制模塊連接樣本數(shù)據(jù)模塊以及行為數(shù)據(jù)模塊,并且控制運(yùn)行模塊中的捕獲引擎模塊。
2、 根據(jù)權(quán)利要求l所述的基于Win32平臺(tái)下病毒行為的自動(dòng)化分析系統(tǒng),其特征在于,所述樣本數(shù)據(jù)模塊包括有病毒樣本數(shù)據(jù)模塊以及合法程序樣本數(shù)據(jù) 模塊。
3、 根據(jù)權(quán)利要求l所述的基于Win32平臺(tái)下病毒行為的自動(dòng)化分析系統(tǒng),其 特征在于,所述行為數(shù)據(jù)模塊包括有用來(lái)將捕獲的病毒樣本行為數(shù)據(jù)記入數(shù)據(jù) 模塊中并進(jìn)行統(tǒng)計(jì),并轉(zhuǎn)化成易于建模的二維表的病毒樣本行為數(shù)據(jù)模塊和用 來(lái)將捕獲的合法程序樣本行為數(shù)據(jù)記入數(shù)據(jù)模塊中并進(jìn)行統(tǒng)計(jì),并轉(zhuǎn)化成易于 建模的二維表的合法程序樣本行為模塊。
4、 根據(jù)權(quán)利要求l所述的基于Win32平臺(tái)下病毒行為的自動(dòng)化分析系統(tǒng),其 特征在于,所述捕獲引擎模塊包括捕獲引擎和插件。
5、 根據(jù)權(quán)利要求4所述的基于Win32平臺(tái)下病毒行為的自動(dòng)化分析系統(tǒng),其 特征在于,所述捕獲引擎在捕獲樣本動(dòng)態(tài)行為通過(guò)以下步驟實(shí)現(xiàn)-(1) 對(duì)指定樣本進(jìn)程進(jìn)行分析,檢査被分析樣本進(jìn)程加載了哪些系統(tǒng)DLL;(2) 再根據(jù)工作目錄下的HOOKDLL的導(dǎo)出函數(shù)表,來(lái)確定需要在被分析 樣本進(jìn)程中哪些函數(shù)調(diào)用處設(shè)置調(diào)試斷點(diǎn);(3) 當(dāng)樣本進(jìn)程執(zhí)行到調(diào)試斷點(diǎn)處會(huì)產(chǎn)生中斷事件,通過(guò)調(diào)試子系統(tǒng)獲得 斷點(diǎn)發(fā)生時(shí)被分析樣本進(jìn)程的執(zhí)行環(huán)境(指令寄存器、堆棧寄存器等多個(gè)寄存 器的值),并將中斷時(shí)的堆棧參數(shù)送至HOOKDLL中相應(yīng)的處理函數(shù)進(jìn)行具體分 析。
6、 根據(jù)權(quán)利要求l所述的基于Win32平臺(tái)下病毒行為的自動(dòng)化分析系統(tǒng),其 特征在于,所述HOOKDLL模塊負(fù)責(zé)接收捕獲引擎捕獲的函數(shù)及其實(shí)際參數(shù),并 對(duì)實(shí)際參數(shù)進(jìn)行具體分析,將分析的結(jié)果進(jìn)行格式化輸出到數(shù)據(jù)庫(kù)或文件中。
7、 根據(jù)權(quán)利要求6所述的基于Win32平臺(tái)下病毒行為的自動(dòng)化分析系統(tǒng),其 特征在于,所述格式化輸出的分析內(nèi)容有兩種,Trace型即記錄函數(shù)調(diào)用的記錄 而不關(guān)注其參數(shù),Analysis型即把函數(shù)和參數(shù)進(jìn)行結(jié)合判斷后再記錄其行為特征。
8、 根據(jù)權(quán)利要求l所述的基于Win32平臺(tái)下病毒行為的自動(dòng)化分析系統(tǒng),其 特征在于,所述自動(dòng)入庫(kù)模塊是用于將大量樣本的相關(guān)信息準(zhǔn)確入庫(kù),通過(guò)訪 問(wèn)這些數(shù)據(jù)庫(kù)記錄,可以使得整個(gè)聯(lián)機(jī)系統(tǒng)中的每臺(tái)捕獲引擎都能夠準(zhǔn)確獲取 每個(gè)樣本的路徑信息并能訪問(wèn)樣本庫(kù)所在的物理機(jī)。
9、 根據(jù)權(quán)利要求8所述的基于Win32平臺(tái)下病毒行為的自動(dòng)化分析系統(tǒng),其 特征在于,所述自動(dòng)入庫(kù)模塊由文件檢測(cè)和數(shù)據(jù)庫(kù)操作兩個(gè)子模塊組成。
10、 根據(jù)權(quán)利要求9所述的基于Win32平臺(tái)下病毒行為的自動(dòng)化分析系統(tǒng), 其特征在于,所述文件檢測(cè)子模塊通過(guò)以下步驟實(shí)現(xiàn)功能首先對(duì)用戶輸入的 信息進(jìn)行校驗(yàn),判斷輸入數(shù)據(jù)是否正確,然后根據(jù)輸入的參數(shù)信息,判斷是否 進(jìn)行數(shù)字簽名和文件格式檢測(cè),以及相關(guān)的DLL檢測(cè)。
11、 根據(jù)權(quán)利要求9所述的基于Win32平臺(tái)下病毒行為的自動(dòng)化分析系統(tǒng), 其特征在于,所述數(shù)據(jù)庫(kù)操作子模塊能夠?qū)?shù)據(jù)庫(kù)執(zhí)行讀數(shù)據(jù)操作、寫(xiě)數(shù)據(jù)操 作、自定義的其他操作。
12、 根據(jù)權(quán)利要求l所述的基于Win32平臺(tái)下病毒行為的自動(dòng)化分析系統(tǒng), 其特征在于,所述控制模塊的處理流程(1) 連接數(shù)據(jù)庫(kù),從對(duì)象程序表中取得未分析的數(shù)據(jù);(2) 啟動(dòng)虛擬機(jī),并登陸虛擬機(jī)中的操作系統(tǒng);(3) 傳送樣本文件至虛擬機(jī)中的操作系統(tǒng),存放在虛擬機(jī)C盤(pán)根目錄下;(4) 啟動(dòng)捕獲引擎并對(duì)樣本的行為實(shí)施跟蹤,并將行為記錄下如XML文件中;(5) 跟蹤完畢后,關(guān)閉虛擬機(jī),并將回傳的XML文件解析,其行為記錄存 入數(shù)據(jù)庫(kù)的跟蹤事件數(shù)據(jù)表。
13、 根據(jù)權(quán)利要求l或12所述的基于Win32平臺(tái)下病毒行為的自動(dòng)化分析系 統(tǒng),其特征在于,控制模塊對(duì)數(shù)據(jù)模塊具有如下互斥操作流程(1)當(dāng)虛擬機(jī)啟動(dòng),首先控制模塊會(huì)向數(shù)據(jù)模塊請(qǐng)求一個(gè)未被分析樣本的 路徑信息,對(duì)數(shù)據(jù)庫(kù)中對(duì)象程序表和跟蹤數(shù)據(jù)表中加x鎖,査詢對(duì)象程序表中的istmced和Prog—id兩個(gè)字段的值,若istraced為false且Prog—id的值未在跟蹤數(shù)據(jù)表 中出現(xiàn),則判斷該樣本未被分析過(guò),并向主程序提交路徑信息;(2) 若主程序成功下載病毒樣本,在跟蹤數(shù)據(jù)表插入一條新記錄,并進(jìn)行 初始化操作,系統(tǒng)自動(dòng)填入trace一id和prog—id兩個(gè)字段的值,字段"程序跟蹤狀態(tài)" 設(shè)置為"正在處理";同時(shí)釋放對(duì)象程序表和跟蹤狀態(tài)表的X鎖;(3) 解析虛擬機(jī)傳回來(lái)的含有病毒行為的XML文件,并記錄至數(shù)據(jù)庫(kù)中的 跟蹤事件數(shù)據(jù)表。
全文摘要
本發(fā)明公開(kāi)了基于Win32平臺(tái)下病毒行為的自動(dòng)化分析系統(tǒng),該系統(tǒng)主要由數(shù)據(jù)模塊、控制模塊以及運(yùn)行模塊組成,所述控制模塊工作于物理機(jī)環(huán)境中,所述運(yùn)行模塊工作于由虛擬機(jī)形成的虛擬環(huán)境中;所述數(shù)據(jù)模塊中樣本數(shù)據(jù)模塊通過(guò)自動(dòng)入庫(kù)模塊連接行為數(shù)據(jù)模塊;所述運(yùn)行模塊中捕獲引擎模塊與HOOKDELL模塊進(jìn)行數(shù)據(jù)交換;所述控制模塊連接樣本數(shù)據(jù)模塊以及行為數(shù)據(jù)模塊,并且控制運(yùn)行模塊中的捕獲引擎模塊。本發(fā)明的監(jiān)控范圍非常的廣、實(shí)用性強(qiáng)、可以應(yīng)對(duì)能造成直接破壞的惡意代碼,同時(shí)還能夠?qū)崿F(xiàn)自動(dòng)對(duì)樣本進(jìn)行快速、準(zhǔn)確的分析使得我們的電腦能夠得到全面的保護(hù)。
文檔編號(hào)G06F9/44GK101373502SQ20081003727
公開(kāi)日2009年2月25日 申請(qǐng)日期2008年5月12日 優(yōu)先權(quán)日2008年5月12日
發(fā)明者勇 張, 沈寒輝, 巍 王, 王國(guó)豐, 胡永濤, 峰 高 申請(qǐng)人:公安部第三研究所