專利名稱:自動二進(jìn)制惡意代碼行為分析方法
技術(shù)領(lǐng)域:
本發(fā) 明涉及一種惡意代碼行為分析方法,特別是涉及一種自動 二進(jìn)制惡意代碼行為分析方法。背景技術(shù):
惡意代碼是威脅計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò)安全的重要因素之一。 惡意代碼是對在不被用戶所知的情況下滲透或破壞計(jì)算機(jī)系統(tǒng)的具有惡意行為的軟件的 總稱,是各種攻擊、入侵、破壞軟件或代碼的泛指,包括計(jì)算機(jī)病毒、蠕蟲、特洛伊木 馬、Rootkits、間諜軟件等。惡意代碼分析用于提取惡意代碼的特征信息,是惡意代碼檢 測和發(fā)現(xiàn)的基礎(chǔ)和前提,近年來,由于惡意代碼發(fā)展迅猛,自動分析惡意二進(jìn)制代碼顯 得十分必要,分析結(jié)果不僅在設(shè)計(jì)防御系統(tǒng)方面很有用,還有助于了解攻擊者的攻擊能 力。目前,惡意代碼分析的方法之一是人工使用調(diào)試器,并且對代碼執(zhí)行行為進(jìn)行 推理。然而,人工分析的效率很低,還比較容易出錯,無法與大量涌現(xiàn)的惡意代碼進(jìn)行 對抗。惡意二進(jìn)制分析的另一種方法就是在一個有條件限制的環(huán)境(比如虛擬機(jī)環(huán)境) 中運(yùn)行一段二進(jìn)制代碼程序觀察并記錄其行為。然而,此類方法提供的信息十分有限, 日志信息只記錄了在具體設(shè)置下運(yùn)行的惡意代碼的表象行為。惡意二進(jìn)制代碼某些功 能,只在某些特定的環(huán)境或是條件下(比如當(dāng)收到一個正確的命令或是設(shè)置了一個特定 的register key)才會被觸發(fā)。如果用于測試的環(huán)境設(shè)置沒有滿足所需條件,相關(guān)的惡意 功能不會被激活。人們可以在各種不同的環(huán)境設(shè)置下對程序示例進(jìn)行測試,并且隨意給 定網(wǎng)絡(luò)輸入。然而,設(shè)置不同的環(huán)境,并在這個環(huán)境下測試程序的花費(fèi)較大,并且效率 較低,猜測滿足條件的正確環(huán)境的可能性非常小。因此,這種方法不能完全有效地對惡 意二進(jìn)制代碼進(jìn)行分析。為了研究有效的惡意代碼防御技術(shù),自動分析惡意代碼就顯得 尤為重要了。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是克服現(xiàn)有技術(shù)的缺陷,提供一種自動二進(jìn)制 惡意代碼行為分析方法,該方法基于全系統(tǒng)模擬技術(shù),采用動態(tài)符號執(zhí)行探查可執(zhí) 行程序中所有可能的執(zhí)行路徑,發(fā)現(xiàn)其中惡意代碼的操作行為,分析惡意行為與輸入的 關(guān)聯(lián)關(guān)系,并可以有效分析出惡意代碼執(zhí)行行為的控制結(jié)構(gòu)關(guān)系,提取出惡意行為執(zhí)行 的觸發(fā)輸入條件,給出惡意行為執(zhí)行與輸入的關(guān)聯(lián)關(guān)系;該系統(tǒng)可以有效提高惡意代碼 分析的效率。本發(fā)明的技術(shù)方案
一種自動二進(jìn)制惡意代碼行為分析方法,在全系統(tǒng)模擬環(huán)境下,對二進(jìn)制惡意代碼 進(jìn)行如下分析
a.首先確定二進(jìn)制惡意代碼中可能存在的待分析的惡意行為,待分析的惡意行為由 一張惡意行為列表來維護(hù),惡意行為列表中含有Windows API調(diào)用序列;然后,在全系 統(tǒng)模擬環(huán)境中執(zhí)行待分析程序;
b.取一條程序指令;C.判斷該指令是否有輸入值?如有,執(zhí)行步驟d;如沒有,執(zhí)行步驟e;
d.引入符號變量,將輸入值定義為符號變量,在全系統(tǒng)模擬環(huán)境中采用符號執(zhí)行方式執(zhí)行;
e.判斷該指令是否為條件分支指令?如是,執(zhí)行步驟f;如不是,執(zhí)行步驟i;
f.為該指令生成包含符號變量的路徑判定謂詞;
g.解析路徑判定謂詞,生成程序執(zhí)行新路徑;
h.保存新路徑,將新路徑加入路徑存儲池;
i.判斷該指令中是否包含待分析的WindowsAPI序列?如是,執(zhí)行步驟j;如不是, 執(zhí)行步驟1;
j.采用反向切片技術(shù),求解與該WindowsAPI序列相關(guān)的代碼段;
k.生成相關(guān)觸發(fā)輸入集;
1.判斷路徑存儲池是否為空?如是,執(zhí)行步驟m;如不是,在路徑存儲池中選擇下 一條要執(zhí)行的路徑,然后執(zhí)行步驟b;
m.生成分析報(bào)告;
η. 結(jié)束ο步驟a中的惡意行為列表是默認(rèn)提供的典型的Windows API調(diào)用序列,或 者是由用戶根據(jù)需要來定義的可疑的感興趣的WindowsAPI調(diào)用序列。步驟f中路徑判定謂詞的生成過程為根據(jù)二進(jìn)制惡意代碼中依賴于符號變量的 分支為每一條分支構(gòu)建一個路徑判定謂詞,路徑判定謂詞是使得程序按特定路徑執(zhí)行的 條件。步驟g中的解析路徑判定謂詞是指針對條件分支指令生成的包含符號變量的 路徑判定謂詞,判定分支條件是否可滿足,即是否存在使路徑判定謂詞成立的有效輸入 值;如果分支條件是可滿足的,執(zhí)行條件分支指令的true分支;如果分支條件是不可滿 足的,執(zhí)行條件分支指令的false分支。步驟k中的相關(guān)觸發(fā)輸入集是指與特定惡意行為相關(guān),并且能夠觸發(fā)程序中的惡意代碼執(zhí)行的輸入值的集合。輸入值含有特定的鍵盤輸入值、系統(tǒng)時間值和網(wǎng)絡(luò)數(shù)據(jù)包,輸入值為可觸發(fā)惡 意代碼執(zhí)行的外部輸入。步驟m中的分析報(bào)告含有惡意代碼功能報(bào)告、行為特征報(bào)告、實(shí)現(xiàn)的指令序 列報(bào)告、相關(guān)觸發(fā)輸入集報(bào)告和輸入與輸出的關(guān)聯(lián)關(guān)系報(bào)告。全系統(tǒng)模擬環(huán)境可采用全系統(tǒng)模擬器實(shí)現(xiàn);全系統(tǒng)模擬器可采用Bochs全 系統(tǒng)模擬器,或采用Vmware全系統(tǒng)模擬器,或采用QEMU全系統(tǒng)模擬器。本發(fā)明的有益效果
1、本發(fā)明可以發(fā)現(xiàn)惡意代碼執(zhí)行了什么動作、惡意代碼潛藏行為之間的控制流 (如惡意軟件是否對文件進(jìn)行寫或刪除操作、是否發(fā)出網(wǎng)絡(luò)數(shù)據(jù)包、是否接受遠(yuǎn)程命 令等問題),利用本發(fā)明還可以得出使得惡意行為執(zhí)行的相關(guān)觸發(fā)輸入集、惡意行為和 輸入之間的關(guān)聯(lián)關(guān)系。本發(fā)明為發(fā)現(xiàn)和檢測惡意代碼提供有力的支持,其分析的結(jié)果不 僅在設(shè)計(jì)防御系統(tǒng)方面很有用,還有助于了解攻擊者的攻擊能力。
圖1為自動二進(jìn)制惡意代碼行為分析方法的工作流程示意圖。具體實(shí)施例方式
參見圖1,圖中,自動二進(jìn)制惡意代碼行為分析方法為在全系統(tǒng)模擬環(huán)境下,對二進(jìn)制惡意代碼進(jìn)行如下分析
a.首先確定二進(jìn)制惡意代碼中可能存在的待分析的惡意行為,待分析的惡意行為由 一張惡意行為列表來維護(hù),惡意行為列表中含有Windows API調(diào)用序列;然后,在全系 統(tǒng)模擬環(huán)境中執(zhí)行待分析程序;
b.取一條程序指令;
c.判斷該指令是否有輸入值?如有,執(zhí)行步驟d;如沒有,執(zhí)行步驟e;
d.引入符號變量,將輸入值定義為符號變量,在全系統(tǒng)模擬環(huán)境中采用符號執(zhí)行方 式執(zhí)行;
e.判斷該指令是否為條件分支指令?如是,執(zhí)行步驟f;如不是,執(zhí)行步驟i;
f.為該指令生成包含符號變量的路徑判定謂詞;
g.解析路徑判定謂詞,生成程序執(zhí)行新路徑;
h.保存新路徑,將新路徑加入路徑存儲池;
i.判斷該指令中是否包含待分析的WindowsAPI序列?如是,執(zhí)行步驟j ;如不是, 執(zhí)行步驟1;
j.采用反向切片技術(shù),求解與該Windows API序列相關(guān)的代碼段; k.生成相關(guān)觸發(fā)輸入集;
1.判斷路徑存儲池是否為空?如是,執(zhí)行步驟m;如不是,在路徑存儲池中選擇下 一條要執(zhí)行的路徑,然后執(zhí)行步驟b; m.生成分析報(bào)告;
η. 結(jié)束ο步驟a中的惡意行為列表是默認(rèn)提供的典型的Windows API調(diào)用序列,或 者是由用戶根據(jù)需要來定義的可疑的感興趣的Windows API調(diào)用序列。步驟f中路徑判定謂詞的生成過程為根據(jù)二進(jìn)制惡意代碼中依賴于符號變量的分 支為每一條分支構(gòu)建一個路徑判定謂詞,路徑判定謂詞是使得程序按特定路徑執(zhí)行的條件。步驟g中的解析路徑判定謂詞是指針對條件分支指令生成的包含符號變量的 路徑判定謂詞,判定分支條件是否可滿足,即是否存在使路徑判定謂詞成立的有效輸入 值;如果分支條件是可滿足的,執(zhí)行條件分支指令的true分支;如果分支條件是不可滿 足的,執(zhí)行條件分支指令的false分支。步驟k中的相關(guān)觸發(fā)輸入集是指與特定惡意行為相關(guān),并且能夠觸發(fā)程序中 的惡意代碼執(zhí)行的輸入值的集合。輸入值含有特定的鍵盤輸入值、系統(tǒng)時間值和網(wǎng)絡(luò)數(shù)據(jù)包,輸入值為可觸發(fā)惡 意代碼執(zhí)行的外部輸入。步驟m中的分析報(bào)告含有惡意代碼功能報(bào)告、行為特征報(bào)告、實(shí)現(xiàn)的指令序 列報(bào)告、相關(guān)觸發(fā)輸入集報(bào)告和輸入與輸出的關(guān)聯(lián)關(guān)系報(bào)告。全系統(tǒng)模擬環(huán)境可采用全系統(tǒng)模擬器實(shí)現(xiàn);全系統(tǒng)模擬器可采用Bochs全系統(tǒng) 模擬器。
權(quán)利要求
1. 一種自動二進(jìn)制惡意代碼行為分析方法,其特征是在全系統(tǒng)模擬環(huán)境下,對二 進(jìn)制惡意代碼進(jìn)行如下分析a.首先確定二進(jìn)制惡意代碼中可能存在的待分析的惡意行為,待分析的惡意行為由 一張惡意行為列表來維護(hù),惡意行為列表中含有Windows API調(diào)用序列;然后,在全系 統(tǒng)模擬環(huán)境中執(zhí)行待分析程序;b.取一條程序指令;c.判斷該指令是否有輸入值?如有,執(zhí)行步驟d;如沒有,執(zhí)行步驟e;d.引入符號變量,將輸入值定義為符號變量,在全系統(tǒng)模擬環(huán)境中采用符號執(zhí)行方 式執(zhí)行;e.判斷該指令是否為條件分支指令?如是,執(zhí)行步驟f;如不是,執(zhí)行步驟i;f.為該指令生成包含符號變量的路徑判定謂詞;g.解析路徑判定謂詞,生成程序執(zhí)行新路徑;h.保存新路徑,將新路徑加入路徑存儲池;i.判斷該指令中是否包含待分析的WindowsAPI序列?如是,執(zhí)行步驟j;如不是, 執(zhí)行步驟1;j.采用反向切片技術(shù),求解與該WindowsAPI序列相關(guān)的代碼段;k.生成相關(guān)觸發(fā)輸入集;1.判斷路徑存儲池是否為空?如是,執(zhí)行步驟m;如不是,在路徑存儲池中選擇下 一條要執(zhí)行的路徑,然后執(zhí)行步驟b;m.生成分析報(bào)告;η. 結(jié)束ο
2.根據(jù)權(quán)利要求1所述的自動二進(jìn)制惡意代碼行為分析方法,其特征是所述步驟a中的惡意行為列表是默認(rèn)提供的典型的WindowsAPI調(diào)用序列,或者 是由用戶根據(jù)需要來定義的可疑的感興趣的WindowsAPI調(diào)用序列。
3.根據(jù)權(quán)利要求1所述的自動二進(jìn)制惡意代碼行為分析方法,其特征是所述步驟f中路徑判定謂詞的生成過程為根據(jù)二進(jìn)制惡意代碼中依賴于符號 變量的分支為每一條分支構(gòu)建一個路徑判定謂詞,路徑判定謂詞是使得程序按特定路徑 執(zhí)行的條件。
4.根據(jù)權(quán)利要求1所述的自動二進(jìn)制惡意代碼行為分析方法,其特征是所述步驟g中的解析路徑判定謂詞是指針對條件分支指令生成的包含符號變量的 路徑判定謂詞,判定分支條件是否可滿足,即是否存在使路徑判定謂詞成立的有效輸入 值;如果分支條件是可滿足的,執(zhí)行條件分支指令的true分支;如果分支條件是不可滿 足的,執(zhí)行條件分支指令的false分支。
5.根據(jù)權(quán)利要求1所述的自動二進(jìn)制惡意代碼行為分析方法,其特征是所述步驟k 中的相關(guān)觸發(fā)輸入集是指與特定惡意行為相關(guān),并且能夠觸發(fā)程序中的惡意代碼執(zhí)行 的輸入值的集合。
6.根據(jù)權(quán)利要求5所述的自動二進(jìn)制惡意代碼行為分析方法,其特征是所述輸入 值含有特定的鍵盤輸入值、系統(tǒng)時間值和網(wǎng)絡(luò)數(shù)據(jù)包,輸入值為可觸發(fā)惡意代碼執(zhí)行的 外部輸入。
7.根據(jù)權(quán)利要求1所述的自動二進(jìn)制惡意代碼行為分析方法,其特征是所述步驟m 中的分析報(bào)告含有惡意代碼功能報(bào)告、行為特征報(bào)告、實(shí)現(xiàn)的指令序列報(bào)告、相關(guān)觸 發(fā)輸入集報(bào)告和輸入與輸出的關(guān)聯(lián)關(guān)系報(bào)告。
8.根據(jù)權(quán)利要求1所述的自動二進(jìn)制惡意代碼行為分析方法,其特征是所述全系統(tǒng)模擬環(huán)境可采用全系統(tǒng)模擬器實(shí)現(xiàn);全系統(tǒng)模擬器可采用Bochs全系統(tǒng) 模擬器,或采用Vmware全系統(tǒng)模擬器,或采用QEMU全系統(tǒng)模擬器。
全文摘要
本發(fā)明涉及一種自動二進(jìn)制惡意代碼行為分析方法;該方法為a.首先確定二進(jìn)制惡意代碼中可能存在的待分析的惡意行為,然后,在全系統(tǒng)模擬環(huán)境中執(zhí)行待分析程序;b.取一條程序指令;c.如果該指令有輸入值,則將輸入值定義為符號變量;d.如果該指令是為條件分支指令,則生成、解析路徑判定謂詞,生成新路徑,并將新路徑加入路徑存儲池;e.如果該指令中包含待分析的WindowsAPI序列,則求解與該WindowsAPI序列相關(guān)的代碼段,并生成相關(guān)觸發(fā)輸入集;f.如果路徑存儲池為空,則生成分析報(bào)告后結(jié)束;如不空,選擇下一條要執(zhí)行的路徑,然后執(zhí)行步驟b;本發(fā)明提供了一種高效的自動二進(jìn)制惡意代碼行為分析方法。
文檔編號G06F21/00GK102012988SQ201010570398
公開日2011年4月13日 申請日期2010年12月2日 優(yōu)先權(quán)日2010年12月2日
發(fā)明者張平, 徐冰, 曾光裕, 李清寶 申請人:張平