?

融合多樣頻度與分布差異的Android惡意軟件檢測

2024-02-22 07:44趙旭康劉曉鋒
計算機工程與設計 2024年2期
關鍵詞:特征選擇類別分類器

趙旭康,劉曉鋒+,徐 潔

(1.西華師范大學 計算機學院,四川 南充 637009;2.西華師范大學 電子信息工程學院,四川 南充 637009)

0 引 言

傳統的惡意軟件檢測依賴惡意軟件庫的建立來進行檢測工作,但是無法有效應對惡意軟件的變種[1]。伴隨人工智能的興起,機器學習等技術逐漸被應用至惡意軟件檢測領域并取得較好的成果[2],主要通過特征工程將移動應用轉換為向量進行表示。在特征選擇方面,文獻[3]選擇卡方檢驗(chi-square test,Chi)作為特征選擇方法,與基尼不純度增量相結合來尋找數據集中包含的關鍵特征;文獻[4]提出一種基于信息增益(information gain,IG)的惡意軟件特征選擇方法,在減少特征數量的同時取得了較好的實驗效果。然而IG算法借助熵的概念去判斷某個特征對于整個數據集的重要性,并未體現出不同類別中特征的差異性;Chi算法通過辨別實際與理論在數值上的差距來確定特征的地位,只記錄數據集中該特征是否出現,從而忽略此特征的頻率。

為此,本文提出一種特征重要性評分算法(feature importance scoring algorithm,FIS),改進詞頻-逆文檔頻率(term frequency-inverse document frequency,TF-IDF)算法對于常見特征權重下降的不足,突出類間頻度和特征在不同類別之間表現的分布差異的重要性。選取權限、意圖和接口3種特征,將FIS算法分別與傳統的特征選擇算法和其它的主流檢測工具在數據集上做對比實驗。實驗結果表明,FIS在準確率等性能評價指標上相比其它算法,有著一定提升。

1 相關工作

本文對于惡意軟件特征的提取工作主要集中于靜態分析方面。其中接口(application program interface,API)、權限和意圖等在應用程序包(Android application package,APK)中包含的特性通常會被為判斷應用程序是否具有惡意行為的依據。靜態分析的優點在于速度快和能耗低,可以幫助分析人員快速了解一個應用的大致行為。文獻[5]提出一種基于權限的貝葉斯分類檢測系統,其最佳準確率為91.1%;文獻[6]專注于Android應用程序的調用資源,將API作為特征并選擇支持向量機來檢測惡意程序。同時,更多的研究傾向于選擇多特征結合的方案來提升最終效果。文獻[7]結合權限和API調用來建立分類模型,并通過3種不同的分組策略來篩選最有價值的特征;文獻[8]提出包含權限和意圖特征的Android惡意軟件檢測,將主成分分析PCA和t-SNE相結合,最終達到91.7%的準確率。

從上述文獻可看出,接口、意圖以及權限組合一起可用來表征一個應用的具體行為,同時具備檢測速度快的優點。采用多特征與機器學習技術進行惡意軟件檢測是現在研究的趨勢,因此本文選擇靜態分析的方式提取應用特征,同時結合機器學習模型彌補準確率不足的問題,進一步提升檢測的效果。

2 基于FIS的惡意軟件檢測

2.1 總體框架

如圖1所示,本文提出的基于FIS算法的Android惡意軟件檢測方法的關鍵步驟為:通過分析不同類別之間特征分布的差異性與在多類別中出現的頻繁程度,計算出特征的差異指數和頻度以淘汰重要性較低的冗余特征,最后將篩選出的最優特征子集交給分類器。

圖1 惡意軟件檢測的總體框架

數據預處理與FIS算法模塊是該方法的核心。在預處理過程中,需要對原始數據做詳細的掃描來提取出原始特征集,同時對集合里的特征進行逐一分析,剔除一些異常的數據保證之后特征選擇工作的順利進行。

在特征選擇模塊中,對預處理之后的特征集運用FIS算法,計算出每個特征的頻度和分布差異指數,通過最終的重要性評分來評選出最優特征子集。

在數據預處理步驟中使用Androguard開源工具對安卓樣本集進行逆向分析。通過批處理的形式從反編譯后的AndroidManifest.xml文件中提取Intent意圖和Permission權限的特征信息,從smali字節碼文件中獲取API接口的特征,將三者一并組合成原始特征集。

2.2 特征重要性評分算法

FIS算法借鑒TF-IDF中重視頻度的思想,在其基礎上加以改進,引入類間特征分布的差異指數,以此來篩選出更有代表性的關鍵特征從而改善實際的分類效果。

2.2.1 FIS算法的定義

