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