張玉玲,尹傳環(huán)
美國信息技術(shù)研究和顧問公司Gartner于2016年2月公布了2015年全球智能手機銷售量[1]。2015年全球智能手機銷量達(dá)14億部,較2014年增長了14.4%。Gartner預(yù)計2016年全球手機出貨量將達(dá)到19.59億部,高于2015年的19.10億部,而2017年將達(dá)到19.83億部。德國網(wǎng)絡(luò)安全公司GDATA最新公布的調(diào)查報告顯示,2015年底,Android惡意軟件文件數(shù)量多達(dá)230萬。Android惡意軟件數(shù)量眾多,已成為移動安全的重災(zāi)區(qū)[2]。移動應(yīng)用安全事件頻發(fā),主要有以下問題:簡單的應(yīng)用市場安全審查、粗粒度的權(quán)限系統(tǒng)、有限的系統(tǒng)級安全監(jiān)測,以及鼓勵快速傳播的應(yīng)用分派模式[3]。傳統(tǒng)分類方案雖然實現(xiàn)了惡意軟件的檢測,但其安全性、實時性、性能等方面均存在不足,特別是在移動端發(fā)展迅速的情況下,其檢測機制難以滿足惡意軟件檢測需求,不足以應(yīng)對不斷變化的未知惡意軟件和變異問題。Mudflow[4]是目前少有的有關(guān)安卓惡意異常檢測的研究,利用單分類支持向量機(One-class SVM)[5]分類,檢測正常軟件和惡意軟件的準(zhǔn)確率只有83.8%,該方法利用靜態(tài)污點分析技術(shù),找出正常軟件和惡意軟件之間的數(shù)據(jù)流差別來標(biāo)記可疑特征,模型的建立并沒有脫離惡意軟件。
針對上述問題,本文提出Droid-Saf框架,利用輕量級的靜態(tài)分析,訓(xùn)練集僅包含正常軟件的樣本,基于svdd算法建立模型,并對該算法做了改進(jìn),融入了隱含特征,以便更好地應(yīng)對軟件的不斷變化。檢測惡意軟件的誤報率從10%降低到0.6%,并且新算法對參數(shù)不敏感,更容易找到比較理想的結(jié)果。
檢測惡意軟件的方法,大致可分為兩種:靜態(tài)分析和動態(tài)分析。靜態(tài)分析不運行程序只分析代碼,試圖找到表明應(yīng)用程序的行為的控制流,也被用來分析正常軟件的代碼缺陷和故障,甚至在不運行應(yīng)用程序的情況下直接檢測其惡意行為。靜態(tài)檢測優(yōu)點是速度快,缺點是需要構(gòu)建并且動態(tài)維護(hù)惡意行為的特征庫。動態(tài)分析不分析代碼而在專有的虛擬環(huán)境中運行代碼,用自動化工具追蹤應(yīng)用程序的行為,然后再分析它的日志文件或者系統(tǒng)調(diào)用序列等。其缺點是需要進(jìn)行實時監(jiān)控,內(nèi)存和電量的消耗高。
近年來,眾多研究者提出了很多方案。靜態(tài)分析方面,例如PiggyDroid[6]使用API調(diào)用等靜態(tài)特征來做檢測;RiskRanker[7]檢測軟件是否利用root漏洞和是否發(fā)送后臺信息等篩選出需要深入研究的軟件,但都是靠專家系統(tǒng)檢測。DroidAPIMiner[8]把數(shù)據(jù)流相關(guān)的API作為特征,然后用改進(jìn)的KNN算法進(jìn)行分類,還有研究者提出了一些有效的方法與框架,例如 Droid-Sec[9]、Shina[10]、Drebin[11]。動態(tài)分析方面,例如Crowdroid框架[12]由客戶端和服務(wù)器端組成,客戶端使用Linux系統(tǒng)的Strace機制監(jiān)控Android系統(tǒng)調(diào)用,然后把調(diào)用信息發(fā)送到服務(wù)器端處理;CopperDroid[13]不關(guān)注底層動作的調(diào)用,而是捕捉j(luò)ava代碼和本地執(zhí)行代碼發(fā)起的行為。DroidAnalyst[14]提出一個新的自動化應(yīng)用,審查和分析惡意軟件的框架,集成了靜態(tài)和動態(tài)分析的協(xié)同作用來提高分析的精度和效率。
上述方法都是利用現(xiàn)有的正常軟件和惡意軟件進(jìn)行訓(xùn)練和分類,隨著惡意軟件的不斷更新變化,應(yīng)對未知惡意行為又是一道難題,應(yīng)用異常檢測是目前比較流行的方法。
異常檢測是指將正常的習(xí)慣行為特征存儲在數(shù)據(jù)庫中,然后將當(dāng)前的行為特征與特征數(shù)據(jù)庫中的特征進(jìn)行比較,如果兩者偏差足夠大,則說明發(fā)生了異常[15]。目前異常檢測的研究主要基于無監(jiān)督學(xué)習(xí)框架[16],因此本文基于單分類算法進(jìn)行研究?,F(xiàn)有方法對惡意軟件檢測困難主要有兩個原因:1)惡意軟件經(jīng)常出現(xiàn)在檢測方法之前。傳統(tǒng)的檢測依賴已知樣本進(jìn)行訓(xùn)練,不能自動更新規(guī)則庫,也無法檢測新的惡意行為;2)惡意軟件數(shù)據(jù)收集不完整?,F(xiàn)實檢測任務(wù)中異常數(shù)據(jù)普遍難以采集或者采集代價過高,往往只有一類數(shù)據(jù)可供使用,因此對于沒有收集到的惡意軟件無法辨別。針對惡意軟件不斷變化且數(shù)據(jù)收集不完整的問題,異常檢測是比較可行的方法,本文基于SVDD單分類算法進(jìn)行研究。
支持向量數(shù)據(jù)描述,英文名(support vector data description,SVDD)[17],通俗來講,它是一種單分類模型,假設(shè)正常數(shù)據(jù)服從球形分布,利用核函數(shù)把樣本空間映射到高維核空間,在核空間找到一個能包含所有樣本的超球體,尋求一個最小包含球以包含正常樣本,該方法不需假設(shè)原點為異常點,并且該方法以極小極大化方法求解最小包含球(球心、半徑)。當(dāng)識別一個新的樣本時,如果樣本在球體內(nèi)部,就認(rèn)為是正常的,否則就是異常的[18]。
SVDD首先通過核函數(shù)將輸入空間映射到一個高維空間,在這個高維空間構(gòu)造一個包含所有訓(xùn)練樣本點的球體;在球面上的樣本點即為SVDD所求得的支持向量。假設(shè)模型f(x; w)表示一類緊密的有界數(shù)據(jù)集,SVDD的優(yōu)化目標(biāo)就是求一個中心為a半徑為R的最小球面,而且使訓(xùn)練集X的所有樣本都落在此球體內(nèi)。它的原理和SVM很像,類比于SVM[19],定義一個最小化問題:
使得這個球面滿足:
式中:這里的ξi是松弛變量;C是調(diào)節(jié)松弛變量的影響大小。利用Lagrange函數(shù)求解上述約束下的最小優(yōu)化問題,得到:
對上述問題相對α求最大,可以用標(biāo)準(zhǔn)的二次規(guī)劃算法來解決。這樣就可以求得α的最優(yōu)值,對于非0的αi,其對應(yīng)的樣本點是支持向量,位于球面上;而αi=0則表示對應(yīng)的樣本點位于球體內(nèi)。α和R可用含α的表達(dá)式隱式地表示。判斷一個數(shù)據(jù)點屬于這個類,那么當(dāng)滿足:
即判Z屬于正常類,否則為異常類。將超球面的中心用支持向量來表示,那么判定新數(shù)據(jù)是否屬于這個類的判定條件就是:
式中:R是任意一個支持向量Xk到球心a的距離。當(dāng)輸入空間的樣本點不滿足球狀分布時,可以通過核技巧把輸入空間先映射到高維空間,然后在映射后的高維空間內(nèi)求解。如果使用核函數(shù)上述判定條件改寫為
常用的核函數(shù)有線性核函數(shù)、多項式核函數(shù)、RBF核函數(shù)等,不同的核函數(shù),對實驗結(jié)果影響很大, 用合適的核函數(shù)分類才能得到理想的實驗結(jié)果。 傳統(tǒng)的靜態(tài)分析關(guān)注樣本申請的權(quán)限和API調(diào)用等特征,受系統(tǒng)調(diào)用序列關(guān)注系統(tǒng)調(diào)用頻率[20]的啟發(fā),上述特征的總和可以體現(xiàn)出惡意軟件的行為活躍程度。在正常樣本中,申請次數(shù)多的樣本代表它本身活躍,行為復(fù)雜。正常軟件中頻繁申請權(quán)限或者API的樣本應(yīng)該更加得到關(guān)注,所以可以從這方面入手體現(xiàn)不同軟件的共有特性。將頻率融入到svdd單分類算法當(dāng)中,以尋找最適應(yīng)于本方案的超球體,盡可能地將這些樣本包含在SVDD的超球體內(nèi),達(dá)到靜態(tài)分析特征進(jìn)而降低單分類檢測的誤警率的目的。
將樣本頻率融入到算法當(dāng)中:定義正常樣本活動頻率矩陣c=[c1c2c3··· cn],n為訓(xùn)練樣本個數(shù)。
式中:n是樣本個數(shù),m是特征維數(shù),所有樣本的特征用一個m×n的矩陣P表示;分子指的是第i個樣本的頻率(即樣本的非0特征個數(shù),分母指的是全部樣本的最大頻率)。那么函數(shù)的最小化問題變?yōu)?/p>
構(gòu)造新的Lagrange函數(shù)如式(9):
由此,通過上式調(diào)整對應(yīng)的約束條件:
本章主要講述了將正常樣本作為數(shù)據(jù)源,用輕量級靜態(tài)分析方法提取特征,并在特征庫的基礎(chǔ)上提出了一種挖掘隱形特征的方法,將特征頻率作為新的特征融入到SVDD算法當(dāng)中,實現(xiàn)降低檢測惡意軟件的誤警率的目標(biāo)。
實驗的流程框架如圖1所示。
其中,數(shù)據(jù)處理用到了FexDroid[21]的降維方法。
把從谷歌商店、安智、應(yīng)用寶等安卓軟件市場收集的軟件作為正常樣本,一共有1 976個;從drebin中隨機選取了1 952個惡意軟件作為負(fù)樣本;然后用apktool等工具反編譯這些APP,運行得到manifest和 smali文件,再提取 permission、api_call、activity等特征,共得到8 874個特征;再將每個樣本的特征長度(也就是樣本的行為頻率)作為新的特征融入svdd算法當(dāng)中。
評價指標(biāo)是漏報率和誤報率,為準(zhǔn)確描述這兩個概念,避免不必要的誤會,給出以下計算公式。
我們引入4個參數(shù)3個評價標(biāo)準(zhǔn),如表1所示,首先如下假設(shè):
FP:將樣本判定為正常樣本,實際為惡意樣本的數(shù)量。
TN:將樣本判定為惡意樣本,實際為惡意樣本的數(shù)量。
TP:將樣本判定為正常樣本,實際為正常樣本的數(shù)量。
圖1 異常檢測流程框架Fig. 1 The framework of anomaly detection process
表1 實驗評價指標(biāo)Table 1 The evaluating indicator of experiment
FN:將樣本判定為惡意樣本,實際為正常樣本的數(shù)量。
隨機取1 000個正樣本作為訓(xùn)練集,其他的正樣本和負(fù)樣本作為測試集,頻率是每個樣本包含特征的個數(shù),把它歸一化然后做新特征。分別用最常用的多項式核函數(shù)和RBF核函數(shù)模型。其中,c是svdd的懲罰參數(shù),b是核函數(shù)參數(shù);改進(jìn)算法中頻率特征會取代參數(shù)c的作用。為方便描述,模型改進(jìn)之前的實驗稱為Driod-svd,改進(jìn)之后的實驗稱為Droid-Saf。兩者對比表明改進(jìn)算法在RBF核函數(shù)上取得了明顯效果,如圖2所示。
如果樣本的特征數(shù)非常多, 使用RBF核將樣本映射到高維空間,結(jié)果較差,使用線性核比較合適高維數(shù)據(jù)。因此下面的實驗使用常見的多項式核函數(shù)。
圖2 RBF核函數(shù)的實驗對比Fig. 2 The experimental comparison of RBF kernel
Droid-Saf對惡意軟件檢測的正確率基本達(dá)到100%,參數(shù)c對結(jié)果并沒有影響,因此對參數(shù)不敏感;但是Droid-Svd的部分漏報率大于0,c越大,誤判率越高,漏報率也越高。為了詳細(xì)說明細(xì)節(jié),表2列出了Droid-Svd的實驗情況。
基于多項式核函數(shù)的實驗結(jié)果分別取了Droid-Svd和Droid-Saf在多項式核函數(shù)下最好的實驗結(jié)果,如圖3所示。
當(dāng)c=0.05時,參數(shù)b對基于多項式核函數(shù)的Droid-Saf并沒有作用,漏報率基本為0,誤報率明顯低很多。
表2 基于多項式核函數(shù)的Droid-Svd實驗的平均值Table 2 The experimental FPR comparison of Polynomial kernel function
圖3 多項式核函數(shù)的實驗對比Fig. 3 The experimental comparison of Polynomial kernel function
為了直觀對比實驗的改進(jìn)效果,表3給出了Droid-Svd和Droid-Saf在核函數(shù)分別為多項式和RBF的最好結(jié)果。多項式核函數(shù)的實驗結(jié)果在圖2中,誤報率在c=0.05、b(1-25)不同時總體上差別不大,b對應(yīng)25個實驗數(shù)據(jù),對這25個實驗數(shù)據(jù)先求和再求平均數(shù);RBF核函數(shù)的實驗結(jié)果在圖3中,結(jié)果在b(1-25)不同時波動較大,因此取了兩條曲線上結(jié)果最好的數(shù)據(jù)。
表3 實驗總結(jié)的平均結(jié)果Table 3 The summarized average results of the experiments
表3證明了改進(jìn)方法的有效性和適用性,改進(jìn)后的算法舍棄了對實驗結(jié)果影響敏感的參數(shù)c,調(diào)參簡單。
傳統(tǒng)分類方案雖然實現(xiàn)了惡意軟件的檢測,但是其安全性、實時性、性能等方面均存在不足,特別是在移動端發(fā)展迅速的情況下,其檢測機制難以滿足惡意軟件檢測需求。本文所提出的框架對以上問題給出 解決方案,具有應(yīng)對未知惡意軟件和惡意軟件變異的能力。針對靜態(tài)分析中的特征包含的隱藏信息,提出一種挖掘數(shù)據(jù)隱含特征的數(shù)據(jù)處理方案,并且將它融入到單分類算法中,進(jìn)而改進(jìn)了單分類算法模型,降低了惡意軟件檢測的誤報率。其中,多項式核函數(shù)的漏報率從11%降低到了0.5%;RBF核函數(shù)的實驗也有相應(yīng)的提高。但是因為靜態(tài)分析固有的特性,應(yīng)對代碼混淆需要更好的反編譯技術(shù);另外正常樣本往往會不可避免地混入惡意行為而導(dǎo)致模型偏離現(xiàn)象;這些問題也是以后要研究的方向。
[1]微頭條. Gartner: 2016全球手機出貨預(yù)計19.59億部[EB/OL]. http://www.wtoutiao.com/p/19cnOtt.html.
[2]中文業(yè)界資訊站. 2015年Android惡意軟件樣本數(shù)量超230萬[EB/OL]. [2017-05-13]. http://www.cnbeta.com/articles/478843.html.
[3]楊威, 肖旭生, 李鄧鋒, 等. 移動應(yīng)用安全解析學(xué): 成果與挑戰(zhàn)[J]. 信息安全學(xué)報, 2016, 1(2): 1–14.YANG Wei, XIAO Xusheng, LI Dengfeng, et al. Security analytics for mobile apps: achievements and challenges[J].Journal of cyber security, 2016, 1(2): 1–14.
[4]AVDIIENKO V, KUZNETSOV K, GORLA A, et al. Mining apps for abnormal usage of sensitive data[C]//Proceedings of 37th IEEE International Conference on Software Engineering. Florence, Italy, 2015: 426–436.
[5]JUSZCZAK P. Learning to recognise: a study on one-class classification and active learning[D]. TU Delft, the Netherlands: Delft University of Technology, 2006.
[6]ZHOU W, ZHOU Y, GRACE M, et al. Fast, scalable detection of piggybacked mobile applications[C]//Proceedings of the third ACM conference on Data and application security and privacy. [s.l.], ACM, 2013: 185–196.
[7]TAX D M J, DUIN R P W. Support vector data description[J]. Machine learning, 2004, 54(1): 45–66.
[8]ZHOU Wu, ZHOU Yajin, GRACE M, et al. Fast, scalable detection of “piggybacked” mobile applications[C]//Proceedings of the Third ACM Conference on Data and Application Security and Privacy. San Antonio, Texas, USA, 2013:185–196.
[9]GRACE M, ZHOU Yajin, ZHANG Qiang, et al. Riskranker:scalable and accurate zero-day Android malware detection[C]//Proceedings of the 10th International Conference on Mobile Systems, Applications, and Services (MO-BISYS). Lake District, UK, 2012: 281–294.
[10]WU Songyang, WANG Pan, LI Xun, et al. Effective detection of android malware based on the usage of data flow APIs and machine learning[J]. Information and software technology, 2016, 75: 17–25.
[11]YUAN Zhenlong, LU Yongqiang, WANG Zhaoguo, et al.Droid-Sec: deep learning in android malware detection[C]//Proceedings of the 2014 ACM Conference on SIGCOMM.Chicago, Illinois, USA, 2014: 371–372.
[12]SHEEN S, ANITHA R, NATARAJAN V. Android based malware detection using a multifeature collaborative decision fusion approach[J]. Neurocomputing, 2015, 151:905–912.
[13]TAM K, KHAN S J, FATTORI A, et al. CopperDroid:automatic reconstruction of android malware behaviors[OL/EB]/. [2016-03-24]. https://www.researchgate.net/publication/300925104.
[14]BURGUERA L, ZURUTUZA U, NADJM-TEHRANI S.Crowdroid: behavior-based malware detection system for android[C]//Proceedings of the 1st ACM Workshop on Security and Privacy in Smartphones and Mobile Devices.Chicago, Illinois, USA, 2011: 15–26.
[15]TAM K, KHAN S J, FATTORI A, et al. CopperDroid:Automatic Reconstruction of Android Malware Behaviors[C]//Proceedings of Annual Network and Distributed System Security (NDSS). San Diego, United States, 2015.
[16]FARUKI P, BHANDARI S, LAXMI V, et al. DroidAnalyst: synergic app framework for static and dynamic app analysis[M]//ABIELMONA R, FALCON R, ZINCIRHEYWOOD N, et al. Recent Advances in Computational Intelligence in Defense and Security. Cham: Springer,2016: 519–552.
[17]TAX M J D, DUIN ROBERT P W. Support vector domain description[J]. Pattern recognition letters, 1999,20(11/12/13): 1191–1199.
[18]HASTIE T, TIBSHIRANI R, FRIEDMAN J. Unsupervised learning[M]//HASTIE T, TIBSHIRANI R, FRIEDMAN J. The Elements of Statistical Learning. New York,USA: Springer, 2009: 485–585.
[19]CRISTIANINI N, SHAWE-TAYLOR J. 支持向量機導(dǎo)論[M]. 李國正,譯. 北京: 電子工業(yè)出版社, 2004: 57–61.CRISTIANINI N, SHAWE-TAYLOR J. An introduction to support vector machines and other kernel-based learning methods[M]. LI Guozheng, Trans. Beijing: Publishing House of Electronics Industry, 2004: 57–61.
[20]羅雋, 丁力, 潘志松, 等. 異常檢測中頻率敏感的單分類算法研究[J]. 計算機研究與發(fā)展, 2007, 44(Z2): 235–239.LUO Jun, DING Li, PAN Zhisong, et al. Research on sequence-call-frequency-based one-class algorithm in abnormal detection[J]. Journal of computer research and development, 2007, 44(Z2): 235–239.
[21]張玉玲, 尹傳環(huán). 基于SVM的安卓惡意軟件檢測[J]. 山東大學(xué)學(xué)報: 工學(xué)版, 2017, 47(1): 42–47.ZHANG Yuling, YIN Chuanhuan. Android malware detection based on SVM[J]. Journal of Shandong university: engineering science, 2017, 47(1): 42–47.