趙宇鑫,努爾布力,艾 壯
1.新疆大學(xué) 軟件學(xué)院,烏魯木齊830046
2.新疆大學(xué) 網(wǎng)絡(luò)中心,烏魯木齊830046
3.新疆大學(xué) 信息科學(xué)與工程學(xué)院,烏魯木齊830046
根據(jù)Gartner 公司的統(tǒng)計(jì),截至2017 年,Android 智能手機(jī)操作系統(tǒng)的市場(chǎng)占有率已經(jīng)達(dá)到85.9%。Android系統(tǒng)受到了市場(chǎng)的青睞,這與其開源的特性密不可分。隨著基于Android系統(tǒng)二次開發(fā)的操作系統(tǒng)和手機(jī)數(shù)量的增長(zhǎng),Android平臺(tái)逐漸成為攻擊者的主要目標(biāo),系統(tǒng)自身和應(yīng)用程序的安全問題變得越來越嚴(yán)重。爆炸式增長(zhǎng)的應(yīng)用市場(chǎng)的管理因此成為一種新興的涉及惡意應(yīng)用程序檢測(cè)的關(guān)鍵問題。隨著Android惡意應(yīng)用檢測(cè)技術(shù)的發(fā)展,越來越復(fù)雜的惡意應(yīng)用逃避系統(tǒng)檢測(cè)。因此,Android 應(yīng)用程序市場(chǎng)的管理需要有效的方法來檢測(cè)惡意程序。應(yīng)用程序市場(chǎng)通常會(huì)根據(jù)應(yīng)用程序開發(fā)人員指定的類別或通過分析應(yīng)用程序開發(fā)人員提供的描述對(duì)應(yīng)用程序進(jìn)行分類。惡意應(yīng)用的開發(fā)人員很容易操縱這個(gè)過程來逃避檢測(cè)。并且隨著應(yīng)用數(shù)量的激增,快速準(zhǔn)確地自動(dòng)分類應(yīng)用程序從而提高管理效率,變得至關(guān)重要。
在這種背景下,本文提出了一個(gè)新的模型,以便在檢測(cè)惡意應(yīng)用程序方面有效地管理應(yīng)用商店中的大量應(yīng)用程序。應(yīng)用商店從每個(gè)APK(Android Application Package)文件中提取大量功能,并使用這些功能來表示應(yīng)用程序的行為。一般來說,惡意應(yīng)用的行為與良性應(yīng)用程序的行為不同。例如,惡意應(yīng)用程序可能會(huì)請(qǐng)求其功能上不需要的權(quán)限。某個(gè)類別中的良性應(yīng)用程序的行為也與其他類別的行為區(qū)別開來。從所有的應(yīng)用程序中,總共提取了2 374 348 個(gè)功能[1],分為11 種類型。為了提高檢測(cè)和分類的效率,使用SVM-RFE(Support Vector Machine Recursive Feature Elimination)根據(jù)功能對(duì)檢測(cè)的重要性對(duì)其進(jìn)行排名。然后,使用包括SVM(Support Vector Machine)、K-NN(K-Nearest Neighbor)、NB(Na?ve Bayes)、CART(Classification and Regression Tree)和RF(Random Forest)在內(nèi)的五個(gè)分類器的集合來檢測(cè)惡意應(yīng)用程序。在該模型框架的最終實(shí)驗(yàn)中,使用MASV檢測(cè)方法實(shí)現(xiàn)了99.27%的檢測(cè)精度。
2.1.1 指示函數(shù)
Π(·)為指示函數(shù),當(dāng)·為真時(shí)輸出1,為假時(shí)輸出0。定義如下:
2.1.2 特征排序和排名標(biāo)準(zhǔn)
特征選擇是通過窮舉出所有的特征子集,選擇滿足給定“模型選擇”標(biāo)準(zhǔn)的最佳特征子集。但由于子集的組合數(shù)量龐大,窮舉出所有的特征子集不切實(shí)際,可以回歸到一種實(shí)際可用的方法,首先將特征數(shù)量減少到可管理的大小,其中特征排序算法比較有競(jìng)爭(zhēng)力,可實(shí)現(xiàn)。
特征排序算法顧名思義就是通過對(duì)每個(gè)特征依照某種標(biāo)準(zhǔn)進(jìn)行評(píng)估,對(duì)每個(gè)特征進(jìn)行打分或賦權(quán)值,選擇出固定數(shù)量排名最高的特征進(jìn)行下一步的分析或設(shè)計(jì)分類器。本文用到的SVM遞歸特征消除算法是依照敏感性分析對(duì)特征進(jìn)行排名,具體原理如下。
OBD(Optimal Brain Damage)算法作者LeCun[2]提出使用成本函數(shù)DJ(x)代替權(quán)重作為修剪特征的標(biāo)準(zhǔn):
對(duì)于線性判別函數(shù)J 與ωi的二次函數(shù)是等價(jià)的,最小值時(shí)可以表示為:
該公式進(jìn)一步證明[3]可以使用(ωi)2作為排序標(biāo)準(zhǔn)。
2.1.3 梯度上升算法的目標(biāo)函數(shù)和代價(jià)函數(shù)
梯度上升算法的目標(biāo)函數(shù)為:
其中,θi(i=0,1,2,3,4,5)為梯度上升模型參數(shù),也是該算法的輸出;xi(i=1,2,3,4,5)為每個(gè)樣本的基分類器輸出的正確率值,增加一個(gè)特征x0=1。
代價(jià)函數(shù)J :
其中,yj設(shè)為1,m 代表迭代次數(shù),使得代價(jià)函數(shù)J 最大化,對(duì)應(yīng)的θ 就是最優(yōu)參數(shù)。
計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò)的安全性是一個(gè)廣泛討論的主題,因?yàn)槟壳皩?duì)系統(tǒng)或網(wǎng)絡(luò)基礎(chǔ)設(shè)施的攻擊是主要威脅。現(xiàn)已提出了許多方法來確保系統(tǒng)安全[4-6]和網(wǎng)絡(luò)安全[7-12]。
2.2.1 基于權(quán)限檢測(cè)Android惡意應(yīng)用程序
本文工作的動(dòng)機(jī)是確保Android 應(yīng)用程序的安全性。目前,檢測(cè)Android 惡意應(yīng)用程序的工作主要集中在靜態(tài)特征的分析[13-19]或動(dòng)態(tài)特征[20-22]的分析。由于Android權(quán)限限制API(Application Programming Interface)的調(diào)用,所請(qǐng)求的權(quán)限可以表現(xiàn)應(yīng)用程序的部分行為。Pandita 團(tuán)隊(duì)[17]提出WHYPER,采用自然語言處理技術(shù)來解釋為什么應(yīng)用程序需要某些權(quán)限。在之前的調(diào)研工作中,Wang團(tuán)隊(duì)[23]根據(jù)風(fēng)險(xiǎn)對(duì)權(quán)限進(jìn)行了排名,并系統(tǒng)地研究了Android權(quán)限在檢測(cè)惡意應(yīng)用程序方面的表現(xiàn)。Barrera 等人[24]調(diào)查了1 100 個(gè)最受歡迎的應(yīng)用程序,發(fā)現(xiàn)這些應(yīng)用程序只需要小部分權(quán)限,還發(fā)現(xiàn)應(yīng)用類別和權(quán)限之間的關(guān)系不是非常密切。Chia 團(tuán)隊(duì)[25]和Felt 團(tuán)隊(duì)[26]研究列出了Android 應(yīng)用中最常用的權(quán)限。Enck 等人[27]開發(fā)了一個(gè)工具,該工具通過將Android 應(yīng)用程序請(qǐng)求的權(quán)限與預(yù)定義的權(quán)限列表進(jìn)行匹配來檢查應(yīng)用程序是否是惡意的。Zhou 團(tuán)隊(duì)[28]提出了一種基于行為足跡的權(quán)限方案,用于檢測(cè)已知Android 惡意軟件家族的新樣本,并應(yīng)用基于啟發(fā)式的過濾方案來識(shí)別未知惡意家族的某些固有行為。
2.2.2 基于API調(diào)用和功能檢測(cè)Android惡意應(yīng)用程序
Shabtai等人[29]研究靜態(tài)分析技術(shù)來解析Android源代碼,他們還應(yīng)用機(jī)器學(xué)習(xí)技術(shù),通過從Android應(yīng)用程序中提取的靜態(tài)功能對(duì)游戲和工具進(jìn)行分類。La Polla等人[30]概述了移動(dòng)設(shè)備安全方面的相關(guān)工作。Nath等人[31]比較了用于分析Android 惡意軟件的各種機(jī)器學(xué)習(xí)技術(shù)。Lindorfer等人[32]介紹了MARVIN,這是一種利用機(jī)器學(xué)習(xí)技術(shù)以風(fēng)險(xiǎn)評(píng)分的形式評(píng)估未知Android應(yīng)用程序的系統(tǒng)。Peiravian團(tuán)隊(duì)[33]通過權(quán)限和API調(diào)用來檢測(cè)出惡意應(yīng)用程序。Pirscoveanu 等人[34]開發(fā)了一個(gè)分布式Android 惡意軟件測(cè)試環(huán)境。Amin 團(tuán)隊(duì)[35]調(diào)查了惡意應(yīng)用的性質(zhì)和身份,并提出了基于網(wǎng)絡(luò)和系統(tǒng)調(diào)用的檢測(cè)方法。Apvrille 等人[36]用Alligator 結(jié)合了幾種分類算法,提取了代碼級(jí)的功能,并對(duì)未知應(yīng)用進(jìn)行了分類。
目前的檢測(cè)方法在某些方面存在不足。首先,所使用方法是基于應(yīng)用程序的權(quán)限與應(yīng)用的類型比較來判斷該應(yīng)用程序是否是惡意應(yīng)用程序,不能應(yīng)對(duì)新類型的Android應(yīng)用程序,適應(yīng)性較差且誤報(bào)率較高。其次,僅使用基于機(jī)器學(xué)習(xí)單分類器的Android惡意應(yīng)用檢測(cè)雖然在檢測(cè)速度上略有優(yōu)勢(shì),但檢測(cè)的正確率并不是很高。
本文根據(jù)Arp 等人[13]提出的Android 功能特征提取方法,對(duì)Android 應(yīng)用程序進(jìn)行靜態(tài)分析。通過線性掃描應(yīng)用程序的XML(eXtensible Markup Language)文件以及反編譯的dex 代碼提取有效特征。為了進(jìn)行通用和可擴(kuò)展的分析,將所有提取的功能表示為字符串集,例如權(quán)限、廣播和API調(diào)用。提取以下11組字符串[1]。
2.3.1 程序清單中的功能集
為Android開發(fā)的每個(gè)應(yīng)用程序都必須包含一個(gè)名為AndroidManifest.xml的清單文件,該清單文件提供支持該應(yīng)用程序安裝和執(zhí)行的數(shù)據(jù)。使用Android Asset Packaging Tool可以在設(shè)備上有效地檢索此文件中存儲(chǔ)的信息,該工具能夠提取以下數(shù)據(jù)集:
FS1 組件名稱:大多數(shù)Android 惡意應(yīng)用程序都是經(jīng)過重新打包的合法應(yīng)用程序[37],攻擊者將相同的惡意有效負(fù)載(通常在組件方面)插入到許多不同的合法應(yīng)用程序中。將組件名稱作為功能集包含在內(nèi),以捕獲良性和惡意應(yīng)用程序中出現(xiàn)的組件重用行為。
FS2 請(qǐng)求的權(quán)限以及FS3 硬件和軟件要求:應(yīng)用程序嘗試訪問哪些資源對(duì)于檢測(cè)惡意軟件非常重要。在Android系統(tǒng)中,請(qǐng)求的權(quán)限(FS2)以及硬件和軟件要求(FS3)指示應(yīng)用對(duì)系統(tǒng)資源的需求。權(quán)限請(qǐng)求模式可以表現(xiàn)應(yīng)用程序的資源訪問意圖。在數(shù)據(jù)集中,使用了Android平臺(tái)和第三方應(yīng)用程序定義的所有權(quán)限。硬件和軟件要求(FS3)是指Android應(yīng)用程序使用
FS4 過濾后的廣播:Android 平臺(tái)將廣播用作應(yīng)用程序的消息傳遞對(duì)象,并且平臺(tái)可以將其發(fā)送到另一個(gè)應(yīng)用程序的組件以請(qǐng)求操作。惡意應(yīng)用程序通常使用廣播過濾器進(jìn)行聲明,以接收特定的系統(tǒng)事件(例如BOOT_COMPLETED)來激活惡意活動(dòng)。在這項(xiàng)工作中,將樣本清單文件中的所有廣播過濾器提取為功能集。
2.3.2 反編譯代碼中的功能集
Android 應(yīng)用程序是用Java 開發(fā)的,并被編譯為Dalvik 虛擬機(jī)的優(yōu)化字節(jié)碼。該字節(jié)碼可以有效地反匯編,并提供有關(guān)API調(diào)用和應(yīng)用程序中使用的數(shù)據(jù)信息。使用基于Android 平臺(tái)的dex 庫(kù)的反編譯程序,可以輸出應(yīng)用程序中包含的所有API調(diào)用和字符串。
FS5 受限的API 調(diào)用和FS6 使用的權(quán)限:請(qǐng)求權(quán)限并不意味著該應(yīng)用程序?qū)嶋H上訪問了相應(yīng)的資源。掃描應(yīng)用程序樣本的反編譯代碼,并記錄它們是否調(diào)用某些受保護(hù)的API。另外,使用PScout[39]提供的API 權(quán)限映射來獲取使用的權(quán)限。使用的權(quán)限和受限制的API調(diào)用反映了應(yīng)用程序?qū)嶋H在不同程度級(jí)別上訪問的資源。
FS7證書信息:應(yīng)用開發(fā)人員必須使用證書對(duì)自己的APK 文件簽名,該證書的私鑰由他們自己持有。該證書有助于將開發(fā)人員與其他開發(fā)人員區(qū)分開??梢詮淖C書中提取開發(fā)人員信息,例如國(guó)家/地區(qū)、電子郵件地址、組織、州或省以及SHA-1指紋。
FS8源代碼中的URL、IP地址、文件路徑和數(shù)字:通過正則表達(dá)式模式匹配,收集了反編譯代碼中的所有URL、IP 地址、文件路徑字符串和數(shù)字(三位數(shù)以上)作為功能集。這些字符串可能涉及許多惡意行為。
FS9 有效負(fù)載信息:有效負(fù)載指APK 存檔中的文件。將有效負(fù)載信息作為功能集包含在內(nèi),是因?yàn)槟承阂鈶?yīng)用程序在主機(jī)應(yīng)用程序中包含額外的.apk文件,誘騙用戶安裝這些惡意.apk文件,并且惡意應(yīng)用程序?yàn)榱吮苊庖饝岩?,可以將文件擴(kuò)展名從.apk或.dex更改為.png。
FS10代碼模式:在此功能集中,檢查應(yīng)用程序是否動(dòng)態(tài)加載.dex 文件或Linux 本地代碼,應(yīng)用程序是否執(zhí)行shell 命令,應(yīng)用程序是否使用Java 反射機(jī)制以及應(yīng)用程序是否調(diào)用密碼功能等。
FS11 可疑的API 調(diào)用:受Drebin[13]的啟發(fā),提取了某些API 調(diào)用,這些API 調(diào)用允許訪問敏感資源,例如訪問設(shè)備ID,發(fā)送和接收惡意應(yīng)用程序經(jīng)常使用的SMS消息。
本文以Android 應(yīng)用程序的功能為依據(jù)進(jìn)行分類,借鑒機(jī)器學(xué)習(xí)中集成學(xué)習(xí)的方法,提出了MASV檢測(cè)方法。由于Android 應(yīng)用程序功能特征龐大,本文先使用SVM-RFE 算法對(duì)特征的重要性進(jìn)行排序,去掉一些對(duì)訓(xùn)練模型不重要的特征。同時(shí),針對(duì)集成學(xué)習(xí)加權(quán)投票的權(quán)重選擇耗時(shí)較長(zhǎng)的問題,使用梯度上升算法訓(xùn)練并得出每個(gè)基分類器的權(quán)重。MASV 檢測(cè)方法集合了每個(gè)基分類算法的優(yōu)點(diǎn),提升了檢測(cè)方法的適應(yīng)性和準(zhǔn)確率,同時(shí)減少了集成學(xué)習(xí)模型的訓(xùn)練時(shí)間,提高了效率。
本文提出了一個(gè)模型框架MASV來過濾大量Android應(yīng)用程序,從而檢測(cè)惡意應(yīng)用程序。如圖1 所示,在將應(yīng)用程序輸入模型后,從APK 文件中提取大量功能特征。如果通過MASV將其識(shí)別為惡意應(yīng)用,則會(huì)觸發(fā)警報(bào)。具體步驟如下:
步驟1 將待檢測(cè)的Android 應(yīng)用程序功能特征使用SVM-RFE 算法進(jìn)行重要性排名,淘汰不重要的樣本特征。
步驟2 將選擇后的特征矩陣輸入五個(gè)基分類器。
步驟3 根據(jù)五個(gè)基分類器的預(yù)測(cè)結(jié)果輸入到訓(xùn)練好的集成學(xué)習(xí)加權(quán)投票分類器中,得出分類結(jié)果。
步驟4 根據(jù)分類結(jié)果判定該Android 應(yīng)用程序的性質(zhì),結(jié)束。
在檢測(cè)惡意應(yīng)用程序時(shí),提取和選擇功能始終很重要。在這項(xiàng)工作中,通過靜態(tài)分析技術(shù)從應(yīng)用程序中提取靜態(tài)特征。靜態(tài)分析技術(shù)是指分析代碼特征,例如語法、詞典、數(shù)據(jù)流和控制流。與在應(yīng)用程序運(yùn)行時(shí)從系統(tǒng)中提取功能的動(dòng)態(tài)分析相比,應(yīng)用靜態(tài)分析會(huì)消耗更少的資源和時(shí)間,并且不需要執(zhí)行應(yīng)用程序。由于有大量的應(yīng)用程序集,因此更專注于靜態(tài)分析以確保檢測(cè)效率。
通過靜態(tài)分析,從所有應(yīng)用程序中提取2 374 340個(gè)功能,具體數(shù)量如表1所示。由于功能的數(shù)量太大而無法有效處理,本文使用SVM-RFE 算法根據(jù)其對(duì)檢測(cè)的重要性對(duì)每個(gè)特征的權(quán)重進(jìn)行排序。SVM-RFE算法[3]的過程如下:
表1 功能集(特征選擇前)
(1)訓(xùn)練分類器(優(yōu)化權(quán)重ωi以使得J 最優(yōu));
(2)計(jì)算所有特征的排序標(biāo)準(zhǔn)(DJ(i)或(ωi)2);
(3)刪除具有最小排序評(píng)分的功能。
該迭代循環(huán)是消除排名最差的一個(gè)過程。出于計(jì)算效率的原因,一次刪除多個(gè)功能特征可能更為有效,但會(huì)降低分類器的評(píng)分結(jié)果。在這種情況下,該方法產(chǎn)生與特征排名相反的特征子集。
如果一次刪除一項(xiàng)功能特征,會(huì)有一個(gè)相應(yīng)的功能排名。但排名最高(最后淘汰)的功能不一定是最重要的特征,因?yàn)橐恍┕δ芴卣骺梢院推渌パa(bǔ)功能特征很好地區(qū)分?jǐn)?shù)據(jù)。
通常,SVM-RFE采用的是線性核函數(shù),推廣到多維特征向量的應(yīng)用場(chǎng)景,需要采用非線性核函數(shù)。本實(shí)驗(yàn)采用的是RBF核函數(shù)。
SVM-RFE(RBF核)算法描述如下所示:
進(jìn)而將線性SVM應(yīng)用于惡意應(yīng)用程序檢測(cè)并實(shí)現(xiàn)SVM 模型,其中每個(gè)特征的標(biāo)簽由其在區(qū)分良性應(yīng)用和惡意應(yīng)用方面的有效性決定。權(quán)重為正的特征被視為“惡意特征”,而權(quán)重為負(fù)特征被視為“良性特征”。一些權(quán)重等于0,表明它們對(duì)分類沒有貢獻(xiàn),因此可以在分析中刪除。如圖2 所示,實(shí)驗(yàn)測(cè)試了1 000~46 000 個(gè)特征每隔3 000特征的ACC值,發(fā)現(xiàn)當(dāng)特征數(shù)量為34 000個(gè)時(shí),ACC值最高。最后使用34 630個(gè)功能,用于執(zhí)行惡意應(yīng)用和良性應(yīng)用程序的分類。經(jīng)過特征選擇后的特征指標(biāo)如表2所示。
圖1 MASV集成框架
圖2 各特征數(shù)的ACC值
表2 功能集(特征選擇后)
MASV檢測(cè)方法使用了五種基分類器,五種分類器的原理及優(yōu)缺點(diǎn)如表3所示。
為了發(fā)揮每種算法的優(yōu)勢(shì)并進(jìn)一步提高檢測(cè)和分類的準(zhǔn)確性,通過五種分類算法的對(duì)比,在獲得上述五種算法的分類結(jié)果后,采用多分類器的集合進(jìn)行多數(shù)表決。軟投票,即一種加權(quán)投票法,其做法就是以每個(gè)基分類器測(cè)試結(jié)果的正確率為權(quán)重,對(duì)每個(gè)類進(jìn)行加權(quán)平均,取得分最高的類別作為分類結(jié)果。
加權(quán)投票算法如下所示。
對(duì)于訓(xùn)練樣本D,其中x 為訓(xùn)練樣本值,在本文中就是Android應(yīng)用程序功能特征值,y 為樣本x 所對(duì)應(yīng)的標(biāo)記?;鶎W(xué)習(xí)器L1,L2,…,L5在本文中實(shí)際有五種,也就是五種基分類器(SVM,RF,NB,K-NN,CART)。ht表示基學(xué)習(xí)器Lt在樣本x 上的輸出。輸出結(jié)果為標(biāo)記空間C 中的一個(gè)值,本文為二分類問題,只有兩個(gè)值,正例標(biāo)記為-1,反例標(biāo)記為+1。其中Π(·)為指示函數(shù),詳見第2.1.1小節(jié)。加權(quán)投票法的輸出為:
梯度上升是一個(gè)用來求目標(biāo)函數(shù)最大值的算法,最優(yōu)的路線是沿著該函數(shù)的梯度方向探尋。傳統(tǒng)集成學(xué)習(xí)加權(quán)投票法首先對(duì)每個(gè)基分類器測(cè)試結(jié)果的正確率進(jìn)行計(jì)算,然后以正確率作為權(quán)重,對(duì)每個(gè)類概率進(jìn)行加權(quán)平均,得分最高的類作為分類結(jié)果。本文對(duì)此權(quán)重選擇方法進(jìn)行了改進(jìn),使用各基分類器10 次交叉驗(yàn)證的正確率(ACC)結(jié)果組成訓(xùn)練集,將其作為梯度上升算法的輸入,將步長(zhǎng)α 設(shè)置為0.001,可以快速得到各基分類器加權(quán)投票的權(quán)重。
表3 五種分類算法對(duì)比
本文使用梯度上升算法來求出集成學(xué)習(xí)加權(quán)投票的權(quán)重,目標(biāo)函數(shù)hθ和代價(jià)函數(shù)J ,詳見第2.1.3 小節(jié)。使代價(jià)函數(shù)J 最大化,對(duì)應(yīng)的θ 就是最優(yōu)參數(shù)。
θi的更新公式如下:
其中,α 為步長(zhǎng)。
梯度上升的偽代碼如下所示:
輸入:多分類器輸出結(jié)果集D={(x1,y1),(x2,y2),…,(xm,ym)}
1. 初始化所有θ=1,α=0.001,y=1
2. for 1,2,…,m do
6. end for
輸出:θi
在實(shí)驗(yàn)過程中,實(shí)驗(yàn)環(huán)境使用Windows 系統(tǒng),具有四核的Xeon CPU和64 GB內(nèi)存的服務(wù)器。使用Python編寫的scikit-learn 軟件包作為實(shí)驗(yàn)中的機(jī)器學(xué)習(xí)工具包,因?yàn)樗梢栽诟鞣N環(huán)境中訪問和重用,且配置簡(jiǎn)便。
本文使用由良性應(yīng)用程序和惡意應(yīng)用程序組成的大型應(yīng)用程序集來驗(yàn)證本文提出的MASV 方法。應(yīng)用程序數(shù)據(jù)來自北京交通大學(xué)Wang團(tuán)隊(duì)[1]所整理收集的2014 年和2015 年的Android 應(yīng)用功能集。該數(shù)據(jù)集總共231 619個(gè)應(yīng)用程序,包括213 256個(gè)良性應(yīng)用程序和18 363個(gè)惡意應(yīng)用程序。使用VirusTotal標(biāo)記良性應(yīng)用程序,如果VirusTotal 中的防病毒引擎不足以將該應(yīng)用視為惡意應(yīng)用,會(huì)將其視為良性應(yīng)用。數(shù)據(jù)預(yù)處理中將App 樣本轉(zhuǎn)換為L(zhǎng)IBSVM 格式,每行描述一個(gè)App 樣本,第一列表示分類標(biāo)簽,其余列表示功能特征。本實(shí)驗(yàn)使用欠采樣,去掉部分良性樣本,使得惡意樣本和良性樣本數(shù)量平衡,最終使用的數(shù)據(jù)集良性樣本和惡意樣本數(shù)量如表4 所示。分層選擇80%的樣本作為訓(xùn)練數(shù)據(jù),其余20%的樣品作為測(cè)試數(shù)據(jù)。根據(jù)應(yīng)用市場(chǎng)的分類,目前獲取的APK數(shù)量如表5所示。
表4 實(shí)驗(yàn)數(shù)據(jù)集切分
表5 應(yīng)用程序數(shù)據(jù)集分類描述
首先,本文實(shí)驗(yàn)將數(shù)據(jù)集的80%作為訓(xùn)練集,20%作為測(cè)試集,再將訓(xùn)練集分為訓(xùn)練集和驗(yàn)證集,采用十折交叉驗(yàn)證的方法對(duì)分類器進(jìn)行訓(xùn)練,這樣做是為了對(duì)模型參數(shù)調(diào)優(yōu)。其次,為了提高SVM分類器的效率,本文使用SVM-RFE算法對(duì)數(shù)據(jù)特征的重要性進(jìn)行了全局排名。然后,使用梯度上升算法,將五個(gè)基分類器的輸出結(jié)果的準(zhǔn)確率作為梯度上升算法的輸入,對(duì)集成學(xué)習(xí)加權(quán)投票的參數(shù)ω 進(jìn)行預(yù)估。最后,通過加權(quán)投票算法訓(xùn)練模型,使用測(cè)試集得出預(yù)測(cè)值。
本文的實(shí)驗(yàn)方法較Wang團(tuán)隊(duì)[40]提出的檢測(cè)方法有所不同。首先,本文使用的集成學(xué)習(xí)投票方法是加權(quán)投票方式,較多數(shù)投票方式在準(zhǔn)確率上有所提高。其次,本文率先使用了梯度上升算法確定每個(gè)分類器的權(quán)重,原理是基于訓(xùn)練時(shí)的準(zhǔn)確率求最優(yōu)解問題。為了檢驗(yàn)MASV的檢測(cè)效果,本文使用五種基分類器作為對(duì)比實(shí)驗(yàn)進(jìn)行分析,并和同樣使用應(yīng)用程序功能特征作為研究對(duì)象的幾種方法進(jìn)行了比較。
在本文的實(shí)驗(yàn)中,分類器結(jié)果的評(píng)估通過表6混淆矩陣中的各項(xiàng)數(shù)值,分別計(jì)算出準(zhǔn)確率(ACC)、正確率(PRE)、召回率(REC)以及F1值(F1-score),計(jì)算公式如下:
表6 分類結(jié)果混淆矩陣
對(duì)于SVM 分類器的評(píng)估實(shí)驗(yàn),在所有實(shí)驗(yàn)中選擇線性核函數(shù)。參數(shù)ωi,即每個(gè)類別的權(quán)重,被指定為與每個(gè)類別中的樣本數(shù)成反比。另一個(gè)參數(shù)c,錯(cuò)誤懲罰參數(shù),設(shè)置為0.25。
特征的數(shù)量是CART的重要參數(shù),將此參數(shù)設(shè)置為默認(rèn)值,因?yàn)槭褂媚J(rèn)值時(shí)精度最佳。在設(shè)置決策樹深度這一參數(shù)時(shí),對(duì)決策樹深度取100~1 200 分別進(jìn)行了對(duì)比實(shí)驗(yàn),如圖3所示,結(jié)果在TreeDepth=1 000 時(shí)正確率最高,ACC=96.89%。
圖3 CART的樹深度參數(shù)比較
將K=3 設(shè)為K-近鄰的參數(shù)。如圖4 所示,ACC、PRE、F1-score 的數(shù)值都隨K 值的增加而遞減,只有REC 值隨K 值的增加而增加,但K 為3~15 時(shí)的REC值變化不大,取K=3 使得K-NN的正確率、準(zhǔn)確率、F1值都獲得一個(gè)較為不錯(cuò)的結(jié)果。
圖4 K-NN的K 值參數(shù)比較
決策樹的數(shù)量是RF 的一個(gè)重要參數(shù),因?yàn)樵趯ふ易罴逊指顣r(shí)需要考慮這些參數(shù)。通過幾次實(shí)驗(yàn)來平衡效率和準(zhǔn)確性,并將決策樹的數(shù)量設(shè)置為100,如圖5、圖6 所示。對(duì)于樸素貝葉斯分類算法,在實(shí)驗(yàn)中選擇MultinomialNB模型。
圖5 RandomForest的決策樹數(shù)量參數(shù)比較
圖6 RandomForest的決策樹數(shù)量參數(shù)比較
集成學(xué)習(xí)投票算法SVM、RF、NB、K-NN 和CART分類器的權(quán)重為ω1,ω2,ω3,ω4,ω5,使用本文提到的梯度上升算法得到的結(jié)果分別為0.772,0.157,0.001,0.044,0.027。
五種分類器和集成學(xué)習(xí)方法的惡意應(yīng)用程序檢測(cè)結(jié)果如表7所示。可以看出,SVM分類器的準(zhǔn)確率ACC在五個(gè)基分類器中是最高的,達(dá)到98.93%。評(píng)估結(jié)果表明,除NB算法外,各算法的檢測(cè)準(zhǔn)確率非常相似。從表7 還可以看出,SVM 算法和RF 算法的檢測(cè)結(jié)果非常接近。一般來說,RF 算法的實(shí)驗(yàn)檢測(cè)結(jié)果優(yōu)于CART算法,因?yàn)镽F 算法也是一種基于決策樹的集成學(xué)習(xí)方法,實(shí)驗(yàn)結(jié)果也證明了這一結(jié)論。NB 分類算法準(zhǔn)確率最低,只有61.63%,正確率PRE 僅有61.99%,這也說明貝葉斯模型不適合分類Android應(yīng)用程序功能特征。
表7 各分類器實(shí)驗(yàn)結(jié)果 %
采用具有軟投票機(jī)制的五種分類器集合后,本文的MASV 方法在檢測(cè)惡意應(yīng)用程序方面達(dá)到了99.27%的準(zhǔn)確率。通常,本文的集成方法優(yōu)于基本分類器SVM、RF、NB、K-NN和CART。
表8所示是Drebin、LR(Logistic Regression)、Droid-Ensemble 和本文方法的對(duì)比結(jié)果。通過和同樣使用應(yīng)用程序功能數(shù)據(jù)集的其他方法比較,可以看出MASV方法在TPR(True Positive Rate)上有較大優(yōu)勢(shì),但本實(shí)驗(yàn)結(jié)果的FPR(False Positive Rate)略低于其他方法,如圖7、圖8所示??梢缘贸?,本實(shí)驗(yàn)檢測(cè)良性樣本的正確率較為有效,因?yàn)楸疚膼阂鈽颖緮?shù)量多于其他方法,所以FPR 略有偏高,但不明顯。綜上所述,本文這種集成學(xué)習(xí)加權(quán)投票算法的檢測(cè)效果優(yōu)于Drebin[13]使用的SVM方法、Wang 團(tuán)隊(duì)[1]使用的LR 方法和使用多數(shù)投票的DroidEnsemble[40]方法。
表8 MASV與其他方法比較
圖7 檢測(cè)方法的TPR比較
圖8 檢測(cè)方法的FPR比較
本文提出了一個(gè)檢測(cè)惡意應(yīng)用程序的模型框架,將惡意應(yīng)用程序用于五個(gè)分類器的集合模型分類,旨在簡(jiǎn)化Android 應(yīng)用程序市場(chǎng)的管理。給定一個(gè)應(yīng)用程序,本文的模型框架從應(yīng)用程序中提取大量功能,然后使用這些功能來檢測(cè)它是否是惡意的。如果被識(shí)別為惡意應(yīng)用程序,則會(huì)觸發(fā)警報(bào)。否則,它將被歸類為良性應(yīng)用程序類別。本文采用五個(gè)分類器的集合,即SVM、K-NN、NB、CART和RF,集成學(xué)習(xí)軟投票算法用于檢測(cè)惡意應(yīng)用程序和良性應(yīng)用程序的分類。實(shí)驗(yàn)結(jié)果表明,MASV 在檢測(cè)和分類方面比五個(gè)基本分類器更穩(wěn)健。在惡意應(yīng)用程序檢測(cè)實(shí)驗(yàn)中,本文的集成方法實(shí)現(xiàn)了99.27%的檢測(cè)精度。
在未來的工作中,計(jì)劃探索更多信息功能,以更好地體現(xiàn)應(yīng)用程序的行為,提高惡意應(yīng)用程序和良性應(yīng)用程序的分類效果。目前,還在研究設(shè)計(jì)更有效的方法以針對(duì)惡意應(yīng)用進(jìn)行分類,以及使用分布式計(jì)算減少模型訓(xùn)練時(shí)間。