一種惡意代碼隱藏行為挖掘方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及一種惡意代碼隱藏行為挖掘方法及系統(tǒng),其步驟包括:在虛擬環(huán)境中運(yùn)行惡意代碼;判斷惡意代碼執(zhí)行的指令信息和函數(shù)信息中是否有隱藏行為路徑相關(guān)的指令和函數(shù);若檢測(cè)到延時(shí)隱藏相關(guān)的執(zhí)行信息,通過(guò)結(jié)束相應(yīng)的延時(shí)行為使惡意代碼繼續(xù)執(zhí)行其后續(xù)指令和函數(shù);若檢測(cè)到條件判斷隱藏相關(guān)的執(zhí)行信息,根據(jù)其條件判斷分類,通過(guò)滿足其不同路徑的執(zhí)行條件,發(fā)掘惡意代碼的可能執(zhí)行路徑;將分析完成的惡意代碼執(zhí)行的多種行為路徑信息生成惡意代碼行為路徑樹(shù)。本發(fā)可有效挖掘惡意代碼通過(guò)延時(shí)隱藏和條件判斷隱藏的方式躲避分析的隱藏行為,有效發(fā)現(xiàn)其可能存在的多種隱藏行為路徑,提高惡意代碼的隱藏行為分析和挖掘能力。
【專利說(shuō)明】一種惡意代碼隱藏行為挖掘方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于網(wǎng)絡(luò)安全【技術(shù)領(lǐng)域】,具體涉及一種惡意代碼隱藏行為挖掘方法及系統(tǒng)。
【背景技術(shù)】
[0002]伴隨著信息化不斷推進(jìn)以及技術(shù)的不斷發(fā)展,其重要威脅之一的惡意代碼技術(shù)也在不斷的進(jìn)步,為了躲避分析和檢測(cè),惡意代碼的隱藏能力、變形能力和生存能力在不斷地增強(qiáng)。惡意代碼通過(guò)各種技術(shù)手段隱藏起自身的一些有害行為,導(dǎo)致普通的分析及檢測(cè)工具無(wú)法及時(shí)地檢測(cè)到其惡意行為,從而在需要的時(shí)候產(chǎn)生破壞威脅互聯(lián)網(wǎng)及計(jì)算機(jī)系統(tǒng)的安全性。
[0003]目前,惡意代碼的隱藏手段主要包括:(1)在系統(tǒng)中隱藏其蹤跡,例如進(jìn)程信息等。(2)自身包含正常行為路徑和惡意行為路徑,在一定條件下才實(shí)施惡意行為。例如在探測(cè)到分析及檢測(cè)環(huán)境時(shí)便隱藏其惡意行為,從而躲避檢測(cè)。傳統(tǒng)的動(dòng)態(tài)分析手段通常只能分析惡意代碼當(dāng)前執(zhí)行的行為路徑,不能很好地分析檢測(cè)到隱藏行為及路徑的存在。因此,提高惡意代碼隱藏行為及路徑的分析能力成為惡意代碼防護(hù)中需要解決的一個(gè)重要問(wèn)題。
[0004]已有惡意代碼分析方法中,靜態(tài)分析可全面分析惡意代碼包含的所有路徑,從而挖掘其可能存在的隱藏行為,但是,通常情況下,惡意代碼的源代碼無(wú)法獲取,要想分析期待嗎,只有依賴于反匯編反編譯軟件。但是惡意代碼通常會(huì)使用一些混淆技術(shù)干擾這類軟件,導(dǎo)致其很難準(zhǔn)確還原代碼。而動(dòng)態(tài)分析雖然可以在惡意代碼執(zhí)行過(guò)程中獲取其行為,但是局限于單一執(zhí)行路徑,即只能獲取當(dāng)前執(zhí)行過(guò)程中展現(xiàn)出的一條行為路徑。對(duì)于有多種行為路徑的惡意代碼,尤其是在多種無(wú)害行為路徑中隱藏一條惡意行為路徑的惡意代碼,無(wú)法有效地開(kāi)展分析。
[0005]隨著惡意代碼分析檢測(cè)技術(shù)的發(fā)展,惡意代碼開(kāi)發(fā)者也不斷更新其技術(shù)手段,為了躲避分析檢測(cè),目前已經(jīng)出現(xiàn)了檢測(cè)虛擬分析環(huán)境從而隱藏行為的方法,以及只有在特定條件下才實(shí)施其惡意行為的隱藏手段。為惡意代碼分析及防范工作帶來(lái)了巨大的挑戰(zhàn)。
[0006]研究惡意代碼隱藏行為的分析方法,從而全面、有效地分析惡意代碼的隱藏行為,進(jìn)一步有效指導(dǎo)惡意代碼檢測(cè),是惡意代碼防御工作中的重要基礎(chǔ)問(wèn)題。當(dāng)前惡意代碼隱藏行為分析方法中的主要問(wèn)題有:動(dòng)態(tài)分析只分析一段時(shí)間內(nèi)惡意代碼執(zhí)行的行為,對(duì)于一些延時(shí)隱藏的行為容易漏報(bào);動(dòng)態(tài)分析過(guò)程只能分析當(dāng)前執(zhí)行的行為,無(wú)法對(duì)特定條件下才出現(xiàn)的隱性惡意行為路徑實(shí)施有效地分析,對(duì)于探測(cè)運(yùn)行環(huán)境及條件而隱藏惡意行為的惡意代碼無(wú)法實(shí)施有效的分析;動(dòng)態(tài)分析大多是追蹤被動(dòng)分析,缺少有效主動(dòng)發(fā)掘惡意代碼隱藏行為的方法。
【發(fā)明內(nèi)容】
[0007]本發(fā)明的目的在于提供一種惡意代碼隱藏行為挖掘方法及系統(tǒng),通過(guò)在動(dòng)態(tài)運(yùn)行過(guò)程中分析惡意代碼執(zhí)行代碼中可能存在的延時(shí)和條件控制語(yǔ)句,為其提供滿足其可能執(zhí)行的行為路徑的條件,主動(dòng)觸發(fā)其可能的潛在隱藏行為,從而主動(dòng)發(fā)掘出惡意代碼的隱藏行為,實(shí)現(xiàn)隱藏行為分析。
[0008]本發(fā)明的主要內(nèi)容是:將待分析的惡意代碼在可控環(huán)境中運(yùn)行,監(jiān)控其執(zhí)行信息,針對(duì)延時(shí)執(zhí)行和條件判斷兩種隱藏行為,通過(guò)監(jiān)控相關(guān)的實(shí)現(xiàn)指令和函數(shù),向其輸入滿足隱藏行為執(zhí)行的相關(guān)條件,使其執(zhí)行相關(guān)行為路徑,實(shí)現(xiàn)隱藏行為的挖掘。
[0009]具體地,本發(fā)明采用的技術(shù)方案如下:
[0010]一種惡意代碼隱藏行為挖掘方法,其步驟包括:
[0011]I)在虛擬環(huán)境中運(yùn)行惡意代碼,逐條監(jiān)控惡意代碼執(zhí)行的指令信息和函數(shù)信息;
[0012]2)判斷惡意代碼執(zhí)行的指令信息和函數(shù)信息中是否有隱藏行為路徑相關(guān)的指令和函數(shù),所述隱藏行為包含延時(shí)隱藏和條件判斷隱藏兩類;
[0013]3)若檢測(cè)到延時(shí)隱藏相關(guān)的執(zhí)行信息,通過(guò)結(jié)束相應(yīng)的延時(shí)行為使惡意代碼繼續(xù)執(zhí)行其后續(xù)指令和函數(shù);
[0014]4)若檢測(cè)到條件判斷隱藏相關(guān)的執(zhí)行信息,根據(jù)其條件判斷分類,通過(guò)滿足其不同路徑的執(zhí)行條件,發(fā)掘惡意代碼的可能執(zhí)行路徑;
[0015]5)將分析完成的惡意代碼執(zhí)行的多種可能行為路徑信息以樹(shù)的形式表示,生成惡意代碼行為路徑樹(shù)。
[0016]進(jìn)一步地,步驟I)所述的惡意代碼執(zhí)行的指令信息和函數(shù)信息的監(jiān)控方法為:將待分析的惡意代碼運(yùn)行于硬件模擬環(huán)境中,通過(guò)動(dòng)態(tài)反匯編,監(jiān)控惡意代碼執(zhí)行的指令序列;通過(guò)掛鉤函數(shù),監(jiān)控相關(guān)函數(shù)信息。
[0017]進(jìn)一步地,步驟2)所述的隱藏行為路徑相關(guān)的指令和函數(shù),可由用戶根據(jù)需要自行定義,本發(fā)明中主要分為延時(shí)隱藏和條件判斷隱藏兩類。
[0018]進(jìn)一步地,步驟2)所述的延時(shí)隱藏是指惡意代碼通過(guò)一些手段延遲惡意行為的出現(xiàn),以躲避有限分析事件的動(dòng)態(tài)分析;所述的條件判斷隱藏是指惡意代碼在執(zhí)行惡意行為之前,通過(guò)判斷一些執(zhí)行條件,例如系統(tǒng)及網(wǎng)絡(luò)狀態(tài)等,當(dāng)一定條件滿足時(shí)才執(zhí)行惡意行為。
[0019]進(jìn)一步地,步驟3)所述的延時(shí)隱藏主要包括通過(guò)sleep函數(shù)延時(shí)和循環(huán)延時(shí)兩類常用延時(shí)隱藏行為。
[0020]進(jìn)一步地,步驟3)所述的結(jié)束相應(yīng)的延時(shí)行為的方法是:針對(duì)sleep函數(shù),通過(guò)將硬件時(shí)間調(diào)整為其之后的時(shí)間結(jié)束該函數(shù);針對(duì)循環(huán)延時(shí),通過(guò)修改相應(yīng)寄存器標(biāo)志位結(jié)束循環(huán)的方法來(lái)實(shí)現(xiàn)。
[0021]進(jìn)一步地,步驟4)所述的條件判斷隱藏主要包括:用戶交互條件和獨(dú)立條件判斷兩大類,其中用戶互動(dòng)條件是指判斷是否有用戶輸入事件(包括鼠標(biāo)和鍵盤(pán)事件),獨(dú)立判斷條件只是在執(zhí)行過(guò)程中判斷各類不需人工干預(yù)的各類系統(tǒng)及網(wǎng)絡(luò)條件等。
[0022]進(jìn)一步地,步驟4)中所述的滿足不同路徑的執(zhí)行條件的方法是:分析惡意代碼執(zhí)行過(guò)程中的條件判斷語(yǔ)句,針對(duì)用戶交互條件判斷,當(dāng)發(fā)現(xiàn)等待鍵盤(pán)和鼠標(biāo)事件的條件判斷語(yǔ)句時(shí),啟動(dòng)相應(yīng)的函數(shù)調(diào)用模塊發(fā)送相應(yīng)的鍵盤(pán)和鼠標(biāo)信息滿足其執(zhí)行條件;針對(duì)獨(dú)立條件判斷,保存條件判斷語(yǔ)句發(fā)生時(shí)系統(tǒng)映像(snapshot)和判斷表達(dá)式,然后繼續(xù)執(zhí)行,當(dāng)前路徑執(zhí)行完畢時(shí),會(huì)退到保存映像的位置,更改其判斷條件的結(jié)果,使其執(zhí)行其他路徑從而挖掘隱藏執(zhí)行路徑,若在執(zhí)行過(guò)程中遇到多次條件判斷,則通過(guò)計(jì)算路徑中所有判斷表達(dá)式的結(jié)果判斷可能的條件值。
[0023]一種惡意代碼隱藏行為挖掘系統(tǒng),其包括:
[0024]硬件模擬器,用于虛擬執(zhí)行環(huán)境以運(yùn)行和監(jiān)控惡意代碼;
[0025]指令信息監(jiān)控模塊,集成在硬件模擬器的指令翻譯模塊中,用于在運(yùn)行過(guò)程中監(jiān)控并記錄惡意代碼執(zhí)行的指令信息;
[0026]函數(shù)信息監(jiān)控模塊,集成在硬件模擬器中,并連接指令信息監(jiān)控記錄模塊,用于在惡意代碼運(yùn)行過(guò)程中,通過(guò)判斷指令跳轉(zhuǎn)和模擬內(nèi)存數(shù)據(jù)監(jiān)控惡意代碼執(zhí)行的函數(shù)信息;
[0027]條件判斷分析模塊,連接指令信息監(jiān)控模塊和函數(shù)信息監(jiān)控模塊,用于檢測(cè)惡意代碼執(zhí)行的指令和函數(shù)信息中的條件判斷語(yǔ)句;
[0028]條件輸入模塊,連接條件判斷分析模塊和硬件模擬器的虛擬執(zhí)行環(huán)境,用于產(chǎn)生在分析過(guò)程中使代碼執(zhí)行不同行為路徑所需要的條件輸入;
[0029]運(yùn)行映像模塊,連接硬件模擬器的虛擬執(zhí)行環(huán)境、條件判斷分析模塊和條件輸入模塊,用于記錄有多種可能執(zhí)行路徑時(shí)執(zhí)行每條路徑之前的系統(tǒng)及代碼狀態(tài)映像;
[0030]行為樹(shù)構(gòu)建模塊,連接指令信息監(jiān)控模塊、函數(shù)信息監(jiān)控模塊、條件分析判斷模塊和條件輸入模塊,用于根據(jù)獲取的惡意代碼不同行為路徑構(gòu)建惡意代碼行為路徑樹(shù)。
[0031]本發(fā)明的優(yōu)點(diǎn)和積極效果如下:
[0032]本發(fā)明針對(duì)惡意代碼動(dòng)態(tài)分析局限于有限時(shí)間單一路徑的問(wèn)題,通過(guò)分析惡意代碼常用的隱藏行為方法,利用可控環(huán)境下監(jiān)控判斷和主動(dòng)挖掘的分析方法,可有效挖掘惡意代碼通過(guò)延時(shí)隱藏和條件判斷隱藏的方式躲避分析的隱藏行為,有效發(fā)現(xiàn)其可能存在的多種隱藏行為路徑,從而提高了惡意代碼的隱藏行為分析和挖掘能力。
【專利附圖】
【附圖說(shuō)明】
[0033]圖1是惡意代碼隱藏行為挖掘方法流程圖。
[0034]圖2是惡意代碼隱藏行為挖掘系統(tǒng)模塊圖。
【具體實(shí)施方式】
[0035]下面通過(guò)具體實(shí)施例和附圖,對(duì)本發(fā)明做進(jìn)一步說(shuō)明。
[0036]如圖1所示,本發(fā)明的惡意代碼隱藏行為挖掘方法,包括如下步驟:
[0037]1、監(jiān)控并記錄惡意代碼動(dòng)態(tài)執(zhí)行的指令信息和函數(shù)信息。
[0038]本發(fā)明使用硬件模擬器在虛擬操作系統(tǒng)中動(dòng)態(tài)運(yùn)行待分析的惡意代碼,并在硬件模擬器中監(jiān)控并記錄惡意代碼執(zhí)行的指令及函數(shù)信息。指令監(jiān)控通過(guò)在硬件模擬器的中間翻譯模塊中,使用反匯編的方法實(shí)現(xiàn)逐條指令提取,并記錄相應(yīng)的指令信息。函數(shù)信息監(jiān)控則通過(guò)在虛擬內(nèi)存中識(shí)別系統(tǒng)數(shù)據(jù)結(jié)構(gòu),計(jì)算出相應(yīng)的函數(shù)調(diào)用地址,然后通過(guò)指令跳轉(zhuǎn)地址和函數(shù)調(diào)用地址的比較判斷是否調(diào)用了需要監(jiān)控的函數(shù)并記錄相應(yīng)信息。
[0039]2、判斷是否出現(xiàn)隱藏行為路徑相關(guān)的指令和函數(shù)。
[0040]通過(guò)對(duì)惡意代碼常用隱藏行為的分析,本發(fā)明中將惡意代碼常用的隱藏行為分為延時(shí)隱藏和條件判斷隱藏兩大類。延時(shí)隱藏是指惡意代碼通過(guò)延時(shí)執(zhí)行惡意行為來(lái)躲避動(dòng)態(tài)分析環(huán)境的檢測(cè)的行為隱藏方法,條件判斷隱藏是指惡意代碼通過(guò)判斷一些系統(tǒng)、網(wǎng)絡(luò)以及用戶交互條件,只在滿足一定條件下才執(zhí)行惡意行為的隱藏方法。[0041]延時(shí)隱藏的方法通常包括使用sleep函數(shù)的延時(shí)和循環(huán)延時(shí)兩大類。針對(duì)sleep函數(shù)延時(shí),本發(fā)明通過(guò)掛鉤函數(shù)的方式進(jìn)行sleep函數(shù)檢測(cè)。針對(duì)循環(huán)延時(shí),通過(guò)監(jiān)控惡意代碼執(zhí)行的指令中是否含有循環(huán),當(dāng)發(fā)現(xiàn)存在循環(huán)時(shí),進(jìn)行進(jìn)一步分析。
[0042]對(duì)于條件判斷隱藏,本發(fā)明根據(jù)是否包含用戶交互將其分為用戶交互條件和獨(dú)立判斷條件兩大類。在惡意代碼執(zhí)行過(guò)程中,當(dāng)監(jiān)控到條件判斷語(yǔ)句的時(shí)候,記錄相關(guān)的信息,構(gòu)建相應(yīng)的映像文件記錄當(dāng)前系統(tǒng)及惡意代碼執(zhí)行的各類狀態(tài)信息,然后提交到后續(xù)步驟對(duì)條件判斷語(yǔ)句進(jìn)行進(jìn)一步分析及處理。
[0043]3、對(duì)檢測(cè)到的延時(shí)隱藏行為,通過(guò)結(jié)束其相應(yīng)延時(shí)行為使惡意代碼繼續(xù)執(zhí)行。
[0044]針對(duì)步驟2中檢測(cè)到的延時(shí)隱藏行為進(jìn)行相應(yīng)的處理。當(dāng)檢測(cè)到sleep函數(shù)被調(diào)用時(shí),讀取堆棧中的延時(shí)時(shí)間,然后將硬件模擬器的時(shí)間調(diào)整到相應(yīng)的延時(shí)時(shí)間之后,使條件滿足,從而使惡意代碼進(jìn)一步執(zhí)行后續(xù)行為。
[0045]當(dāng)檢測(cè)到循環(huán)存在時(shí)。分析識(shí)別出循環(huán)控制流向前轉(zhuǎn)移的指令,當(dāng)再次執(zhí)行到該轉(zhuǎn)移指令的時(shí)候,通過(guò)將虛擬CPU中的EFLAGS寄存器相應(yīng)的標(biāo)志位至其反位的方式,使循環(huán)結(jié)束,從而使惡意代碼開(kāi)始執(zhí)行后續(xù)行為。
[0046]4、對(duì)檢測(cè)到的條件判斷語(yǔ)句可能導(dǎo)致的隱藏行為,通過(guò)滿足其不同條件,挖掘潛在的隱藏行為路徑。
[0047]當(dāng)步驟2檢測(cè)到的條件判斷語(yǔ)句時(shí),分析其判斷的條件,根據(jù)是否有用戶交互進(jìn)行不同的處理,當(dāng)需要用戶交互時(shí),即判斷是否有用戶鼠標(biāo)和鍵盤(pán)事件發(fā)生,此時(shí),通過(guò)調(diào)用相應(yīng)的鼠標(biāo)接口函數(shù)do_mouse和鍵盤(pán)接口函數(shù)do_send_key發(fā)送相應(yīng)的鼠標(biāo)和鍵盤(pán)消息,以滿足后續(xù)行為的執(zhí)行條件。同時(shí),在調(diào)用相應(yīng)接口函數(shù)之前,記錄相應(yīng)的系統(tǒng)映像,在分析完此路徑之后,退回到此映像,分析另一條沒(méi)有滿足交互時(shí)的行為信息,以得到較為全面的惡意代碼行為。這里需要注意的是,由于大多數(shù)惡意代碼通過(guò)檢測(cè)是否有用戶輸入判斷是否在真實(shí)環(huán)境而非分析環(huán)境中,因?yàn)?,滿足用戶交互條件下可能執(zhí)行的惡意行為的概率比較大,因此我們先分析滿足的這一條件下的行為。
[0048]如果是獨(dú)立判斷條件,即不需要用戶交互的條件,則分析判斷語(yǔ)句并保存當(dāng)前系統(tǒng)映像。從第一次條件判斷語(yǔ)句開(kāi)始,保存系統(tǒng)映像和當(dāng)前的判斷條件,然后分析可能的不同后續(xù)分支路徑。執(zhí)行完一條路徑后,回到相應(yīng)的判斷條件處的系統(tǒng)映像,然后執(zhí)行不同的條件分支。從而挖掘惡意代碼可能執(zhí)行的不同行為路徑。需要注意的是,如果在一條路徑后續(xù)繼續(xù)出現(xiàn)其他條件判斷語(yǔ)句,則采用遞歸的方式逐層進(jìn)行分析。此外,本發(fā)明為了降低不可能路徑的消耗,在分析過(guò)程中保存路徑中所有的條件判斷語(yǔ)句,在新的條件判斷語(yǔ)句產(chǎn)生時(shí),通過(guò)計(jì)算該路徑所有的條件判斷,只分析滿足所有路徑條件即實(shí)際可能的數(shù)據(jù)結(jié)果產(chǎn)生的真實(shí)潛在路徑。
[0049]5、將惡意代碼可能執(zhí)行的行為路徑構(gòu)建為惡意代碼行為路徑樹(shù)。
[0050]通過(guò)上述分析,可挖掘出惡意代碼可能存在的隱藏行為。本發(fā)明將動(dòng)態(tài)執(zhí)行挖掘出的惡意代碼各種行為以樹(shù)的結(jié)構(gòu)進(jìn)行表示。惡意代碼行為路徑樹(shù)的構(gòu)造過(guò)程如下:惡意代碼執(zhí)行的第一條信息開(kāi)始生成該行為樹(shù);此后,每執(zhí)行的下一條信息作為子節(jié)點(diǎn)添加到該樹(shù);當(dāng)檢測(cè)到延時(shí)隱藏信息時(shí),在相應(yīng)執(zhí)行信息節(jié)點(diǎn)標(biāo)記延時(shí)條件,然后繼續(xù)添加后續(xù)子節(jié)點(diǎn);當(dāng)檢測(cè)到條件判斷語(yǔ)句時(shí),在相應(yīng)的節(jié)點(diǎn)保存條件判斷信息,然后根據(jù)不同的條件添加不同的子節(jié)點(diǎn)表示后續(xù)執(zhí)行子樹(shù),即保存系統(tǒng)映像之后標(biāo)記相應(yīng)的節(jié)點(diǎn),當(dāng)分析玩一條路徑后回到相應(yīng)的節(jié)點(diǎn)添加其他子樹(shù),直到執(zhí)行完畢。
[0051]以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非對(duì)其進(jìn)行限制,本領(lǐng)域的普通技術(shù)人員可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本發(fā)明的精神和范圍,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求所述為準(zhǔn)。
【權(quán)利要求】
1.一種惡意代碼隱藏行為挖掘方法,其步驟包括: 1)在虛擬環(huán)境中運(yùn)行惡意代碼,逐條監(jiān)控惡意代碼執(zhí)行的指令信息和函數(shù)信息; 2)判斷惡意代碼執(zhí)行的指令信息和函數(shù)信息中是否有隱藏行為路徑相關(guān)的指令和函數(shù),所述隱藏行為包含延時(shí)隱藏和條件判斷隱藏兩類; 3)若檢測(cè)到延時(shí)隱藏相關(guān)的執(zhí)行信息,通過(guò)結(jié)束相應(yīng)的延時(shí)行為使惡意代碼繼續(xù)執(zhí)行其后續(xù)指令和函數(shù); 4)若檢測(cè)到條件判斷隱藏相關(guān)的執(zhí)行信息,根據(jù)其條件判斷分類,通過(guò)滿足其不同路徑的執(zhí)行條件,發(fā)掘惡意代碼的可能執(zhí)行路徑; 5)將動(dòng)態(tài)分析完成的惡意代碼執(zhí)行的多路徑行為信息以樹(shù)的形式表示,生成惡意代碼行為路徑樹(shù)。
2.如權(quán)利要求1所述的方法,其特征在于:所述延時(shí)隱藏包含調(diào)用sleep函數(shù)延時(shí)和循環(huán)延時(shí)兩種。
3.如權(quán)利要求1所述的方法,其特征在于:所述條件判斷隱藏包括用戶交互條件和獨(dú)立條件判斷兩大類,其中用戶交互條件是指判斷是否有用戶輸入事件,獨(dú)立條件是在執(zhí)行過(guò)程中判斷各類不需人工干預(yù)的各類系統(tǒng)及網(wǎng)絡(luò)條件。
4.如權(quán)利要求3所述的方法,其特征在于:所述用戶輸入事件包括鼠標(biāo)和鍵盤(pán)事件。
5.如權(quán)利要求1至3中任一項(xiàng)所述的方法,其特征在于,所述延時(shí)隱藏的處理方法是:當(dāng)檢測(cè)到sleep函數(shù)被調(diào)用時(shí),讀取堆棧中的延時(shí)時(shí)間,然后將硬件模擬器的時(shí)間調(diào)整到相應(yīng)的延時(shí)時(shí)間之后,使條件滿足,從而使惡意代碼進(jìn)一步執(zhí)行后續(xù)行為;當(dāng)檢測(cè)到循環(huán)存在時(shí),分析識(shí)別出循環(huán)控制流向前轉(zhuǎn)移的指令,當(dāng)再次執(zhí)行到該轉(zhuǎn)移指令時(shí),通過(guò)將虛擬CPU中的EFLAGS寄存器相應(yīng)的標(biāo)志位至其反位的方式使循環(huán)結(jié)束,從而使惡意代碼開(kāi)始執(zhí)行后續(xù)行為。
6.如權(quán)利要求1至3中任一項(xiàng)所述的方法,其特征在于,檢測(cè)到條件判斷語(yǔ)句時(shí)的處理方法是:分析其判斷的條件,出現(xiàn)用戶交互條件判斷時(shí),記錄相應(yīng)的系統(tǒng)映像,通過(guò)調(diào)用鼠標(biāo)接口函數(shù)do_mouse 和鍵盤(pán)接口函數(shù)do_send_key發(fā)送相應(yīng)的鼠標(biāo)和鍵盤(pán)消息以滿足后續(xù)行為的執(zhí)行條件,在分析完此路徑之后,退回到此映像,分析另一條沒(méi)有滿足交互時(shí)的行為信息;對(duì)于獨(dú)立判斷條件,分析判斷語(yǔ)句并保存當(dāng)前系統(tǒng)映像和判斷條件,獲取其可能的不同后續(xù)分支路徑,執(zhí)行完一條路徑后,回到相應(yīng)的系統(tǒng)映像執(zhí)行不同的條件分支,從而挖掘惡意代碼可能的不同行為路徑。
7.如權(quán)利要求6所述的方法,其特征在于:在獨(dú)立判斷條件的分析過(guò)程中,如果在一條路徑后續(xù)繼續(xù)出現(xiàn)其他條件判斷語(yǔ)句,則采用遞歸的方式逐層進(jìn)行分析。
8.如權(quán)利要求7所述的方法,其特征在于:在分析過(guò)程中保存路徑中所有的條件判斷語(yǔ)句,在新的條件判斷語(yǔ)句產(chǎn)生時(shí),通過(guò)計(jì)算該路徑所有的條件判斷,只分析滿足所有路徑條件即實(shí)際可能的數(shù)據(jù)結(jié)果產(chǎn)生的真實(shí)潛在路徑,以降低不可能路徑的消耗。
9.如權(quán)利要求1所述的方法,其特征在于,所述惡意代碼行為路徑樹(shù)的構(gòu)造過(guò)程是:以惡意代碼執(zhí)行的第一條信息作為初始父節(jié)點(diǎn)開(kāi)始生成行為樹(shù);此后,每執(zhí)行的下一條信息作為子節(jié)點(diǎn)添加到該樹(shù);當(dāng)檢測(cè)到延時(shí)隱藏信息時(shí),在相應(yīng)執(zhí)行信息節(jié)點(diǎn)標(biāo)記延時(shí)條件,然后繼續(xù)添加后續(xù)子節(jié)點(diǎn);當(dāng)檢測(cè)到條件判斷語(yǔ)句時(shí),在相應(yīng)的節(jié)點(diǎn)保存條件判斷信息,然后根據(jù)不同的條件添加不同的子節(jié)點(diǎn)表示后續(xù)執(zhí)行子樹(shù),即保存系統(tǒng)映像之后標(biāo)記相應(yīng)的節(jié)點(diǎn),當(dāng)分析玩一條路徑后回到相應(yīng)的節(jié)點(diǎn)添加其他子樹(shù),直到執(zhí)行完畢。
10.一種惡意代碼隱藏行為挖掘系統(tǒng),其特征在于,包括: 硬件模擬器,用于虛擬執(zhí)行環(huán)境以運(yùn)行和監(jiān)控惡意代碼; 指令信息監(jiān)控模塊,集成在硬件模擬器的指令翻譯模塊中,用于在運(yùn)行過(guò)程中監(jiān)控并記錄惡意代碼執(zhí)行的指令信息; 函數(shù)信息監(jiān)控模塊,集成在硬件模擬器中,并連接指令信息監(jiān)控記錄模塊,用于在惡意代碼運(yùn)行過(guò)程中,通過(guò)判斷指令跳轉(zhuǎn)和模擬內(nèi)存數(shù)據(jù)監(jiān)控惡意代碼執(zhí)行的函數(shù)信息; 條件判斷分析模塊,連接指令信息監(jiān)控模塊和函數(shù)信息監(jiān)控模塊,用于檢測(cè)惡意代碼執(zhí)行的指令和函數(shù)信息中的條件判斷語(yǔ)句; 條件輸入模塊,連接條件判斷分析模塊和硬件模擬器的虛擬執(zhí)行環(huán)境,用于產(chǎn)生在分析過(guò)程中使代碼執(zhí)行不同行為路徑所需要的條件輸入; 運(yùn)行映像模塊,連接硬件模擬器的虛擬執(zhí)行環(huán)境、條件判斷分析模塊和條件輸入模塊,用于記錄有多種可能執(zhí)行路徑時(shí)執(zhí)行每條路徑之前的系統(tǒng)及代碼狀態(tài)映像; 行為樹(shù)構(gòu)建模塊,連接所述指令信息監(jiān)控模塊、函數(shù)信息監(jiān)控模塊、條件分析判斷模塊和條件輸入模塊,用于根據(jù)獲 取的惡意代碼不同行為路徑構(gòu)建惡意代碼行為路徑樹(shù)。
【文檔編號(hào)】G06F21/56GK103810427SQ201410058889
【公開(kāi)日】2014年5月21日 申請(qǐng)日期:2014年2月20日 優(yōu)先權(quán)日:2014年2月20日
【發(fā)明者】王蕊, 林子敏, 張道娟 申請(qǐng)人:中國(guó)科學(xué)院信息工程研究所