田瑞凡 劉釗遠
(西安郵電大學計算機學院 西安 710061)
科學技術的不斷進步,使得移動通信越來越成熟,各種智能移動設備逐漸走進了我們的生活,并成為人們?nèi)粘I钪胁豢苫蛉钡墓ぞ?。人們在享受打電話、發(fā)短信等傳統(tǒng)服務的同時,也可以隨時隨地地通過各種智能移動設備享受網(wǎng)購、社交娛樂等活動,這也為智能移動設備帶來了廣闊的市場前景,從而吸引越來越多的開發(fā)人員加入到智能移動設備相關開發(fā)工作的行列中來。目前最流行的移動開發(fā)平臺當屬Android和IOS了。
Android移動開發(fā)平臺于2007年正式發(fā)布,是一種基于Linux的開源操作系統(tǒng)。隨后在2008年,Google發(fā)布了Android系統(tǒng)的第一個版本——Android 1.0系統(tǒng),自此,Android進入了人們的視眼,開啟了一個迅猛發(fā)展的全新旅程。然而Android系統(tǒng)生態(tài)環(huán)境所建立的這種過于開放自由式的應用軟件市場,雖然在很大程度上促進了Android應用軟件數(shù)量的快速增長,但同時也為Android應用的安全性埋下了諸多的隱患。因為這種開放性允許其他組織根據(jù)所需建立屬于自己的Android應用市場,而有些應用市場并沒有一個對應用軟件嚴格審查、測試的流程[1],即無法有效地防范惡意軟件的存在。
惡意軟件是指能夠?qū)λ拗鳈C造成傷害、或使用戶利益遭受損失的一種具有攻擊性的軟件,分為隱私竊取、惡意吸費、遠程控制、資費消耗、流氓行為、系統(tǒng)破壞、誘騙欺詐、惡意傳播8類。根據(jù)CNCERT/CC統(tǒng)計的數(shù)據(jù)顯示,2015年共捕獲到1477450個惡意程序樣本,相比2014年,增長55.3%,其中,惡意吸費類程序為348859個,占23.61%,居于榜首,同時,由于Android系統(tǒng)高度的自由開放性,也導致了Android平臺遭受的惡意攻擊最為嚴重,由數(shù)據(jù)表明,針對Android平臺的惡意程序樣本所占比例約為99.6%,共計1472381個,其次是Symbian平臺,占了0.19%,共計2917個,如圖1。
圖1 2015年移動互聯(lián)網(wǎng)惡意程序數(shù)量按操作系統(tǒng)分布
目前,Android惡意軟件檢測主要分為兩種:靜態(tài)檢測、動態(tài)檢測。首先介紹靜態(tài)檢測方法,傳統(tǒng)的靜態(tài)檢測方法是基于簽名的,文獻[3]主要介紹了針對特征碼檢測的方法,這種方法有一個缺點,就是無法檢測未知惡意應用。所以就出現(xiàn)了基于行為的靜態(tài)檢測方法,其中文獻[3~6]重點介紹了這種檢測方法,解決了上述所提到的無法檢測未知惡意應用的問題,并且代碼覆蓋率高,但對于靜態(tài)檢測無法檢出的代碼加密、以及在軟件執(zhí)行過程中惡意代碼才被解碼的問題,依然不能夠得到很好地解決。對于動態(tài)檢測,文獻[7~11]給出了目前常用的一些方法,概括來講,就是利用虛擬機、沙盒來模擬軟件的運行,并從中獲取軟件在運行時的CPU使用率、網(wǎng)絡訪問、以及各種調(diào)用系統(tǒng)API的行為等。
從國內(nèi)外研究現(xiàn)狀來看,目前針對惡意軟件檢測的研究大多都著重或靜態(tài)、或動態(tài)的檢測,而本文將結(jié)合靜態(tài)和動態(tài)兩種檢測技術,利用靜態(tài)檢測所提取到的權(quán)限特征值、以及動態(tài)檢測所提取到的行為特征值構(gòu)造一種混合特征,然后使用機器學習以及數(shù)據(jù)挖掘技術[12~13]對新的特征集進行分類判別,并根據(jù)比較結(jié)果,選定一種最優(yōu)的分類方法,最大程度的提高用戶使用軟件的安全性。
本文在對惡意軟件進行檢測時,通過采集正常軟件和惡意軟件運行時的CPU使用率、內(nèi)存占用量等性能指標,以及APK文件中所包含的權(quán)限特征,構(gòu)造出一種混合特征集。在進行實驗的時候,將該特征集作為輸入,使用 KNN[14]、J48、Naive Bayes(NB)[15~16]以及SVM這四種分類算法構(gòu)建惡意軟件檢測模型,實現(xiàn)對未知軟件的檢測,流程圖如圖2。
圖2 惡意軟件檢測總流程圖
文獻[17]比較了良性樣本和惡意樣本對權(quán)限信息的使用情況,發(fā)現(xiàn)讀取手機狀態(tài)、讀寫SD卡、訪問網(wǎng)絡狀態(tài)、監(jiān)聽手機短信等權(quán)限在惡意和良性應用中都得到了廣泛的使用,不過,相比于惡意軟件,良性程序較少使用更改WiFi狀態(tài)的權(quán)限、開機自啟權(quán)限以及與短信相關的權(quán)限。由此可見,Android系統(tǒng)的不同權(quán)限在使用頻率上存在較大差異,而且惡意應用和正常應用在申請的權(quán)限上也存在著明顯的不同,因此,可以利用Android應用程序的權(quán)限信息對惡意軟件進行檢測。
本模塊將會提取出惡意樣本和良性樣本在AndroidManifest.xml文件中所聲明的權(quán)限信息,作為分類器的一部分輸入數(shù)據(jù),并以軟件的惡意屬性或良性屬性作為分類的唯一依據(jù)。
惡意軟件靜態(tài)檢測方法能夠快速地檢測出己知的惡意軟件,但它也有顯而易見的缺陷。首先,靜態(tài)檢測方法在檢測未知惡意軟件方面顯得力不從心。其次,當已知的惡意軟件代碼經(jīng)過加密、混淆并且重打包之后,也會變得難以辨認。因此,針對靜態(tài)分析的這些缺點,本文將結(jié)合動態(tài)檢測分析來提高對惡意軟件的檢出率。
本文所使用的動態(tài)檢測方法主要是使用DroidBox對Android虛擬機中運行的軟件進行動態(tài)檢測,重點監(jiān)測軟件運行過程中的CPU使用率、內(nèi)存占有率、訪問通訊錄、收發(fā)短信,將這些特征作為分類器的另一部分輸入,同樣以軟件的惡意屬性或良性屬性作為分類的唯一依據(jù)。
為了提高惡意軟件檢出率,本文將采用動態(tài)檢測分析與靜態(tài)檢測分析結(jié)合的方法,即使用靜態(tài)檢測與動態(tài)檢測所提取到的特征值構(gòu)造出一種混合特征,然后選用KNN、J48、Naive Bayes以及SVM這四種分類算法來構(gòu)建惡意軟件檢測模型,利用構(gòu)建的四種分類模型分別對新的特征集進行分類,根據(jù)比較結(jié)果,選定一種最優(yōu)的分類方法,實現(xiàn)對惡意軟件的檢測。
2007年,Android移動開發(fā)平臺發(fā)布之后,針對該平臺的惡意程序就逐年增多,盡管如此,市場上至今也找不到公開的惡意軟件樣本庫。同時,由于知名的官方應用網(wǎng)站會對所有發(fā)布的應用軟件進行嚴格的審查與測試,所以要想通過官方應用市場獲取大量的惡意軟件樣本,幾乎是不可能的。因此本實驗中所采用的惡意軟件樣本數(shù)據(jù),全部是從在線惡意軟件倉庫VirusShare中下載得到,而正常軟件樣本則全部來自于華為應用市場。
本文所針對的惡意軟件主要是竊取隱私、惡意扣費和資費消耗這三類軟件,為確保所獲取到的樣本不會影響到最終的實驗結(jié)果,通過VirusTotal網(wǎng)站對所獲取到的軟件樣本進行檢測與分類,并最終選定258個惡意軟件樣本和249個正常軟件樣本作為本次實驗的樣本,其中訓練樣本包括:126個惡意軟件樣本和118個正常軟件樣本,測試樣本包括:132個惡意軟件樣本和131個正常軟件樣本。
為了構(gòu)造出分類所需的混合特征集,本文將分別提取APK文件中的權(quán)限特征,以及通過動態(tài)檢測提取軟件運行時信息特征,然后對這兩種特征進行整合。
3.2.1靜態(tài)提取權(quán)限特征值
本實驗需要分析Android軟件包中的相關文件,即配置文件中的權(quán)限信息,因此,對Android軟件的APK文件進行解壓縮和反編譯,通過Apktool工具對AndroidManifest.xm l進行反編譯,然后對反編譯后的AndroidManifest.xml文件進行權(quán)限分析,抽取其中的權(quán)限信息單獨存儲。
經(jīng)過遍歷244個APK文件(惡意樣本126個、正常樣本118個),我們共得到136種權(quán)限,將這些軟件所聲明的權(quán)限特征存儲在矩陣中,以權(quán)限名作為橫坐標,應用名作為縱坐標。當提取一個應用程序的權(quán)限時,若某權(quán)限特征被提取到則標志為1,否則標志為0。這樣,當遍歷完所有的應用程序時,就會得到一個明顯的數(shù)據(jù),可以直觀地顯示每一個APK文件對權(quán)限的調(diào)用情況。
由文獻[17~19]可知,選擇合適的屬性子集往往會提高分類的準確率,冗余或不相關的屬性反而可能導致不準確的模型。因此需要對所得到的種類繁多的權(quán)限進行篩選,刪除不利于分類的權(quán)限特征,選取合適數(shù)量的特征用于分類模型的構(gòu)建,以提高惡意軟件檢測的準確率。
本文將通過Weka數(shù)據(jù)挖掘軟件對權(quán)限進行分級評分,即使用InfoGainAttributeEval評估器,評估各個權(quán)限屬性,利用Ranker“搜索”方法,對這些屬性在預測目標方面的重要程度進行排名,得出各個權(quán)限的危險系數(shù)評分,根據(jù)評分選取評分最高的30個權(quán)限作為最終分類特征,然后對這30個權(quán)限特征進行整理,放入一個.arff文件中,以作為分類器的輸入。
3.2.2提取軟件運行時信息
本文將使用DroidBox進行自動分析,DroidBox是一款基于TrainDroid設計的沙盒分析工具,可以自動對Android APP進行動態(tài)分析,所得到的結(jié)果被放入log.txt日志文件中,該文件包含的內(nèi)容有:1)發(fā)送短信及通話信息;2)使用Android API操作的密碼活動;3)繞過的權(quán)限信息;4)內(nèi)外部通信數(shù)據(jù)信息等等。
此外,由于Android是基于Linux系統(tǒng)內(nèi)核的,在Linux系統(tǒng)中查看系統(tǒng)資源消耗情況可以直接通過命令行,在Android系統(tǒng)上保留了此功能,因此,對于實驗所需的CPU占有量、內(nèi)存使用率均可以在進入模擬器的Shell模式后,使用命令行的方式獲取得到。
按照上述方法,遍歷所有的軟件樣本,提取本實驗所需的特征值,即軟件運行中的CPU使用率、內(nèi)存占有率、訪問通訊錄、收發(fā)短信,然后將這些特征值添加到3.2.1節(jié)創(chuàng)建的.arff文件中,作為分類器的輸入。
分類模型最常用到的評估標準有五種:預測的準確率、魯棒性、速度、可解釋性、可伸縮性。
其中,預測的準確率常常用來對分類器的性能進行評估和比較,對于二元分類問題,預測可能會產(chǎn)生四種相異的結(jié)果,如表1所示。TP(True Positive)表示良性軟件預測為真的個數(shù),TN(Ture Negative)表示惡意軟件預測為真的個數(shù),這兩個都是正確分類的結(jié)果。FP(False Positive)表示良性軟件預測為假的個數(shù),即真實類別為no、而預測類別為yes;FN(False Negative)表示惡意軟件預測為假的個數(shù),即真實類別為yes、預測類別為no。
表1 二元分類預測的四種結(jié)果
二元分類問題的度量標準簡單描述如下。
真陽性率(True Positive Rate,TPR)表示在所有實際為正常的軟件中,被正確的預測為良性軟件的比例,該值越大,表明分類效果越好,公式如下:
假陰性率(False Negative Rate,F(xiàn)NR)表示惡意軟件漏檢率,該值越小,表明分類效果越好,公式如下:
準確率(Accuracy,ACC)表示軟件樣本預測正確的比例,該值越大,表明分類效果越好,公式如下:
本文將通過上述度量標準對測試結(jié)果進行評估驗證。
本文采用動態(tài)檢測分析和靜態(tài)檢測分析相結(jié)合的方法,構(gòu)建惡意軟件檢測模型。為了表明該方法的有效性,首先對靜態(tài)檢測所提取到的特征值進行分類,根據(jù)4.1節(jié)所介紹的度量標準,利用式(1)~(3)進行分類評估,結(jié)果如表2。
表2 靜態(tài)檢測的分類評估結(jié)果
然后,再對動態(tài)檢測所提取到的行為特征值進行分類,同樣利用式(1)~(3)進行分類評估,結(jié)果如表3。
表3 動態(tài)檢測的分類評估結(jié)果
最后,我們通過對本實驗所提出的方案進行測試驗證,即通過靜態(tài)檢測提取出的權(quán)限特征值、動態(tài)檢測提取出的行為特征值,構(gòu)造一種混合特征集,然后對該混合特征集進行分類檢測,分類結(jié)果和評估結(jié)果分別如表4、表5。
表4 混合特征的分類結(jié)果
表5 混合特征的評估結(jié)果
通過實驗對比結(jié)果可知,混合特征的檢測準確率均比靜態(tài)權(quán)限特征值或動態(tài)行為特征值的檢測率高,表明本文所提出的方案能夠有效地提高惡意軟件檢測的準確率,并且在選定的這四種分類算法中,J48的分類準確率最高,為87.07%,說明該分類算法對本文所構(gòu)造的混合特征的分類效果最優(yōu)。
根據(jù)實驗比較結(jié)果,最終選定J48作為本實驗方案的分類算法,以此提高用戶使用軟件的安全性。
本文采用動態(tài)分析和靜態(tài)分析相結(jié)合的方法,并使用機器學習及數(shù)據(jù)挖掘技術,對258個惡意樣本和249個良性樣本進行仿真實驗,結(jié)果表明,該方法能夠有效地提高惡意軟件檢測的準確率。
本文所提出的方案雖然具備一定的檢測效果,但只針對惡意吸費、隱私竊取及資費消耗這三類惡意軟件,不能夠很好地檢測所有的惡意軟件類別,因此,提出一種可針對任意類別惡意軟件的檢測方案至關重要。
[1]李曉洲.Android應用程序組件漏洞測試方法研究[D].太原:太原理工大學,2015.LI Xiaozhou.Study of Android Application Component Vulnerability Testing Method[D].Taiyuan:Taiyuan University of Technology,2015.
[2]王菲飛.基于Android平臺的手機惡意代碼檢測與防護技術研究[D].北京:北京交通大學,2012.WANG Feifei.Study on Detection and Protection Techniques of Mobile Phone Malicious Code Under the Android Platform[D].Beijing:Beijing Jiaotong University,2012.
[3]房鑫鑫.Android惡意軟件實現(xiàn)及檢測研究[D].南京:南京郵電大學,2013.FANG Xinxin.Malware Implementation and Detection on Android[D].Nanjing:Nanjing University of Posts and Telecommunications,2013.
[4]Wang,T.-Y.,Wu,C.-H.,Hsieh,C.-C.:A Virus Prevention Model Based on Static Analysis and Data Mining Methods[C]//In:Proceedings of the 2008 IEEE 8th InternationalConference on Computerand Information TechnologyWorkshops,CITWORKSHOPS 2008,pp.288-293.
[5] MZheng,MSun,JCS Lui,Droid Analytics:A Signature-Based Analytic System to Collect,Extract,Analyze and Associate Android Malware[J].IEEE Computer Society,2013,8(1):163-171.
[6]劉曉東,何加銘,等.一種靜態(tài)Android程序惡意性檢測方法[J].無線電通信技術,2014,40(2):74-77.LIU Xiaodong,HE Jiaming,et al.Malicious Android Application Detection Method Based on Static Behavior Characteristics[J].Radio Communications Technology,2014,40(2):74-77.
[7]Blasing T,Batyuk L,Schmidt A D,etal.An android application sandbox system for suspicious software detection[C]//Malicious and unwanted software(MALWARE),2010 5th international conference on.IEEE,2010:55-62.
[8]Burguera I,Zurutuza U,Nadjm-TehraniS.Crowdroid:behavior-based malware detection system for android[C]//Proceedings of the 1st ACM workshop on Security and privacy in smartphones and mobile devices.ACM,2011:15-26.
[9]Yan L K,Yin H.DroidScope:Seam lessly Reconstructing the OS and Dalvik Semantic Views for Dynamic Android Malware Analysis[C]//USENIXSecurity Symposium,2012:569-584.
[10]李銘.Android平臺下基于行為的惡意代碼檢測技術研究[D].成都:電子科技大學,2014.Li Ming.Android Malware Detection Based on Behavior Analysis[D].Chengdu:University of Electronic Science and Technology of China,2014.
[11]楊文.基于支持向量機的Android惡意軟件檢測方法研究[D].南京:南京理工大學,2015.YANG Wen.Research on Android malware detection method based on SVM[D].Nanjing:Nanjing University of Science and Technology,2015.
[12]蔡澤廷.基于機器學習的Android惡意軟件檢測模型研究[D].青島:青島理工大學,2013.CAI Zeting.Research of Android Malware Detection Model Based on Machine Learning[D].Qingdao:Qingdao Technological University,2013.
[13]李駿驍.基于監(jiān)督型機器學習分類方法的Android惡意軟件檢測技術研究[D].南京:南京大學,2014.LI Junxiao.The Research on Android Malware Deletion Techniques in Supervised Machine Learning Classification Methods[D].Nanjing:Nanjing University,2014.
[14]劉曉明.基于KNN算法的Android應用異常檢測技術研究[D].北京:北京交通大學,2016.LIU Xiaoming.Anomaly Detection of Malicious Android Application Based on K-Nearest Neighbor[D].Beijing:Beijing Jiaotong University,2016.
[15]張國印,曲家興,李曉光.基于貝葉斯網(wǎng)絡的Android惡意行為檢測方法[J].計算機工程與應用,2016,52(17):16-23.ZHANG Guoyin,QU Jiaxing,LIXiaoguang.Way of Android malicious behavior detection based on Bayesian net-works.Computer Engineering and Applications,2016,52(17):16-23.
[16]遲慶云,劉夢琳,姜振鳳,等.特征提取方法對樸素貝葉斯文本分類器的影響分析[J].長江大學學報(自科版),2013,10(25):91-93.CHIQingyun,LIUMenglin,JIANG Zhenfeng,etal.Analysis of the influence of feature extractionmethods on Naive Bayes text classifier[J].Journal of Yangtze University(Natural Science Edition),2013,10(25):91-93.
[17]ZHOU Yajin,JIANG Xuxian.Dissecting Android malware:characterization and evolution[C]//Proc of IEEE Symposium on Security and Privacy.Washington DC:IEEEComputer Society,2012:95-109.
[18]Aswini A M,Vinod P.Droid permission miner:mining prominentpermissions for Androidmalware analysis[C]//Proc of the 5th International Conference on the Applications ofDigital Information andWeb Technologies,2014:81-86.
[19]盧文清,何加銘,曾興斌,等.基于混合特征的Android惡意軟件靜態(tài)檢測[J].無線電通信技術,2014,40(6):64-68.LUWenqing,HE Jiaming,ZENG Xingbin,etal.Android Malware Static Detection Based on Hybrid Features[J].Radio Communications Technology,2014,40(6):64-68.
[20]張銳,楊吉云.基于權(quán)限相關性的Android惡意軟件檢測[J].計算機應用,2014,34(5):1322-1325.ZHANG Rui,YANG Jiyun.Android malware detection based on permission correlation[J].Computer Technology,2014,34(5):1322-1325.