TF-IDF在數據挖掘中普遍用來評價一個單詞對于文件的重要程度。該方法認為,一個單詞的重要性與它在本文件中重復的次數成正比,和在語料庫中出現的頻率成反比。其中,TF認為某個特征的重要性與它在總體樣本集上出現的次數有關,卻沒考慮到多類別的具體情況。IDF在削弱常見特征同時,會導致部分有區分度且數量不少的特征重要性下滑。因此需要對上述問題進行重新設計,達到特征選擇的要求。

FIS算法從特征在不同類別中表現出的多樣頻率和其在類間分布的差異性兩個角度對每個特征進行評分,為之后的特征篩選提供依據。一般而言,區分度較高的特征具有如下兩種特點:①代表性:該特征至少在一種類別的樣本集中具有較高的出現頻率;②差異性:該特征在某個類別的樣本集中具有普遍性,同時在另一類別的樣本集中保持一定的低占比。

FIS算法以某個特征的分布差異為基準,輔以該特征在不同類別中表現出的多樣頻率作為衡量此特征重要性評分的標準。其相關定義如下:

定義1 特征多樣頻度:特征i的頻率反應出在樣本集中出現的頻繁程度。若頻率越高,特征i總體出現的次數越多;相反若頻率越低,i出現的次數越低。記作FEi,計算公式如式(1)所示

(1)

其中,Nmal表示惡意樣本集中軟件的總數量,Nben表示良性樣本集中軟件的總數量,Ei,j代表應用j中是否包含特征i,若存在,則Ei,j=1, 否則為0。 P(Xi=1) 表示包含特征i的應用程序的出現概率。與TF-IDF中詞頻TF相比,FEi增加對于具體類別的分布情況,而不是僅從整體樣本集上計算。

定義2 特征分布差異:特征i差異指數的數值與其在類間分布的差異性呈正比關系,用DNi表示,其計算的公式如式(2)所示

|P(C=mal)-P(C=ben)+1|

(2)

其中,P(C=mal) 表示在樣本集中應用為惡意的概率,P(C=ben) 代表應用為良性的概率,并在末尾添加1用來預防出現在均衡樣本集中出現兩種概率相等的情況。DNi改進TF-IDF中僅關注單一類別的局限性問題,量化出不同類別表現出的實際差異,更好應對不同樣本數量不均等的問題。

定義3 特征重要性指數:表示特征i的重要程度。如果重要性指數越高,代表該特征i的重要程度越高,記作Si,評價公式如式(3)所示

Si=FEi×DNi

(3)

Si綜合考慮某個特征的頻度與分布差異兩種因素來計算出某個特征具體的重要性評分。在之后的特征篩選過程中,并不設置具體的閾值來判斷某個特征是否具備區分度。本文認為區分度并不是只有是否存在兩種可能性,應該由Si來量化其重要程度,最后根據分數的高低從大到小依次選擇。

2.2.2 FIS算法的過程

本文涉及到的特征選擇分為特征評分與篩選兩個部分。其核心步驟如下:

(1)計算多樣頻度。在第(7)行中,根據某特征在全部應用出現的次數與總應用的數量的占比計算出包含該特征的應用程序的出現概率,再按照公式(1)將其與在不同類別的出現的頻率相乘得到多樣頻度。

(2)計算分布差異。第(8)行,計算出某特征在不同類別中出現的頻率差值,根據式(2)分別計算出不同類別樣本集的數量差距與特征出現的頻率差值相乘得到特征的分布差異。

(3)構建特征評分集合。第(9)行中,將之前計算出的多樣頻度與分布差異結合式(3)得到每個特征的重要性評分,將其添加評分集合中作為特征篩選的唯一依據。

在算法1的描述中,第(2)、第(3)行均是統計出相關應用的數量,僅需執行一次。算法主要的時間損耗發生在第(4)~第(11)行對特征集進行遍歷的過程。遍歷特征集的循環次數為集合中含有的特征個數,其余環節均不涉及重復執行。

算法1:特征重要性評分算法

輸入:惡意應用特征個數映射函數Lmal,良性應用特征個數映射函數Lben,全部特征集D1

輸出:特征重要性評分映射集合List_Score

(1)List_Score=null; //全部特征的FIS評分集

(2)M=惡意應用的全部數量;

(3)B=良性應用的全部數量;

(4)forfiinD1do

(5)NMi=Lmal(fi); //fi在全部惡意應用中出現次數

(6)NBi=Lben(fi); //fi在全部良性應用中出現次數

(7)FEi=(NMi/M+NBi/B)*(NMi+NBi)/(M+B);

(8)DNi=|NMi/M-NBi/B|*|M/(M+B)-B/(M+B)+1|;

