專利名稱:一種基于虛擬硬件環(huán)境的惡意代碼自動分析方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于網(wǎng)絡(luò)安全技術(shù)領(lǐng)域,尤其涉及一種惡意代碼分析的方法及系統(tǒng)。
背景技術(shù):
隨著社會的不斷發(fā)展和進步,計算機在社會各個領(lǐng)域的應用越來越廣泛。由于軟件漏 洞的廣泛存在和用戶安全意識的不足,惡意代碼的傳播速度越來越快,感染范圍不斷擴大, 造成的破壞日益嚴重,傳統(tǒng)的安全防護手段由于受分析效率限制,響應周期難以縮短,響 應速度已經(jīng)逐漸不能適應這種新情況。因此,提高惡意代碼分析速度和分析效率顯得十分 必要。
現(xiàn)有的惡意代碼分析方法主要依賴于傳統(tǒng)的軟件分析和調(diào)試工具,主要包括靜態(tài)反編 譯,動態(tài)跟蹤調(diào)試和人工分析。
利用靜態(tài)反編譯技術(shù)分析惡意代碼,主要是利用靜態(tài)反編譯工具如IDA Pro,對惡意 代碼的二進制文件進行靜態(tài)分析,反編譯出匯編指令,通過分析指令的執(zhí)行流程,檢查其 中包含的各種操作。這種方式的主要缺陷是,無法反編譯自修改代碼、動態(tài)生成代碼、加 殼代碼,同時難以消除花指令,代碼混淆等技術(shù)造成的影響,極大的影響了分析效率和有 效性。
利用動態(tài)跟蹤調(diào)試技術(shù)分析惡意代碼可以在一定程度上解決靜態(tài)反編譯無法解決的 問題。借助軟件和硬件提供的調(diào)試功能,SoftICE, OllyDbg等工具可以動態(tài)跟蹤惡意代碼 的運行過程,觀察惡意代碼運行過程中的各種行為。動態(tài)跟蹤調(diào)試通常還借助VMWare, Virtual PC等操作系統(tǒng)虛擬工具實現(xiàn)。這種方式的主要問題在于,調(diào)試器與惡意代碼運行 在同一個操作系統(tǒng)平臺上,依賴于平臺自身提供的調(diào)試功能,從而使得惡意代碼可以檢測 到調(diào)試器的存在。并且,由于操作系統(tǒng)虛擬工具都存在明顯的特征,也很容易被惡意代碼 檢測到,惡意代碼往往通過反跟蹤,反調(diào)試,虛擬機檢測技術(shù),阻止對自身的調(diào)試,退出 運行甚至隱藏特定行為等,造成動態(tài)跟蹤分析難以有效開展。
利用輔助工具進行人工分析,主要指通過觀察惡意代碼對文件系統(tǒng),網(wǎng)絡(luò),進程線程 等運行環(huán)境資源的訪問操作,推斷惡意代碼的行為特征。由于惡意代碼的行為往往依賴于 外部環(huán)境,使得這種方式難以全面覆蓋惡意代碼可能的所有行為。同時,這種分析方法自 身特性也決定了其分析能力存在跟動態(tài)跟蹤類似的同一平臺競爭問題,大量的人工操作也極大地限制了其分析效率。在惡意代碼數(shù)量不斷膨脹的今天,人工分析的缺陷更加明顯。
發(fā)明內(nèi)容
本發(fā)明提供一種基于虛擬硬件環(huán)境的惡意代碼自動分析方法及系統(tǒng)。通過在虛擬硬件 環(huán)境之上構(gòu)建惡意代碼所需的運行環(huán)境,并通過操縱和控制虛擬CPU指令和各種虛擬硬件
的訪問操作,收集惡意代碼各種操作信息,控制惡意代碼的運行過程。由于數(shù)據(jù)采集通過 虛擬硬件實現(xiàn),惡意代碼無法感知自身是否運行在虛擬環(huán)境中,也無法分辨自身是否被跟 蹤,從而實現(xiàn)對惡意代碼完全透明的分析。
為實現(xiàn)以上目的,本發(fā)明的構(gòu)思是分析人員通過用戶控制模塊配置分析環(huán)境和分析 目標的參數(shù),啟動硬件虛擬模塊,加載惡意代碼運行所需的操作系統(tǒng)鏡像,啟動該操作系 統(tǒng),并運行待分析的惡意代碼。數(shù)據(jù)采集模塊根據(jù)分析目標,攔截特定的虛擬CPU指令, 收集并記錄相關(guān)的訪問數(shù)據(jù),并可根據(jù)需要,更改惡意代碼指令的執(zhí)行流程。數(shù)據(jù)采集模 塊還攔截各種虛擬硬件的訪問操作,收集并記錄相關(guān)操作的數(shù)據(jù),并根據(jù)需要提供特定的 輸入數(shù)據(jù)。數(shù)據(jù)分析模塊綜合數(shù)據(jù)采集模塊收集的各種數(shù)據(jù),通過用戶控制模塊實時顯示 最新的惡意代碼運行信息,并在分析過程終止后,關(guān)聯(lián)分析所有的搜集到的數(shù)據(jù),自動輸 出分析結(jié)果。
基于以上構(gòu)思,本發(fā)明的技術(shù)方案為
一種基于虛擬硬件環(huán)境的惡意代碼自動分析方法,包括步驟
1) 搭建惡意代碼運行環(huán)境,包括根據(jù)惡意代碼運行環(huán)境的要求,虛擬所需的硬件設(shè) 備,準備相關(guān)的操作系統(tǒng)鏡像;
2) 配置分析環(huán)境和分析參數(shù),包括惡意代碼運行所需的操作系統(tǒng)鏡像所在位置,虛 擬硬件的各種參數(shù),如虛擬內(nèi)存大小,虛擬系統(tǒng)時間等,以及需要收集的惡意代碼運行數(shù) 據(jù)和需要監(jiān)控的惡意代碼操作,如網(wǎng)絡(luò)收發(fā)數(shù)據(jù),文件讀寫操作等;
3) 完成各種虛擬設(shè)備的初始化后,加載惡意代碼運行所需的操作系統(tǒng)鏡像,啟動該 操作系統(tǒng),同時攔截加載操作,并將所有支持攔截的系統(tǒng)調(diào)用操作轉(zhuǎn)換為虛擬系統(tǒng)對應的 系統(tǒng)調(diào)用的指令起始地址;
4) 運行待分析的惡意代碼,虛擬CPU執(zhí)行任何指令之前,判斷即將執(zhí)行的指令是否 為轉(zhuǎn)換過來的指令起始地址,當匹配時,則暫停虛擬系統(tǒng)的運行,記錄當前匹配操作,并 收集該操作相關(guān)的數(shù)據(jù),如網(wǎng)絡(luò)數(shù)據(jù)發(fā)送操作的內(nèi)容,文件創(chuàng)建操作的文件名等信息,然 后再恢復虛擬系統(tǒng)的運行;同時,對于讀取操作,還可根據(jù)需要提供特定的輸入數(shù)據(jù),改變惡意代碼的執(zhí)行流程;
5)分析所有的收集到的數(shù)據(jù),動態(tài)顯示虛擬系統(tǒng)狀態(tài)信息和惡意代碼運行信息,惡 意代碼退出,分析自動終止;用戶終止惡意代碼的運行過程,提取某一時刻虛擬內(nèi)存中的 惡意代碼的二進制代碼,關(guān)聯(lián)分析搜集到的所有數(shù)據(jù),輸出分析結(jié)果。
一種基于虛擬硬件環(huán)境的惡意代碼自動分析系統(tǒng),其特征在于,包括一硬件虛擬模塊, 一數(shù)據(jù)采集模塊, 一數(shù)據(jù)分析模塊和一用戶控制模塊,硬件虛擬模塊和數(shù)據(jù)采集模塊通過 網(wǎng)絡(luò)連接與數(shù)據(jù)分析模塊和用戶控制模塊進行通訊和數(shù)據(jù)交互,其中-
硬件虛擬模塊虛擬實現(xiàn)物理計算機所需的硬件設(shè)備,加載惡意代碼運行所需的操作系 統(tǒng)鏡像;
數(shù)據(jù)采集模塊攔截各種虛擬系統(tǒng)調(diào)用和虛擬硬件的訪問操作,收集并記錄相關(guān)操作的 數(shù)據(jù);
數(shù)據(jù)分析模塊關(guān)聯(lián)分析所有的搜集到的數(shù)據(jù);
用戶控制模塊配置分析環(huán)境和分析目標的參數(shù),動態(tài)顯示虛擬系統(tǒng)狀態(tài)信息和惡意代 碼運行信息。
根據(jù)惡意代碼運行所需操作系統(tǒng)的不同,可以包含多個不同的數(shù)據(jù)采集模塊,如圖2 所示。
本發(fā)明的配置信息,可以XML結(jié)構(gòu)化方式組織并存儲。
進一步配置信息的分析環(huán)境信息可包括虛擬軟盤鏡像文件,虛擬硬盤鏡像文件,虛 擬CDROM鏡像文件,啟動順序,虛擬內(nèi)存大小,虛擬CPU數(shù)量,虛擬時間,虛擬鍵盤類 型,虛擬USB設(shè)備,虛擬網(wǎng)卡MAC地址,虛擬網(wǎng)絡(luò)端口到物理主機端口的重定向。
進一步配置信息的分析參數(shù)信息可包括要監(jiān)控的系統(tǒng)調(diào)用名稱,參數(shù)和返回值的結(jié) 構(gòu),以及可選的待分析的惡意代碼文件名。
本發(fā)明的硬件虛擬模塊和數(shù)據(jù)采集模塊,與數(shù)據(jù)分析模塊和用戶控制模塊可以運行在 不同的體系結(jié)構(gòu)和操作系統(tǒng)上,可以通過網(wǎng)絡(luò)通信實現(xiàn)交互。
本發(fā)明的優(yōu)點在于,整個分析過程對惡意代碼完全透明,惡意代碼無法識別是否運行 在虛擬環(huán)境中還是真實環(huán)境中,也無法察覺指令執(zhí)行過程是否被監(jiān)控,從而能夠觀察到真 實環(huán)境中的惡意代碼的所有可能行為。并且,由于監(jiān)控操作在指令在虛擬CPU上執(zhí)行前展 開,監(jiān)控不會受到惡意代碼中花指令,代碼動態(tài)生成等各種保護技術(shù)的干擾。此外,由于 能夠控制所有虛擬硬件,本發(fā)明還能夠在惡意代碼運行過程中,從虛擬內(nèi)存中轉(zhuǎn)儲當前正 在執(zhí)行的惡意代碼的二進制代碼用于靜態(tài)分析,從而解決代碼加殼,自修改等動態(tài)行為造成的靜態(tài)分析的困難。
圖1為本發(fā)明的系統(tǒng)工作過程流程圖
圖2為本發(fā)明的系統(tǒng)組成與模塊間詳細關(guān)系示意圖
具體實施例方式
下面結(jié)合附圖和具體實施方式
對本發(fā)明作進一步詳細描述
分析人員搭建惡意代碼運行環(huán)境,配置分析環(huán)境和分析目標等參數(shù),啟動硬件虛擬模 塊,加載并啟動惡意代碼運行所需的操作系統(tǒng)鏡像,并運行待分析的惡意代碼。數(shù)據(jù)采集 模塊根據(jù)分析目標,攔截特定的虛擬CPU指令和虛擬硬件的訪問操作,收集并記錄相關(guān)的 訪問數(shù)據(jù)。數(shù)據(jù)分析模塊綜合數(shù)據(jù)采集模塊收集的各種數(shù)據(jù),通過用戶控制模塊實時顯示 惡意代碼運行信息,并在分析過程終止后,關(guān)聯(lián)分析所有的搜集到的數(shù)據(jù),輸出分析結(jié)果。
參考附圖l,下面給出詳細過程。
第一步搭建惡意代碼運行環(huán)境
利用硬件虛擬模塊,虛擬實現(xiàn)物理計算機所需的CPU,內(nèi)存,硬盤等核心部件以及
CDROM,網(wǎng)卡,軟驅(qū),USB設(shè)備等外設(shè)。由于本發(fā)明的硬件虛擬模塊上運行的虛擬系統(tǒng), 其所有硬盤數(shù)據(jù)以虛擬系統(tǒng)鏡像文件的形式存在。根據(jù)惡意代碼針對的運行平臺和操作系 統(tǒng)要求,利用已有的虛擬系統(tǒng)鏡像文件,或是運行硬件虛擬模塊,安裝相應的操作系統(tǒng), 制作新的虛擬系統(tǒng)鏡像文件。如x86平臺上的Windows系統(tǒng)上的惡意代碼,則可以通過硬 件虛擬模塊的虛擬光驅(qū),利用光盤安裝操作系統(tǒng),制作Windows系統(tǒng)鏡像文件。 第二步配置分析環(huán)境和分析目標參數(shù)
進一步配置信息的分析環(huán)境信息可包括虛擬軟盤鏡像文件,虛擬硬盤鏡像文件,虛 擬CDROM鏡像文件,啟動順序,虛擬內(nèi)存大小,虛擬CPU數(shù)量,虛擬時間,虛擬鍵盤類 型,虛擬USB設(shè)備,虛擬網(wǎng)卡MAC地址,虛擬網(wǎng)絡(luò)端口到物理主機端口的重定向。
進一步配置信息的分析參數(shù)信息可包括要監(jiān)控的系統(tǒng)調(diào)用名稱,參數(shù)和返回值的結(jié) 構(gòu),以及可選的待分析的惡意代碼文件名。
本發(fā)明的參數(shù)配置通過XML形式存儲的配置文件,以及用戶控制模塊的圖形用戶界面 完成。
XML配置文件包含數(shù)據(jù)采集模塊支持攔截和監(jiān)控的操作,各個操作對應的參數(shù)和結(jié)果的數(shù)據(jù)結(jié)構(gòu)和含義。如對Windows系統(tǒng),配置文件的主要內(nèi)容包括數(shù)據(jù)采集模塊支持監(jiān)控
的進程線程操作,網(wǎng)絡(luò)操作,注冊表操作,文件系統(tǒng)操作和系統(tǒng)服務操作API,形式如下
〈Entry〉
〈ID〉0103〈/ID〉
<Name〉NtTerminateProcess</Name> 〈Monitor〉false</Monitor〉 〈Catalog〉process〈/Catalog> 〈Detail〉
〈Signature>
NTSYSAPI
NTSTATUS
NTAPI
NtTerminateProcess(
IN HANDLE ProcessHandle OPTIONAL,
IN NTSTATUS ExitStatus
)
</Signature〉 〈Alias〉〈/Alias〉
〈Remark〉在內(nèi)核模式下結(jié)束一個進程?!?Remark〉 〈Return〉NTSTATUS,零表示成功,其他值表示失敗?!?Return〉 〈Parameter〉
ProcessHandle, HANDLE, OPTIONAL,進程的句柄 ExitStatus, NTSTATUS,進程退出的狀態(tài) 〈/Parameter> </Detail> </Entry〉
對于變動性較大的其他參數(shù),通過用戶控制模塊的圖形用戶界面完成(也可以用命令 行),具體包括硬件虛擬模塊參數(shù),數(shù)據(jù)分析模塊參數(shù)和用戶控制模塊參數(shù)。
硬件虛擬模塊參數(shù)包括虛擬硬盤對應的虛擬系統(tǒng)鏡像文件路徑及名稱,虛擬內(nèi)存大 小,虛擬系統(tǒng)時間設(shè)置,虛擬網(wǎng)卡MAC地址,虛擬光驅(qū)對應的虛擬光盤文件路徑及名稱等。
數(shù)據(jù)分析模塊參數(shù)包括分析歷史數(shù)據(jù)保存控制,分析結(jié)果輸出形式選擇等。
用戶控制模塊參數(shù)包括虛擬系統(tǒng)實時運行狀態(tài)信息顯示控制,分析日志記錄和操作
監(jiān)控項目選擇等。
第三步運行虛擬系統(tǒng),分析惡意代碼
完成相關(guān)配置后,用戶啟動硬件虛擬模塊,硬件虛擬模塊完成相關(guān)的初始化之后,自 動加載指定的虛擬系統(tǒng)鏡像文件,之后開始操作系統(tǒng)的正常啟動過程。當系統(tǒng)啟動完成后, 對于非包含在虛擬系統(tǒng)里的惡意代碼,還需要運行惡意代碼可執(zhí)行文件樣本。
在虛擬系統(tǒng)啟動的同時,數(shù)據(jù)采集模塊攔截操作系統(tǒng)內(nèi)核模塊的加載過程,并將所有支持攔截的內(nèi)核系統(tǒng)調(diào)用操作轉(zhuǎn)換為虛擬系統(tǒng)對應的系統(tǒng)調(diào)用的指令起始地址。并且,在 惡意代碼啟動和運行過程中,數(shù)據(jù)采集模塊還攔截操作系統(tǒng)的動態(tài)鏈接庫加載操作,將惡 意代碼運行所需的所有動態(tài)鏈接庫中,數(shù)據(jù)采集模塊支持攔截的系統(tǒng)調(diào)用操作也轉(zhuǎn)換為虛 擬系統(tǒng)對應的系統(tǒng)調(diào)用的指令起始地址。數(shù)據(jù)采集模塊指示虛擬CPU在執(zhí)行指令之前,比 較和判斷即將執(zhí)行的指令是否在監(jiān)控范圍之內(nèi)。當指令滿足監(jiān)控條件時(就是指上面的攔 截操作轉(zhuǎn)換過來的系統(tǒng)調(diào)用的指令起始地址,在當前執(zhí)行的指令的地址等于這些要監(jiān)控的 指令地址時),數(shù)據(jù)采集模塊指示虛擬CPU暫停,從而暫停虛擬系統(tǒng)的運行,提取并保存
相關(guān)的數(shù)據(jù)之后再恢復虛擬系統(tǒng)的運行。
例如針對Windows系統(tǒng),監(jiān)控惡意代碼的NtTerminateProcess操作,則每當虛擬CPU 執(zhí)行下一條指令之前,判斷當前CR3是否與惡意代碼的CR3相同,EIP是否與 NtTerminateProcess指令起始地址相等,從而決定是否中斷當前執(zhí)行流程。當滿足條件時, 數(shù)據(jù)采集模塊指示虛擬CPU暫停,將返回地址對應的指令加入指令監(jiān)控列表,并根據(jù) NtTerminateProcess聲明的參數(shù)個數(shù)和結(jié)構(gòu),從虛擬系統(tǒng)運行棧中獲取參數(shù) ProcessHandle和ExitStatus的值,然后指示虛擬CPU恢復。當虛擬系統(tǒng)從 NtTerminateProcess系統(tǒng)調(diào)用中返回時,由于當前CR3與惡意代碼的CR3相同,EIP與先 前保存的返回地址對應的指令相等,數(shù)據(jù)采集模塊再次指示虛擬CPU暫停,從指令監(jiān)控列 表中刪除原先保存的返回地址對應的指令,并從虛擬系統(tǒng)運行棧中獲取 NtTerminateProcess的返回值,最后再指示虛擬CPU恢復運行。通過這種方式,實現(xiàn)了不 利用任何操作系統(tǒng)和硬件調(diào)試功能的同時,完成對一個完整的系統(tǒng)調(diào)用的截獲以及所有參 數(shù)以及返回值的收集。
對于獲取數(shù)據(jù)的系統(tǒng)調(diào)用,如獲取系統(tǒng)時間,操作系統(tǒng)信息的系統(tǒng)調(diào)用,數(shù)據(jù)采集模 塊還可以根據(jù)配置的指示,通過修改調(diào)用堆棧并填充相關(guān)數(shù)據(jù),同時更改EIP等相關(guān)寄存 器控制虛擬系統(tǒng)執(zhí)行流程,為惡意代碼提供執(zhí)行所需的輸入數(shù)據(jù)。 第四步數(shù)據(jù)關(guān)聯(lián)分析
數(shù)據(jù)分析模塊接收并存儲數(shù)據(jù)采集模塊收集到的數(shù)據(jù),并通過用戶控制模塊實時顯示 最新的虛擬系統(tǒng)狀態(tài)和惡意代碼運行信息。動態(tài)顯示的虛擬系統(tǒng)狀態(tài)信息,主要包括虛擬 系統(tǒng)內(nèi)部正運行的進程的詳細信息,具體包括進程名稱,進程ID,可執(zhí)行文件名,當前 調(diào)度狀態(tài),進程環(huán)境信息,內(nèi)存使用平均值,內(nèi)存使用峰值。動態(tài)顯的示惡意代碼運行信 息,包括惡意代碼的進程詳細信息,具體包括進程名稱,進程ID,可執(zhí)行文件名,當前
調(diào)度狀態(tài),進程環(huán)境信息,內(nèi)存使用平均值,內(nèi)存使用峰值。惡意代碼的線程詳細信息,具體包括線程ID,線程環(huán)境信息,函數(shù)地址,線程是否己經(jīng)結(jié)束,線程是否將被刪除。 惡意代碼加載的模塊的詳細信息,具體包括模塊的文件名,所在進程,模塊是否被隱藏, 模塊在內(nèi)存中的加載地址,模塊的大小。惡意代碼的系統(tǒng)調(diào)用信息,具體包括系統(tǒng)調(diào)用 發(fā)生的時間,執(zhí)行系統(tǒng)調(diào)用的進程名字,執(zhí)行系統(tǒng)調(diào)用的進程標識符,系統(tǒng)調(diào)用類型,系 統(tǒng)調(diào)用名,系統(tǒng)調(diào)用結(jié)果,系統(tǒng)調(diào)用參數(shù)內(nèi)容,系統(tǒng)調(diào)用的安全級別,以及其他能夠提供 額外幫助的系統(tǒng)調(diào)用信息。
當惡意代碼退出,分析自動終止,或是用戶手動終止分析過程時,數(shù)據(jù)分析模塊通過 時序關(guān)系,控制依賴關(guān)系,數(shù)據(jù)依賴關(guān)系,邏輯依賴關(guān)系對各種數(shù)據(jù)進行綜合分析,根據(jù) 模塊間的加載調(diào)用關(guān)系,不同進程間的父子關(guān)系,進程的線程創(chuàng)建終止關(guān)系,輸入數(shù)據(jù)的 傳播關(guān)系,不同系統(tǒng)調(diào)用的先后關(guān)系,在所有關(guān)聯(lián)數(shù)據(jù)之間創(chuàng)建超鏈接。
如根據(jù)進程ID, CR3和進程間父子關(guān)系,數(shù)據(jù)分析模塊中的分析引擎可以標識出所有 惡意代碼啟動的進程,終止的進程以及惡意代碼打開過的進程。再如,通過不同進程對同 一個目標數(shù)據(jù)的訪問操作之間的時序關(guān)系,可以識別出目標數(shù)據(jù)的傳播依賴路徑。
數(shù)據(jù)分析模塊完成分析后,輸出自動分析結(jié)果。用戶可以很容易地通過各種數(shù)據(jù)項目 之間的超鏈接,找到并分析惡意代碼不同行為之間的關(guān)系,從而了解惡意代碼的真實行為 和實現(xiàn)機制。
對于專業(yè)人士,如果需要對惡意代碼某以運行狀態(tài)進行進一步的進行分析,還可以在 第三步分析過程中,通過用戶控制模塊,轉(zhuǎn)儲虛擬內(nèi)存中該時刻的惡意代碼內(nèi)存鏡像。對 于加殼代碼,自修改代碼以及動態(tài)產(chǎn)生代碼,該功能能夠幫助用戶獲取惡意代碼的靜態(tài)化 快照,從而可利用傳統(tǒng)的靜態(tài)分析工具進行分析,從而全面分析惡意代碼可能的行為。
盡管為說明目的公開了本發(fā)明的具體實施例和附圖,其目的在于幫助理解本發(fā)明的內(nèi) 容并據(jù)以實施,但是本領(lǐng)域的技術(shù)人員可以理解在不脫離本發(fā)明及所附的權(quán)利要求的精 神和范圍內(nèi),各種替換、變化和修改都是可能的。因此,本發(fā)明不應局限于最佳實施例和 附圖所公開的內(nèi)容,本發(fā)明要求保護的范圍以權(quán)利要求書界定的范圍為準。
權(quán)利要求
1、一種基于虛擬硬件環(huán)境的惡意代碼自動分析方法,其步驟包括1)虛擬實現(xiàn)物理計算機所需的硬件設(shè)備,準備惡意代碼運行環(huán)境相關(guān)的操作系統(tǒng)鏡像;2)配置惡意代碼分析環(huán)境和分析目標的參數(shù);3)加載惡意代碼運行所需的虛擬操作系統(tǒng)鏡像,同時攔截操作系統(tǒng)內(nèi)核模塊的加載,將所有支持攔截的系統(tǒng)調(diào)用操作轉(zhuǎn)換為虛擬系統(tǒng)對應的系統(tǒng)調(diào)用的指令起始地址;4)運行待分析的惡意代碼,虛擬CPU在執(zhí)行指令之前,判斷即將執(zhí)行的指令是否為轉(zhuǎn)換過來的指令起始地址,是則暫停虛擬系統(tǒng)的運行,收集并記錄該操作相關(guān)的訪問數(shù)據(jù)后,再恢復虛擬系統(tǒng)的運行;5)分析所有的收集到的數(shù)據(jù),動態(tài)顯示虛擬系統(tǒng)狀態(tài)信息和惡意代碼運行信息,惡意代碼退出,分析自動終止。
2、 如權(quán)利要求l所述的方法,其特征在于,所述步驟l)完全虛擬物理計算機的核心 部件以及常用外設(shè),包括CPU,內(nèi)存,硬盤,CDROM,網(wǎng)卡,軟驅(qū),鍵盤,鼠標以及其 他USB設(shè)備。
3、 如權(quán)利要求l所述的方法,其特征在于,所述步驟2)分析環(huán)境包括虛擬軟盤鏡像 文件,虛擬硬盤鏡像文件,虛擬CDROM鏡像文件,啟動順序,虛擬內(nèi)存大小,虛擬CPU 數(shù)量,虛擬時間,虛擬鍵盤類型,虛擬USB設(shè)備,虛擬網(wǎng)卡MAC地址,虛擬網(wǎng)絡(luò)端口到 物理主機端口的重定向。
4、 如權(quán)利要求l所述的方法,其特征在于,所述步驟2)分析目標包括要監(jiān)控的系統(tǒng) 調(diào)用名稱,參數(shù)和返回值的結(jié)構(gòu),以及可選的待分析的惡意代碼文件名。
5、 如權(quán)利要求l所述的方法,其特征在于,所述步驟2)參數(shù)的配置通過XML形式存 儲的配置文件,以及圖形用戶界面完成。
6、 如權(quán)利要求5所述的方法,其特征在于,所述XML配置文件包含支持攔截和監(jiān)控 的操作,各個操作對應的參數(shù)和結(jié)果的數(shù)據(jù)結(jié)構(gòu)及含義。
7、 如權(quán)利要求l所述的方法,其特征在于,所述步驟4)對于讀取操作,通過修改調(diào) 用堆棧并填充相關(guān)數(shù)據(jù),更改相關(guān)寄存器,為惡意代碼提供執(zhí)行所需的輸入數(shù)據(jù),控制虛 擬系統(tǒng)執(zhí)行流程。
8、 如權(quán)利要求l所述的方法,其特征在于,所述步驟4)惡意代碼運行時,攔截操作 系統(tǒng)的動態(tài)鏈接庫的加載,并將所有支持攔截的系統(tǒng)調(diào)用操作轉(zhuǎn)換為虛擬系統(tǒng)對應的系統(tǒng) 調(diào)用的指令起始地址。
9、 如權(quán)利要求l所述的方法,其特征在于,所述步驟4)從虛擬內(nèi)存中轉(zhuǎn)儲當前時刻 的惡意代碼內(nèi)存鏡像,獲取惡意代碼的靜態(tài)化快照,利用傳統(tǒng)的靜態(tài)分析工具進行分析。
10、 如權(quán)利要求l所述的方法,其特征在于,所述步驟5)用戶手動終止分析過程時, 通過數(shù)據(jù)的時序關(guān)系,控制依賴關(guān)系,數(shù)據(jù)依賴關(guān)系,邏輯依賴關(guān)系對收集到的數(shù)據(jù)進行 分析,根據(jù)惡意代碼加載的模塊間的加載順序以及調(diào)用關(guān)系,不同進程間的父子關(guān)系,進 程的線程創(chuàng)建終止關(guān)系,輸入數(shù)據(jù)的傳播關(guān)系,不同系統(tǒng)調(diào)用的先后關(guān)系,在所有關(guān)聯(lián)數(shù) 據(jù)之間創(chuàng)建超鏈接。
11、 一種基于虛擬硬件環(huán)境的惡意代碼自動分析系統(tǒng),其特征在于,包括一硬件虛擬 模塊, 一數(shù)據(jù)采集模塊, 一數(shù)據(jù)分析模塊和一用戶控制模塊,硬件虛擬模塊和數(shù)據(jù)采集模 塊通過網(wǎng)絡(luò)連接與數(shù)據(jù)分析模塊和用戶控制模塊進行通訊和數(shù)據(jù)交互,其中硬件虛擬模塊虛擬實現(xiàn)物理計算機所需的硬件設(shè)備,加載惡意代碼運行所需的操作系 統(tǒng)鏡像;數(shù)據(jù)采集模塊攔截各種虛擬系統(tǒng)調(diào)用和虛擬硬件的訪問操作,收集并記錄相關(guān)操作的 數(shù)據(jù);數(shù)據(jù)分析模塊關(guān)聯(lián)分析所有的搜集到的數(shù)據(jù);用戶控制模塊配置分析環(huán)境和分析目標的參數(shù),動態(tài)顯示虛擬系統(tǒng)狀態(tài)信息和惡意代 碼運行信息。
12、 如權(quán)利要求11所述的系統(tǒng),其特征在于,根據(jù)惡意代碼運行所需操作系統(tǒng)的不 同,可以包含多個不同的數(shù)據(jù)采集模塊。
13、 如權(quán)利要求ll所述的系統(tǒng),其特征在于,所述用戶控制模塊采用圖形用戶界面, 用來動態(tài)顯示虛擬系統(tǒng)狀態(tài)信息和惡意代碼運行信息。
全文摘要
本發(fā)明公開了一種基于虛擬硬件環(huán)境的惡意代碼自動分析方法及系統(tǒng),屬于網(wǎng)絡(luò)安全技術(shù)領(lǐng)域,本發(fā)明通過在虛擬硬件環(huán)境之上構(gòu)建惡意代碼所需的運行環(huán)境,并通過操縱和控制虛擬CPU指令和各種虛擬硬件的訪問操作,收集惡意代碼各種操作信息,控制惡意代碼的運行過程,分析所有的收集到的數(shù)據(jù),動態(tài)顯示虛擬系統(tǒng)狀態(tài)信息和惡意代碼運行信息。由于數(shù)據(jù)采集通過虛擬硬件實現(xiàn),惡意代碼無法感知自身是否運行在虛擬環(huán)境中,也無法分辨自身是否被跟蹤,從而實現(xiàn)對惡意代碼完全透明的分析。
文檔編號G06F21/00GK101645119SQ200810117899
公開日2010年2月10日 申請日期2008年8月7日 優(yōu)先權(quán)日2008年8月7日
發(fā)明者馮登國, 應凌云, 蘇璞睿 申請人:中國科學院軟件研究所