李向軍,孔 珂,魏智翔,王科選,肖聚鑫
(1.南昌大學(xué)軟件學(xué)院,江西 南昌 330047;2.南昌大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)系,江西 南昌 330031)
Android已經(jīng)占據(jù)了智能手機(jī)操作系統(tǒng)的大量市場份額,據(jù)Statcounter統(tǒng)計(jì),2019年8月Android占據(jù)了全球移動(dòng)操作系統(tǒng)市場份額的76.23%[1],至2019年,Google Play應(yīng)用數(shù)量超過250萬[2]。惡意軟件開發(fā)者把大量惡意軟件進(jìn)行偽裝上傳至Google Play 或第三方市場。2018全年,360互聯(lián)網(wǎng)安全中心累計(jì)監(jiān)測移動(dòng)端惡意軟件感染量約為1.1億人次[3]。Android應(yīng)用程序的安全性檢測已成為網(wǎng)絡(luò)安全領(lǐng)域的熱點(diǎn)研究問題之一。
根據(jù)Android惡意應(yīng)用的特征性質(zhì),檢測方法可分為靜態(tài)檢測、動(dòng)態(tài)檢測和動(dòng)靜混合檢測[4]。3種檢測方法中,靜態(tài)檢測的研究更廣泛。靜態(tài)檢測是指通過靜態(tài)特征進(jìn)行惡意應(yīng)用檢測,該方法可以在軟件未安裝之前對應(yīng)用程序進(jìn)行識別,提前預(yù)防惡意行為的發(fā)生。靜態(tài)特征通過對APK(Android Application Package)反編譯后,通過相關(guān)文件獲取,相比于動(dòng)態(tài)特征的獲取,較為方便,不浪費(fèi)用戶系統(tǒng)資源。靜態(tài)特征的提取通常會(huì)獲取大量的特征信息,其中大部分為冗余特征,因此特征選擇是十分必要的工作。而傳統(tǒng)的特征選擇算法不完全適用于Android惡意應(yīng)用檢測的靜態(tài)特征選擇,如無法去除非典型特征,偏重惡意典型特征,在非平衡數(shù)據(jù)上對惡意應(yīng)用識別準(zhǔn)確率不良。
本文主要貢獻(xiàn):在分析卡方校驗(yàn)、信息增益、FrequenSel等特征選擇算法不足的基礎(chǔ)上,給出了良性特征、惡意特征、良性典型特征、惡意典型特征和非典型特征等定義,提出了一種適用于Android惡意應(yīng)用靜態(tài)檢測的特征選擇算法——特征頻數(shù)差異增強(qiáng)FDE(Frequency Differential Enhancement)算法。平衡數(shù)據(jù)集和非平衡數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果表明,F(xiàn)DE算法可有效去除靜態(tài)特征中的非典型特征,篩選出更有效特征。同時(shí),引入權(quán)重?fù)p失函數(shù)彌補(bǔ)不平衡數(shù)據(jù)的缺陷,可有效提高惡意應(yīng)用的識別準(zhǔn)確率。
目前,Android惡意應(yīng)用檢測3類方法中,相比于動(dòng)態(tài)檢測、動(dòng)靜混合檢測2種方法,靜態(tài)檢測方法的研究和應(yīng)用更為廣泛。
靜態(tài)檢測需要對APK進(jìn)行反編譯,從各類文件中提取信息,如權(quán)限、API信息等。Felt等[5]評價(jià)了權(quán)限機(jī)制的可用性,研究得出了惡意應(yīng)用存在過度敏感權(quán)限申請問題。Nix等[6]使用API調(diào)用序列對惡意應(yīng)用進(jìn)行檢測,在深度置信網(wǎng)絡(luò)上檢測準(zhǔn)確率達(dá)到95.7%。Mclaughlin等[7]使用卷積神經(jīng)網(wǎng)絡(luò)CNN(Convolutional Neural Network)從原始操作碼序列中學(xué)習(xí)惡意應(yīng)用的特征,召回率達(dá)到96.29%。Yerima等[8]提取權(quán)限信息作為數(shù)據(jù)特征,開發(fā)和分析了基于貝葉斯分類的主動(dòng)式機(jī)器學(xué)習(xí)方法,展示了高精度的檢測能力。Wang等[9]集成了5種分類算法,使用11種類型的靜態(tài)特征識別良性應(yīng)用和惡意應(yīng)用,準(zhǔn)確率高達(dá)99.39%。Shabtai等[10]使用了APK大小、特征數(shù)量等非主流特征。
動(dòng)態(tài)檢測需要對應(yīng)用進(jìn)行安裝,獲取系統(tǒng)調(diào)用、網(wǎng)絡(luò)流量等信息。早期研究者缺乏對惡意應(yīng)用行為模式的認(rèn)識,把手機(jī)能量的消耗作為評判依據(jù)[11]。隨著對動(dòng)態(tài)信息的研究,研究者獲得了更有代表性的動(dòng)態(tài)特征。Martinelli等[12]在CNN上建立了一個(gè)基于系統(tǒng)調(diào)用的檢測應(yīng)用程序,準(zhǔn)確率在85%~95%。Vinod等[13]針對系統(tǒng)調(diào)用研究了數(shù)種動(dòng)態(tài)特征選擇算法。Liang等[14]通過將系統(tǒng)調(diào)用序列視為文本來設(shè)計(jì)端到端惡意軟件識別模型,準(zhǔn)確率達(dá)93.1%,F(xiàn)-1值為86.57%??露娴萚15]使用隨機(jī)森林算法對行為日志中的惡意行為進(jìn)行識別與分類,該方法對惡意行為分類的平均準(zhǔn)確率達(dá)到96.8%。
動(dòng)靜混合檢測是指將動(dòng)態(tài)特征和靜態(tài)特征相結(jié)合的檢測方法。Fang等[16]對靜態(tài)檢測的結(jié)果進(jìn)行動(dòng)態(tài)檢測,在XGBoost算法上達(dá)到94.6%的檢測精度。Alshahrani等[17]把權(quán)限、組件信息、系統(tǒng)調(diào)用進(jìn)行結(jié)合,實(shí)現(xiàn)了可運(yùn)行在用戶設(shè)備上的識別器,準(zhǔn)確率達(dá)到95%。Xu等[18]將靜態(tài)信息轉(zhuǎn)換為矢量,動(dòng)態(tài)信息轉(zhuǎn)換為圖形特征集,組合構(gòu)建了混合分類器,準(zhǔn)確率達(dá)到93.4%。Vinayakumar等[19]使用基于多種網(wǎng)絡(luò)拓?fù)涞拈L短期循環(huán)神經(jīng)網(wǎng)絡(luò)對混合特征進(jìn)行處理,準(zhǔn)確率最高為94.2%。
基于靜態(tài)特征的Android惡意應(yīng)用檢測方法使用的特征種類眾多。DREBIN[20]中使用了硬件組件、請求權(quán)限、應(yīng)用程序組件、過濾意圖、限制API調(diào)用、使用權(quán)限、可疑API調(diào)用、網(wǎng)絡(luò)地址等8種靜態(tài)特征。Zhang等[21]使用了權(quán)限、API、組件、字符串4種特征。Luo等[22]只用了API調(diào)用信息。分析可見,多數(shù)基于靜態(tài)特征的應(yīng)用檢測研究中,權(quán)限和API是最常用的特征。研究者針對靜態(tài)特征檢測使用的分類算法各有不同,Wang等[23]使用了支持向量機(jī)、隨機(jī)森林、K最近鄰3種傳統(tǒng)的機(jī)器學(xué)習(xí)算法。Arshad等[24]使用了隨機(jī)森林算法建立了三級混合惡意軟件檢測模型。深度學(xué)習(xí)算法也受到很多研究者青睞[25,26]。分類算法種類繁多,針對不同問題有不同的處理效果。
基于權(quán)限和API的靜態(tài)檢測中,Android系統(tǒng)要求應(yīng)用權(quán)限信息必須公開,通過權(quán)限使用情況,一定程度上可以判斷是否為有惡意行為。權(quán)限特征聲明在AndroidManifest.xml文件中,可以通過對APK的反編譯得到。API特征存在于.smali文件中,攻擊者想要實(shí)現(xiàn)某一惡意行為,必須使用相應(yīng)的API,所以API信息在惡意軟件靜態(tài)檢測中是非常重要的特征。權(quán)限與API信息相比,API信息的數(shù)量遠(yuǎn)遠(yuǎn)大于權(quán)限的數(shù)量,因?yàn)锳PI不僅限于Google提供的,開發(fā)者也可以使用自己編寫的API,導(dǎo)致API數(shù)量龐大。API數(shù)量雖多,但大部分的API信息是無用的,并不具有識別惡意應(yīng)用的功能。
靜態(tài)檢測提取特征信息后,有研究者使用卡方校驗(yàn)、信息增益等傳統(tǒng)方法[27,28]進(jìn)行特征選擇。Zhao等[29]在傳統(tǒng)算法的基礎(chǔ)上提出FrequenSel算法進(jìn)行特征選擇。面對靜態(tài)特征選擇,這些算法都存在一些不足,如非典型特征排名過高,偏重惡意典型特征,重復(fù)選擇同一特征。很少有研究者對Android惡意應(yīng)用檢測靜態(tài)特征選擇算法進(jìn)行研究,多數(shù)研究者選擇傳統(tǒng)的特征選擇算法或人工特征選擇,部分研究者不進(jìn)行特征選擇。
傳統(tǒng)特征選擇算法,如FrequenSel(Fre)[29]、卡方校驗(yàn)Chi(Chi-square test)[30]、信息增益Info(Information divergence)[31]等,應(yīng)用在Android惡意應(yīng)用檢測領(lǐng)域存在一定的不足。其中,卡方校驗(yàn)和信息增益特征選擇算法在特征分值計(jì)算過程中會(huì)賦予不利于辨別良性和惡意應(yīng)用的非典型特征高排名。FrequenSel特征選擇算法在特征選擇過程中注重惡意特征的比例,忽略了特征的原始規(guī)律,并且在選擇良性特征和惡意特征時(shí)會(huì)重復(fù)選擇同一特征。為了彌補(bǔ)以上缺點(diǎn),本文提出一種新的特征選擇算法——特征頻數(shù)差異增強(qiáng)算法FDE。
FDE算法旨在排除非典型特征,遵循特征的原始規(guī)律進(jìn)行特征選擇。算法從特征最本質(zhì)的角度,即各特征在良性應(yīng)用與惡意應(yīng)用中出現(xiàn)的頻率角度,進(jìn)行分析設(shè)計(jì)。應(yīng)用數(shù)據(jù)集上數(shù)據(jù)的非典型特征和典型特征呈現(xiàn)的特點(diǎn)是:良性典型特征只在良性應(yīng)用中大量出現(xiàn),惡意典型特征只在惡意應(yīng)用中大量出現(xiàn)。非典型特征在良性應(yīng)用和惡意應(yīng)用中大量出現(xiàn),或只少量出現(xiàn)在良性應(yīng)用或惡意應(yīng)用中。因此,以特征在良性應(yīng)用和惡意應(yīng)用中出現(xiàn)的頻數(shù)差異數(shù)和總樣本數(shù)量的比值作為評價(jià)特征的標(biāo)準(zhǔn),設(shè)計(jì)特征評價(jià)公式如下所示:
(1)
其中,Nm表示包含特征fi的惡意應(yīng)用數(shù)量,Nb表示包含特征fi的良性應(yīng)用數(shù)量,Tm表示惡意應(yīng)用的總數(shù)量,Tb表示良性應(yīng)用的總數(shù)量。
特征評價(jià)公式先計(jì)算特征在良性應(yīng)用與惡意應(yīng)用中出現(xiàn)次數(shù)的差值絕對值,再用差值絕對值除以總樣本數(shù)。其特點(diǎn)是:(1)可計(jì)算得出每個(gè)特征的分值,每個(gè)特征的分值作為特征選擇的依據(jù)。(2)可有效對非典型特征進(jìn)行甄別。根據(jù)非典型特征和典型特征的特點(diǎn)分析,通過式(1)的計(jì)算,非典型特征的S值較小,典型特征的S值較大,因此可有效去除非典型特征,篩選出更有效的特征。同時(shí),該公式是從特征最原始的規(guī)律角度設(shè)計(jì),不會(huì)干預(yù)惡意典型特征所占比例。
為有效篩選特征,給出如下相關(guān)定義:
定義1(良性特征) 對于某個(gè)特征fi,其在良性應(yīng)用中和在惡意應(yīng)用中出現(xiàn)的次數(shù)記為二元組counti=(Nb,Nm),若Nb>Nm,則稱其為良性特征。
定義2(惡意特征) 對于某個(gè)特征fi,其在良性應(yīng)用中和在惡意應(yīng)用中出現(xiàn)的次數(shù)記為二元組counti=(Nb,Nm),若Nm>Nb,則稱其為惡意特征。
定義3(良性典型特征) 若某特征fi為良性特征,即counti=(Nb,Nm),其中Nb>Nm,且滿足:
(2)
則稱其為良性典型特征。
定義4(惡意典型特征) 若某特征fi為惡意特征,即counti=(Nb,Nm),其中Nm>Nb,且滿足:
(3)
則稱其為惡意典型特征。
定義5(非典型特征) 若某特征fi滿足以下2個(gè)條件之一,則稱其為非典型特征。
(1)counti=(Nb,Nm),且:
(4)
即該特征在良性應(yīng)用中出現(xiàn)的次數(shù)較少,在惡意應(yīng)用中出現(xiàn)的次數(shù)幾乎為0,或其在惡意應(yīng)用中出現(xiàn)的次數(shù)較少,在良性應(yīng)用中出現(xiàn)的次數(shù)幾乎為0。
(2)counti=(Nb,Nm),且:
(5)
即該特征在良性應(yīng)用和惡意應(yīng)用中都大量出現(xiàn),但出現(xiàn)的次數(shù)差的絕對值很小。
根據(jù)上述定義,特征頻數(shù)差異增強(qiáng)算法FDE的思路為:首先,統(tǒng)計(jì)總樣本數(shù)量以及各特征在良性應(yīng)用和惡意應(yīng)用中出現(xiàn)的次數(shù);然后,按照式(1)計(jì)算每個(gè)特征的S值,并按照定義3~定義5進(jìn)行特征選擇。算法偽代碼如下所示:
算法1特征頻數(shù)差異增強(qiáng)算法FDE
輸入:特征集合F,閾值ɑ。
輸出:新的特征集合F′。
1.Tm←CountMalware;
2.Tb←CountBenign;
3.Fori←1toF.Size()do
4.Nm←CountInMalware(fi);
5.Nb←CountInBenign(fi);
6.S←|Nb-Nm|/(Tb+Tm);
7.IfS≥αthen
8.F′←fi;
9.endif
10.endfor
第1~2行統(tǒng)計(jì)惡意樣本和良性樣本數(shù)量;第3~10行執(zhí)行循環(huán),統(tǒng)計(jì)每個(gè)特征在良性應(yīng)用和惡意應(yīng)用出現(xiàn)的次數(shù),然后計(jì)算每一個(gè)特征的S值,根據(jù)定義3~定義5選取符合條件的特征。其中不同的閾值ɑ取值會(huì)產(chǎn)生不同數(shù)量的特征。
由算法描述可見,F(xiàn)DE算法只需統(tǒng)計(jì)每個(gè)特征出現(xiàn)在良性應(yīng)用和惡意應(yīng)用中的數(shù)量,計(jì)算每個(gè)特征的S值,并依據(jù)相關(guān)定義進(jìn)行特征選擇。相比于FrequenSel、卡方校驗(yàn)、信息增益等算法,F(xiàn)DE算法特征評價(jià)簡便,特征選擇依據(jù)更加合理,計(jì)算消耗低且時(shí)間代價(jià)呈線性,運(yùn)行時(shí)間增幅與樣本輸入規(guī)模增幅成固定比例。由算法步驟可知,第1~2行執(zhí)行次數(shù)和問題規(guī)模無關(guān),僅執(zhí)行2次,第3~10行執(zhí)行次數(shù)隨問題規(guī)模n變化,其執(zhí)行次數(shù)最少為5n,最多為6n。故算法計(jì)算復(fù)雜度僅和樣本數(shù)量相關(guān),算法最好情況和最壞情況的時(shí)間復(fù)雜度均為O(n)。
本文通過3組實(shí)驗(yàn)來驗(yàn)證FDE算法的目標(biāo)效果和性能。第1組實(shí)驗(yàn)展示5個(gè)特征使用FDE算法的詳細(xì)計(jì)算過程和結(jié)果,驗(yàn)證FDE算法是否可達(dá)到有效去除非典型特征的目標(biāo)。第2組實(shí)驗(yàn)是在理想平衡數(shù)據(jù)集上驗(yàn)證不同特征數(shù)量下FDE算法的有效性,以及相比其他特征選擇算法的優(yōu)越性。第3組實(shí)驗(yàn)是在非平衡數(shù)據(jù)集上驗(yàn)證FDE算法選擇特征的有效性,以及相比其他特征選擇算法的優(yōu)越性。其中,為解決正負(fù)樣本不平衡情況下各算法組合對惡意樣本識別準(zhǔn)確率較低的問題,引入權(quán)重?fù)p失函數(shù),以降低誤報(bào)率。
在Google Play應(yīng)用市場下載5 000個(gè)良性應(yīng)用,VirusShare下載5 000個(gè)惡意應(yīng)用,通過Androidguard反編譯得到AndroidManifest.xml和.smali文件,提取權(quán)限和API調(diào)用信息。10 000個(gè)應(yīng)用構(gòu)成平衡數(shù)據(jù)集,共提取14 610個(gè)特征,按7∶3比例劃分訓(xùn)練集和測試集。非平衡數(shù)據(jù)集中良性與惡意應(yīng)用比例為5∶1,共提取13 789個(gè)特征,按10∶1劃分訓(xùn)練集和測試集。原始特征為權(quán)限信息和API信息,需將特征信息數(shù)字化,樣本中如果包含該特征則該欄特征信息為1,否則為0。表1展示了少量權(quán)限信息的特征數(shù)字化。
Table 1 Examples of individual sample feature digitization 表1 個(gè)別樣本特征數(shù)字化示例
TP(True Positive):將正類預(yù)測為正類;
TN(True Negative):將負(fù)類預(yù)測為負(fù)類;
FP(False Positive):將負(fù)類預(yù)測為正類;
FN(False Negative):將正類預(yù)測為負(fù)類。
準(zhǔn)確率:
(6)
精確率:
(7)
召回率:
(8)
誤報(bào)率:
(9)
F-1:
(10)
均值:
(11)
方差:
(12)
ROC(Receiver Operating Characteristic)曲線:ROC曲線是以假正率(FPR)和真正率(TPR)為軸的曲線,設(shè)定不同的判定正負(fù)樣本閾值,可以得到不同的TPR和FPR點(diǎn)對。將一系列點(diǎn)對連接成平滑的曲線,則為ROC曲線。TPR和FPR的定義見式(8)和式(9),其中TPR=Recall。
設(shè)計(jì)FDE算法的目的是為了去除非典型特征,選擇更有效的特征。為驗(yàn)證FDE算法是否達(dá)到設(shè)計(jì)目的,從14 610個(gè)特征中選取5個(gè)特征進(jìn)行計(jì)算和分析。表2展示了5個(gè)特征的特征信息及FDE算法計(jì)算結(jié)果。
詳細(xì)計(jì)算過程如下所示:
步驟1統(tǒng)計(jì)惡意樣本和良性樣本數(shù)量Tm=5000和Tb=5000。
步驟2分別統(tǒng)計(jì)5個(gè)特征在惡意樣本和良性樣本中出現(xiàn)的次數(shù)Nm和Nb。
步驟3根據(jù)式(1)計(jì)算5個(gè)特征的S值。
步驟4根據(jù)特征選擇標(biāo)準(zhǔn),選擇S值大于或等于0.1的特征,5個(gè)特征中有3個(gè)特征的S值大于0.1。
表2中非典型特征Landroid/net/SSLSessi-onCache和Landroid/graphics/Typeface經(jīng)FDE算法計(jì)算,分值較低,與其他典型特征分值差距較大,排名第4位和第5位,不在選取特征范圍之內(nèi)。后續(xù)使用卡方校驗(yàn)方法對上述5個(gè)特征進(jìn)行分值計(jì)算,結(jié)果顯示非典型特征Landroid/net/SSLSessionCache分值排名第3位。計(jì)算結(jié)果表明,F(xiàn)DE算法能達(dá)到有效去除非典型特征的目的。
給定平衡數(shù)據(jù)集,將FDE算法中ɑ設(shè)置為不同值,驗(yàn)證不同特征數(shù)量時(shí)FDE算法的有效性,以及相比其他算法的優(yōu)越性。ɑ取值分別為0.1,0.15,0.2和0.25,產(chǎn)生的特征數(shù)量分別為778,566,398和233。將經(jīng)過特征選擇后的不同數(shù)量特征放入SVM、KNN、CNN、Bayes、決策樹DT(Decision Tree)5種分類器中進(jìn)行實(shí)驗(yàn)對比,其中,由于CNN的特性,在平衡數(shù)據(jù)集上有關(guān)CNN實(shí)驗(yàn)結(jié)果皆取500次迭代的平均值作為實(shí)驗(yàn)結(jié)果。各分類器實(shí)驗(yàn)結(jié)果如圖1所示。
圖1a展示了各分類器準(zhǔn)確率的變化。由圖1a可見,隨著特征數(shù)量的增加,多數(shù)分類器的準(zhǔn)確率都呈上升趨勢。其中,SVM分類器的效果最優(yōu),準(zhǔn)確率最高值達(dá)98%,CNN分類準(zhǔn)確率略低于SVM的,Bayes分類效果最差,準(zhǔn)確率最高值僅為93.30%。DT分類準(zhǔn)確率呈現(xiàn)上下波動(dòng)狀況,與KNN分類準(zhǔn)確率基本接近。
圖1b展示了各分類器在778個(gè)特征上的ROC曲線(不含CNN算法,原因在于CNN取500次迭代平均值,無法生成其ROC曲線)。ROC曲線能夠綜合反映一個(gè)分類器的好壞,4種分類器ROC曲線中,最靠近左上方的是SVM的曲線,DT和KNN的曲線基本重合,Bayes的曲線最靠近右下方。實(shí)驗(yàn)結(jié)果表明,5種分類器中最適合FDE特征選擇的是SVM分類器,效果最差的是Bayes分類器。
Table 2 Instance data and calculation analysis of FDE algorithm表2 實(shí)例數(shù)據(jù)及FDE計(jì)算分析
Figure 1 Experimental results of FDE algorithm’s effectiveness with different features number圖1 不同特征數(shù)量時(shí)FDE算法的有效性實(shí)驗(yàn)結(jié)果
為比較FDE算法和其他特征選擇算法的性能差別,選擇卡方校驗(yàn)、信息增益、FrequenSel和FDE算法在SVM、KNN、CNN 3種分類器上進(jìn)行實(shí)驗(yàn)對比,實(shí)驗(yàn)結(jié)果如圖2所示。由于FrequenSel無法自主選擇特征數(shù)量,經(jīng)參數(shù)調(diào)整特征數(shù)量最低為930個(gè),將單獨(dú)把FrequenSel選擇的930個(gè)特征和卡方校驗(yàn)、信息增益、FDE等選擇的778個(gè)特征作比較。
圖2展示的實(shí)驗(yàn)結(jié)果中,SVM+Chi表示為SVM算法結(jié)合卡方校驗(yàn)特征選擇算法所得的實(shí)驗(yàn)結(jié)果,后續(xù)圖表中相關(guān)表示具有同種含義。由圖2a可知,F(xiàn)DE在各特征數(shù)量選擇上的準(zhǔn)確率都優(yōu)于卡方校驗(yàn)和信息增益特征選擇算法的。圖2b和圖2c所示為召回率和F-1值實(shí)驗(yàn)結(jié)果,由于對CNN的準(zhǔn)確率取500次迭代的平均值,所以無法得出其具體的召回率和F-1值。在召回率上FDE沒有表現(xiàn)出絕對優(yōu)勢,卡方校驗(yàn)與SVM的組合擁有最高的召回率,但在KNN分類器上,F(xiàn)DE的召回率基本優(yōu)于其他2種算法的。在F-1值上,F(xiàn)DE算法與SVM的組合擁有最高值,且各特征數(shù)量上的F-1值優(yōu)于其他特征選擇算法的。
Figure 2 Experimental results of FDE algorithm with other feature selection algorithms圖2 FDE算法與其他特征選擇算法對比實(shí)驗(yàn)結(jié)果
表3給出了FDE算法與FrequenSel、卡方校驗(yàn)、信息增益等算法在SVM、CNN、KNN 3種分類器上的比對實(shí)驗(yàn)結(jié)果。FrequenSel特征選擇算法在SVM和CNN上的準(zhǔn)確率都是最低的,在KNN上的準(zhǔn)確率高于卡方校驗(yàn)和信息增益的,但低于FDE的。在召回率及F-1值上,F(xiàn)requenSel在KNN上有較好表現(xiàn),但在SVM上均最差。從3種評價(jià)指標(biāo)的最高數(shù)值來看,F(xiàn)DE算法優(yōu)于FrequenSel算法。
同時(shí),為更詳細(xì)地比較各特征選擇算法對分類的影響,本文從分類概率值角度,驗(yàn)證分析了在SVM分類器上FDE與其他特征選擇算法對分類概率值的影響。實(shí)驗(yàn)中選取了平衡數(shù)據(jù)測試集中的1 522個(gè)惡意樣本和1 478個(gè)良性樣本,對各特征選擇算法在SVM分類器上的分類概率值進(jìn)行了驗(yàn)證分析。首先,選擇表現(xiàn)最優(yōu)異的SVM分類器,然后統(tǒng)計(jì)SVM結(jié)合不同特征選擇算法的分類概率值,計(jì)算出均值和方差。通過均值分析分類概率值的整體大小,通過方差分析分類概率值的離散程度。
表4展示了在SVM分類器上各特征選擇算法對分類概率值的影響結(jié)果。在良性測試樣本上SVM+FDE的分類概率值的均值略低于SVM+Chi的,方差略高于SVM+Chi的。在惡意測試樣本上SVM+FDE的均值最高,方差最小。結(jié)合召回率說明SVM+FDE傾向于惡意類別的識別,SVM+Chi在良性樣本的識別上效果要略好于SVM+FDE。雖然SVM+Chi在良性測試樣本上的分類概率值的均值和方差最優(yōu),但在惡意測試樣本上的分類概率值的均值和方差都是最差的。良性樣本和惡意樣本的分類概率值匯總計(jì)算后得出,SVM+FDE擁有最高的均值和最低的方差,所以SVM+FDE的分類概率值更大、更穩(wěn)定,F(xiàn)DE對分類的影響效果更好。
Table 3 Experimental results of FDE algorithm,FrequenSel algorithm,Chi-square test algorithm and Information divergence algorithm on SVM,CNN and KNN 表3 FDE與FrequenSel、卡方校驗(yàn)、信息增益等算法在SVM、KNN、CNN 3種分類器上的比對實(shí)驗(yàn)結(jié)果
Table 4 Average value and variance of classify probability values of FDE and other feature selection algorithms on SVM表4 FDE與其他特征選擇算法在SVM上分類概率值的均值和方差
表5中對比了SVM+FDE與其他4位研究者文章中的實(shí)驗(yàn)結(jié)果。實(shí)驗(yàn)結(jié)果表明,與FDE結(jié)合效果最好的SVM分類器的準(zhǔn)確率、F-1值都高于其他4篇文獻(xiàn)的方法,但在召回率上略有不足。
小結(jié):(1) 5種分類算法驗(yàn)證實(shí)驗(yàn)上的結(jié)果表明,F(xiàn)DE算法是有效可行的。(2) 與FrequenSel、卡方校驗(yàn)、信息增益等特征選擇算法的對比實(shí)驗(yàn)結(jié)果說明,SVM+FDE擁有最高的準(zhǔn)確率和F-1值,但SVM+Chi的召回率最高。召回率只是單方面地反映對正樣本的識別準(zhǔn)確度,但準(zhǔn)確率和F-1值更能綜合反應(yīng)方法的好壞,且FDE算法對分類概率值的影響較好。這表明FDE算法有效且優(yōu)于其他算法。(3) FDE算法的不足之處為:對良性樣本的識別比其他算法略差,即召回率略低。導(dǎo)致這種情況的原因有2種可能:一是FDE算法設(shè)計(jì)的目的是去除非典型特征,選擇有利于識別惡意應(yīng)用的特征,從而導(dǎo)致對惡意應(yīng)用識別效果較好,對良性應(yīng)用的識別效果較差。二是由于本文只使用了權(quán)限和API信息作為特征,僅依據(jù)這2種特征可能不能全面地分辨良性應(yīng)用與惡意應(yīng)用。
Table 5 Comparison of the method in this paper with other methods表5 本文方法與其他方法比較
為模仿良性應(yīng)用數(shù)量遠(yuǎn)超出惡意應(yīng)用數(shù)量的真實(shí)應(yīng)用軟件環(huán)境,本文在10 000個(gè)應(yīng)用的基礎(chǔ)上,刪除4 000個(gè)惡意應(yīng)用,形成正負(fù)樣本比為5∶1的非平衡數(shù)據(jù)集。重新進(jìn)行特征提取后獲得13 789個(gè)特征,使用FDE算法進(jìn)行特征選擇,共選擇1 062個(gè)特征。與平衡數(shù)據(jù)集選擇的778個(gè)特征作比較,其中有709個(gè)特征重合,權(quán)限類特征重復(fù)率為零。實(shí)驗(yàn)訓(xùn)練集包含3 850個(gè)應(yīng)用,測試集共2 150個(gè)樣本。
首先,設(shè)計(jì)實(shí)施了非平衡數(shù)據(jù)上FDE算法特征選擇有效性驗(yàn)證和FDE算法與其他特征選擇算法性能比對實(shí)驗(yàn)。實(shí)驗(yàn)中,卡方校驗(yàn)、信息增益、FrequenSel皆重新進(jìn)行特征選擇,并分別在SVM和CNN分類器上進(jìn)行實(shí)驗(yàn)比較,實(shí)驗(yàn)結(jié)果如表 6所示,其中所有CNN實(shí)驗(yàn)均運(yùn)行5次,每次迭代150次,每次運(yùn)行結(jié)果取值于最后一次的迭代結(jié)果,統(tǒng)計(jì)5次運(yùn)行的結(jié)果。
表6中,Accuracy-max為最高準(zhǔn)確率,Accur-acy-aver為平均準(zhǔn)確率,M-Accuracy為惡意樣本識別準(zhǔn)確率。實(shí)驗(yàn)結(jié)果表明,當(dāng)正負(fù)樣本比例不平衡時(shí),各特征選擇算法效果均有所降低。在CNN實(shí)驗(yàn)中,F(xiàn)DE算法的最高準(zhǔn)確率和平均準(zhǔn)確率最高,最高值為96.56%,平均值為96.35%。且對惡意樣本識別效果最好,最高值達(dá)到93.85%,平均值達(dá)到93.72%。在SVM分類器上,F(xiàn)DE算法的效果略低于信息增益特征選擇算法的。同時(shí),對比了各特征選擇算法進(jìn)行特征提取的時(shí)間,結(jié)果表明,F(xiàn)DE算法的時(shí)間遠(yuǎn)遠(yuǎn)少于卡方校驗(yàn)和信息增益的,略少于FrequenSel的特征提取時(shí)間。以上分析表明,F(xiàn)DE算法在非平衡數(shù)據(jù)集上同樣有效,且相比其他特征選擇算法具有一定的優(yōu)勢。
Table 6 Experimental results on unbalanced data sets表6 非平衡數(shù)據(jù)集上實(shí)驗(yàn)結(jié)果
其次,注意到由于正負(fù)樣本的不平衡,使得各算法組合對惡意樣本的識別準(zhǔn)確率明顯低于對良性樣本的識別準(zhǔn)確率。由于特征良性或惡意判斷問題可理解為二分類問題,為解決惡意樣本識別準(zhǔn)確率低的問題,引入權(quán)重?fù)p失函數(shù)。
以交叉熵函數(shù)作為損失函數(shù),計(jì)算公式如下所示:
(13)
考慮到樣本的不平衡性,在損失函數(shù)中賦予不同類別不同的權(quán)重,改進(jìn)式(13)得權(quán)重?fù)p失函數(shù)如下所示:
(14)
其中,W0為第1個(gè)類別的權(quán)重,W1為第2個(gè)類別的權(quán)重。若W0值較高,W1值較低,第1類中的樣本被錯(cuò)分時(shí),權(quán)重?fù)p失函數(shù)值比無權(quán)重的損失函數(shù)值更大,而第2類中的樣本被錯(cuò)分時(shí),對損失值的影響較小。因此,影響網(wǎng)絡(luò)傾向于學(xué)習(xí)某些類而降低損失值。對于多分類的問題,同樣可以使用這種賦予權(quán)重的方式來讓網(wǎng)絡(luò)傾向于某些類。
實(shí)驗(yàn)中,采用FDE+CNN組合的方法驗(yàn)證引入權(quán)重?fù)p失函數(shù)的效果。圖3展示了FDE+CNN組合方法下各權(quán)重誤報(bào)率和準(zhǔn)確率變化情況,其中,良性類別權(quán)重為BW,惡意類別權(quán)重為MW。誤報(bào)率可以反映測試集中惡意樣本被錯(cuò)分為良性應(yīng)用的比例。
Figure 3 Weight adjustment experimental results of FDE+CNN combination method圖3 FDE+CNN組合方法的權(quán)重調(diào)整實(shí)驗(yàn)結(jié)果
由圖3a和圖3b可見,隨著迭代次數(shù)的增加,誤報(bào)率呈現(xiàn)先下降后升高的趨勢,且隨著惡意樣本類權(quán)重?cái)?shù)值的增大,誤報(bào)率整體呈下降趨勢,但準(zhǔn)確率呈先上升后下降的趨勢。這表明惡意類別權(quán)重?cái)?shù)值增大可以減少誤報(bào)率,但權(quán)重超過一定數(shù)值,會(huì)降低整體準(zhǔn)確率。
因此,經(jīng)多次權(quán)重參數(shù)調(diào)整,最終權(quán)重取值確定為MW=3,BW=1。此權(quán)重下惡意樣本識別準(zhǔn)確率為94.31%,整體準(zhǔn)確率為96.37%。相比于表6中未考慮權(quán)重?fù)p失函數(shù)的實(shí)驗(yàn)結(jié)果,惡意樣本識別準(zhǔn)確率得到提高,整體準(zhǔn)確率和平均值相近,但對良性樣本的識別率有所下降。
該實(shí)驗(yàn)結(jié)果表明:(1)在非平衡數(shù)據(jù)集上FDE算法同樣有效,且相比于其他特征選擇算法,具有整體準(zhǔn)確率高、善于識別惡意應(yīng)用、特征提取時(shí)間短等特點(diǎn)。(2)針對非平衡數(shù)據(jù)中惡意應(yīng)用識別率較低的問題,引入權(quán)重?fù)p失函數(shù),賦予惡意應(yīng)用類別高權(quán)重可提高對惡意應(yīng)用的識別準(zhǔn)確率。
本文針對Android惡意應(yīng)用靜態(tài)檢測提出了一種新的特征選擇算法FDE,其目的是為了解決已有特征選擇算法在檢測中存在的不足,以篩選出更有效的特征,提高檢測的準(zhǔn)確率。FDE算法從特征最本質(zhì)的角度篩選有效特征,去除非典型特征,從大量特征中選取少量特征作為分類算法的輸入,減少模型訓(xùn)練時(shí)間與特征提取時(shí)間。理論分析和實(shí)驗(yàn)結(jié)果表明,F(xiàn)DE算法是有效可行的,且相比于其他特征選擇算法具有自身的優(yōu)勢。但是也反映出,FDE算法還存在需要改進(jìn)完善之處:對非典型特征做的限定略顯粗糙,可能會(huì)使一些典型特征被限定為非典型特征,且實(shí)驗(yàn)中分類器在召回率上的表現(xiàn)略有不足。未來值得進(jìn)一步探討的方向有:(1)新特征[35 - 37]或有效特征的組合方法。有研究者發(fā)現(xiàn)僅靠權(quán)限和API信息2種特征并不能全面地檢測惡意應(yīng)用,可以挖掘更具有代表性的特征進(jìn)行惡意應(yīng)用檢測。(2)對抗攻擊的深度學(xué)習(xí)檢測方法研究。隨著深度學(xué)習(xí)的廣泛應(yīng)用[38],有研究者利用深度學(xué)習(xí)的脆弱性實(shí)現(xiàn)了針對基于深度學(xué)習(xí)的對抗攻擊。(3)基于Android的其他惡意行為檢測,如釣魚網(wǎng)站檢測[39]等。