(9)Si=FEi*DNi; // 得到單個特征的評分

(10) Add (Si,fi) inList_Score;

(11)end for

相比于TF-IDF 算法,FIS在輸入時加入包含特征個數的映射,能夠大大減少時間消耗,其時間復雜度為O(n),在時間消耗方面的代價相比TF-IDF更低。

3 實驗結果與分析

本文共進行以下實驗評估FIS算法的特征選擇效果:

實驗1:圍繞分類器模型和特征的數量與類型展開,印證FIS算法能夠有效地篩選出關鍵特征。

實驗2:為了驗證FIS算法在識別準確率等評價指標方面的優越性,選擇信息增益、卡方校驗和TF-IDF的特征選擇方法與FIS算法做橫向對比,同時與其它成熟的檢測工具進行比較,評估FIS算法在實際應用中的具體成效。

3.1 數據集

實驗使用的數據集由Android良性和惡意應用兩種類型的樣本組成。其中1400個惡意應用來自CICMalDroid2020[9,10]與CICInvesAndMal2019[11]開源項目,1400個良性應用在安卓網(https://www.apk3.com/app)自行下載獲得,并且所有良性應用在實驗前均由360安全殺毒引擎進行二次驗證,確保它們的非惡意性。

采用Androguard開源工具對數據集中2800個應用進行反編譯處理,通過數據預處理后一共提出到3844個特征。為方便機器學習,需要對特征向量化。定義集合S為樣本集中所有類型特征的并集,如式(4)所示,集合S1、S2和S3分別代表權限、API和意圖3大類別的特征。若當前APK包含某種特征,則標記為1,否則表示為0

S=S1∪S2∪S3

(4)

因為惡意檢測的本質是二分類問題,所以在最后添加isMalware一列。值為1,代表這個應用是惡意軟件,為0表示這個應用是良性軟件。表1以轉置的形式展示了部分特征屬性的向量化信息。

表1 部分特征屬性向量化信息

3.2 評價指標

本文使用準確率ACC(accuracy)、假正率FPR(false positive rate)、召回率Recall、F1值和ROC(receiver ope-rating characteristic)曲線5個指標對本文提出的檢測算法進行評估。其中TP(true positive)和FP(false positive)分別表示為良性軟件被正確預測為良性軟件的數量與惡意軟件被錯誤判定為良性軟件的數量;TN(true negative)與FN(false negative)分別表示為惡意軟件被正確識別成惡意軟件的數量與良性軟件被錯誤識別成惡意軟件的數量。具體的公式定義如下所示

(5)

(6)

(7)

(8)

(9)

(10)

ROC的縱坐標是真正率TPR,其值與召回率等同,橫坐標為假正率FPR。

3.3 FIS算法的效果驗證

FIS算法的設計初衷是為了在特征選擇過程中篩選出更具有代表性的特征,降低一般特征的重要性。

在權限、接口和意圖3種類別中,從數據集中2800個樣本里一共提取出重要性分數從大到小排名前30、90、150和全部3844個特征。將它們分別作為樸素貝葉斯Naive Bayes、支持向量機SVM(support vector machine)、K近鄰KNN(k-nearest neighbor)和隨機森林Random Forest這4種分類器的輸入,最終的結果如圖2所示。

圖2 FIS算法使用不同分類器的準確率

圖3 FIS算法使用不同分類器的ROC曲線

結果表明,隨機森林分類器獲得的準確率最高,整體效果最好;SVM次之,準確率略低于隨機森林,其次是KNN,效果最差的樸素貝葉斯分類模型最高準確率僅為93.8989%。

圖3表示在特征數量固定為150的情況下,4個分類器ROC曲線的局部放大對比。隨機森林分類器的曲線朝左上方凸起的表現最為明顯,樸素貝葉斯的曲線最靠近右下方。

因此,4種分類器中最適合FIS算法的是隨機森林模型,它帶來的效果更好,樸素貝葉斯對于本算法來說是最不合適的。從FIS算法應用在隨機森林模型上的表現可以得出該算法能夠有效地篩選出有區分度的關鍵特征。在特征集合中選出重要性指數排名前150個的特征,最后訓練的效果與全部特征的訓練效果基本等同甚至略好(特征數量為150時準確率為98.8448%,3844個全部特征的準確率為98.7091%)。因此,FIS算法可以有效地篩選出具有區分度的關鍵特征,在特征數量較少的情況下達到較好的分類效果,滿足了其設計的初衷。

為驗證接口API、意圖Intent和權限Permission這3種類型結合的特征除了理論上優勢,是否具有實際數據的參考意義,所以分別選出API、Intent、Permission和三者結合的類型,各自提取重要性評分排名前30、90和150個特征作為對比。統一選擇隨機森林作為分類器,最終結果如圖4所示,本文選擇的3種特征結合的方式更占據優勢。在特征數量相同的條件下,結合后的結果都比單獨的特征效果好。

圖4 多特征在不同數量下的準確率

3.4 與其它特征選擇方法的對比實驗

為進一步驗證FIS算法在特征選擇過程中的實際表現和優勢,將其與IG、Chi和TF-IDF這3個算法進行對比。表2展示在特征數量固定為150的條件下,IG、Chi、TF-IDF和FIS這4種選擇算法在樸素貝葉斯NBayes、支持向量機SVM、K近鄰KNN和隨機森林Random Forest這4種分類器模型的實驗數據對比。

表2 不同特征選擇方法的實驗結果對比

數據表明,在K近鄰和支持向量機的分類器中,FIS表現不及TF-IDF和卡方檢驗算法,但是在樸素貝葉斯和隨機森林兩種模型中,FIS相比其它算法的表現更優,同時隨機森林與FIS算法的組合能夠在3個指標下均獲得本次實驗的最高評分。雖然在K近鄰和支持向量機兩種模型下表現不及TF-IDF和卡方檢驗,但是分類器的作用僅是為了逼近最終結果上限。從總體來看,FIS算法對惡意軟件的識別效果明顯優于其它傳統的選擇算法。

同時將FIS算法計算每個特征的重要性評分所花費的時間與TF-IDF算法進行對比,FIS算法總共花費約1.725 s的時間,相比于TF-IDF的0.888 s可以節約48%。

將同類文獻提出的特征選擇方法與本文的FIS算法同時應用在相同的數據集上(一共3844個特征)進行實驗測試。其中,文獻[12]提出一種檢測外觀比率間隔的特征選擇方法來篩選關鍵特征。文獻[13]使用遺傳算法去除數據集里冗余特征,實驗的數據結果見表3。

表3 與其它惡意軟件檢測情況對比

可以看出,文獻[12]的F1值和文獻[13]的準確率與本文提出算法的效果接近,但是篩選出的特征數量遠遠多于FIS算法得出的150個特征。文獻[12]的外觀比率間隔算法通過Mann-Whitney檢驗得到特征集,但其檢驗的效率較低,要足夠的樣本容量才能達到合適的結果;文獻[13]采用的遺傳算法會對大量個體樣本進行計算評估,同時涉及多種參數需要調整,如種群大小和交叉率等,所需的計算成本較高。本文提出的FIS算法實現簡單,不受樣本集規模和各種參數的影響,擁有良好的適應性。實驗結果表明,在效果接近的情況下,本文提出的FIS算法明顯更具有優勢,能更高效地判斷應用的惡意性。

本文從CICInvesAndMal2019數據集中選出不同于之前數據集的143個惡意軟件,用來驗證FIS算法對于未知軟件的檢驗識別能力。使用之前訓練成功的隨機森林模型生成的檢測工具分別與小紅傘、騰訊電腦管家、火絨和金山毒霸4種軟件進行檢測,結果見表4。

表4 不同檢測工具的準確率

結果表明,騰訊電腦管家檢測的準確率最高,達到97.22%,其次是93%準確率的小紅傘。表現較差的是金山毒霸和火絨,準確率均低于60%。本文提出的基于FIS算法檢測工具準確率在90%以上。因此該算法可以有效應對未知的惡意軟件。

4 結束語

本文從特征的頻度和差異性兩個角度提出了一種特征選擇算法FIS,用來篩選出具有代表性的少量特征來體現惡意行為,作為分類器的輸入。與TF-IDF算法相比,FIS算法加強對不同類別應用的特征頻率表現,同時加入分布差異指數,用以表征同一類別中的應用中不同特征體現出的差異性。實驗結果顯示,FIS算法可以有效提高惡意軟件檢測的效率,最佳準確率為98.82%。

另一方面,FIS算法僅對單一特征進行了重要性分析,沒有重視多種特征之間的關聯特性[14]。下一步工作中,將在未來工作中完善上述不足,并著力于函數調用圖等圖模型結合圖卷積網絡進一步研究[15]。

猜你喜歡
特征選擇類別分類器
BP-GA光照分類器在車道線識別中的應用
Kmeans 應用與特征選擇
加權空-譜與最近鄰分類器相結合的高光譜圖像分類
結合模糊(C+P)均值聚類和SP-V-支持向量機的TSK分類器
聯合互信息水下目標特征選擇算法
服務類別
論類別股東會
基于LLE降維和BP_Adaboost分類器的GIS局部放電模式識別
中醫類別全科醫師培養模式的探討
基于特征選擇和RRVPMCD的滾動軸承故障診斷方法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合