葛文麒,楊 清,廖俊國,何羽軒
(湖南科技大學 a.計算機科學與工程學院; b.瀟湘學院 計算機系,湖南 湘潭 411201)
移動終端因其便利性在人們生活中應(yīng)用逐漸廣泛,其安全問題也成為學者們關(guān)注的熱點。從2008年9月第一部Android移動智能手機發(fā)布至今,移動終端的發(fā)展日趨迅猛,目前全球Android移動設(shè)備已超過25億臺[1]。由于移動終端是執(zhí)行各類應(yīng)用程序的開放平臺,因此成為眾多惡意攻擊者的首選目標。自2013年以來,惡意應(yīng)用程序在移動終端的增長速度遠高于PC端[2]。
2018年IDC報告顯示,Android系統(tǒng)以85.1%的市場份額位居操作系統(tǒng)榜首,其在操作系統(tǒng)市場已占據(jù)主導地位[3]。與其他移動操作系統(tǒng)相比,Android系統(tǒng)具有開源性,其允許用戶從第三方應(yīng)用商店下載應(yīng)用程序。然而有許多應(yīng)用商店缺乏檢測機制來識別惡意應(yīng)用程序,導致此類應(yīng)用程序呈增長趨勢,對Android移動設(shè)備的安全性造成嚴重威脅。
目前研究人員主要采用基于數(shù)據(jù)跟蹤的動態(tài)分析方法與基于反編譯文件的靜態(tài)分析方法對應(yīng)用程序進行檢測。動態(tài)分析方法需要在沙箱中運行應(yīng)用程序,監(jiān)視代碼所有特征行為以及網(wǎng)絡(luò)流量捕捉、文件加載等動態(tài)特性,該過程會消耗大量資源和時間,無法對應(yīng)用程序進行快速檢測。而靜態(tài)分析方法是對應(yīng)用程序安裝包進行安全檢測,無需運行程序。該方法通過逆向工程技術(shù)獲得應(yīng)用程序行為特征并從整體對應(yīng)用程序進行分析,可快速高效識別惡意應(yīng)用程序,但是不能運行應(yīng)用程序做動態(tài)檢測。在當前惡意應(yīng)用程序數(shù)量快速增長的趨勢下,與動態(tài)分析方法相比,采用靜態(tài)分析方法對應(yīng)用程序進行大規(guī)模分析更便捷,因此通常采用靜態(tài)分析方法提取海量應(yīng)用程序的行為特征,但是所提取特征中較多噪聲與不相關(guān)行為特征會影響應(yīng)用程序的檢測性能[4-6]。
由于深度學習方法在圖像與語音識別等領(lǐng)域具有優(yōu)異性能,為消除上述行為特征中的噪聲與不相關(guān)因素,本文采用基于深度學習的改進特征加權(quán)方法,分別從惡意與良性應(yīng)用程序中提取行為特征,分析該行為特征并消除其中噪聲與不相關(guān)的行為特征來構(gòu)建特征向量,同時建立雙向長短期記憶(Bidirectional Long Short-Term Memory,Bi-LSTM)神經(jīng)網(wǎng)絡(luò)模型對所提取特征信息進行自主學習,對參數(shù)進行優(yōu)化分析以達到最佳檢測性能,并對比了不同屬性特征的檢測效果。
以下對用于檢測Android系統(tǒng)中惡意應(yīng)用程序的基于數(shù)據(jù)跟蹤為主的動態(tài)分析方法、基于反編譯文件分析為主的靜態(tài)分析方法以及基于深度學習的檢測方法的相關(guān)工作進行介紹。
文獻[7]針對目前Android系統(tǒng)防御機制不足的問題提出輕量級檢測方法,但該方法利用應(yīng)用程序的特征信息只能進行簡單檢測。文獻[8]受生物學DNA序列比對思想啟發(fā),采用文本比較算法和套袋法相結(jié)合來評估系統(tǒng)所調(diào)用特征序列的相似性,對已知的惡意應(yīng)用程序具有良好檢測效果。文獻[9]設(shè)計出Android多標準應(yīng)用可信度評估器MAETROID,僅利用程序元數(shù)據(jù)而無需分析代碼,大幅降低檢測復雜性,同時采用層次分析法對應(yīng)用程序進行多標準決策組合分析并為用戶提供安裝建議。然而該檢測方法僅針對權(quán)限特征來檢測Android系統(tǒng)中惡意應(yīng)用程序,無法全面反映行為信息。文獻[10]采用靜態(tài)分析技術(shù)從應(yīng)用程序中提取檢測信息,并利用多數(shù)表決法將多個分類器以投票的方式進行應(yīng)用程序檢測。該方法在游戲類應(yīng)用程序檢測中取得較好效果,但對其他類別應(yīng)用程序檢測效果很差,無法對未知應(yīng)用程序進行全面檢測。文獻[11]提出貝葉斯分類檢測模型,通過靜態(tài)分析方法檢測未知的Android惡意應(yīng)用程序,該模型選取特征類型單一,無法進行全面有效檢測。文獻[12]開發(fā)出Android權(quán)限控制和推薦系統(tǒng)RecDroid,從用戶中廣泛收集應(yīng)用程序權(quán)限授予決策,同時采用貝葉斯學習模型評估用戶專業(yè)水平并收集其權(quán)限控制決策,從而為其他用戶提供依據(jù)。
文獻[13]在文獻[12]的基礎(chǔ)上,采用動態(tài)分析方法并將支持向量機(Support Vector Machine,SVM)與K最近鄰(K-Nearest Neighbor,KNN)機器學習算法相結(jié)合構(gòu)成應(yīng)用程序評估模型,提升惡意應(yīng)用程序檢測性能,然而該模型會增加額外開銷并占用大量資源。文獻[14]提出M0Droid惡意應(yīng)用程序檢測模型,通過Spearman等級相關(guān)系數(shù)對惡意與良性應(yīng)用程序中系統(tǒng)調(diào)用的行為信息進行相似性判別,但是若行為信息相近或惡意應(yīng)用程序為未知,則不能進行有效檢測。文獻[15]構(gòu)建基于應(yīng)用程序行為特征的惡意應(yīng)用程序動態(tài)檢測模型Crowdroid,通過眾包搜尋應(yīng)用程序在用戶移動終端的運行狀況,并在Android應(yīng)用程序的文件系統(tǒng)、內(nèi)核系統(tǒng)調(diào)用與事件檢測模塊捕獲惡意應(yīng)用程序的動態(tài)行為,該模型對使用頻率較高的應(yīng)用程序檢測較準確,但無法判別使用頻率較低的應(yīng)用程序。文獻[16]基于文獻[17]的思想將隱私數(shù)據(jù)作為污染源,用動態(tài)污點分析技術(shù)監(jiān)控移動終端的敏感信息并跟蹤多個敏感數(shù)據(jù)源,以區(qū)分相同版本的良性與惡意應(yīng)用,然而該方法在檢測過程中會占用大量資源,且不能進行準確安全評估,無法快速有效地檢測出惡意應(yīng)用程序。
傳統(tǒng)惡意應(yīng)用程序檢測方法均為淺層結(jié)構(gòu),無法對惡意應(yīng)用程序進行全面有效檢測,由于深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks,DNN)在圖像識別和人工智能領(lǐng)域具有良好的檢測性能,因此研究人員將深度學習方法應(yīng)用于惡意應(yīng)用程序檢測。文獻[18]提出DeepClassifyDroid檢測系統(tǒng),通過靜態(tài)分析提取特征集,采用詞嵌入技術(shù)將所提取特征輸入卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)對應(yīng)用程序進行分類檢測,然而該系統(tǒng)僅選取靜態(tài)特征建立特征集作為特征向量,未分析特征且增加檢測開銷。文獻[19]采用長短期記憶(Long Short-Term Memory,LSTM)神經(jīng)網(wǎng)絡(luò)對惡意與良性應(yīng)用程序的系統(tǒng)調(diào)用序列進行訓練,通過計算其相似度評分對應(yīng)用程序進行評估。文獻[20]提出一種Android檢測系統(tǒng),使用深度卷積神經(jīng)網(wǎng)絡(luò)(Deep Convolutional Neural Networks,DCNN)檢測原始操作碼序列,減少人工提取特征造成的誤差。
上述基于深度學習的檢測方法僅從應(yīng)用程序提取特征信息,未對特征信息進行充分分析,降低了應(yīng)用程序檢測準確性。此外,由于動態(tài)分析方法會增加訓練模型時間、占用大量計算資源等額外開銷,無法對未知應(yīng)用程序進行快速檢測,因此本文采用靜態(tài)分析方法構(gòu)建基于特征加權(quán)的深度學習Android惡意檢測系統(tǒng),以消除冗余與不相關(guān)特征,增強惡意應(yīng)用程序區(qū)分能力并減少額外開銷,同時全面檢測應(yīng)用程序,自動挖掘其深層特征并分析特征之間的信息,以對Android應(yīng)用程序進行快速準確檢測。
本文系統(tǒng)主要包括特征提取、特征選擇、特征嵌入和分類檢測4個部分,系統(tǒng)結(jié)構(gòu)如圖1所示。其中:特征提取是對應(yīng)用程序進行廣泛靜態(tài)分析,通過逆向工程技術(shù)從中提取6種不同類型靜態(tài)行為特征作為特征集,以防止行為特征單一導致檢測準確率較低;特征選擇是在提取行為特征過程中,為消除行為特征冗余與不相關(guān)性,利用改進特征加權(quán)的方法,將TF-IDF算法與信息增益相結(jié)合,按照權(quán)重選擇行為特征構(gòu)成特征集;特征嵌入是將不同維度的特征按權(quán)重高低選擇特征并映射到聯(lián)合向量空間;分類檢測是在傳統(tǒng)機器學習模型缺乏有效行為特征學習能力且無法有效分析大量行為特征信息的情況下,將轉(zhuǎn)換得到的多維度特征向量作為輸入,通過雙向長短期記憶神經(jīng)網(wǎng)絡(luò)利用隱藏層節(jié)點學習到本質(zhì)行為特征后,對未知應(yīng)用程序進行分類,最終實現(xiàn)Android惡意應(yīng)用程序檢測。
圖1 本文系統(tǒng)結(jié)構(gòu)
2.1.1 特征選擇
為有效檢測Android系統(tǒng)惡意應(yīng)用程序,本文從Android系統(tǒng)惡意與良性應(yīng)用程序中提取全面而獨特的行為特征,使用APKTOOL工具對Android系統(tǒng)應(yīng)用程序的安裝文件進行反編譯生成AndroidManifest.xml文件,從中提取Android系統(tǒng)應(yīng)用程序靜態(tài)行為特征如下:
1)權(quán)限。權(quán)限是Android系統(tǒng)應(yīng)用程序重要的安全機制之一。用戶在安裝Android系統(tǒng)應(yīng)用程序時進行授權(quán),使應(yīng)用程序可訪問不同類型的安全相關(guān)資源與數(shù)據(jù)。與正常應(yīng)用程序相比,Android系統(tǒng)惡意應(yīng)用程序會請求申請更多權(quán)限以獲得盡可能多資源和數(shù)據(jù),因此,部分惡意應(yīng)用程序可通過權(quán)限申請進行識別。
2)應(yīng)用組件。Android系統(tǒng)應(yīng)用程序組件包括活動、數(shù)據(jù)通信、服務(wù)與廣播。Android系統(tǒng)應(yīng)用程序可在系統(tǒng)清單文件中申請多個不同類型組件,其中惡意應(yīng)用程序會在用戶不知情的情況下通過服務(wù)組件在系統(tǒng)后臺運行某些服務(wù)進程來執(zhí)行惡意行為。
3)意圖過濾器。Android系統(tǒng)根據(jù)應(yīng)用程序所配置意圖過濾器的動作和類別進行比配,尋找響應(yīng)意圖的組件或服務(wù),該機制為Android系統(tǒng)惡意應(yīng)用程序監(jiān)控用戶移動終端提供便利,惡意應(yīng)用程序在移動終端重啟后會直接執(zhí)行惡意行為。
2.1.2 選擇算法
在提取的行為特征中,由于存在大量冗余與不相關(guān)特征導致惡意應(yīng)用程序檢測準確率降低,因此需要對行為特征進行分析。本文采用特征加權(quán)方法,結(jié)合TF-IDF算法與信息增益,考慮惡意與良性應(yīng)用程序中每個行為特征的重要程度,并考慮上述行為特征與惡意或良性應(yīng)用程序的關(guān)聯(lián)程度。通過減少均勻存在于惡意與良性應(yīng)用程序中調(diào)用行為特征的權(quán)重,來增強特定存在于惡意與良性應(yīng)用程序中的行為特征。
假設(shè)惡意與良性應(yīng)用程序所提取行為特征Si被調(diào)用的頻率分別為T(Si,M)與T(Si,B),表達式分別如下:
(1)
(2)
其中,N(Si,M)與N(Si,B)分別表示行為特征Si在惡意與良性應(yīng)用程序集中被調(diào)用的次數(shù),i=1,2,…,n,N(M)和N(B)分別表示行為特征Si在惡意與良性應(yīng)用程序集中被調(diào)用的總次數(shù),n表示收集的行為特征總數(shù)。
將應(yīng)用程序總數(shù)N分別除以惡意與良性應(yīng)用程序中系統(tǒng)調(diào)用的行為特征Si,所得結(jié)果取對數(shù)得到的D(Si,M)與D(Si,B)分別表示行為特征Si在惡意與良性應(yīng)用程序中重要程度,表達式分別如下:
(3)
(4)
其中,n(Si,M)與n(Si,B)分別表示惡意與良性應(yīng)用集中調(diào)用特征Si的應(yīng)用程序個數(shù)。
將T(Si,M)與D(Si,M)相乘可得到行為特征Si在惡意應(yīng)用程序中權(quán)重,同理求出其在良性應(yīng)用程序中權(quán)重,并將該權(quán)重與惡意應(yīng)用程序中權(quán)重相減求絕對值,所得W(Si)表示行為特征Si對區(qū)分惡意與良性應(yīng)用程序的重要性,計算公式如下:
W(Si)=|T(Si,M)×D(Si,M)-T(Si,B)×D(Si,B)|
(5)
本文中信息增益代表每個行為特征在惡意與良性應(yīng)用程序集中帶來的信息數(shù)量,信息數(shù)量越多,該行為特征越重要,其熵值也越高。對行為特征Si而言,其在應(yīng)用程序分類中熵值會發(fā)生變化,熵值在變化前后的差值表示行為特征在應(yīng)用程序檢測中重要程度,表達式如下:
(6)
綜上所述,通過行為特征Si在惡意與良性應(yīng)用程序之間重要程度W(Si)以及行為特征Si區(qū)分惡意與良性應(yīng)用程序的關(guān)聯(lián)程度IG(Si)可得到行為特征Si的權(quán)重φ(Si),計算公式如下:
φ(Si)=W(Si)×IG(Si)
(7)
通過上述特征加權(quán)方法可求得不同特征集中每個行為特征Si的權(quán)重φ(Si),用其表示行為特征Si對應(yīng)用程序檢測影響程度,并由此選擇行為特征。
2.1.3 特征向量
應(yīng)用程序的惡意行為會反映在系統(tǒng)調(diào)用特征集的行為特征上,因此,在檢測惡意應(yīng)用程序時,可使用單一特征集或者組合特征集。在使用組合特征集時,需將不同維度特征集組合為統(tǒng)一形式。使用特征加權(quán)方法計算得到不同特征集中每個行為特征Si對檢測影響的權(quán)重φ(Si),按照權(quán)重φ(Si)由大到小從不同特征集中選出特征形成新特征集S,表達式如下:
S=S(φ(Sp))∪S(φ(SI))∪S(φ(Sc))
(8)
其中,Sp表示權(quán)限集合,SI表示意圖過濾器集合,Sc表示活動、數(shù)據(jù)通信、服務(wù)、廣播四大組件集合。
本文將特征集S定義為具有|Si|維數(shù)的布爾表達式,并將其嵌入向量空間X中得到統(tǒng)一形式。假設(shè)惡意應(yīng)用程序F在特征集中使用某些特征,則該特征集是1的向量,其位置為0。因此,將任意應(yīng)用程序轉(zhuǎn)換為向量空間X,表達式如下:
X={S1,S2,…,Sk}
k∈|Si|
(9)
通過上述方式,可將不同的特性集嵌入到統(tǒng)一的聯(lián)合向量空間,利用組合特征集進行范圍更廣泛的檢測。
2.2.1 檢測模型
Bi-LSTM算法是應(yīng)用較廣泛的深度學習算法,其由多個長短期記憶網(wǎng)絡(luò)組成,在圖像識別、文本分析等領(lǐng)域具有良好的檢測效果,因此,本文將Bi-LSTM設(shè)計為分類網(wǎng)絡(luò)結(jié)構(gòu),對使用特征加權(quán)方法生成的特征向量進行分類,從而深層分析上下文行為特征之間的信息,同時解決梯度消失與爆炸問題,并通過Bi-LSTM分類模型檢測惡意應(yīng)用程序,該模型結(jié)構(gòu)如圖2所示。首先使用特征加權(quán)方法構(gòu)造特征向量作為輸入,分析向量輸入?yún)?shù)與系統(tǒng)惡意應(yīng)用檢測準確率的關(guān)系,并通過不斷調(diào)節(jié)向量大小實現(xiàn)對惡意應(yīng)用程序全面檢測,然后分析不同屬性特征向量對系統(tǒng)惡意應(yīng)用程序的檢測性能并選出最佳特征向量。Bi-LSTM分類模型的隱藏層部分由Bi-LSTM組成,由于Adam算法是利用迭代次數(shù)和延遲因子對梯度均值與梯度平方均值進行校正,能準確預測梯度變化,收斂速度很快,因此本文訓練Bi-LSTM網(wǎng)絡(luò)時使用Adam算法通過迭代更新權(quán)重對其進行優(yōu)化,并不斷選取和調(diào)試Bi-LSTM網(wǎng)絡(luò)隱藏層單元數(shù)以達到最優(yōu)檢測效果。在隱藏層后構(gòu)造全連接層,由于整個過程執(zhí)行分類檢測任務(wù),因此將全連接層輸出作為分類層的輸入,通過Sigmoid分類器對應(yīng)用程序進行檢測分類,最終使用二進制交叉熵損失函數(shù)評估檢測模型預測效果。
圖2 Bi-LSTM檢測模型結(jié)構(gòu)
2.2.2 Bi-LSTM算法
LSTM網(wǎng)絡(luò)[21]由遺忘門、輸入門、輸出門和記憶單元構(gòu)成,主要作用是對行為特征信息進行篩選、保存與更新,其結(jié)構(gòu)如圖3所示。為提升檢測準確性,從前后兩個方向分析所提取的信息,采用雙向LSTM將上一個記憶單元狀態(tài)(細胞狀態(tài))同時引入到輸入門、遺忘門與更新計算中。
圖3 LSTM網(wǎng)絡(luò)結(jié)構(gòu)
在圖3中,遺忘門對上一層細胞狀態(tài)進行篩選,留下有用信息并遺忘無用信息,計算公式如下:
ft=σ(Wf×[ht-1,xt]+bf)
(10)
其中,Wf和bf分別為遺忘門的權(quán)重和偏置,ht-1為上一層隱藏狀,σ為Sigmoid激活函數(shù)。遺忘門通過采用Sigmoid函數(shù)控制遺忘門,使其根據(jù)上一時刻輸出ht-1和當前輸入xt產(chǎn)生ft值,并決定是否讓上一時刻所得信息Ct-1通過。
利用輸入門對信息進行判斷,將重要信息送入細胞狀態(tài)更新處以完成細胞狀態(tài)更新,計算公式如下:
it=σ(Wi×[ht-1,xt]+bi)
(11)
Ct=ft×Ct-1+it×tanh(Wc×[ht-1,xt]+bc)
(12)
其中,Wi和bi分別為輸入門的權(quán)重和偏置,Wc和bc分別為細胞狀態(tài)的權(quán)重和偏置,it代表輸入層,Ct-1和Ct分別為原細胞狀態(tài)和更新后細胞狀態(tài)。
確定更新信息的過程由兩階段組成:1)利用Sigmoid函數(shù)確定需更新加入到細胞狀態(tài)的信息;2)利用tanh激活函數(shù)將需更新的信息轉(zhuǎn)換為可加入到細胞狀態(tài)的候選向量Ct-1,通過這兩階段生成新細胞狀態(tài)Ct。
輸出門包含當前輸入、上一個隱狀態(tài)、當前細胞狀態(tài)等,主要是控制該層細胞狀態(tài)輸出,計算公式如下:
ot=σ(Wo×[ht-1,xt]+bo)
(13)
ht=ot×tanh(Ct)
(14)
其中,Wo和bo分別為輸出門的權(quán)重和偏置。使用Sigmoid激活函數(shù)確定需輸出的信息ot,然后用tanh激活函數(shù)對細胞狀態(tài)值進行縮放作為信息篩選條件,并對信息ot篩選后輸出所需信息ht。
為檢測本文模型的有效性,從VirusShare網(wǎng)站和Android官方商店下載應(yīng)用程序,刪除無法使用和重復的應(yīng)用程序后分別得到4 000個和3 500個應(yīng)用程序,將其依次標記為惡意與良性應(yīng)用程序,上述兩部分應(yīng)用程序組成本文實驗的數(shù)據(jù)集。
本文實驗所用處理器為Intel?CoreTMi3-2130,CPU為3.40 GHz,內(nèi)存為16 GB(RAM),采用Windows 7操作系統(tǒng)。以精確率(P)、召回率(R)、F1值(F)和準確率(A)作為本文系統(tǒng)檢測效果的評價指標,計算公式如下:
(15)
(16)
(17)
(18)
其中,TP為正確預測的惡意應(yīng)用程序數(shù)量,TN為正確預測的良性應(yīng)用程序數(shù)量,FP為錯誤預測的惡意應(yīng)用程序數(shù)量,FN為錯誤預測的良性應(yīng)用程序數(shù)量。
在Android系統(tǒng)應(yīng)用程序數(shù)據(jù)集中隨機選取2 500個良性應(yīng)用程序與3 000個惡意應(yīng)用程序,從不同方面分析Bi-LSTM神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)性能。選擇隱藏層單元數(shù)時,如果隱藏層單元數(shù)太少,則無法對數(shù)據(jù)進行訓練或者造成檢測性能很差無法準確檢測應(yīng)用程序;如果選擇隱藏層單元數(shù)過多,則訓練數(shù)據(jù)時容易陷入局部極小值而無法得到最優(yōu)性能,并在訓練時出現(xiàn)過擬合問題。在選取同一特征向量長度作為輸入時,由于隱藏層單元數(shù)為300時系統(tǒng)檢測性能較好,因此從隱藏層單元數(shù)為300時開始測試。圖4為系統(tǒng)檢測準確率與召回率隨隱藏層單元數(shù)的變化曲線,可以看出在不同隱藏層單元數(shù)下系統(tǒng)準確率和召回率均分別達到0.93和0.90以上,準確率和召回率較高。當隱藏層單元數(shù)為900時,系統(tǒng)準確率和召回率分別為0.947 5和0.943 2,相較其他隱藏層單元數(shù)下更高,因此本文選擇900作為隱藏層單元數(shù)。
圖4 系統(tǒng)準確率與召回率隨隱藏層單元數(shù)的變化曲線
考慮到所輸入特征向量長度對系統(tǒng)檢測性能的作用,本文研究了不同特征向量長度對Android系統(tǒng)應(yīng)用程序檢測準確性的影響。由于輸入特征集過少不能覆蓋所有惡意和良性行為對檢測效率的影響,而輸入特征向量過長行為特征會受到額外的噪聲干擾,由于特征向量長度為1 000時系統(tǒng)檢測效果較好,因此將所輸入特征向量長度初始值設(shè)置為1 000。利用特征向量長度對Android系統(tǒng)惡意應(yīng)用程序檢測性能的影響,選出分類任務(wù)最優(yōu)的特征向量。圖5為系統(tǒng)檢測準確率與召回率隨特征向量長度的變化曲線,可以看出不同特征向量長度下系統(tǒng)準確率和召回率均達到0.91以上,準確率和召回率較高。當特征向量長度為8 000時,系統(tǒng)準確率和召回率分別為0.953 1和0.958 6,相較其他特征向量長度下更高,因此本文選擇8 000作為特征向量長度。
圖5 系統(tǒng)準確率與召回率隨特征向量長度的變化曲線
為評估本文系統(tǒng)在不同特征集中對應(yīng)用程序的檢測效果,以使用逆向工程技術(shù)提取的6類不同靜態(tài)行為特征作為特征集,將所有特征集放入聯(lián)合向量空間形成組合特征集,并通過式(9)構(gòu)建特征向量以更全面地分析。表1為不同特征集得到的評估結(jié)果,可見組合特征集對惡意應(yīng)用程序檢測效果最好,指標值高于其他單一類型特征集,這是因為單一類型特征集對應(yīng)用程序檢測提供信息較少,無法實現(xiàn)準確檢測,因此本文選擇全部特征構(gòu)成的特征集檢測應(yīng)用程序。
表1 不同特征集所得評估結(jié)果
為驗證本文提出的基于特征加權(quán)深度學習算法的Android惡意檢測系統(tǒng)檢測效果,將SVM、Logistic、Decision Tree、Naive Bayes等機器學習算法與RNN、LSTM、Bi-LSTM等深度學習算法的惡意應(yīng)用程序檢測性能進行對比,結(jié)果如表2所示??梢钥闯錾鲜鰞深愃惴ǖ臋z測準確率分別超過0.87和0.94,均具有良好的檢測效果。而本文系統(tǒng)采用的Bi-LSTM算法所得指標值較其他算法更高,有效提升了惡意應(yīng)用程序檢測性能。
表2 不同算法所得系統(tǒng)檢測性能指標結(jié)果
本文提出一種結(jié)合特征加權(quán)方法和雙向長短期記憶神經(jīng)網(wǎng)絡(luò)的Android惡意檢測系統(tǒng)。采用靜態(tài)分析技術(shù)從Android系統(tǒng)應(yīng)用程序中提取靜態(tài)行為特征,利用特征加權(quán)方法分析行為特征和惡意與良性應(yīng)用程序的關(guān)聯(lián)程度,以去除冗余與不相關(guān)行為特征,并使用長短期記憶神經(jīng)網(wǎng)絡(luò)算法對所提取特征信息進行學習、分類與參數(shù)優(yōu)化。實驗結(jié)果表明,該系統(tǒng)具有較高的檢測準確率,對惡意應(yīng)用具有較強的識別能力,可大范圍檢測Android系統(tǒng)惡意應(yīng)用程序。下一步將根據(jù)功能劃分應(yīng)用程序類別,提取對應(yīng)的行為特征,并在特征集中擴展加入網(wǎng)絡(luò)流量、動態(tài)文件加載等動態(tài)特征,以全面有效地提高系統(tǒng)檢測準確率。