王 沖,李炳辰,王進(jìn)保
(天津渤海職業(yè)技術(shù)學(xué)院信息工程系,天津 300300)
隨著移動互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,移動智能終端的安全問題日益突出,相對于傳統(tǒng)的PC機(jī),移動智能設(shè)備需要更高的安全性和隱私性[1-3]。隨著用戶對智能終端設(shè)備依賴性的不斷增加,也會帶來泄露用戶敏感信息等相關(guān)問題。
對惡意軟件分類是深入分析攻擊者的意圖和其發(fā)動攻擊活動的手段,通過聚類分析將惡意軟件聚類成惡意軟件家族,提取惡意軟件家族的特征信息,以此來分類蜜罐捕獲到的惡意軟件。通過對惡意軟件的分類,有利于研究移動智能終端上惡意軟件的更替變化,給用戶提供更好的安全使用策略。
文獻(xiàn)[4]提出兩種惡意軟件特征提取方法:第一種是提取惡意軟件的函數(shù)內(nèi)操作碼,通過余弦相似度計算不同惡意軟件變種之間的距離以此劃分惡意軟件的類別;第二種是提取惡意軟件的函數(shù)調(diào)用圖信息,計算惡意軟件之間的相似度。兩種方法都是從函數(shù)功能的角度出發(fā),通過比較提取特征信息計算惡意軟件之間的相似度。
文獻(xiàn)[5]通過從惡意軟件的運(yùn)行機(jī)制和工作原理的角度來分類惡意軟件,分類和歸納各類惡意軟件的特點和機(jī)制,并預(yù)測了惡意軟件的發(fā)展趨勢,但該方法收集并分類的惡意軟件僅僅是PC端的惡意軟件,而且收集的惡意軟件版本舊。
文獻(xiàn)[6]提出將文本挖掘技術(shù)應(yīng)用到惡意軟件分類中,通過代碼串提取方法提取結(jié)構(gòu)化的代碼串,再使用層次聚類算法將惡意軟件聚類成惡意軟件家族,然后使用文本挖掘中提取關(guān)鍵字的計算方式設(shè)計惡意軟件家族特征向量提取算法,給出定義、提取特征向量算法流程和代碼實現(xiàn);最后設(shè)計分類器,給出距離計算公式和分類算法流程。通過程序?qū)崿F(xiàn)了層次聚類算法、惡意軟件家族特征提取算法和K-NN分類算法。
對惡意軟件分類是深入分析攻擊者的意圖和其發(fā)動攻擊活動的有效手段[7-9],因此提出了基于文本挖掘的惡意軟件分類方法的框架圖,如圖1所示。按過程劃分,惡意軟件分類分為4個階段:
1)代碼串提取階段 用于提取結(jié)構(gòu)化的代碼串。先將惡意軟件脫殼,然后使用反匯編工具Androguard進(jìn)行反匯編,按照CFG語法規(guī)則提取結(jié)構(gòu)化的代碼串。
2)聚類分析階段 用于生成惡意軟件家族。首先對特征代碼串進(jìn)行向量空間映射,構(gòu)建特征矩陣,然后設(shè)計實現(xiàn)惡意軟件層次聚類算法,最后應(yīng)用層次聚類算法生成聚類樹并劃分成惡意軟件家族。
3)家族特征分析與特征向量提取階段 使用文本挖掘中提取關(guān)鍵字的方式設(shè)計實現(xiàn)惡意軟件家族特征提取算法,實現(xiàn)對惡意軟件家族特征向量的提取。
4)分類階段 主要完成分類器的設(shè)計,考慮樣本距離計算公式和分類算法。通過以上3個階段,計算特征向量之間的距離,用K-NN分類算法對其進(jìn)行惡意軟件家族劃分,確定惡意軟件所屬的家族類別。
圖1 惡意軟件分類算法框架圖Fig.1 Flowchart of malware classification algorithm
為了使分類更準(zhǔn)確,需要從惡意軟件中提取程序代碼串。首先獲得樣本,判斷惡意軟件是否加殼。加殼是一種常見的對抗反編譯的技術(shù)。若程序加殼,則進(jìn)行脫殼處理;若沒有加殼則將應(yīng)用程序直接反匯編。反匯編后得到Class.dex和AndroidManifest.xml等源碼文件,可用反匯編工具Androguard生成源代碼的控制流圖和函數(shù)調(diào)用圖,并且AndroidManifest.xml文件可以直接轉(zhuǎn)化為可讀的文本xml文件。提取代碼結(jié)構(gòu)流程圖如圖2所示。
圖2 代碼串提取方法流程Fig.2 Code string extracting stage
Everit對聚類的定義:將相似的對象劃分進(jìn)一個類簇,類簇與類簇之間的元素是不相似的[10-12]。通過惡意軟件代碼串提取、特征代碼串選擇,構(gòu)造惡意軟件特征矩陣,應(yīng)用層次聚類算法對惡意軟件聚類,過程如圖3所示。
圖3 惡意軟件聚類過程Fig.3 Malware clustering stage
聚類樣本來源于網(wǎng)絡(luò)收集到的安卓惡意軟件樣本,共計2 556個。特征代碼串選擇有兩方面因素:一方面,通過分析大量的安卓惡意軟件,總結(jié)安卓惡意軟件常見的12類高風(fēng)險行為;另一方面,惡意軟件通過代碼串提取方法后可以用一系列代碼串c1,c2,…,cn表示,找出與高風(fēng)險惡意行為有關(guān)方法的代碼串作為惡意軟件的特征代碼串。將特征代碼串構(gòu)成特征矩陣,計算惡意軟件之間的距離,通過層次聚類算法將惡意軟件聚類成惡意軟件家族,各家族內(nèi)的惡意軟件具有相似的結(jié)構(gòu)和功能。
對惡意軟件的特征代碼串?dāng)?shù)據(jù)c1,c2,…,cn進(jìn)行向量空間映射,轉(zhuǎn)化為計算機(jī)可處理的數(shù)據(jù)類型,即
其中:s(i,j)表示元素 i,j間的距離,可表示為
惡意軟件樣本數(shù)量用p表示,特征代碼串用c表示。
惡意軟件樣本特征矩陣如下
其中:向量中行代表是否含有特征代碼串ci,若存在該特征,則對應(yīng)位置上的dij標(biāo)記為1;若不具備該特征,則dij標(biāo)記為0。
層次聚類算法從底層向上,將每一個惡意軟件最初視為一類,計算類與類之間的距離,找到距離最近的兩個惡意軟件聚為一個新類,當(dāng)所有的惡意軟件合并成一個類簇時算法終止,否則繼續(xù)執(zhí)行找距離最近的兩個惡意軟件,直到合成一個類簇為止。
層次聚類算法執(zhí)行流程如圖4所示,惡意軟件之間的最短距離用dmin表示,循環(huán)變量用K表示,距離最近的兩個惡意軟件前一個用fm表示,后一個用bm表示。
兩個惡意軟件之間的距離度量是聚類算法中重要的計算指標(biāo)。因此采用距離矩陣的方式計算惡意軟件之間的距離,具體計算步驟如下:
1)計算所有惡意軟件兩兩之間的歐式標(biāo)準(zhǔn)距離,構(gòu)成一個距離矩陣。顯然距離矩陣是以主對角線對稱的。兩個惡意軟件之間越相似,距離值越??;惡意軟件之間越不相似,距離值越大,因此距離矩陣中主對角線的元素應(yīng)該都為0。
2)對照層次聚類算法,反復(fù)重復(fù)該過程,直到所有的惡意軟件合并成一個類簇為止。
圖4 惡意軟件層次聚類算法執(zhí)行流程Fig.4 Malware’s hierarchical clustering algorithm
3)劃分聚類樹,選取最合適的惡意家族數(shù)。既要使每一個惡意軟件家族中惡意軟件是相似的,也要使不同惡意軟件家族之間距離是較遠(yuǎn)的。
對惡意軟件聚類分析后,下一步考慮惡意軟件家族特征的分析和提取問題。特征的選取通常要選能夠代表函數(shù)或程序特征的結(jié)構(gòu),靜態(tài)特征通常選取匯編指令、入口函數(shù)的代碼結(jié)構(gòu)、函數(shù)調(diào)用關(guān)系圖或程序控制流程圖。按照選取特征的不同,特征模型有線性特征模型、向量模型、圖特征模型、樹特征模型和語義特征模型等。殺毒軟件通常選取惡意軟件特征字符串,應(yīng)用字符串匹配算法查找軟件中是否存在惡意字符串,故采用線性特征模型。
將惡意軟件用不同的代碼串表示和聚類后,借鑒文本挖掘方法中關(guān)鍵字提取算法(TF-IDF,term frequency-inverse document freauency)提取惡意軟件家族的特征代碼串,并由此計算惡意軟件家族的特征向量。
本文采用類似關(guān)鍵字提取算法(TF-IDF)中關(guān)鍵詞的計算方法,設(shè)計了惡意軟件家族特征向量提取算法。
定義1代碼串集合CC,CC(a)表示惡意軟件a中的代碼串集合,集合不包含重復(fù)的代碼串。
定義2惡意軟件家族Fi中的不同惡意軟件相同代碼串集合CCC為
定義3惡意軟件家族Fi中的不同惡意軟件所有代碼串的集合FCC為
定義4信息冗余為R(a)
定義5代碼串頻率為代碼串c在樣本集惡意軟件家族Fj中出現(xiàn)的頻率,即
其中:freq(c,a)表示代碼串c在惡意軟件a中出現(xiàn)的頻率表示惡意軟件家族Fj中所有惡意軟件的代碼串c出現(xiàn)次數(shù)的總和表示惡意軟件家族Fj中代碼串c出現(xiàn)最多的次數(shù)。
ccf的定義類似于關(guān)鍵字提取算法中詞頻(TF)的定義,即
定義6惡意軟件家族樣本集M={F1,F(xiàn)2,…,F(xiàn)m}中逆向代碼串頻率定義為iff,即
iff的定義類似于關(guān)鍵字提取算法中逆向文檔頻率(IDF)的定義,即
類似,計算一個詞是否為關(guān)鍵詞的公式為
可用TF-IDF值的大小來表示這個詞的重要程度。若這個詞是關(guān)鍵詞,則TF-IDF值就大;若這個詞不是關(guān)鍵詞,則TF-IDF值就小。類似上述定義,可定義惡意軟件家族特征向量的計算公式。
假設(shè)惡意軟件家族Fj可以用特征向量Vj=(I1,j,I2,j,…,Ik,j)表示。其中,Ii,j=(ci,F(xiàn)j,M),Ii,j如同提取關(guān)鍵字算法中詞的TF-IDF值的計算方式,可用代碼串頻率和逆向代碼串頻率相乘得到。
定義7惡意軟件家族特征向量的元素Ii,j為
按照提取關(guān)鍵字的計算步驟給出惡意軟件家族特征向量的計算步驟,如圖5所示。
圖5 惡意軟件家族特征向量計算流程Fig.5 Calculating process of malware families’feature vector
通過惡意軟件家族特征提取算法,一個惡意軟件家族Fj就可以用其特征向量Vj表示。算法輸入M={F1,F(xiàn)2,…,F(xiàn)m)},其中 m 表示惡意軟件家族的個數(shù)。輸出是每個惡意軟件家族Fj∈{F1,…,F(xiàn)m}的特征向量Vj=(I1,j,…,Ik,j)。
最小距離分類算法的基本原理是:根據(jù)已有的惡意軟件家族作為數(shù)據(jù)訓(xùn)練集,通過特征提取算法后得到惡意軟件家族的特征向量Vj(j=1,2,…,m),m表示數(shù)據(jù)集中惡意軟件家族的個數(shù)。對于蜜罐捕獲到的惡意軟件提取代碼后的特征向量記為U,則分類問題轉(zhuǎn)化為判定U與Vj之間的距離問題,距離用符號表示。顯然二者之間距離越小,則表明二者之間越相似。
歐式標(biāo)準(zhǔn)距離計算公式為
要改善分類的精度可采用馬哈朗距離計算,同時也會增加時間的復(fù)雜度,考慮到需要快速對惡意軟件進(jìn)行判斷,因此采用歐式標(biāo)準(zhǔn)距離來計算距離。
K-NN分類算法中距離的計算采用的是歐幾里得標(biāo)準(zhǔn)距離公式,具有易實現(xiàn)、準(zhǔn)確性高等優(yōu)點,但缺點是處理速度較慢。在對數(shù)據(jù)進(jìn)行分類器分類時需先對數(shù)據(jù)提取向量,K-NN算法如下:
輸入:惡意軟件家族樣本集向量{V1,…,Vm}和數(shù)據(jù)結(jié)構(gòu)<c(M),iff(ci,M)>,其中c(M)為M樣本的代碼串;待分類的惡意軟件實例a。
輸出:預(yù)測的惡意軟件家族Fj。
算法:
惡意軟件特征向量的計算公式為
可以認(rèn)為惡意軟件家族中只有一個軟件,因此其ccf值等于 freq(ci,a)值。
為了驗證所提出的惡意軟件分類方法的有效性和準(zhǔn)確性,通過基于數(shù)據(jù)集的惡意軟件分類實驗驗證。
將惡意軟件家族劃成大致相等的兩個集合,記為惡意軟件家族集合A和惡意軟件家族集合B,任意的一個作為訓(xùn)練集生成分類標(biāo)準(zhǔn),另外一個作為測試集驗證分類器的分類正確率,實驗以集合A為訓(xùn)練集,集合B為測試集。按照惡意軟件的分類方法進(jìn)行實驗,基于數(shù)據(jù)集的惡意軟件分類實驗流程如圖6所示。
圖6 基于數(shù)據(jù)集的惡意軟件分類實驗處理流程Fig.6 Malware classification experiment process based on dataset
實驗環(huán)境配置如下:
1)硬件環(huán)境配置:2臺高性能主機(jī)作為惡意軟件代碼串提取和特征分析與提取平臺,1臺高性能主機(jī)作為分類平臺,1臺服務(wù)器和1臺交換機(jī)。
2)軟件環(huán)境配置:主機(jī)1的操作系統(tǒng)選擇Windows XPProfessionalSP3版;主機(jī)2的操作系統(tǒng)選擇Ubantu,2臺主機(jī)上分別安裝反匯編靜態(tài)分析軟件Androguard,用于代碼串的提?。恢鳈C(jī)3操作系統(tǒng)選擇Windows 7 Professional,用于運(yùn)行分類處理程序。
3)實驗環(huán)境如圖7所示。
圖7 實驗環(huán)境Fig.7 Experimental environment
實驗數(shù)據(jù)全部來自網(wǎng)絡(luò)收集,將惡意軟件家族表的惡意軟件大致均分成兩個集合,記為惡意軟件家族集合A和惡意軟件家族集合B,二者都包含了128個惡意軟件家族,實驗數(shù)據(jù)構(gòu)成如表1所示。
表1 實驗數(shù)據(jù)Tab.1 Experimental data
按照3.1.1節(jié)實驗設(shè)計,需要進(jìn)行惡意軟件家族特征提取和分類兩個過程,分為兩個步驟:
步驟1惡意軟件家族集合A特征向量提取階段,具體操作如下:
1)建立文檔存儲惡意軟件家族集合A的代碼串信息,按照集合名/家族/軟件/代碼串格式存儲;
2)新建文件夾~/Freq,運(yùn)行程序 ccCount.java;
3)計算每個家族代碼串的ccf×iff值;
4)對各個代碼串的ccf×iff值從大到小排序,把最大的n個代碼串對應(yīng)的ccf×iff值輸出到文件~/features中,即為惡意軟件家族A的特征向量。
步驟2分類階段,具體操作如下:
1)新建待分類文件unclassify,內(nèi)容為惡意軟件家族集合B的代碼串;
2)對待分類惡意軟件運(yùn)用ccCount.java程序,需要修改相應(yīng)參數(shù),計算出unclassify文件中代碼串出現(xiàn)的次數(shù);
3)計算每個家族代碼串的ccf×iff值;
4)對各個代碼串的ccf×iff值從大到小排序,把最大的n個代碼串對應(yīng)的ccf×iff值輸出到文件~/features中,即為惡意軟件家族集合B的特征向量;
5)運(yùn)行Knn.java程序,計算unclassify中的向量與訓(xùn)練集中惡意軟件家族A向量的距離,判斷惡意軟件家族集合B所屬惡意家族類別。
實驗步驟1后得到各惡意軟件家族代碼串?dāng)?shù)量,惡意軟件家族中應(yīng)用軟件的值,以及各個惡意家族的等靜態(tài)分析指標(biāo)。實驗步驟2對惡意軟件家族集合A和惡意軟件家族集合B進(jìn)行分類驗證,得到的實驗結(jié)果表明:在單個惡意軟件家族中分類算法有效性和準(zhǔn)確性良好,128個惡意家族中只有7個家族出現(xiàn)了分類錯誤的情況,而且出現(xiàn)錯誤的數(shù)量較少,整體看分類的正確率達(dá)94.53%,實驗結(jié)果表明惡意軟件分類方法正確率高。
采用混淆矩陣對惡意軟件家族的分類結(jié)果進(jìn)行分析,矩陣中每一行代表了預(yù)測的類別,每一行之和代表了該類的樣本數(shù)目,每一列總數(shù)則表示該類即惡意家族中的惡意軟件數(shù)目。
圖8為惡意軟件家族分類混淆矩陣,可看出AccuTrack惡意軟件家族F1共有13個惡意軟件,分類均正確無誤;BaseBridge惡意軟件家族F8共有295個惡意軟件,其中291個被正確地分進(jìn)BaseBridge家族,4個惡意軟件被錯誤地劃分進(jìn)序號為F57的GoldenDream惡意軟件家族;GoldenDream惡意家族F27中共49個惡意軟件,3個惡意軟件被錯誤地劃分進(jìn)序號為F31的DroidKungFu3家族,1個惡意軟件被錯誤地劃分進(jìn)序號為F128的ZHash家族;序號為F30的DroidKungFu2惡意軟件家族共有惡意軟件29個,其中2個惡意軟件被誤分進(jìn)序號為F32的DroidKungFu4家族中;序號為F31的DroidKungFu3家族共有32個惡意軟件,其中3個惡意軟件被誤分進(jìn)序號為F32的DroidKungFu4家族中;序號為F32的惡意軟件家族DroidKungFu4共有72個惡意軟件,其中3個惡意軟件被誤分進(jìn)序號為F31的DroidKungFu3家族,另外3個被錯誤分進(jìn)序號為F27的DroidDream惡意軟件家族。共有4+2+3+4+6+4+1=20個惡意軟件的家族分類錯誤,128個惡意軟件家族中7個家族出現(xiàn)錯誤分類。惡意軟件家族分類正確率達(dá)94.53%,說明分類器分類效果較好。
為了更好分析和驗證分類器的性能,與采用樸素貝葉斯算法進(jìn)行對比。從查準(zhǔn)率和查全率分析分類器的分類效果。查準(zhǔn)率和查全率的定義如下
從惡意樣本數(shù)據(jù)集中選取10個惡意軟件家族作為測試數(shù)據(jù),分別采用樸素貝葉斯分類算法和分類器采用的K-NN分類算法進(jìn)行比較分析,惡意軟件家族分類實驗結(jié)果如表2所示。實驗結(jié)果表明,K-NN分類算法查準(zhǔn)率和查全率均優(yōu)于樸素貝葉斯算法。
表2 惡意軟件家族分類實驗結(jié)果Tab.2 Malware family classification experiment result
設(shè)計了基于文本挖掘的惡意軟件分類方法,提出將文本挖掘應(yīng)用于惡意軟件分類。分類方法分為4個階段,即代碼串提取階段、聚類分析階段、特征向量提取階段和分類階段。定義了代碼串頻率和逆向代碼串頻率,設(shè)計了惡意軟件家族特征向量提取算法來提取惡意軟件家族的特征向量。實現(xiàn)了層次聚類、特征向量提取和K-NN分類3個核心算法。
實驗驗證了基于文本挖掘的惡意分類方法的有效性和準(zhǔn)確性,實驗結(jié)果表明基于文本挖掘的惡意軟件分類方法對惡意軟件家族分類的正確率達(dá)94.53%。此外,通過混淆矩陣分析了基于文本挖掘的惡意軟件的分類結(jié)果,表明該方法對惡意軟件的分類具有較好的有效性和準(zhǔn)確性。
[1]JUNIPER.2011 Mobile Threats Report[Z].Juniper Networks,Tech.Rep,2012.
[2]GOASDU L,PETTEY C.Gartner Says Worldwide Smartphone Sales Soared in Fourth Quarter of 2011 with 47 Percent Growth[EB/OL].(2015-01-15)[2017-01-11].http://www.gartner.com/it/page.jsp?id=1924314.
[3]張 銳.Android環(huán)境下惡意軟件靜態(tài)檢測方法研究[D].重慶:重慶大學(xué),2014.
[4]戚 湧.安卓移動智能終端的惡意軟件檢測與分析方法[D].南京:南京理工大學(xué),2014.
[5]吳凌飛.惡意軟件變種間相似度的分析技術(shù)研究[D].杭州:杭州電子科技大學(xué),2014.
[6]SPITZNER L.Honeypot:Tracking Hackers[M].北京:清華大學(xué)出版社,2004:30-35.
[7]諸葛建偉,唐 勇,韓心慧.蜜罐技術(shù)研究與應(yīng)用進(jìn)展[J].軟件學(xué)報,2013,24(4):825-842.
[8]DEDIU H.When Will Tablets Outsell Traditionalpcs March 2012[EB/OL].(2012-03-02)[2017-01-11].http://www.asymco.com/2012/03/02/.
[9]DUNHAM K.Mobile malware attacks and defence[J].Elsevier,2009,7(3):137-146.
[10]DESNOSA.Androguard Reverse Engineering Tool[EB/OL].(2012-12-04)[2017-01-11].http://code.google.com/p/androguard/.
[11]CESARE S,XIANG Y.Classification of Malware Using Structured Control Flow[C]//Proceedings of the Eighth Australasian Symposium on Parallel and Distributed Computing,Australian Computer Society,2010:61-70.
[12]RODRIGUEZ GONZALEZ A Y,MARTINEZ TRINIDAD J F,CARRASCO OCHOA J A,et al.Mining frequent patterns and association rules using similarities[J].Expert Systems with Application,2013,40(17):6823-6836.