吳 非,裴 源,吳向前
(新疆大學 信息科學與工程學院,烏魯木齊 830046)
根據第三方權威統(tǒng)計機構Statistics Portal最近的統(tǒng)計報告顯示,Android操作系統(tǒng)的全球市場占有率高居第一為86.2%,并遙遙領先其他的操作系統(tǒng).所以Android操作系統(tǒng)可以稱為當下主流的移動操作系統(tǒng)并且仍然擁有很大的市場潛力.此外,目前所有基于Android操作系統(tǒng)的應用軟件幾乎都會在使用期間訪問互聯網或者必須在聯網模式下才能正常運行,鑒于此,對Android系統(tǒng)的網絡訪問和流量監(jiān)控就變的尤為重要.尤其是在進行Android惡意軟件檢測的時候,網絡流量特征可作為區(qū)分正常app和惡意app的重要依據.根據360官方的統(tǒng)計數據,在2016年第二季度,360互聯網安全中心共截獲Android新增惡意程序樣本426萬個,平均每天截獲新增手機惡意程序樣本近4.7萬個,累計監(jiān)測到用戶感染惡意程序6180萬人次,平均每天惡意程序感染量達到67.9萬人次,新增的惡意軟件主要以資費消耗,隱私竊取為主1.由此可見Android系統(tǒng)安全形勢依然嚴峻[1].
目前而言,Android惡意軟件檢測總體可分為兩大類,一類是采用基于特征值檢測技術的靜態(tài)分析方法.特征值檢測是目前大多數安全產品使用的檢測技術,該技術主要原理是根據特定的規(guī)則對目標文件進行掃描并提取出特征值與病毒庫中已有的特征按照匹配算法進行完全匹配或者相似度計算,若結果超過規(guī)定閾值,則判定為惡意軟件.其優(yōu)點是技術原理簡單,容易實現,但缺點也很明顯,占用系統(tǒng)資源、需要建立特征庫、存在誤報情況.另一類則是基于啟發(fā)式檢測技術的動態(tài)分析方法,動態(tài)啟發(fā)是指在系統(tǒng)中設置若干的特征點來監(jiān)控軟件行為并以此來判斷其是否屬于惡意軟件.動態(tài)分析方法耗費資源且對實時性要求高,需要對軟件運行期間的行為特征進行捕獲和識別[2].但是,在對Android應用產生的流量特征上國內外研究相對較少,Anshul Arora等人提出了一種基于流量特征的Android惡意軟件識別方法,但實驗樣本過少,使用的J48決策樹算法雖然能夠達到較高準確率但具有一定局限性[3].吳雪萍等人提出了一種基于流量相似度的Android二次打包應用檢測技術,通過計算特征的相似度來判定二次打包的應用,其采用五元組方法作為數據流唯一標示,該方法主要用來判斷是否有廣告通過二次打包植入[4].王曉飛等人通過對惡意HTTP流量的不同特征量提取、合并和聚類等方法為Android惡意應用自動構建網絡特征簽名庫,并證明了其有效性和準確性[5].
筆者通過對以上文獻的分析和研究,基于已有的樸素貝葉斯算法提出一種改進的貝葉斯分類模型用于分析Android應用的流量特征,主要從3個方面對算法進行了改進:
1)引入乘數取自然對數方法修正了運算結果下溢的情況,同時降低了算法的時間復雜度.
2)引入拉普拉斯平滑因子修正了特征屬性的劃分未出現導致整體運算結果為0的情況.
3)在計算特征屬性劃分時進行了細化處理,對于離散值統(tǒng)計訓練樣本中各個劃分在每個類別出現的頻率,對于連續(xù)值不如假設其服從高斯分布[6],計算出訓練樣本中各類別下此特征項劃分的均值和標準差代入求出估計值g(x,η,σ).
改進的貝葉斯模型可用于分類和分析應用軟件在運行期間產生的網絡流量,通過比對正常軟件和惡意軟件產生流量的差異性來實現惡意軟件的識別和檢測,在一定程度上對Android惡意軟件檢測提供了新的思路和方法.
樸素貝葉斯[7,8]是一種結合了分類和屬性的分布式函數,通過計算樣本的聯合概率來估計樣本的分類.正常情況下:假設隨機實驗E的樣本空間是S,A為E的事件且P(A)>0,B1,B2,…,Bn為S的一個劃分,則在事件A發(fā)生的條件下Bi發(fā)生的概率為:
(1)
其中,P(Bi)為先驗概率,可以從訓練數據中得到,P(Bi|A)為后驗概率,指得到結果后重新修正的概率.樣本Xe的分類標記可以由集合{C1,C2,…,Cm}表示.Xe屬于類別Ck的條件概率公式可以寫成:
(2)
P(Ck)是Ck的先驗概率,可以通過計算Ck在整個訓練集中的比例來得到.P(Xe)是一個常量,表示樣本Xe的邊緣概率.P(Xe|Ck)是樣本Xe屬于類別Ck的條件概率,可以從訓練數據中得到.樣本Xe的特征可以用一組維度為n的特征向量(x1,x2,…,xn)T來表示,則P(Xe|Ck)的概率可以表示為:
P(Xe|Ck)=P(x1,x2,…,xn|Ck)
(3)
由于樸素貝葉斯的模型假設所有變量對分類均是有用的,即輸出依賴所有的屬性:
(4)
把公式(3),(4)代入公式(2)后得到:
(5)
定義X為輸入空間上的隨機變量,Y為定義在輸出空間上的隨機變量,則樸素貝葉斯分類器可用公式表示為:
(6)
傳統(tǒng)的樸素貝葉斯算法存在一定的不足且由于流量特征的復雜性無法直接應用,經過改進的樸素貝葉斯算法不僅提高了算法效率而且能夠適用于流量特征分類,改進算法[9,10]如下:
算法.改進的樸素貝葉斯算法
輸出:T′的分類
1)預處理:
i.計算每個特征的信息增益值并降序排列.
gain(x(j))=info(Ck)-infox(j)(Ck)
ii.若出現特征項劃分未出現,即P(aji|Ck)=0情況,采用拉普拉斯校準進行數值修正.(m為第j個特征可能取到的所有值的個數)
iii.在進行乘法運算時采用乘數取自然對數法對運算結果進行修正.
2)計算先驗概率以及條件概率
i.當特征屬性為離散隨機變量時,進行頻率統(tǒng)計
ii.當特征屬性為連續(xù)隨機變量時,引入高斯分布
對改進的貝葉斯分類器模型的評價標準采用受試者操作特性曲線(ROC)、準確率(ACC)和曲線下面積(AUC).
準確率是反映分類器性能的標準,其定義非常簡單即將正樣本預測為正樣本,將負樣本預測為負樣本,ACC=(TP+TN)/(TP+TN+FP+FN).其中True Positive(真正,TP)被模型預測為正的正樣本;True Negative(真負,TN)被模型預測為負的負樣本;False Positive(假正,FP)被模型預測為正的負樣本;False Negative(假負,FN)被模型預測為負的正樣本.
ROC曲線是反映分類器優(yōu)劣的標準,以真正率(TPR)為Y軸,假正率(FPR)為X軸,若曲線越接近左上角則說明分類器性能越好.
AUC是進行分類器性能判定的輔助參考,即當ROC曲線無法準確和清晰反映多個分類器的分類效果時,則進行AUC值比較,越大說明分類器性能越好.
以每一個Android樣本的流量為特征屬性,采用改進的樸素貝葉斯算法對流量進行分類,找出惡意軟件與正常軟件之間流量特征的區(qū)別.實驗的正常軟件來自于Googleplay涵蓋了所有應用類別,惡意樣本來自于Android Malware Genome Project[11]和https://virusshare.com,包含全部27類在運行期間連接互聯網并會產生數據流量的惡意軟件,但后經實驗證明只有其中的13類是有效的,如表1所示.導致這種情況的原因可能是遠程服務器已被關閉或被用于其他用途[12].
表1 具有網絡行為的惡意軟件家族
Table 1 Malware family with network behavior
惡意軟件特點惡意軟件特點AnserverBot源代碼混淆程度高,動態(tài)加載惡意代碼BaseBridge擁有發(fā)送和讀取短信權限,并能夠使安全軟件停止工作BgServ收集個人信息如IMEI,手機號碼等上傳至指定服務器DroidDream收集并上傳IMEI,IMSI,手機號碼等,與BgServ類似DroidDreamLightDroidDream的變種,增強了惡意行為的隱蔽性DroidKungFu1收集并上傳IMEI,手機型號,Android版本號等DroidKungFu2DroidKung的變種,增加了遠程命令和控制服務器DroidKungFu3高度混淆了源代碼,并隱藏和加密了所有與惡意軟件相關的原生二進制文件GoldDream收集并上傳IMEI和IMSI到指定服務器jSMSHider收集并上傳IMSI和手機號碼至指定服務器Pjapps收集并上傳IMEI、設備編號、SIM卡序列號至指定服務器Plankton感染其他良性APP同時上傳設備ID和已獲得的權限信息RogueLemon在用戶不知情的情況下發(fā)送短信并能夠接收遠程服務器控制指令
在一臺連接互聯網的主機上運行Android模擬器,為模擬器上單獨設置代理服務器并保證模擬器中的應用程序能夠訪問網絡,之后在模擬器上安裝一個惡意軟件,并讓它保持運行24小時,如圖1所示.當惡意軟件在模擬器中開始運行時,在Linux終端下同時調用tcpdump命令捕獲其網絡流量,編寫腳本文件如圖2.導出的pcap文件使用Wireshark進行分析并提取特征值,正常軟件的數據收集過程亦如此.
采用IG特征選擇算法[13],計算每個特征在分類器中的信息增益,IG值越大則說明此特征越重要.流量特征的IG值降序排列選出的16個特征如表2所示.
圖1 實驗部署設置Fig.1 Experimental deployment settings
圖2 腳本文件Fig.2 Script file
表2 IG算法優(yōu)化排列的網絡流量特征
Table 2 IG algorithm to optimize the network traffic characteristics
流量特征IG值流量特征IG值平均每秒接收字節(jié)數0.295相鄰數據包的發(fā)送時間間隔0.192接收/發(fā)送字節(jié)比率0.287相鄰數據包的接收時間間隔0.187發(fā)送數據流中數據包平均數0.284平均每秒發(fā)送字節(jié)數0.156接收數據流中數據包平均數0.267連接數/目標IP數比率0.132接收數據流的平均字節(jié)數0.261數據流平均持續(xù)時間0.121發(fā)送數據流的平均字節(jié)數0.243平均每秒發(fā)送數據包數0.081平均數據包大小0.233平均每秒接收數據包數0.061接收/發(fā)送數據包比率0.218流量組成(TCP,%)0.049
分類模型總體分為3個階段,如圖3所示.第一階段為數據準備階段,本次實驗總共收集了486個樣本,其中217個惡意樣本,269個正常樣本.整個實驗采用十折交叉驗證法,并進行重復實驗取平均值.數據收集過程如3.2所述,提取特征全集后采用IG特征選擇算法,優(yōu)化選擇具有區(qū)分度的特征優(yōu)化集α,作為分類器的輸入.第二階段為分類器訓練階段,核心部分是計算訓練樣本中的先驗概率和條件概率,這將直接決定分類器的判定結果,訓練過程中適度調節(jié)樣本分布,以得到最佳效果.第三階段為分類器測試階段,核心部分是對測試樣本進行分類并對分類器效果進行評估.在本文已改進的貝葉斯模型分類方法中,需要計算測試樣本在類別劃分時的先驗概率和樣本的各特征在每個類別下的條件概率,在進行概率運算時輔以乘數取自然對數和拉普拉斯校準可以使運算結果更加準確,更加有效的區(qū)分惡意軟件和正常軟件.最后將預測結果與真實的類別相比較,并使用ACC,ROC,AUC對分類器的分類效果進行客觀評價.
圖3 改進的樸素貝葉斯模型Fig.3 Improved naive Bayes model
在整個實驗中,筆者發(fā)現惡意軟件普遍是周期性的接收和發(fā)送數據,如AnserverBot每兩個小時訪問遠程服務器一次,Plankton每5秒向遠程服務器發(fā)送一次數據同時接收遠程服務器發(fā)來的指令等.在16個流量特征中有5個特征在惡意軟件和正常軟件連接網絡時的數據表現上差別較大,它們是收到/發(fā)送字節(jié)比率、平均每秒收到的字節(jié)數、發(fā)送數據流含數據包平均數、收到的每個數據流包含數據包的平均數、收到的每個數據流的平均字節(jié)數[14],如表3所示.
表3 特征全集統(tǒng)計表
Table 3 Complete statistics list
流量特征惡意APP正常APP流量特征惡意APP正常APP?收發(fā)比(Bytes)[0.15,3.66][5.5,8.1]發(fā)送時間間隔[1,120][0.5,1]?平均每秒接收字節(jié)數[35,1200][12000,18000]數據流平均持續(xù)時間(S)[0.5,60][5,15]?發(fā)送數據流中數據包平均數[4,7][21,55]發(fā)送數據流的平均字節(jié)數[500,1800][2500,4200]?接收數據流中數據包平均數[2,6][27,60]連接數/目標IP數比率[1,8][2,5]?接收數據流的平均字節(jié)數[800,5000][24000,100000]收發(fā)比(Packets)[0.76,1][1,6]接收時間間隔[1,116][0.5,30]平均每秒發(fā)送字節(jié)數[15,4560][5,2500]平均數據包大小(Bytes)[86,360][220,900]流量組成(TCP,%)[86.26,91.23][90.12,92.25]平均每秒發(fā)送數據包數[1,24][12,19]平均每秒收到數據包數[1,24][16,25]
通過IG算法,依次選取信息增益較大的特征作為分類器輸入,不同特征的ROC、AUC比較和準確率如圖4圖5所示.
將本文基于流量特征的惡意軟件檢測方法與基于權限的惡意軟件檢測方法作對比,對比數據如表4.
圖4 不同特征的ROC曲線Fig.4 ROCcurveswithdifferentcharacteristics圖5 不同特征的準確率比較Fig.5 Comparisonofaccuracyofdifferentfeatures
從上述實驗結果和對比可以得出以下結論:
1)基于流量特征的分析方法應用于Android惡意軟件檢測是可行的,而且相比基于權限特征的檢測方法[9]能夠在使用更少特征的情況下達到更高的準確率.
2)在信息論中,期望信息越小,信息增益越大,從而純度越高.從圖5中可以看出,當特征數達到一定量后,準確率和AUC趨于穩(wěn)定,說明通過IG算法選出的特征能夠在一定程度上達到去噪的目的,舍棄一些對分類效果不影響或負影響的特征,能夠達到更好的分類效果.
3)該檢測方法具有一定的局限性,即被檢測的Android應用需要連接互聯網并采集一段時間內的網絡流量信息.
本文根據對正常APP和惡意APP的流量特征進行提取,同時采用IG特征選擇法和改進的樸素貝葉斯算法建立了基于流量特征的Android惡意軟件分類器模型,在對具有網絡行為的惡意軟件檢測中有較好的表現.針對靜態(tài)檢測無法準確識別和判定的應用提供了新的解決思路和方法.后續(xù)研究工作中可以將該方法與靜態(tài)檢測相結合,針對采用動態(tài)代碼加載、源代碼高度混淆的惡意軟件提高檢測識別率,同時進一步增加惡意應用樣本庫,并嘗試尋找更有區(qū)分度的特征.
表4 不同分類器準確率和AUC比較
Table 4 Accuracy and AUC of different classifiers comparison
基于特征數10203050100權限準確率0.8840.9120.9140.9190.925信息AUC0.9170.9610.9610.9690.957基于特征數58111416流量準確率0.8640.8910.9120.9260.930特征AUC0.8790.9150.9290.9510.954
[1] Jiang X,Zhou Y.Dissecting Android malware:characterization and evolution[C].IEEE Symposium on Security & Privacy (SP),IEEE,2012:95-109.
[2] Peng Guo-jun,Li Jing-wen,Sun Run-kang,et al.Android malware detection research and development[J].Journal of Wuhan University (Science Edition),2015,61(1):21-33.
[3] Arora A,Garg S,Peddoju S K.Malware detection using network traffic analysis in Android based mobile devices[C].Eighth International Conference on Next Generation Mobile Apps,Services and Technologies (NGMAST 2014),IEEE,2014:66-71.
[4] Wu Xue-ping,Zhang Da-fang,Su Xin,et al.Based-on network traffic′s similarity to detect Android repackaged application[J].Journal of Chinese Computer Systems,2015,36(5):954-958.
[5] Wang Xiao-fei.Research on Android malicious application communication mechanism and traffic feature extraction based on HTTP[D].Changsha:Hunan University,2014.
[6] Zaburdaev V Y.Gaussian signals,correlation matrices,and sample path properties[M].A First Course in Statistics for Signal Analysis.Boston:Birkh?user,2006.
[7] Li Hang.Statistical learning method[M].Beijing:Tsinghua University Press,2012.
[8] Harrington P.Machine learning in action[M]. Machine Learning in Action,New York:Manning Publications Co.2012.
[9] Xu Yan-ping,Wu Chun-hua,Hou Mei-jia,et al.Android malware detection technology based on improved na?ve Bayesian[J].Journal of Beijing University of Posts and Telecommunications,2016,39(2):43-47.
[10] Wang Hui,Chen Hong-yu,Liu Shu-fen.Intrusion detection system based on improved na?ve Bayesian algorithm[J].Computer Science,2014,41(4):111-115.
[11] Chandramohan M,Tan H B K.Detection of mobile malware in the wild[J].Computer,2012,45(9):65-71.
[12] Jiang X,Zhou Y.A survey of Android malware[M].Android Malware,Berlin:Springer,2013.
[13] Zhong Ning,Yin Xu-ri,Chen Shi-fu.Optimal attribute set discovery method based on information gain[J].Journal of Chinese Computer Systems,2002,23(4):444-446.
[14] Feizollah A,Anuar N B,Salleh R,et al.A review on feature selection in mobile malware detection[J].Digital Investigation the International Journal of Digital Forensics & Incident Response,2015,13(C):22-37.
附中文參考文獻:
[2] 彭國軍,李晶雯,孫潤康,等.Android 惡意軟件檢測研究與進展[J].武漢大學學報(理學版),2015,61(1):21-33.
[4] 吳雪平,張大方,蘇 欣,等.基于流量相似度的Android二次打包應用的檢測技術研究[J].小型微型計算機系統(tǒng),2015,36(5):954-958.
[5] 王曉飛.基于HTTP的安卓惡意應用通信機制及流量特征提取研究[D].長沙:湖南大學,2014.
[7] 李 航.統(tǒng)計學習方法[M].北京:清華大學出版社,2012.
[9] 許艷萍,伍淳華,侯美佳,等.基于改進樸素貝葉斯的Android惡意應用檢測技術[J].北京郵電大學學報,2016,39(2):43-47.
[10] 王 輝,陳泓予,劉淑芬.基于改進樸素貝葉斯算法的入侵檢測系統(tǒng)[J].計算機科學,2014,41(4):111-115.
[13] 鐘 寧,尹旭日,陳世福.基于信息增益的最佳屬性集發(fā)現方法[J].小型微型計算機系統(tǒng),2002,23(4):444-446.