齊玉東 孫明瑋 丁海強(qiáng) 李程瑜
(海軍航空大學(xué) 煙臺(tái) 264001)
惡意代碼分析方法有多種類型,一般地,傳統(tǒng)惡意代碼分析方法分為基于代碼特征的分析方法、基于語(yǔ)義的分析方法、基于代碼行為的分析方法三種[1~7]。隨著惡意代碼與反惡意代碼的不斷博弈,信息安全技術(shù)取得了長(zhǎng)足進(jìn)步,近年來(lái)出現(xiàn)的新技術(shù)有:
1)客戶端蜜罐技術(shù)[8]
客戶端蜜罐針對(duì)客戶端軟件可能存在的安全薄弱性,通過(guò)主動(dòng)開(kāi)啟客戶端軟件訪問(wèn)服務(wù)器,監(jiān)控有無(wú)異常行為出現(xiàn),對(duì)未知惡意程序進(jìn)行跟蹤分析,進(jìn)而達(dá)到研究學(xué)習(xí)并保障安全的目的[9]??蛻舳嗣酃拗饕槍?duì)Web瀏覽器和E-mail客戶端,因此它需要數(shù)據(jù)源,面臨著“如何達(dá)到大的網(wǎng)絡(luò)覆蓋面”等一系列問(wèn)題的挑戰(zhàn)。為解決這一點(diǎn),客戶端蜜罐將蜜罐和爬蟲(chóng)(spider)結(jié)合在一起,用爬蟲(chóng)爬取網(wǎng)絡(luò)URL來(lái)尋找可能存在的通過(guò)客戶端軟件執(zhí)行的惡意軟件。
2)沙盒過(guò)濾技術(shù)[10]
在面對(duì)混淆加密后的JavaScript代碼時(shí),單純通過(guò)關(guān)鍵字搜索來(lái)識(shí)別惡意網(wǎng)頁(yè)的辦法將會(huì)失敗,這種情況下的有效辦法就是通過(guò)內(nèi)置的HTML以及JavaScript解析引擎在一個(gè)虛擬環(huán)境中對(duì)網(wǎng)頁(yè)中的JavaScript進(jìn)行實(shí)際解析執(zhí)行,并在解析執(zhí)行過(guò)程中跟蹤JavaScript的代碼行為,這種檢測(cè)方式稱為沙盒檢測(cè)(Sandbox)。該方法理論上的檢測(cè)正確率很高,但在實(shí)現(xiàn)中,檢測(cè)程序內(nèi)置的HTML以及JavaScript解析引擎有可能在功能上沒(méi)有實(shí)現(xiàn)完整,或者一些行為與真實(shí)瀏覽器有偏差,而這些偏差卻可以被惡意網(wǎng)頁(yè)的編寫(xiě)者利用以躲避檢測(cè)程序的跟蹤檢查。
本文借鑒搜索引擎的文本比較算法[11],應(yīng)用Hash算法提出了基于特征匹配的惡意代碼變種檢測(cè)算法。該方法是基于惡意代碼分析報(bào)告的文本特性進(jìn)行特征匹配,有效地從惡意代碼的“本源”進(jìn)行探究,抓住惡意代碼的行為本質(zhì),從而實(shí)現(xiàn)惡意代碼變種檢測(cè)。另外,利用海明距離和余弦相似度衡量特征匹配程度,根據(jù)不同應(yīng)用設(shè)定閾值,利用“雙保險(xiǎn)”將待測(cè)惡意代碼行為分析報(bào)告和原型庫(kù)中報(bào)告進(jìn)行特征匹配,實(shí)現(xiàn)變種檢測(cè)目的。
本文提出的基于特征匹配進(jìn)行惡意代碼變種檢測(cè),通過(guò)對(duì)分析報(bào)告與原型庫(kù)文本比對(duì),實(shí)現(xiàn)惡意代碼特征匹配。如果直接比較兩分析報(bào)告的特征詞匯,將導(dǎo)致整個(gè)分析報(bào)告的向量維度過(guò)大,而使計(jì)算代價(jià)過(guò)大。為了減少算法的復(fù)雜度,本文利用降維思想[12],基于Hash算法將高維的特征向量映射成一個(gè)f-bit簽名,通過(guò)計(jì)算兩個(gè)分析報(bào)告f-bit簽名的海明距離和余弦相似度來(lái)確定動(dòng)態(tài)行為分析報(bào)告(惡意代碼文本)是否相同或高度相似,進(jìn)而判斷惡意代碼的類別,達(dá)到檢測(cè)目的。
Hash算法[13]中Hash,一般翻譯做“散列”,也可直接音譯為“哈?!保菍⑷我忾L(zhǎng)度輸入(又叫做預(yù)映射,pre-image),通過(guò)散列算法,變成固定長(zhǎng)度輸出,該輸出就是Hash散列值。該轉(zhuǎn)換時(shí)一種壓縮映射,即散列值空間通常遠(yuǎn)小于輸入空間,不同輸入可能會(huì)散列成相同輸出,而不可能從散列值來(lái)唯一確定輸入值。簡(jiǎn)單說(shuō)就是一種將任意長(zhǎng)度消息壓縮到某一固定長(zhǎng)度消息的摘要函數(shù),它把一些不同長(zhǎng)度的信息轉(zhuǎn)化成雜亂的一定位編碼,這些編碼值叫做Hash值。因此使用Hash算法能極大地降低原文本向量維度,進(jìn)而降低運(yùn)算代價(jià),提高運(yùn)算速度[14]。Hash找到了一種數(shù)據(jù)內(nèi)容和數(shù)據(jù)存放地址之間的映射關(guān)系。該算法實(shí)現(xiàn)原理如圖1所示。
通過(guò)對(duì)代碼分析報(bào)告比對(duì)實(shí)現(xiàn)惡意代碼變種檢測(cè),最簡(jiǎn)單直接的方法是對(duì)文本進(jìn)行分詞后進(jìn)行直接比對(duì)。但這種方法缺點(diǎn)十分明顯:方法復(fù)雜,受到數(shù)據(jù)稀疏和數(shù)據(jù)噪聲影響太大,運(yùn)算代價(jià)太高,運(yùn)算速度太慢。將文字比較轉(zhuǎn)化為向量空間信息比較,可在保證準(zhǔn)確性的前提下,實(shí)現(xiàn)分析報(bào)告高效比對(duì)。向量空間模型作為向量標(biāo)識(shí)符,是用來(lái)表示文本文件的代數(shù)模型。向量空間模型中每一維都相當(dāng)于一個(gè)獨(dú)立詞組,每個(gè)分詞有一個(gè)權(quán)重,即每個(gè)分詞的重要程度[16]。因此,本文首先將分析報(bào)告中的信息映射成不同Hash值,通過(guò)加權(quán)求和得到能夠表示該文本的特征向量。求該向量與已知原型庫(kù)文本的余弦相似度,進(jìn)而判斷兩文本相似度。余弦值越接近1,就表明夾角越接近0°,也就是兩個(gè)向量越相似,即“余弦相似性”,其公式為
其中,Ai為分析報(bào)告的特征向量,Bi為原型庫(kù)的特征向量。
將分析報(bào)告轉(zhuǎn)化為一個(gè)向量后,要進(jìn)行兩個(gè)向量的相似程度比較。兩個(gè)向量的相似程度比較要通過(guò)對(duì)兩個(gè)向量的海明距離實(shí)現(xiàn)。海明距離的數(shù)學(xué)公式為
其中⊕表示模二加運(yùn)算,xk={0,1},yk={0,1}。海明距離即兩個(gè)二進(jìn)制向量位數(shù)的不同個(gè)數(shù),例如11001與11110,不同個(gè)數(shù)為3,即海明距離為3。海明距離反映兩個(gè)碼字在同一位置出現(xiàn)不同符號(hào)的次數(shù),為整個(gè)分析報(bào)告的相似度比較提供了支持。它定量表示兩個(gè)分析報(bào)告的不同程度,一般情況下,認(rèn)為海明距離小于等于3為相同或高度相似。
以上述三種關(guān)鍵技術(shù)為基礎(chǔ),本文的設(shè)計(jì)思路如圖2所示。
圖2 設(shè)計(jì)思路圖
首先將每一個(gè)分詞采用Hash算法映射成f維空間的一個(gè)向量,映射規(guī)則只要求在很多不同特征下對(duì)應(yīng)向量為均勻隨機(jī)分布,且在相同特征下對(duì)應(yīng)向量唯一;然后將一個(gè)文檔中包含的各個(gè)特征對(duì)應(yīng)的向量加權(quán)求和,系數(shù)等于該特征權(quán)重,權(quán)重即該分詞出現(xiàn)次數(shù),得到的和向量表示這個(gè)文檔,最后進(jìn)行特征匹配。下面進(jìn)行匹配算法計(jì)算階段。
1)海明距離計(jì)算。為提高運(yùn)行速度,將向量進(jìn)一步壓縮,如果和向量的某一維大于0,則最終簽名對(duì)應(yīng)位為1,否則為0。通過(guò)一系列步驟后,可得到該報(bào)告在整個(gè)向量空間的方向信息,省略了在向量空間各個(gè)方向的大小信息,這樣每個(gè)分析報(bào)告都能產(chǎn)生一個(gè)自己專屬的簽名,這個(gè)簽名便能代表這個(gè)分析報(bào)告。通過(guò)對(duì)該簽名的比較,便可實(shí)現(xiàn)目的。
2)余弦相似度計(jì)算。將所得的和向量帶入計(jì)算式(1)進(jìn)行計(jì)算,即可得到該向量與已知原型庫(kù)文本和向量的余弦相似度。余弦值越接近1,表明夾角越接近0°,相似程度越高;余弦值越接近-1,表明夾角越接近180°,相似程度越低。利用向量相似度反映文本相似度,進(jìn)而判斷惡意代碼類型。具體軟件實(shí)現(xiàn)流程圖如圖3所示。
若所測(cè)惡意代碼與某已知惡意代碼類型的海明距離小于等于3,同時(shí)二者的預(yù)先相似度在0.90以上,則說(shuō)明其為該類型;若海明距離在3~10之間,同時(shí)預(yù)先相似度在0.5~0.9之間,則說(shuō)明其為該類型下的惡意代碼變種;若未知惡意代碼與各已知類型均不貼近(海明距離大于10、余弦相似度小于0.5),說(shuō)明其為新型惡意代碼。
1)實(shí)驗(yàn)一
將已知惡意代碼產(chǎn)生的分析報(bào)告分別導(dǎo)入程序中,統(tǒng)計(jì)各類分析報(bào)告的海明距離、余弦相似度,驗(yàn)證該方法準(zhǔn)確性。其中典型惡意代碼包括:Koobface、Bagel、Jessica Worm為蠕蟲(chóng);九天為后門;Trojan.PSW.QQGame、Trojan.PSW.Misc為 木 馬 ;Macro Virus、File Infector Virus為計(jì)算機(jī)病毒;單片機(jī)邏輯炸彈為邏輯炸彈。
2)實(shí)驗(yàn)二
將未知惡意代碼產(chǎn)生的分析報(bào)告分別導(dǎo)入程序中,統(tǒng)計(jì)各類分析報(bào)告的海明距離、余弦相似度,判斷所屬類別,檢測(cè)變種。在實(shí)驗(yàn)一的基礎(chǔ)上,隨機(jī)選取5個(gè)未知類型的惡意代碼進(jìn)行惡意代碼歸類及變種檢測(cè)。
圖3 軟件流程圖
實(shí)驗(yàn)一中對(duì)已知惡意代碼的分析統(tǒng)計(jì):已知典型惡意代碼的海明距離計(jì)算數(shù)據(jù)結(jié)果如表1所示,已知典型惡意代碼的余弦相似度計(jì)算數(shù)據(jù)結(jié)果如表2所示。
根據(jù)表1、表2數(shù)據(jù)顯示:Koobface、Bagel、Jessica Worm為蠕蟲(chóng);九天為后門;Trojan.PSW.QQGame、Trojan.PSW.Misc為 木 馬 ;Macro Virus、File Infector Virus為計(jì)算機(jī)病毒;單片機(jī)邏輯炸彈為邏輯炸彈。實(shí)驗(yàn)結(jié)果均正確。
在實(shí)驗(yàn)二中,對(duì)未知惡意代碼的分析并判斷類型。未知惡意代碼海明距離計(jì)算如表3所示。未知惡意代碼余弦相似度計(jì)算如表4所示。未知惡意代碼類型判斷如表5所示。
根據(jù)表3、表4、表5數(shù)據(jù)顯示:未知惡意代碼1、5為蠕蟲(chóng)(其中5為該類型變種);未知惡意代碼3為后門;未知惡意代碼2為木馬;未知惡意代碼4為計(jì)算機(jī)病毒。
通過(guò)以上兩組實(shí)驗(yàn)可以發(fā)現(xiàn),該設(shè)計(jì)的檢測(cè)準(zhǔn)確率較高,與理論結(jié)果相符合。
表1 實(shí)驗(yàn)一海明距離計(jì)算結(jié)果
表2 實(shí)驗(yàn)一余弦相似度計(jì)算結(jié)果
表3 實(shí)驗(yàn)二海明距離計(jì)算結(jié)果
表4 實(shí)驗(yàn)二余弦相似度計(jì)算結(jié)果
表5 實(shí)驗(yàn)二惡意代碼類型判斷
本文基于分析報(bào)告的文本特征匹配,運(yùn)用降維思想,以海明距離和余弦相似度為理論依據(jù),實(shí)現(xiàn)了對(duì)惡意代碼的歸類及變種檢測(cè),可應(yīng)用于木馬防治、病毒免疫和入侵檢測(cè)等計(jì)算機(jī)網(wǎng)絡(luò)安全技術(shù)領(lǐng)域。
采用直接比對(duì)的工作模式使得本文與惡意代碼前期檢測(cè)軟件能進(jìn)行無(wú)縫鏈接,亦即可成為其他測(cè)試軟件的結(jié)果分析模塊,使其應(yīng)用范圍更加廣泛;另一方面,直接處理更能體現(xiàn)報(bào)告的真實(shí)內(nèi)容,不存在丟失重要信息的可能性,也不會(huì)增加冗余信息。
此外,本文采用模塊化設(shè)計(jì),整體架構(gòu)靈活多變,可在今后完善工作時(shí)新增其他更高效特征匹配衡量方法,在保證程序正確、高效運(yùn)行的前提下,使得惡意代碼的變種檢測(cè)更加快速、準(zhǔn)確。