惡意程序控制指令識(shí)別方法及裝置制造方法
【專利摘要】一種惡意程序控制指令識(shí)別方法,包括:監(jiān)控惡意程序的注入過程,獲取注入進(jìn)程和注入地址;監(jiān)控與所述注入進(jìn)程對應(yīng)的輸入數(shù)據(jù),獲取與所述輸入數(shù)據(jù)對應(yīng)的執(zhí)行軌跡;對所述執(zhí)行軌跡進(jìn)行篩選,篩選得到與所述注入地址對應(yīng)的執(zhí)行軌跡;根據(jù)篩選得到的執(zhí)行軌跡計(jì)算代碼覆蓋率,根據(jù)所述代碼覆蓋率定位對應(yīng)控制指令判斷邏輯的覆蓋單元;根據(jù)所述對應(yīng)控制指令判斷邏輯的覆蓋單元獲取標(biāo)準(zhǔn)控制指令集。此外,還提供了一種惡意程序控制指令識(shí)別裝置。上述惡意程序控制指令識(shí)別方法及裝置能夠提高控制指令識(shí)別的準(zhǔn)確率。
【專利說明】惡意程序控制指令識(shí)別方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,特別是涉及一種惡意程序控制指令識(shí)別方法及裝置。
【背景技術(shù)】
[0002]伴隨著計(jì)算機(jī)技術(shù)的發(fā)展,惡意程序越來越多的出現(xiàn)在日常生活中,對企業(yè)的信息安全以及人們的正常生活產(chǎn)生不良影響。例如,現(xiàn)有的僵尸網(wǎng)絡(luò)惡意程序即通過感染傳播的手段,將大量惡意程序客戶端植入到多個(gè)主機(jī)之中,然后不法分子可通過僵尸網(wǎng)絡(luò)服務(wù)器發(fā)送控制指令操縱被控制的多個(gè)主機(jī)發(fā)起DDOS (拒絕服務(wù)攻擊)攻擊。例如,不法分子可操縱被控制的多個(gè)主機(jī)同時(shí)向某個(gè)網(wǎng)站發(fā)起大量請求,使該網(wǎng)站的服務(wù)器負(fù)載增加,從而影響用戶正常的瀏覽服務(wù)。
[0003]因此,為遏制惡意程序造成的危害,通常需要先對惡意程序的控制指令進(jìn)行識(shí)別,然后再通過數(shù)據(jù)包分析將附帶有惡意程序控制指令的數(shù)據(jù)包截獲,從而在全局控制惡意程序的危害。
[0004]然而,現(xiàn)有技術(shù)中對惡意程序控制指令的識(shí)別方法,通常通過人工的方式靜態(tài)的分析惡意程序的代碼,或者動(dòng)態(tài)的分析數(shù)據(jù)包的統(tǒng)計(jì)特征,其識(shí)別準(zhǔn)確度均較低。
【發(fā)明內(nèi)容】
[0005]基于此,有必要提供一種能提高識(shí)別準(zhǔn)確率的惡意程序控制指令識(shí)別方法。
[0006]一種惡意程序控制指令識(shí)別方法,包括:
[0007]監(jiān)控惡意程序的注入過程,獲取注入進(jìn)程和注入地址;
[0008]監(jiān)控與所述注入進(jìn)程對應(yīng)的輸入數(shù)據(jù),獲取與所述輸入數(shù)據(jù)對應(yīng)的執(zhí)行軌跡;
[0009]對所述執(zhí)行軌跡進(jìn)行篩選,篩選得到與所述注入地址對應(yīng)的執(zhí)行軌跡;
[0010]根據(jù)篩選得到的執(zhí)行軌跡計(jì)算代碼覆蓋率,根據(jù)所述代碼覆蓋率定位對應(yīng)控制指令判斷邏輯的覆蓋單元;
[0011]根據(jù)所述對應(yīng)控制指令判斷邏輯的覆蓋單元獲取標(biāo)準(zhǔn)控制指令集。
[0012]此外,還有必要提供一種能提高識(shí)別準(zhǔn)確率的惡意程序控制指令識(shí)別裝置。
[0013]一種惡意程序控制指令識(shí)別裝置,包括:
[0014]進(jìn)程監(jiān)控模塊,用于監(jiān)控惡意程序的注入過程,獲取注入進(jìn)程和注入地址;
[0015]執(zhí)行軌跡獲取模塊,用于監(jiān)控與所述注入進(jìn)程對應(yīng)的輸入數(shù)據(jù),獲取與所述輸入數(shù)據(jù)對應(yīng)的執(zhí)行軌跡;
[0016]執(zhí)行軌跡篩選模塊,用于對所述執(zhí)行軌跡進(jìn)行篩選,篩選得到與所述注入地址對應(yīng)的執(zhí)行軌跡;
[0017]覆蓋單元定位模塊,用于根據(jù)篩選得到的執(zhí)行軌跡計(jì)算代碼覆蓋率,根據(jù)所述代碼覆蓋率定位對應(yīng)控制指令判斷邏輯的覆蓋單元;
[0018]指令獲取模塊,用于根據(jù)所述對應(yīng)控制指令判斷邏輯的覆蓋單元獲取標(biāo)準(zhǔn)控制指令集。
[0019]上述惡意程序控制指令識(shí)別方法及裝置,通過監(jiān)控惡意程序?qū)ο到y(tǒng)進(jìn)程的注入過程獲取與輸入數(shù)據(jù)對應(yīng)的執(zhí)行軌跡,在對執(zhí)行軌跡進(jìn)行篩選后得到與注入地址即惡意程序加載在內(nèi)存中的區(qū)域?qū)?yīng)的執(zhí)行軌跡,然后通過分析各個(gè)執(zhí)行軌跡中包含的覆蓋單元的代碼覆蓋率來定位與控制指令判斷邏輯對應(yīng)的覆蓋單元。由于與控制指令判斷邏輯對應(yīng)的覆蓋單元中必然包含用于校驗(yàn)輸入數(shù)據(jù)中包含的控制指令是否正確的標(biāo)準(zhǔn)控制指令集,因此,根據(jù)該與控制指令判斷邏輯對應(yīng)的覆蓋單元即可獲取惡意程序控制指令。和現(xiàn)有技術(shù)相比,上述惡意程序控制指令識(shí)別方法及裝置由于通過監(jiān)控準(zhǔn)確定位到了與控制指令判斷邏輯對應(yīng)的覆蓋單元,使得識(shí)別的準(zhǔn)確度得到了提高。
【專利附圖】
【附圖說明】
[0020]圖1為一個(gè)實(shí)施例中惡意程序控制指令識(shí)別方法的流程圖;
[0021]圖2為一個(gè)實(shí)施例中計(jì)算執(zhí)行軌跡的相似度,并將執(zhí)行軌跡歸一化的步驟的流程圖;
[0022]圖3為一個(gè)實(shí)施例中惡意程序控制指令識(shí)別裝置的結(jié)構(gòu)示意圖;
[0023]圖4為另一個(gè)實(shí)施例中惡意程序控制指令識(shí)別裝置的結(jié)構(gòu)示意圖;
[0024]圖5為一個(gè)應(yīng)用場景中對Zeus惡意程序?qū)xplorer, exe進(jìn)程的注入過程進(jìn)行監(jiān)控的示意圖;
[0025]圖6為一個(gè)應(yīng)用場景中對獲取到的執(zhí)行軌跡的示意圖;
[0026]圖7為一個(gè)應(yīng)用場景中篩選后得到的執(zhí)行軌跡的示意圖;
[0027]圖8為一個(gè)應(yīng)用場景中執(zhí)行軌跡的統(tǒng)計(jì)數(shù)據(jù)的示意圖;
[0028]圖9為一個(gè)應(yīng)用場景中通過計(jì)算代碼覆蓋率得到分支覆蓋單元的示意圖;
[0029]圖10為一個(gè)應(yīng)用場景中通過計(jì)算代碼覆蓋率得到條件判斷覆蓋單元的示意圖;
[0030]圖11為一個(gè)應(yīng)用場景中得到的執(zhí)行序列的示意圖;
[0031]圖12為一個(gè)應(yīng)用場景中定位到的污點(diǎn)數(shù)據(jù)的示意圖;
[0032]圖13為一個(gè)應(yīng)用場景中定位到的指令判斷函數(shù)的示意圖;
[0033]圖14為一個(gè)應(yīng)用場景中指令判斷函數(shù)的參數(shù)值取值的示意圖;
[0034]圖15為一個(gè)應(yīng)用場景中獲取到的標(biāo)準(zhǔn)控制指令集的地址信息的示意圖;
[0035]圖16為一個(gè)應(yīng)用場景中獲取到的標(biāo)準(zhǔn)控制指令集的示意圖;
[0036]圖17為一個(gè)應(yīng)用場景中校驗(yàn)得到的所有執(zhí)行軌跡的示意圖。
【具體實(shí)施方式】
[0037]在一個(gè)實(shí)施例中,如圖1所示,一種惡意程序控制指令識(shí)別方法,包括以下步驟:
[0038]步驟S102,監(jiān)控惡意程序的注入過程,獲取注入進(jìn)程和注入地址。
[0039]惡意程序在感染主機(jī)后,通常會(huì)通過注入函數(shù)將其綁定在某個(gè)系統(tǒng)進(jìn)程中,該被注入的系統(tǒng)進(jìn)程即為注入進(jìn)程。當(dāng)該注入進(jìn)程加載并運(yùn)行時(shí),則通過函數(shù)調(diào)用啟動(dòng)惡意程序運(yùn)行。例如,在windows系統(tǒng)中,惡意程序通常會(huì)注入到explorer進(jìn)程(資源管理器進(jìn)程)中,從而隨著操作系統(tǒng)的啟動(dòng)而啟動(dòng)。
[0040]在本實(shí)施例中,可通過監(jiān)控文件的創(chuàng)建和讀寫操作過程以及進(jìn)程之間的交互行為來確定注入進(jìn)程以及注入函數(shù),通過獲取注入函數(shù)的參數(shù)獲取注入地址以及注入地址的大小。
[0041]步驟S104,監(jiān)控與注入進(jìn)程對應(yīng)的輸入數(shù)據(jù),獲取與輸入數(shù)據(jù)對應(yīng)的執(zhí)行軌跡。
[0042]在一個(gè)實(shí)施例中,可在獲取到輸入數(shù)據(jù)后,可獲取監(jiān)控時(shí)長,然后在監(jiān)控時(shí)長的時(shí)間長度內(nèi)獲取與輸入數(shù)據(jù)對應(yīng)的執(zhí)行軌跡。監(jiān)控時(shí)長可以為預(yù)設(shè)值,預(yù)設(shè)值優(yōu)選為5分鐘。
[0043]在一個(gè)實(shí)施例中,監(jiān)控與注入進(jìn)程對應(yīng)的輸入數(shù)據(jù)的步驟可包括:獲取污點(diǎn)數(shù)據(jù)類型,根據(jù)污點(diǎn)數(shù)據(jù)類型對輸入數(shù)據(jù)進(jìn)行篩選。
[0044]污點(diǎn)數(shù)據(jù)類型即可能觸發(fā)惡意程序運(yùn)行的輸入數(shù)據(jù)類型。污點(diǎn)數(shù)據(jù)類型可以是網(wǎng)絡(luò)數(shù)據(jù)包、鍵盤輸入數(shù)據(jù)、操作系統(tǒng)時(shí)間等。污點(diǎn)數(shù)據(jù)類型可預(yù)先設(shè)置。例如,在獲取僵尸網(wǎng)絡(luò)惡意程序的控制指令時(shí),由于用戶在被感染的主機(jī)上的鍵盤輸入等操作不會(huì)產(chǎn)生能觸發(fā)僵尸網(wǎng)絡(luò)惡意程序的控制指令,因此污點(diǎn)數(shù)據(jù)類型可預(yù)設(shè)為網(wǎng)絡(luò)數(shù)據(jù)包,即獲取網(wǎng)絡(luò)數(shù)據(jù)包對應(yīng)的注入進(jìn)程的執(zhí)行軌跡。
[0045]執(zhí)行軌跡即在監(jiān)控時(shí)間內(nèi)運(yùn)行的覆蓋單元的序列。在計(jì)算機(jī)技術(shù)中,程序以二進(jìn)制指令代碼的形式存儲(chǔ)在內(nèi)存空間中,并按照內(nèi)存地址的順序連續(xù)執(zhí)行。當(dāng)執(zhí)行過程中遇到函數(shù)調(diào)用時(shí),則跳轉(zhuǎn)至該函數(shù)調(diào)用對應(yīng)的內(nèi)存空間繼續(xù)執(zhí)行其存儲(chǔ)的二進(jìn)制指令代碼,函數(shù)調(diào)用結(jié)束后,再跳轉(zhuǎn)回繼續(xù)執(zhí)行。覆蓋單元即連續(xù)存儲(chǔ)二進(jìn)制指令代碼的內(nèi)存空間。
[0046]在本實(shí)施例中,可根據(jù)獲取到的注入地址提取二進(jìn)制代碼并進(jìn)行反匯編從而得到相應(yīng)的匯編指令。可對匯編指令按地址順序進(jìn)行迭代,將順序執(zhí)行的二進(jìn)制指令劃歸為同一覆蓋單元,若迭代到的指令為函數(shù)調(diào)用指令或程序跳轉(zhuǎn)指令時(shí),則根據(jù)跳轉(zhuǎn)到的內(nèi)存地址進(jìn)行遞歸迭代,并創(chuàng)建對應(yīng)該函數(shù)調(diào)用指令或程序跳轉(zhuǎn)指令的覆蓋單元,從而得到執(zhí)行軌跡對應(yīng)的覆蓋單元集合。
[0047]在本實(shí)施例中,獲取與輸入數(shù)據(jù)對應(yīng)的執(zhí)行軌跡的步驟還可包括:判斷執(zhí)行軌跡是否對應(yīng)輸入數(shù)據(jù)的傳播軌跡,若不包含,則可忽略該執(zhí)行軌跡。
[0048]輸入數(shù)據(jù)的傳播軌跡即輸入數(shù)據(jù)經(jīng)過運(yùn)算操作和復(fù)制操作進(jìn)行傳播的數(shù)據(jù)集合。若執(zhí)行軌跡中的所有覆蓋單元均不包含該數(shù)據(jù)集合中的元素,則該執(zhí)行軌跡與輸入數(shù)據(jù)的傳播軌跡不對應(yīng)。也就是說,在本實(shí)施例中,若執(zhí)行軌跡并沒有對接收到的網(wǎng)絡(luò)數(shù)據(jù)包中的數(shù)據(jù)進(jìn)行提取,與網(wǎng)絡(luò)數(shù)據(jù)包中的數(shù)據(jù)完全無關(guān)時(shí),可忽略該執(zhí)行軌跡。
[0049]進(jìn)一步的,在迭代過程中,還可獲取覆蓋單元對應(yīng)的運(yùn)行次數(shù)和運(yùn)行時(shí)間。由于指令在執(zhí)行時(shí),通常會(huì)存在循環(huán)執(zhí)行的情況,因此,覆蓋單元還對應(yīng)運(yùn)行次數(shù),可根據(jù)運(yùn)行次數(shù)判斷該覆蓋單元被循環(huán)運(yùn)行了多少次。
[0050]在本實(shí)施例中,還可將監(jiān)控獲取到的執(zhí)行軌跡存儲(chǔ)在執(zhí)行軌跡數(shù)據(jù)庫中,可將執(zhí)行軌跡包含的覆蓋單元的內(nèi)存起始位置、運(yùn)行時(shí)間和運(yùn)行次數(shù)與監(jiān)控時(shí)間對應(yīng)存儲(chǔ)在執(zhí)行軌跡數(shù)據(jù)庫中。
[0051]步驟S106,對執(zhí)行軌跡進(jìn)行篩選,篩選得到與注入地址對應(yīng)的執(zhí)行軌跡。
[0052]在一個(gè)實(shí)施例中,對執(zhí)行軌跡進(jìn)行篩選,篩選得到與注入地址對應(yīng)的執(zhí)行軌跡的步驟包括:獲取執(zhí)行軌跡中包含的系統(tǒng)函數(shù)調(diào)用指令,移除系統(tǒng)函數(shù)調(diào)用指令對應(yīng)的覆蓋單元。
[0053]惡意程序在運(yùn)行時(shí),可能會(huì)進(jìn)行系統(tǒng)函數(shù)調(diào)用。例如,可通過調(diào)用系統(tǒng)函數(shù)獲取操作系統(tǒng)當(dāng)前時(shí)間。在本實(shí)施例中,可僅在執(zhí)行軌跡中保留系統(tǒng)函數(shù)調(diào)用的調(diào)用語句和返回語句,而過濾掉系統(tǒng)函數(shù)調(diào)用對應(yīng)的覆蓋單元。
[0054]系統(tǒng)函數(shù)調(diào)用對應(yīng)的覆蓋單元為操作系統(tǒng)加載動(dòng)態(tài)鏈接庫文件的內(nèi)存區(qū)域,與惡意程序的控制指令無關(guān),過濾掉系統(tǒng)函數(shù)調(diào)用對應(yīng)的覆蓋單元可排除系統(tǒng)函數(shù)調(diào)用的干擾。
[0055]在一個(gè)實(shí)施例中,對執(zhí)行軌跡進(jìn)行篩選,篩選得到與注入地址對應(yīng)的執(zhí)行軌跡的步驟還可包括:獲取執(zhí)行軌跡中包含的與注入進(jìn)程對應(yīng)的調(diào)用指令,移除注入進(jìn)程對應(yīng)的調(diào)用指令對應(yīng)的覆蓋單元。
[0056]在獲取到輸入數(shù)據(jù)后,注入進(jìn)程也在執(zhí)行過程中,執(zhí)行軌跡可能會(huì)包含注入進(jìn)程對應(yīng)的覆蓋單元,通過移除與注入進(jìn)程對應(yīng)的調(diào)用指令對應(yīng)的覆蓋單元,可避免注入進(jìn)程的指令造成的誤識(shí)別。
[0057]在一個(gè)實(shí)施例中,對執(zhí)行軌跡進(jìn)行篩選,篩選得到與注入地址對應(yīng)的執(zhí)行軌跡的步驟還可包括:
[0058]獲取執(zhí)行軌跡包含的覆蓋單元及覆蓋單元的運(yùn)行次數(shù),根據(jù)包含的覆蓋單元和運(yùn)行次數(shù)計(jì)算執(zhí)行軌跡之間的相似度;獲取相似度閾值;將相似度大于所述相似度閾值的執(zhí)行軌跡歸一化。
[0059]也就是說,若兩條執(zhí)行軌跡包含的覆蓋單元大部分相同,則可認(rèn)為該兩條執(zhí)行軌跡對應(yīng)同一條控制指令,從而可將其中一條移除。
[0060]在本實(shí)施例中,獲取執(zhí)行軌跡包含的覆蓋單元及所述覆蓋單元的運(yùn)行次數(shù),根據(jù)包含的覆蓋單元和運(yùn)行次數(shù)計(jì)算執(zhí)行軌跡之間的相似度的步驟可具體為:
[0061 ] 獲取執(zhí)行軌跡包含的內(nèi)存地址相同且運(yùn)行次數(shù)相同的相同覆蓋單元個(gè)數(shù)、內(nèi)存地址不同的特有覆蓋單元個(gè)數(shù)以及內(nèi)存地址相同但運(yùn)行次數(shù)不同的近似覆蓋單元個(gè)數(shù),根據(jù)相同覆蓋單元個(gè)數(shù)、特有覆蓋單元個(gè)數(shù)和,覆蓋單元個(gè)數(shù)計(jì)算執(zhí)行軌跡之間的相似度。
[0062]在本實(shí)施例中,可根據(jù)下述步驟將執(zhí)行軌跡歸一化:
[0063]步驟S202,在獲取到的執(zhí)行軌跡中迭代選取執(zhí)行軌跡I。
[0064]步驟S204,遍歷獲取到的執(zhí)行軌跡R,根據(jù)公式:
c.ns +η,
[0065]simIR=-
Ylj + Hr
[0066]計(jì)算遍歷到的執(zhí)行軌跡R與選取的執(zhí)行軌跡I的相似度;其中,Sim1, E為相似度,ns為執(zhí)行軌跡I和R均包含的且運(yùn)行次數(shù)也相同的相同覆蓋單元個(gè)數(shù),H1為執(zhí)行軌跡I和R均包含的但運(yùn)行次數(shù)不相同的近似覆蓋單元個(gè)數(shù),H1為僅執(zhí)行軌跡I包含的覆蓋單元的個(gè)數(shù),nE為僅執(zhí)行軌跡R包含的覆蓋單元的個(gè)數(shù)。
[0067]步驟S206,將計(jì)算得到的相似度與相似度閾值進(jìn)行比較,若相似度大于相似度閾值,則移除遍歷到執(zhí)行軌跡。
[0068]步驟S208,遍歷結(jié)束則跳轉(zhuǎn)繼續(xù)執(zhí)行步驟S202,直到迭代完畢。
[0069]進(jìn)一步的,在本實(shí)施例中,獲取相似度閾值的步驟可具體為:根據(jù)公式:
[0070]Sa =-1-!!?
?(//-OtTTT
[0071]計(jì)算相似度閾值。其中,STh為相似度閾值,η為獲取到的執(zhí)行軌跡的個(gè)數(shù),Simij為執(zhí)行軌跡相似度i和j之間的相似度。[0072]步驟S108,根據(jù)篩選得到的執(zhí)行軌跡計(jì)算代碼覆蓋率,根據(jù)代碼覆蓋率定位對應(yīng)控制指令判斷邏輯的覆蓋單元。
[0073]代碼覆蓋率即覆蓋單元在篩選得到的執(zhí)行軌跡中的出現(xiàn)次數(shù)(也可以是比例)。
[0074]在本實(shí)施例中,根據(jù)篩選得到的執(zhí)行軌跡計(jì)算代碼覆蓋率的步驟可具體為:獲取篩選得到的執(zhí)行軌跡的覆蓋單元及其運(yùn)行次數(shù),計(jì)算覆蓋單元在篩選得到的執(zhí)行軌跡中各自的出現(xiàn)次數(shù),根據(jù)出現(xiàn)次數(shù)計(jì)算代碼覆蓋率。
[0075]例如,若篩選得到的執(zhí)行軌跡的數(shù)量為10,若覆蓋單元A在其中2個(gè)執(zhí)行軌跡中出現(xiàn),則出現(xiàn)次數(shù)為2或出現(xiàn)頻率為2/10 ;若覆蓋單元B在所有執(zhí)行軌跡中均出現(xiàn),則出現(xiàn)次數(shù)為10或出現(xiàn)頻率為10/10。
[0076]在本實(shí)施例中,根據(jù)代碼覆蓋率定位對應(yīng)控制指令判斷邏輯的覆蓋單元的步驟可具體為:根據(jù)代碼覆蓋率獲取出現(xiàn)次數(shù)為I的分支覆蓋單元和每個(gè)執(zhí)行軌跡均包含的且運(yùn)行次數(shù)不同的條件判斷覆蓋單元,根據(jù)分支覆蓋單元和條件判斷覆蓋單元定位對應(yīng)控制指令判斷邏輯的覆蓋單元。
[0077]出現(xiàn)次數(shù)為I的分支覆蓋單元即僅在唯一一條執(zhí)行軌跡中運(yùn)行過的覆蓋單元。由于惡意程序的控制指令判斷邏輯通常需要從網(wǎng)絡(luò)數(shù)據(jù)包中提取控制指令,然后將該控制指令與其定義在二進(jìn)制代碼中的標(biāo)準(zhǔn)控制指令集中的控制指令進(jìn)行比較,從而進(jìn)行相應(yīng)的操作,因此,每個(gè)執(zhí)行軌跡均包含的且運(yùn)行次數(shù)不同的條件判斷覆蓋單元,即為判斷控制指令是否正確的邏輯部分。
[0078]根據(jù)分支覆蓋單元和條件判斷覆蓋單元定位對應(yīng)控制指令判斷邏輯的覆蓋單元的步驟可具體為:
[0079]獲取分支覆蓋單元的分支時(shí)間戳和條件判斷覆蓋單元的判斷時(shí)間戳,獲取運(yùn)行時(shí)間戳在分支時(shí)間戳和判斷時(shí)間戳之間的覆蓋單元,并根據(jù)獲取到的覆蓋單元、分支覆蓋單元和條件判斷覆蓋單元定位判斷指令執(zhí)行序列。
[0080]判斷指令執(zhí)行序列即對應(yīng)了控制指令判斷邏輯的覆蓋單元的執(zhí)行序列。如前所述,惡意程序在判斷控制指令是否正確時(shí),會(huì)在條件判斷覆蓋單元運(yùn)行數(shù)次,若控制指令匹配,則會(huì)進(jìn)入分支覆蓋單元進(jìn)行運(yùn)行,因此,由條件判斷覆蓋單元到分支覆蓋單元的執(zhí)行序列必然包含了控制指令判斷邏輯。
[0081]步驟S110,根據(jù)對應(yīng)控制指令判斷邏輯的覆蓋單元獲取其對應(yīng)的標(biāo)準(zhǔn)控制指令集。
[0082]在本實(shí)施例中,如前所述,由于判斷指令執(zhí)行序列必然包含了控制指令判斷邏輯,且通常通過函數(shù)調(diào)用對控制指令是否正確進(jìn)行判斷(因?yàn)闀?huì)跳轉(zhuǎn)到分支覆蓋單元,因此必然會(huì)有函數(shù)調(diào)用過程,且會(huì)將控制指令作為參數(shù)傳遞),則需要通過獲取前述的標(biāo)準(zhǔn)控制指令集來與輸入的控制指令進(jìn)行比較,因此可通過定位獲取標(biāo)準(zhǔn)控制指令集的指令的地址信息來獲取標(biāo)準(zhǔn)控制指令集。標(biāo)準(zhǔn)控制指令集即能夠觸發(fā)惡意程序的控制指令的集合。
[0083]在本實(shí)施例中,還可提取判斷指令執(zhí)行序列中的函數(shù)調(diào)用的參數(shù)值,根據(jù)參數(shù)值更新獲取到的標(biāo)準(zhǔn)控制指令集。
[0084]可判斷標(biāo)準(zhǔn)控制指令集中是否包含該參數(shù)值,若包含,則表示該控制指令未進(jìn)行加密,若不包含,則表示該控制指令在與標(biāo)準(zhǔn)控制指令集進(jìn)行比對之前進(jìn)行了加密??蛇M(jìn)一步通過地反編譯函數(shù)調(diào)用對應(yīng)的指令獲取該加密函數(shù),然后根據(jù)該加密函數(shù)更新獲取到的標(biāo)準(zhǔn)控制指令集。
[0085]例如,若標(biāo)準(zhǔn)控制指令集中的控制指令均為經(jīng)過加密算法加密后的控制指令,則控制指令在進(jìn)入判斷指令執(zhí)行序列中后,同樣會(huì)在經(jīng)過加密算法處理后再與標(biāo)準(zhǔn)控制指令集中的控制指令進(jìn)行比較。因此,可進(jìn)一步地通過反編譯函數(shù)調(diào)用得到具體的加密函數(shù),并通過相應(yīng)的解密函數(shù)對標(biāo)準(zhǔn)控制指令集中的控制指令進(jìn)行處理,從而將標(biāo)準(zhǔn)控制指令集更新?;蛘?,也可以在后期進(jìn)行分析網(wǎng)絡(luò)數(shù)據(jù)包是否包含惡意程序控制指令時(shí),先將網(wǎng)絡(luò)數(shù)據(jù)包中的數(shù)據(jù)經(jīng)過加密算法處理后再與標(biāo)準(zhǔn)控制指令集進(jìn)行比對。
[0086]在一個(gè)實(shí)施例中,根據(jù)對應(yīng)控制指令判斷邏輯的覆蓋單元獲取標(biāo)準(zhǔn)控制指令集步驟之后還可根據(jù)標(biāo)準(zhǔn)控制指令集生成測試指令,通過修改函數(shù)調(diào)用參數(shù)值輸入測試指令,獲取測試執(zhí)行軌跡,根據(jù)測試執(zhí)行軌跡校驗(yàn)標(biāo)準(zhǔn)控制指令集。
[0087]例如,若僅通過監(jiān)控到10次執(zhí)行軌跡即獲取到標(biāo)準(zhǔn)控制指令集,且標(biāo)準(zhǔn)控制指令集中包括25個(gè)控制指令,則可將該25個(gè)控制指令依次作為測試指令取出,并通過將輸入到條件判斷覆蓋單元中的函數(shù)調(diào)用的參數(shù)值修改為測試指令來獲取對應(yīng)的分支覆蓋單元,從而得到與取出的測試指令對應(yīng)的分支覆蓋單元。若獲取到的分支覆蓋單元各不相同,則意味著獲取到的標(biāo)準(zhǔn)控制指令集校驗(yàn)正確。也就是說,即使監(jiān)控到的10次執(zhí)行軌跡中并沒有完全包含標(biāo)準(zhǔn)控制指令集中的所有控制指令,但是可通過修改條件判斷覆蓋單元中的函數(shù)調(diào)用的參數(shù)值來補(bǔ)全所有可能的控制指令判斷執(zhí)行分支,若分支覆蓋單元各不相同,則意味著僵尸程序根據(jù)不同的控制指令執(zhí)行了不同的操作,從而驗(yàn)證了獲取到的標(biāo)準(zhǔn)控制指令集為正確;否則,若存在相同的分支覆蓋單元,則意味著存在多個(gè)判斷錯(cuò)誤的控制指令(參考if-else語句,判斷錯(cuò)誤的控制指令必然會(huì)進(jìn)入else對應(yīng)的分支覆蓋單元),從而驗(yàn)證標(biāo)準(zhǔn)控制指令集為錯(cuò)誤,需要重新獲取標(biāo)準(zhǔn)控制指令。
[0088]在一個(gè)實(shí)施例中,如圖4所示,一種惡意程序控制指令識(shí)別裝置,包括進(jìn)程監(jiān)控模塊102、執(zhí)行軌跡獲取模塊104、執(zhí)行軌跡篩選模塊106、覆蓋單元定位模塊108以及指令獲取模塊110,其中:
[0089]進(jìn)程監(jiān)控模塊102,用于監(jiān)控惡意程序的注入過程,獲取注入進(jìn)程和注入地址。
[0090]惡意程序在感染主機(jī)后,通常會(huì)通過注入函數(shù)將其綁定在某個(gè)系統(tǒng)進(jìn)程中,該被注入的系統(tǒng)進(jìn)程即為注入進(jìn)程。當(dāng)該注入進(jìn)程加載并運(yùn)行時(shí),則通過函數(shù)調(diào)用啟動(dòng)惡意程序運(yùn)行。例如,在windows系統(tǒng)中,惡意程序通常會(huì)注入到explorer進(jìn)程(資源管理器進(jìn)程)中,從而隨著操作系統(tǒng)的啟動(dòng)而啟動(dòng)。
[0091]在本實(shí)施例中,進(jìn)程監(jiān)控模塊102可用于通過監(jiān)控文件的創(chuàng)建和讀寫操作過程以及進(jìn)程之間的交互行為來確定注入進(jìn)程以及注入函數(shù),通過獲取注入函數(shù)的參數(shù)獲取注入地址以及注入地址的大小。
[0092]執(zhí)行軌跡獲取模塊104,用于監(jiān)控與注入進(jìn)程對應(yīng)的輸入數(shù)據(jù),獲取與輸入數(shù)據(jù)對應(yīng)的執(zhí)行軌跡。
[0093]在一個(gè)實(shí)施例中,執(zhí)行軌跡獲取模塊104可用于在獲取到輸入數(shù)據(jù)后,獲取監(jiān)控時(shí)長,然后在監(jiān)控時(shí)長的時(shí)間長度內(nèi)獲取與輸入數(shù)據(jù)對應(yīng)的執(zhí)行軌跡。監(jiān)控時(shí)長可以為預(yù)設(shè)值,預(yù)設(shè)值優(yōu)選為5分鐘。
[0094]在一個(gè)實(shí)施例中,執(zhí)行軌跡獲取模塊104可用于獲取污點(diǎn)數(shù)據(jù)類型,根據(jù)污點(diǎn)數(shù)據(jù)類型對輸入數(shù)據(jù)進(jìn)行篩選。[0095]污點(diǎn)數(shù)據(jù)類型即可能觸發(fā)惡意程序運(yùn)行的輸入數(shù)據(jù)類型。污點(diǎn)數(shù)據(jù)類型可以是網(wǎng)絡(luò)數(shù)據(jù)包、鍵盤輸入數(shù)據(jù)、操作系統(tǒng)時(shí)間等。污點(diǎn)數(shù)據(jù)類型可預(yù)先設(shè)置。例如,在獲取僵尸網(wǎng)絡(luò)惡意程序的控制指令時(shí),由于用戶在被感染的主機(jī)上的鍵盤輸入等操作不會(huì)產(chǎn)生能觸發(fā)僵尸網(wǎng)絡(luò)惡意程序的控制指令,因此污點(diǎn)數(shù)據(jù)類型可預(yù)設(shè)為網(wǎng)絡(luò)數(shù)據(jù)包,即獲取網(wǎng)絡(luò)數(shù)據(jù)包對應(yīng)的注入進(jìn)程的執(zhí)行軌跡。
[0096]執(zhí)行軌跡即在監(jiān)控時(shí)間內(nèi)運(yùn)行的覆蓋單元的序列。在計(jì)算機(jī)技術(shù)中,程序以二進(jìn)制指令代碼的形式存儲(chǔ)在內(nèi)存空間中,并按照內(nèi)存地址的順序連續(xù)執(zhí)行。當(dāng)執(zhí)行過程中遇到函數(shù)調(diào)用時(shí),則跳轉(zhuǎn)至該函數(shù)調(diào)用對應(yīng)的內(nèi)存空間繼續(xù)執(zhí)行其存儲(chǔ)的二進(jìn)制指令代碼,函數(shù)調(diào)用結(jié)束后,再跳轉(zhuǎn)回繼續(xù)執(zhí)行。覆蓋單元即連續(xù)存儲(chǔ)二進(jìn)制指令代碼的內(nèi)存空間。
[0097]在本實(shí)施例中,執(zhí)行軌跡獲取模塊104可用于根據(jù)獲取到的注入地址提取二進(jìn)制代碼并進(jìn)行反匯編從而得到相應(yīng)的匯編指令??蓪R編指令按地址順序進(jìn)行迭代,將順序執(zhí)行的二進(jìn)制指令劃歸為同一覆蓋單元,若迭代到的指令為函數(shù)調(diào)用指令或程序跳轉(zhuǎn)指令時(shí),則根據(jù)跳轉(zhuǎn)到的內(nèi)存地址進(jìn)行遞歸迭代,并創(chuàng)建對應(yīng)該函數(shù)調(diào)用指令或程序跳轉(zhuǎn)指令的覆蓋單元,從而得到執(zhí)行軌跡對應(yīng)的覆蓋單元集合。
[0098]在本實(shí)施例中,執(zhí)行軌跡獲取模塊104還可用于判斷執(zhí)行軌跡是否對應(yīng)輸入數(shù)據(jù)的傳播軌跡,若不包含,則忽略該執(zhí)行軌跡。
[0099]輸入數(shù)據(jù)的傳播軌跡即輸入數(shù)據(jù)經(jīng)過運(yùn)算操作和復(fù)制操作進(jìn)行傳播的數(shù)據(jù)集合。若執(zhí)行軌跡中的所有覆蓋單元均不包含該數(shù)據(jù)集合中的元素,則該執(zhí)行軌跡與輸入數(shù)據(jù)的傳播軌跡不對應(yīng)。也就是說,在本實(shí)施例中,若執(zhí)行軌跡并沒有對接收到的網(wǎng)絡(luò)數(shù)據(jù)包中的數(shù)據(jù)進(jìn)行提取,與網(wǎng)絡(luò)數(shù)據(jù)包中的數(shù)據(jù)完全無關(guān)時(shí),可忽略該執(zhí)行軌跡。
[0100]進(jìn)一步的,在迭代過程中,執(zhí)行軌跡獲取模塊104還可用于獲取覆蓋單元對應(yīng)的運(yùn)行次數(shù)和運(yùn)行時(shí)間。由于指令在執(zhí)行時(shí),通常會(huì)存在循環(huán)執(zhí)行的情況,因此,覆蓋單元還對應(yīng)運(yùn)行次數(shù),可根據(jù)運(yùn)行次數(shù)判斷該覆蓋單元被循環(huán)運(yùn)行了多少次。
[0101 ] 在本實(shí)施例中,還可將監(jiān)控獲取到的執(zhí)行軌跡存儲(chǔ)在執(zhí)行軌跡數(shù)據(jù)庫中,可將執(zhí)行軌跡包含的覆蓋單元的內(nèi)存起始位置、運(yùn)行時(shí)間和運(yùn)行次數(shù)與監(jiān)控時(shí)間對應(yīng)存儲(chǔ)在執(zhí)行軌跡數(shù)據(jù)庫中。
[0102]執(zhí)行軌跡篩選模塊106,用于對執(zhí)行軌跡進(jìn)行篩選,篩選得到與注入地址對應(yīng)的執(zhí)行軌跡。
[0103]在一個(gè)實(shí)施例中,執(zhí)行軌跡篩選模塊106可用于獲取執(zhí)行軌跡中包含的系統(tǒng)函數(shù)調(diào)用指令,移除系統(tǒng)函數(shù)調(diào)用指令對應(yīng)的覆蓋單元。
[0104]惡意程序在運(yùn)行時(shí),可能會(huì)進(jìn)行系統(tǒng)函數(shù)調(diào)用。例如,可通過調(diào)用系統(tǒng)函數(shù)獲取操作系統(tǒng)當(dāng)前時(shí)間。在本實(shí)施例中,可僅在執(zhí)行軌跡中保留系統(tǒng)函數(shù)調(diào)用的調(diào)用語句和返回語句,而過濾掉系統(tǒng)函數(shù)調(diào)用對應(yīng)的覆蓋單元。
[0105]系統(tǒng)函數(shù)調(diào)用對應(yīng)的覆蓋單元為操作系統(tǒng)加載動(dòng)態(tài)鏈接庫文件的內(nèi)存區(qū)域,與惡意程序的控制指令無關(guān),過濾掉系統(tǒng)函數(shù)調(diào)用對應(yīng)的覆蓋單元可排除系統(tǒng)函數(shù)調(diào)用的干擾。
[0106]在一個(gè)實(shí)施例中,執(zhí)行軌跡篩選模塊106還可用于獲取執(zhí)行軌跡中包含的與注入進(jìn)程對應(yīng)的調(diào)用指令,移除注入進(jìn)程對應(yīng)的調(diào)用指令對應(yīng)的覆蓋單元。
[0107]在獲取到輸入數(shù)據(jù)后,注入進(jìn)程也在執(zhí)行過程中,執(zhí)行軌跡可能會(huì)包含注入進(jìn)程對應(yīng)的覆蓋單元,通過移除與注入進(jìn)程對應(yīng)的調(diào)用指令對應(yīng)的覆蓋單元,可避免注入進(jìn)程的指令造成的誤識(shí)別。
[0108]在一個(gè)實(shí)施例中,執(zhí)行軌跡篩選模塊106還可用于獲取執(zhí)行軌跡包含的覆蓋單元及覆蓋單元的運(yùn)行次數(shù),根據(jù)包含的覆蓋單元和運(yùn)行次數(shù)計(jì)算執(zhí)行軌跡之間的相似度;獲取相似度閾值;將相似度大于所述相似度閾值的執(zhí)行軌跡歸一化。
[0109]也就是說,若兩條執(zhí)行軌跡包含的覆蓋單元大部分相同,則可認(rèn)為該兩條執(zhí)行軌跡對應(yīng)同一條控制指令,從而可將其中一條移除。
[0110]在本實(shí)施例中,執(zhí)行軌跡篩選模塊106還可用于獲取執(zhí)行軌跡包含的內(nèi)存地址相同且運(yùn)行次數(shù)相同的相同覆蓋單元個(gè)數(shù)、內(nèi)存地址不同的特有覆蓋單元個(gè)數(shù)以及內(nèi)存地址相同但運(yùn)行次數(shù)不同的近似覆蓋單元個(gè)數(shù),根據(jù)相同覆蓋單元個(gè)數(shù)、特有覆蓋單元個(gè)數(shù)和,覆蓋單元個(gè)數(shù)計(jì)算執(zhí)行軌跡之間的相似度。
[0111]在本實(shí)施例中,執(zhí)行軌跡篩選模塊106還可用于在獲取到的執(zhí)行軌跡中迭代選取執(zhí)行軌跡I,遍歷獲取到的執(zhí)行軌跡R,根據(jù)公式:
【權(quán)利要求】
1.一種惡意程序控制指令識(shí)別方法,包括: 監(jiān)控惡意程序的注入過程,獲取注入進(jìn)程和注入地址; 監(jiān)控與所述注入進(jìn)程對應(yīng)的輸入數(shù)據(jù),獲取與所述輸入數(shù)據(jù)對應(yīng)的執(zhí)行軌跡; 對所述執(zhí)行軌跡進(jìn)行篩選,篩選得到與所述注入地址對應(yīng)的執(zhí)行軌跡; 根據(jù)篩選得到的執(zhí)行軌跡計(jì)算代碼覆蓋率,根據(jù)所述代碼覆蓋率定位對應(yīng)控制指令判斷邏輯的覆蓋單元; 根據(jù)所述對應(yīng)控制指令判斷邏輯的覆蓋單元獲取標(biāo)準(zhǔn)控制指令集。
2.根據(jù)權(quán)利要求1所述的惡意程序控制指令識(shí)別方法,其特征在于,所述對所述執(zhí)行軌跡進(jìn)行篩選,篩選得到與所述注入地址對應(yīng)的執(zhí)行軌跡的步驟還包括: 獲取所述執(zhí)行軌跡中包含的系統(tǒng)函數(shù)調(diào)用指令; 移除所述系統(tǒng)函數(shù)調(diào)用指令對應(yīng)的覆蓋單元。
3.根據(jù)權(quán)利要求1所述的惡意程序控制指令識(shí)別方法,其特征在于,所述對所述執(zhí)行軌跡進(jìn)行篩選,篩選得到與所述注入地址對應(yīng)的執(zhí)行軌跡的步驟還包括: 獲取所述執(zhí)行軌跡中包含的與所述注入進(jìn)程對應(yīng)的調(diào)用指令; 移除所述注入進(jìn)程對應(yīng)的調(diào)用指令對應(yīng)的覆蓋單元。
4.根據(jù)權(quán)利要求1所述的惡意程序控制指令識(shí)別方法,其特征在于,所述對所述執(zhí)行軌跡進(jìn)行篩選,篩選得到與所述注入地址對應(yīng)的執(zhí)行軌跡的步驟還包括: 獲取所述執(zhí)行軌跡包含的覆蓋單元及所述覆蓋單元的運(yùn)行次數(shù),根據(jù)所述包含的覆蓋單元和運(yùn)行次數(shù)計(jì)算所述執(zhí)行軌跡之間的相似度; 獲取相似度閾值; 將相似度大于所述相似度閾值的執(zhí)行軌跡歸一化。
5.根據(jù)權(quán)利要求1所述的惡意程序控制指令識(shí)別方法,其特征在于,所述獲取所述執(zhí)行軌跡包含的覆蓋單元及所述覆蓋單元的運(yùn)行次數(shù),根據(jù)所述包含的覆蓋單元和運(yùn)行次數(shù)計(jì)算所述執(zhí)行軌跡之間的相似度的步驟為: 獲取所述執(zhí)行軌跡包含的內(nèi)存地址相同且運(yùn)行次數(shù)相同的相同覆蓋單元個(gè)數(shù)、內(nèi)存地址不同的特有覆蓋單元個(gè)數(shù)以及內(nèi)存地址相同但運(yùn)行次數(shù)不同的近似覆蓋單元個(gè)數(shù);根據(jù)所述相同覆蓋單元個(gè)數(shù)、特有覆蓋單元個(gè)數(shù)和近似覆蓋單元個(gè)數(shù)計(jì)算所述執(zhí)行軌跡之間的相似度。
6.根據(jù)權(quán)利要求1所述的惡意程序控制指令識(shí)別方法,其特征在于,所述根據(jù)篩選得到的執(zhí)行軌跡計(jì)算代碼覆蓋率包括: 獲取篩選得到的執(zhí)行軌跡的覆蓋單元及其運(yùn)行次數(shù); 計(jì)算所述覆蓋單元在所述篩選得到的執(zhí)行軌跡中各自的出現(xiàn)次數(shù); 根據(jù)所述出現(xiàn)次數(shù)計(jì)算代碼覆蓋率。
7.根據(jù)權(quán)利要求6所述的惡意程序控制指令識(shí)別方法,其特征在于,所述根據(jù)所述代碼覆蓋率定位對應(yīng)控制指令判斷邏輯的覆蓋單元的步驟為: 根據(jù)所述代碼覆蓋率獲取出現(xiàn)次數(shù)為I的分支覆蓋單元和每個(gè)執(zhí)行軌跡均包含的且運(yùn)行次數(shù)不同的條件判斷覆蓋單元; 根據(jù)所述分支覆蓋單元和條件判斷覆蓋單元定位對應(yīng)控制指令判斷邏輯的覆蓋單元。
8.根據(jù)權(quán)利要求6所述的惡意程序控制指令識(shí)別方法,其特征在于,所述根據(jù)所述分支覆蓋單元和條件判斷覆蓋單元定位對應(yīng)控制指令判斷邏輯的覆蓋單元的步驟為: 獲取所述分支覆蓋單元的分支時(shí)間戳和所述條件判斷覆蓋單元的判斷時(shí)間戳; 獲取運(yùn)行時(shí)間戳在所述分支時(shí)間戳和所述判斷時(shí)間戳之間的覆蓋單元,并根據(jù)獲取到的覆蓋單元、分支覆蓋單元和條件判斷覆蓋單元定位判斷指令執(zhí)行序列。
9.根據(jù)權(quán)利要求1至8任一項(xiàng)所述的惡意程序控制指令識(shí)別方法,其特征在于,所述根據(jù)所述對應(yīng)控制指令判斷邏輯的覆蓋單元獲取標(biāo)準(zhǔn)控制指令集步驟之后還包括: 根據(jù)所述標(biāo)準(zhǔn)控制指令集生成測試指令; 通過修改函數(shù)調(diào)用參數(shù)值輸入測試指令,獲取測試執(zhí)行軌跡; 根據(jù)所述測試執(zhí)行軌跡校驗(yàn)所述標(biāo)準(zhǔn)控制指令集。
10.根據(jù)權(quán)利要求1至8任一項(xiàng)所述的惡意程序控制指令識(shí)別方法,其特征在于,所述監(jiān)控與所述注入進(jìn)程對應(yīng)的輸入數(shù)據(jù)的步驟包括: 獲取污點(diǎn)數(shù)據(jù)類型; 根據(jù)所述污點(diǎn)數(shù)據(jù)類型對所述輸入數(shù)據(jù)進(jìn)行篩選。
11.一種惡意程序控制指令識(shí)別裝置,其特征在于,包括: 進(jìn)程監(jiān)控模塊,用于監(jiān)控惡意程序的注入過程,獲取注入進(jìn)程和注入地址; 執(zhí)行軌跡獲取模塊,用于監(jiān)控與所述注入進(jìn)程對應(yīng)的輸入數(shù)據(jù),獲取與所述輸入數(shù)據(jù)對應(yīng)的執(zhí)行軌跡; 執(zhí)行軌跡篩選模塊,用于對所述執(zhí)行軌跡進(jìn)行篩選,篩選得到與所述注入地址對應(yīng)的執(zhí)行軌跡; 覆蓋單元定位模塊,用于根據(jù)篩選得到的執(zhí)行軌跡計(jì)算代碼覆蓋率,根據(jù)所述代碼覆蓋率定位對應(yīng)控制指令判斷邏輯的覆蓋單元; 指令獲取模塊,用于根據(jù)所述對應(yīng)控制指令判斷邏輯的覆蓋單元獲取標(biāo)準(zhǔn)控制指令集。
12.根據(jù)權(quán)利要求11所述的惡意程序控制指令識(shí)別裝置,其特征在于,所述執(zhí)行軌跡篩選模塊還用于獲取所述執(zhí)行軌跡中包含的系統(tǒng)函數(shù)調(diào)用指令,移除所述系統(tǒng)函數(shù)調(diào)用指令對應(yīng)的覆蓋單元。
13.根據(jù)權(quán)利要求11所述的惡意程序控制指令識(shí)別裝置,其特征在于,所述執(zhí)行軌跡篩選模塊還用于獲取所述執(zhí)行軌跡中包含的與所述注入進(jìn)程對應(yīng)的調(diào)用指令,移除所述注入進(jìn)程對應(yīng)的調(diào)用指令對應(yīng)的覆蓋單元。
14.根據(jù)權(quán)利要求11所述的惡意程序控制指令識(shí)別裝置,其特征在于,所述執(zhí)行軌跡篩選模塊還用于獲取所述執(zhí)行軌跡包含的覆蓋單元及所述覆蓋單元的運(yùn)行次數(shù),根據(jù)所述包含的覆蓋單元和運(yùn)行次數(shù)計(jì)算所述執(zhí)行軌跡之間的相似度, 獲取相似度閾值,將相似度大于所述相似度閾值的執(zhí)行軌跡歸一化。
15.根據(jù)權(quán)利要求11所述的惡意程序控制指令識(shí)別裝置,其特征在于,所述執(zhí)行軌跡篩選模塊還用于獲取所述執(zhí)行軌跡包含的內(nèi)存地址相同且運(yùn)行次數(shù)相同的相同覆蓋單元個(gè)數(shù)、內(nèi)存地址不同的特有覆蓋單元個(gè)數(shù)以及內(nèi)存地址相同但運(yùn)行次數(shù)不同的近似覆蓋單元個(gè)數(shù),根據(jù)所述相同覆蓋單元個(gè)數(shù)、特有覆蓋單元個(gè)數(shù)和近似覆蓋單元個(gè)數(shù)計(jì)算所述執(zhí)行軌跡之間的相似度。
16.根據(jù)權(quán)利要求11所述的惡意程序控制指令識(shí)別裝置,其特征在于,所述覆蓋單元定位模塊還用于獲取篩選得到的執(zhí)行軌跡的覆蓋單元及其運(yùn)行次數(shù),計(jì)算所述覆蓋單元在所述篩選得到的執(zhí)行軌跡中各自的出現(xiàn)次數(shù),根據(jù)所述出現(xiàn)次數(shù)計(jì)算代碼覆蓋率。
17.根據(jù)權(quán)利要求16所述的惡意程序控制指令識(shí)別裝置,其特征在于,所述覆蓋單元定位模塊還用于根據(jù)所述代碼覆蓋率獲取出現(xiàn)次數(shù)為I的分支覆蓋單元和每個(gè)執(zhí)行軌跡均包含的且運(yùn)行次數(shù)不同的條件判斷覆蓋單元,根據(jù)所述分支覆蓋單元和條件判斷覆蓋單元定位對應(yīng)控制指令判斷邏輯的覆蓋單元。
18.根據(jù)權(quán)利要求16所述的惡意程序控制指令識(shí)別裝置,其特征在于,所述覆蓋單元定位模塊還用于獲取所述分支覆蓋單元的分支時(shí)間戳和所述條件判斷覆蓋單元的判斷時(shí)間戳,獲取運(yùn)行時(shí)間戳在所述分支時(shí)間戳和所述判斷時(shí)間戳之間的覆蓋單元,并根據(jù)獲取到的覆蓋單元、分支覆蓋單元和條件判斷覆蓋單元定位判斷指令執(zhí)行序列。
19.根據(jù)權(quán)利要求11至18任一項(xiàng)所述的惡意程序控制指令識(shí)別裝置,其特征在于,所述裝置還包括控制指令校驗(yàn)?zāi)K,用于根據(jù)所述標(biāo)準(zhǔn)控制指令集生成測試指令,通過修改函數(shù)調(diào)用參數(shù)值輸入測 試指令,獲取測試執(zhí)行軌跡,根據(jù)所述測試執(zhí)行軌跡校驗(yàn)所述標(biāo)準(zhǔn)控制指令集。
20.根據(jù)權(quán)利要求11至18任一項(xiàng)所述的惡意程序控制指令識(shí)別裝置,其特征在于,所述執(zhí)行軌跡獲取模塊還用于獲取污點(diǎn)數(shù)據(jù)類型,根據(jù)所述污點(diǎn)數(shù)據(jù)類型對所述輸入數(shù)據(jù)進(jìn)行篩選。
【文檔編號(hào)】G06F21/56GK103914652SQ201310007680
【公開日】2014年7月9日 申請日期:2013年1月9日 優(yōu)先權(quán)日:2013年1月9日
【發(fā)明者】王志, 鄒贊, 張曉康, 賈春福, 劉露 申請人:騰訊科技(深圳)有限公司, 南開大學(xué)