郝靖偉,潘麗敏,李蕊,楊鵬,羅森林
(1.北京理工大學 信息與電子學院,北京 100081; 2.國家計算機網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心,北京 100029)
中國互聯(lián)網(wǎng)絡(luò)信息中心在2019年發(fā)布的《第44次中國互聯(lián)網(wǎng)絡(luò)發(fā)展現(xiàn)狀統(tǒng)計報告》[1]顯示,中國移動互聯(lián)網(wǎng)用戶數(shù)已達7.88億,手機互聯(lián)網(wǎng)用戶比例高達98.3%。國際數(shù)據(jù)中心發(fā)布的報告[2]顯示,2019年Android系統(tǒng)的市場份額為87%,占據(jù)了智能手機操作系統(tǒng)市場的主導地位。該系統(tǒng)具備的靈活性和開放性給開發(fā)者和用戶帶來了極大的便利,如開發(fā)者能夠自由開發(fā)并上傳應(yīng)用程序到應(yīng)用市場,用戶可以從應(yīng)用市場中隨意下載應(yīng)用程序,但同時也使Android系統(tǒng)和用戶容易遭受惡意軟件的攻擊,因此,研究Android惡意軟件檢測方法是移動端操作系統(tǒng)安全防護領(lǐng)域的重要內(nèi)容之一。
機器學習涉及概率論、統(tǒng)計學等多門學科,是近年來興起的最熱門的多領(lǐng)域交叉學科之一,現(xiàn)已被廣泛應(yīng)用到Android惡意軟件檢測領(lǐng)域?;跈C器學習的Android惡意軟件檢測方法不需要過多人工干預,并且可隨著惡意軟件數(shù)據(jù)量的增加實現(xiàn)方法的自我改進,具有自動化和高精度的特點。特征選擇是基于機器學習的Android惡意軟件檢測方法的重要組成部分。通過特征選擇能夠從高維特征空間中挖掘出用于檢測惡意軟件的關(guān)鍵特征。
針對Android惡意軟件檢測的特征選擇方法,主要分為基于過濾評價策略的特征選擇方法和基于包裝評價策略的特征選擇方法。
1)基于過濾評價策略的惡意軟件檢測特征選擇方法。主要包含信息增益、卡方檢驗、頻率統(tǒng)計等方法。其中,卡方檢驗、信息增益等方法計算特征與檢測結(jié)果的相關(guān)度,再對特征進行排序,選擇相關(guān)度高的特征。例如,Yerima等[3]提出利用信息增益對惡意軟件原始權(quán)限特征集進行特征選擇,選擇出信息增益最大的20個特征作為特征集訓練樸素貝葉斯惡意軟件檢測器,檢測準確率達92%。Pehlivan等[4]提出通過卡方檢驗算法從97個權(quán)限特征中選擇出25個特征,利用該特征集訓練隨機森林(RF)模型,檢測準確率達到94.9%。Wang等[5]先通過互信息、相關(guān)系數(shù)和T-test檢驗方法分別對權(quán)限特征進行排序,再使用順序正向選擇算法和主成分分析(PCA)算法識別有風險的權(quán)限子集,使用支持向量機(SVM)和隨機森林等評估選擇出的權(quán)限特征的檢測效果,實驗結(jié)果顯示,該方法能夠達到94.62%的檢測率及0.6%的誤報率。頻率統(tǒng)計的方法通過計算特征在軟件中出現(xiàn)的頻率,選擇頻率高的特征。但是,Cen等[6]在利用該方法進行Android軟件特征選擇時研究發(fā)現(xiàn),有些低頻率出現(xiàn)的特征(如SMS相關(guān)的權(quán)限)對檢測效果貢獻較高不被選擇,有些高頻率出現(xiàn)的特征(如toString()在惡意軟件和良性軟件中同時出現(xiàn))對檢測效果貢獻度較低被選擇,即該特征選擇方法忽略了特征在類間的頻率分布,容易選擇出冗余特征。
2)基于包裝評價策略的惡意軟件檢測特征選擇方法。Pehlivan等[4]提出一種基于權(quán)限特征的惡意軟件檢測方法,利用隨機森林進行特征選擇,選擇出25維特征,達到了89.32%的準確率。Fest[7]利用Freqensel算法對權(quán)限、API等特征進行特征選擇,得到92%的準確率和召回率。2018年,Tao等[8]提出一種基于與權(quán)限相關(guān)的API特征的惡意軟件檢測方法,使用隨機森林進行特征選擇,選擇出50個高度敏感的API,得到了98.24%的F1值。Li等[9]經(jīng)過多層特征選擇,從135維權(quán)限特征中選擇出22維特征,利用該特征集構(gòu)建基于支持向量機的檢測模型,實現(xiàn)對Android惡意軟件的檢測。特征選擇能夠從高維特征空間中挖掘出Android惡意軟件檢測的關(guān)鍵特征,提高檢測準確率?,F(xiàn)有的Android惡意軟件特征選擇方法忽略特征在類間的頻率分布,有些高頻率出現(xiàn)的特征(如用戶界面設(shè)計“android.view.ViewGroup.addView”在惡意軟件和良性軟件中同時出現(xiàn))對檢測效果貢獻度較低,卻被過度估計重要性,成為檢測Android惡意軟件的特征,導致特征子集冗余性較高,影響檢測效果。
針對現(xiàn)有特征選擇方法中對類間相同頻率分布的特征過度關(guān)注導致特征冗余性較強的問題,本文提出一種Android惡意軟件檢測低冗余特征選擇方法。首先,分離類間存在頻率分布偏差的特征,然后,量化偏差程度和頻率以剔除低偏差和低頻特征,并結(jié)合分類器實際分類效果選擇出特征子集,降低惡意軟件檢測特征集的冗余性。
Android惡意軟件檢測低冗余特征選擇方法的核心思想是:通過分離類間存在頻率分布偏差的特征,量化偏差程度和特征出現(xiàn)頻率以剔除低偏差和低頻特征,并結(jié)合分類器實際分類效果選擇出特征子集。其基本原理框架如圖1所示。
圖1 Android惡意軟件檢測低冗余特征選擇方法原理框架Fig.1 Framework of low redundancy feature selection method for Android malware detection
該方法包括2個主要的功能模塊:預處理模塊和特征選擇模塊。預處理模塊對輸入的Apk文件進行解壓縮和反編譯得到Smali源代碼和Android Manifest.xml文件,再從中提取出3種類型的特征集,并對提取出的特征集進行缺失值清理、重復值清理、格式清洗和異常值處理等處理;特征選擇模塊對處理后的特征集進行Mann-Whitney檢驗,提取出存在頻率分布偏差的特征集,再利用外觀比率間隔算法對特征的偏差程度和出現(xiàn)頻率進行量化并選擇,最終通過粒子群優(yōu)化算法結(jié)合分類器實際檢測效果得到最優(yōu)特征子集。
首先,使用Androguard工具[10]對Android應(yīng)用程序的Apk文件進行解壓縮。其次,反編譯解壓縮后的文件,得到Smali源代碼及AndroidManifest.xml文件。然后,解析Smali源代碼中的invoke-virtual、invoke-direct、invoke-static和invokesuper四個指令的匯編代碼,得到API特征SApi={p1,p2,…,pm}。其中,m為應(yīng)用程序包的數(shù)量。當pm出現(xiàn)在Apk Smali源代碼中時,其值為1,否則為0。最后,解析AndroidManifest.xml文件,從文件中獲取訪問控制機制的特征和組間通信的特征,如權(quán)限、系統(tǒng)組件包含的Intent元素等。分別從AndroidManifest.xml文件和Smali源代碼中提取出24個權(quán)限特征、45個系統(tǒng)Intent特征及620個敏感API作為原始特征集。初始特征的具體信息如表1所示。
表1 初始特征信息Table 1 Initial feature information
得到原始特征集后,對數(shù)據(jù)進行清理缺失值、清理重復值、清洗格式及處理異常值的操作。清理缺失值主要是將數(shù)據(jù)集中有屬性值缺失的數(shù)據(jù)刪除,如若某個權(quán)限的數(shù)據(jù)值不存在,則直接刪除該應(yīng)用程序的所有數(shù)據(jù);清理重復值主要是以應(yīng)用程序的ID作為標準,刪除所有具有相同ID的數(shù)據(jù),使得數(shù)據(jù)集中每個ID僅有一條數(shù)據(jù);清洗格式主要是刪除數(shù)據(jù)集中的不合法字符,如“-”等,修改不正確的數(shù)據(jù)格式,或?qū)?quán)限數(shù)量值由“科學計數(shù)”格式修改為“文本”格式等;處理異常值主要是識別數(shù)據(jù)集中的離群點及異常點并刪除該條數(shù)據(jù),如某個ID中權(quán)限特征值為10 000的數(shù)據(jù)。
經(jīng)過數(shù)據(jù)預處理后,得到一個無空缺屬性值、無重復應(yīng)用程序、無異常屬性值及數(shù)據(jù)格式正確統(tǒng)一的Android惡意軟件特征集,以便后續(xù)步驟使用。
1.3.1 Mann-Whitney檢驗
經(jīng)過預處理后得到包含系統(tǒng)權(quán)限、API和組間通信Intent特征的原始特征集。接下來使用Mann-Whitney檢驗[11]來分析這些原始特征集中的特征在惡意和良性軟件中的頻率分布是否有顯著不同。
Mann-Whitney檢驗方法是一種非參數(shù)秩和假設(shè)檢驗,對獨立樣本進行的一種不要求正態(tài)分布的T-test檢驗方法,能夠?qū)碜猿丝傮w均值以外完全相同的總體,檢驗是否具有顯著差異。首先,假設(shè)2個獨立樣本之間沒有差異,成立則H0,不成立則H1。該方法的具體步驟如下:
步驟1 檢驗的2組獨立樣本n1、n2先進行混合,并根據(jù)數(shù)據(jù)大小升序排列并編排等級(秩rank),遇到相同的數(shù)據(jù)時,等級值相等,為編排等級前的平均值。
步驟2 分別求出2個樣本的等級和R1、R2。
步驟3 Mann-Whitney檢驗統(tǒng)計量U1、U2的計算公式如下:
式中:U1、U2中的最小值用于與顯著檢驗閾值Uα(查Mann-Whitney Table可得具體值)相比較,如果Umin<Uα時則拒絕H0,接受H1,表明兩樣本之間存在差異。
分別假設(shè)在惡意軟件和良性軟件中第i個特征集沒有顯著不同(不存在分布偏差),拒絕零假設(shè)的閾值a為0.05。再將惡意和良性的軟件分為2組,輸入矩陣如表2所示。如果一個應(yīng)用軟件(惡意或者良性)包含某個特征,則該樣本的值Bf或Mf為1,反之為0。在一個檢驗中,2組樣本集代表1個特定權(quán)限是否被惡意或者良性軟件使用。Mann-Whitney檢驗的輸出為拒絕假設(shè)或接受假設(shè)。當Mann-Whitney檢驗的p值大于閾值時則拒絕假設(shè),當Mann-Whitney檢驗的p值小于閾值時則接受假設(shè)。
表2 Mann-Whitney檢驗輸入矩陣Table 2 Mann-Whitney test input matrix
1.3.2 外觀比率間隔算法
通過Mann-Whitney檢驗得到存在分布偏差的特征集F,接下來利用外觀比率間隔算法量化特征在惡意軟件和良性軟件中的分布偏差程度,以及特征在良性軟件和惡意軟件中的出現(xiàn)頻率,本文目標是:選擇出在整體軟件中高頻出現(xiàn)且在惡意軟件和良性軟件中分布偏差程度大的特征。假設(shè)比例越小,一個特征在良性應(yīng)用和惡意軟件之間的外觀比例差距越大。因此,顯示小比例的特征對于檢測惡意軟件是有用的。外觀比率間隔算法主要步驟如下:
步驟1 分別計算特征集F中的特征f在良性軟件和惡意軟件中的外觀比率E(f)。特征在良性軟件的外觀比率E(f)benign和惡意軟件的外觀比率E(f)malicious計算公式如下:
步驟3 特征選擇。若特征f的外觀比率比例E(f)proportion不為0,則判斷外觀比率比例E(f)proportion是否小于閾值Tproportion,若小于閾值,則該特征為只在良性或惡意軟件中頻繁出現(xiàn)的特征,該特征被選擇進入特征子集,若大于閾值,則該特征為只在良性或惡意軟件中較少出現(xiàn)的特征,不被選擇進入特征子集。若外觀比率比例E(f)proportion為0,則 判 斷 外 觀 比 率 比 例 差 異E(f)difference是否小于閾值Tdifference。若小于閾值,則該特征為只在良性或惡意軟件中頻繁出現(xiàn)的特征,該特征被選擇進入特征子集F′,若大于閾值,則該特征為只在良性或惡意軟件中較少出現(xiàn)的特征,不被選擇進入特征子集F′。外觀比率間隔算法偽代碼如下。
算法1 外觀比率間隔算法。
輸入:F,n(B0f),n(M0f),n(B f),n(M f)。輸出:F′。
For i to F.size()do計 算 E(f)benign,E(f)malicious,E(f)proportion,E(f)difference If E(f)proportion不為0 then If E(f)proportion小于閾值T proportion then F←fi Else: F←/fi Else:If E(f)difference是否小于閾值T difference then F←fi Else: F←/fi
1.3.3 粒子群優(yōu)化算法
通過外觀比率間隔算法提出低頻和低偏差的特征后,接下來利用粒子群優(yōu)化算法選擇出用于Android惡意軟件檢測的特征子集。
首先,將粒子群隨機初始化即隨機選擇特征子集。粒子的位置即特征子集Xi={x1,x2,…,xN},xi∈{0,1},i=1,2,…,N。每個粒子的位置代表一個特征子集。其中,N為特征的總數(shù),xi=1代表i位置的特征被選擇,xi=0代表對應(yīng)位置的特征不被選擇。初始化時,每個粒子位置在[0,1]之間。
然后,計算適應(yīng)度(Fitness),公式如下:
式中:r為屬于(0,1)區(qū)間的一個隨機數(shù);vi為粒子的速度大小。
最后,設(shè)置停止條件。當選擇出的特征子集在分類器中的檢測準確率達到閾值時則停止,否則繼續(xù)進行特征選擇。
實驗所用軟件資源如表3所示,包括Python和Anaconda,分別用來提供腳本語言環(huán)境和搭建虛擬環(huán)境。實驗所用硬件資源如表4所示,使用Mac計算機來編寫代碼和運行程序。
表3 實驗所用軟件資源Table 3 Software resources used in experiment
表4 實驗所用硬件資源Table 4 Har dware resources used in exper iment
將準確率(Accuracy)、精確率(Precision)、召回率(Recall)和F1值作為實驗評價指標,計算公式如下:
式中:tp為惡意軟件被正確檢測的樣本數(shù)量;tn為良性軟件被正確檢測的樣本數(shù)量;fp為良性軟件被檢測為惡意軟件的樣本數(shù)量;fn為惡意軟件被檢測為良性軟件的樣本數(shù)量。
2.3.1 實驗目的和數(shù)據(jù)源
本節(jié)實驗旨在評估本文方法在不同算法上使用前后的檢測性能表現(xiàn)。AMD和DREBIN公開數(shù)據(jù)集為實驗數(shù)據(jù)源,數(shù)據(jù)集概況如表5所示。
表5 數(shù)據(jù)集概況Table 5 Description of dataset
表5中,AMD數(shù)據(jù)集包含了2010—2016年間的24 650個惡意軟件樣本及24 650個良性樣本,惡意軟件包含了135個惡意軟件類型和71個惡意軟件家族。DREBIN數(shù)據(jù)集包含了2010年8月至2012年10月的5 560個惡意軟件和5 560個良性軟件。由于廣告軟件處于惡意軟件和良性功能之間的模糊地帶,該數(shù)據(jù)集中不含有廣告軟件樣本。
2.3.2 實驗過程和參數(shù)
首先,將DREBIN數(shù)據(jù)集中的80%數(shù)據(jù)作為訓練集,20%的數(shù)據(jù)作為測試集。
然后,利用訓練集選擇出模型中合適的參數(shù)。其中,Mann-Whitney檢驗拒絕零假設(shè)的閾值a為0.05,外觀比率比例的閾值Tproportion取值為0.2,外觀比率比例差異的閾值Tdifference取值為0.5,粒子群優(yōu)化算法中α取值為0.8,β取值為0.2,加速因子c1為0.5,c2為0.5。
其次,在訓練集下,分別利用原始特征集和最優(yōu)特征集訓練梯度提升樹算法(GBDT)[12]、自適應(yīng)提升算法(AdaBoost)[13]、多層神經(jīng)網(wǎng)絡(luò)算法(MLP)[14]、邏輯回歸算法(LR)[15]、貝葉斯算法(NB)[16]和隨機森林[17]算法。其中,隨機森林算法中樹的數(shù)量為100,每個決策樹隨機選擇的特征數(shù)目為241。
最后,在測試集下,分別利用原始特征集和最優(yōu)特征子集計算上述算法的準確率、精確率、召回率和F1值,最終得到Android惡意軟件檢測外觀比率間隔特征選擇方法的實驗結(jié)果。
AMD數(shù)據(jù)集重復以上過程。
2.3.3 實驗結(jié)果
以AMD數(shù)據(jù)集為例,使用提出的外觀比率間隔特征選擇方法選擇出維度為294的最優(yōu)特征子集,如表6所示。檢測能力評估實驗的結(jié)果如表7和表8所示。
表6 AMD數(shù)據(jù)集的最優(yōu)特征子集Table 6 Optimal feature subset of AMD dataset
表7 特征選擇實驗結(jié)果(AMD數(shù)據(jù)集)Table 7 Experimental results of feature selection(AMD dataset)
表8 特征選擇實驗結(jié)果(DREBIN數(shù)據(jù)集)Table 8 Experimental results of feature selection(DREBIN dataset)
2.4.1 實驗目的和數(shù)據(jù)源
本節(jié)實驗旨在對比分析提出的外觀比率間隔特征選擇方法與其他特征選擇方法在Android惡意軟件檢測準確率上的性能差異。DREBIN公開數(shù)據(jù)集為實驗數(shù)據(jù)源,其詳細介紹如表5所示。
2.4.2 實驗過程和參數(shù)
首先,將DREBIN數(shù)據(jù)集中的80%數(shù)據(jù)作為訓練集,20%的數(shù)據(jù)作為測試集。
然后,利用訓練集選擇出模型中合適的參數(shù)。其中,Mann-Whitney檢驗拒絕零假設(shè)的閾值a為0.05,外觀比率比例的閾值Tproportion取值為0.5,外觀比率比例差異的閾值Tdifference取值為0.5,粒子群優(yōu)化算法中α取值為0.8,β取值為0.2,加速因子c1為0.5,c2為0.5。
其次,在訓練集下,分別利用文獻[18-22]中提到的卡方檢驗、方差選擇、遞歸特征消除、遺傳算法和關(guān)聯(lián)規(guī)則特征選擇方法,與本文方法對原始特征集進行特征選擇并訓練隨機森林分類器。其中,隨機森林算法中樹的數(shù)量為100,每個決策樹隨機選擇的特征數(shù)目為241。
最后,在測試集下,分別利用文獻[18-22]中的方法,與本文方法選擇出特征并測試隨機森林分類器的準確率、精確率、召回率和F1值,最終得到Android惡意軟件檢測外觀比率間隔特征選擇方法對比實驗結(jié)果。
2.4.3 實驗結(jié)果
對比分析實驗結(jié)果如表9所示。
表9 特征選擇方法實驗結(jié)果對比Table 9 Comparison of experimental results among feature selection methods
在生成最優(yōu)特征子集時,外觀比率間隔特征選擇方法可以挑選出低頻和低偏差的特征,同時將不相關(guān)特征及冗余特征從備選特征集中剔除。從表6可以看出,Android惡意軟件更傾向于使用與SMS短信相關(guān)的特征,這類特征在正常應(yīng)用中所使用的頻率較低,同時Dex Class Loader等在Android正常應(yīng)用中所使用的頻率遠高于在惡意軟件中所使用的頻率。這一現(xiàn)象表明,Android開發(fā)人員有意識地通過動態(tài)加載這一技術(shù)對自己的核心代碼進行保護,同時開發(fā)人員還可以通過該技術(shù)對自己的軟件進行動態(tài)拓展。
在檢測能力評估實驗中,本文方法能夠提升分類方法的檢測效果。將本文方法應(yīng)用到分類方法后顯示(見表7),在AMD數(shù)據(jù)集中部分基礎(chǔ)分類方法的檢測效果有所提升,如使用GBDT方法進行惡意軟件檢測,其精確率從94.9%提升至96.2%,LR 方法的精確率從90.2% 提升至95.2%,MLP方法的召回率和F1值均提升了0.01,AdaBoost方法、NB方法等準確率、精確率都有不同程度的提升。表8顯示,在DREBIN數(shù)據(jù)集中,部分基礎(chǔ)分類方法的檢測效果有所提升,如使用RF方法進行Android惡意軟件檢測,其精確率從93.2%提升至94.9%,其他方法的準確率、精確率等評價指標在進行特征選擇后都有不同程度的提升。本文方法能夠拉近同類特征在特征空間中的距離,不易過擬合,能夠準確檢測Android惡意軟件。因此,本文方法能夠提升分類算法的檢測效果。
在對比分析實驗中,本文方法優(yōu)于其他對比方法。結(jié)果顯示,該方法選擇出的特征數(shù)量為294,準確率為98.2%,召回率即檢測率為98.4%,精確率為98.1%,F(xiàn)1值為0.983,特征數(shù)量少于4種(共5種)對比方法,準確率、精確率、召回率和F1值均優(yōu)于其他5種對比方法。該方法通過分離類間存在頻率分布偏差的特征,量化偏差程度和特征出現(xiàn)頻率以剔除低偏差和低頻特征,并結(jié)合分類器實際分類效果選擇出特征子集,相比于其他利用特征與檢測結(jié)果相關(guān)關(guān)系的對比方法(卡方檢驗、方差選擇、遞歸特征消除、遺傳算法和關(guān)聯(lián)規(guī)則),具有更好的特征選擇效果。因此,本文方法優(yōu)于其他對比方法。
本文針對現(xiàn)有的Android惡意軟件檢測特征選擇方法忽略特征在類間的頻率分布情況,對同時出現(xiàn)在惡意軟件和良性軟件的特征過度關(guān)注,導致特征冗余性較強的問題,提出一種Android惡意軟件檢測外觀比率間隔特征選擇方法。
1)該方法利用Mann-Whitney檢驗方法選擇出在惡意軟件和良性軟件中存在頻率分布偏差的特征,通過外觀比率間隔算法量化偏差程度和特征出現(xiàn)頻率剔除低偏差和整體軟件中低頻使用的特征,利用粒子群優(yōu)化算法根據(jù)實際檢測效果得到最優(yōu)特征子集,降低了Android惡意軟件特征集的冗余性。
2)使用DREBIN公開數(shù)據(jù)集和AMD公開數(shù)據(jù)集進行特征選擇能力評估實驗和對比實驗,實驗結(jié)果顯示,在AMD數(shù)據(jù)集上選擇出了294維特征,進行特征選擇后6種分類器的檢測準確率提高了1% ~5%,最佳檢測準確率為98.2%;在DREBIN數(shù)據(jù)集上選擇出了295維特征,進行特征選擇后將隨機森林分類器的檢測精確率提高了1.7%。與5種特征選擇方法對比,具有較少的特征數(shù)量,具有較高的準確率、精確率、召回率(檢測率)和F1值。這是因為本文方法可以通過確定閾值保存其他方法丟棄的有用特征,同時去除其他方法的冗余特征,降低了特征的冗余性,提高了惡意軟件檢測特征選擇方法的檢測效果。
研究工作還可以進一步增加從Apk文件中提取出的初始特征類型和數(shù)量,從而提升Android惡意軟件檢測能力,實現(xiàn)對Android系統(tǒng)和用戶進行全面的安全防護。