?

基于LSTM-SVM 模型的惡意軟件檢測方法

2022-10-25 13:41張雪芹朱唯一朱世楠
關鍵詞:列表并聯良性

趙 敏, 張雪芹, 朱唯一, 朱世楠

(華東理工大學信息科學與工程學院,上海 200237)

安卓(Android)系統因其開放性成為了惡意軟件最易滋生的平臺。許多惡意軟件會誘導用戶安裝木馬,或者通過申請過多或不當的權限來獲取相關信息,實現其搜集用戶隱私的目的[1]。為了避免或減少惡意軟件帶來的損害,對惡意軟件實現高精度的檢測具有重要意義。Android 系統惡意軟件的檢測技術主要分為靜態檢測[2]和動態檢測[3]。靜態檢測是指在不執行應用軟件的情況下判斷其是否是惡意的;動態檢測是指在執行Android 應用軟件時收集系統調用、網絡流量、用戶交互等信息來判斷其是否是惡意的。靜態檢測能夠在安裝前發現惡意軟件,實現有效預防。本文針對靜態檢測方法開展研究,提高檢測準確度。

近年來,機器學習和深度學習[4-6]技術在Android惡意軟件的靜態檢測中得到了應用。Fcizollah 等[7]為了評估意圖信息作為識別惡意軟件特征的有效性,提出了AndroDialysis 系統。該系統提取了意圖特征,采用貝葉斯網絡結合簡單估計算法和LAGDHillCilmber 搜索算法進行惡意軟件的檢測,在1 846 個良性應用和5 560 個惡意軟件組成的數據集上達到了91%的檢測精度,誤報率和漏檢率均為9%。Li 等[8]為了應對Android 惡意軟件數量的快速增長,提出了一種基于權限使用分析的惡意軟件檢測系統(SigPID),提取權限特征后通過負比率權限排序、基于支持度的權限排序和關聯規則權限挖掘3 個級別的剪枝來識別最重要的權限,以有效區分良性應用和惡意應用;采用Functional Tree 模型,在各有5 494 個良性應用和惡意應用的數據集上達到了95.63%的檢測精度,誤報率為2.36%,漏檢率為6.38%。Alotaibi[9]提出了MalResLSTM 框架用于惡意軟件識別。該框架提取硬件組件、請求權限、應用程序組件、意圖和可疑應用程序接口調用等8 組靜態特征組成特征向量,利用ResLSTM 網絡進行惡意軟件的檢測,在Drbin 數據集(包含123 453 個良性應用和5 560 個惡意軟件)上的檢測精度達到了99%,誤報率為0.36%,漏檢率為9%。Xu 等[10]提出了DeepRefiner 網絡用于Android 惡意軟件的檢測。該網絡是一個基于深度學習的雙層網絡,第1 層采用多層感知器,通過xml 文件中的權限、組件等信息將樣本分為良性、惡意以及不確定3 類;第2 層采用LSTM 網絡,通過字節碼信息對第1 層網絡中分類為不確定的樣本再次檢測。在62 915 個惡意軟件和47 525 個良性應用組成的數據集上檢測精度達到97.74%,誤報率為2.54%,漏檢率為2.04%。孫志強等[11]針對傳統Android 惡意軟件檢測方法檢測率低的問題,提出了一種基于深度收縮降噪自編碼網絡(Deep Contractive Denoising Autoencoder Network, DCDAN)的Android 惡意軟件檢測方法,對深度自編碼網絡的輸入數據添加噪聲,同時加入雅克比矩陣作為懲罰項,結合貪婪算法和反向傳播算法進行訓練,通過權限、軟硬件、組件和敏感API 等7 類信息進行檢測,在各2 500 個良性和惡意樣本的數據集上檢測精度達到97.8%,誤報率為1.6%,漏檢率為2.8%。

由此可見,權限、組件、意圖和API 特征在惡意軟件的檢測上是有效的。機器學習方法,特別是深度學習方法能夠有效發現特征中隱含的非線性關系,提升檢測效果。因此,本文采用維度較低的API 特征訓練SVM 網絡模型;采用維度較高的XML 特征訓練LSTM 網絡模型。為了進一步提高Android 惡意軟件的檢測精度,提出了一種基于多特征多模型的檢測方法,主要創新點為:(1)提出了一種API 特征的選取方法,降低對惡意樣本的漏檢率,提高檢測精度。(2)基于API 特征和XML 特征,提出了LSTM-SVM 并聯檢測模型,結合概率差融合算法,對惡意軟件進行檢測,在保證漏檢率的條件下,降低誤報率,提高檢測精度。

1 惡意軟件特征選擇

Android 應用程序的原文件是擴展名為.apk 的壓縮文件,經過apktool 來反編譯APK 原文件,可獲取AndroidManifest.xml 和smali 兩類文件。Android-Manifest.xml 文件是應用程序的清單文件,描述了全局的數據,為應用程序的運行提供了說明,從中提取所包含的信息可作為一類檢測特征。smali 是Android虛擬機Dalvik 的反匯編語言,每一個smali 文件都對應一個Java 類,其中包含了所有的函數信息。每個應用軟件都需要一組Android API 來實現其主要目標和功能,因此應用軟件中使用的API 列表代表了應用程序的特點[12]。研究發現,惡意軟件與良性軟件在某些API 的調用上有很大差異[13],從smali 文件中提取API 調用可作為一類檢測特征。

1.1 XML 特征及其特征列表構建

AndroidManifest.xml 文件中包含了應用程序所需要的權限(Permission)、組件(Component)、意圖(Intent)、軟硬件、資源等信息,其中惡意軟件和良性軟件在權限、組件和意圖的使用種類上有較大差異[14],可以選取這幾類信息作為檢測特征。

Android 系統提供了一個基于Permission 的訪問控制機制,使得應用程序的操作行為和敏感數據的訪問被嚴格控制。為了完成一定的行為操作,應用程序必須向Android 系統申請一些對應的系統權限,因此,系統權限的使用能夠暗示一個Android 應用的行為信息。Component 是Android 應用的基本模塊,包括Activity、Service、Broadcast Receiver 和Content Provider。其中,Activity 提供一個開發人員可以定義的虛擬用戶接口;Service 提供可以執行的后臺處理;Broadcast Receiver 提供接收其他應用程序信息的通道;Content Provider 提供數據庫接口,用來和其他應用程序分享數據。Intent 可以用來開啟組件或者向其他組件傳送一些重要數據,它暗示了組件間的交互信息。Intent 有Data、Extras、Action 和Category 4 個重要屬性,其中,Data 和Extras 主要用于存放或傳遞數據,如電話、郵箱、網址等;Action 代表系統中已經定義了的一系列常用動作;Category 用于指定Action 被執行的環境。由于每個應用軟件所需的數據都不相同,前兩者無法判斷應用軟件的良、惡意;后兩者在一定程度上可以反映應用程序的動作,且具有固定取值,因此可以用來判斷應用軟件的良、惡意[7]。

本文提取Permission、Component、Intent 信息作為檢測特征,稱為XML 特征。為了構建檢測模型,對訓練數據集中的多個Android 軟件分別提取XML特征,合并后構建XML 特征列表。表1 示出了XML特征列表中的部分特征。

表1 XML 特征示例Table1 Examples of XML features

1.2 API 特征及其特征列表構建

smali 文件中以“invoke-”開頭表示函數調用,可以從中尋找API 及相關信息。API 代表了應用程序的特點,在一定程度上能夠區分良性和惡意應用。API 特征有onCreate、getCacheDir、setFillType、createFromParcel 等。本文提出根據smali 文件分析API 調用情況,構建API 特征列表。

為構建檢測模型,對訓練數據集中的多個Android 應用軟件分別提取API 特征,API 特征列表構建方法如下:

(1)提取良性應用軟件中的API;

(2)分別統計各API 被多少個良性應用軟件調用過,按照調用次數從大到小進行排序,得到一個初始的良性API 列表;

(3)提取惡意應用軟件中的API,進行同樣的操作,得到一個初始的惡意API 列表;

(4)分別取兩個列表中包含前n個API 的子列表,可以認為經過排序操作后選取的兩個子列表在一定程度上代表了良性軟件和惡意軟件的API 調用分布;

(5)將兩個子列表合并,刪除重復的API(使每個API 名稱在列表中僅出現一次),構成API 特征列表。

API 特征列表構建流程如圖1 所示。

圖1 API 特征列表構建Fig.1 Construction of API feature list

1.3 特征向量化

每個APK 原文件都可以獲得XML 和API 兩組特征。使用apktool 工具對訓練集中的每個Android惡意軟件的APK 原文件進行反編譯,獲取每個APK原文件對應的AndroidManifest.xml 文件和smali 文件。其次,將xml 文檔表示成樹,通過標簽提取檢測所需要的Permission、Component 和Intent 特征,并構成XML 特征列表;對smali 文件中通過判斷每行的前7 個字符是否是“invoke-”找到相應位置,提取API 調用特征,通過分析API 調用情況構成API 特征列表。

對訓練集和測試集中的每個Android 軟件,反編譯后提取XML 特征和API 特征,對照XML 特征列表和API 特征列表,根據各特征出現與否量化為1 和0,構造出每個軟件的特征向量,用于模型訓練和檢測。

2 LSTM-SVM 并聯檢測模型

2.1 LSTM-SVM 檢測框架

從Android 應用軟件中可以提取出多種靜態特征,不同的特征其中隱含的信息也不同。簡單的級聯合并會使特征維度過高,增加檢測模型訓練負擔,同時還會形成特征冗余,影響檢測效果。本文提出構建LSTM-SVM 并聯檢測模型,考慮惡意軟件運行的時序性、特征維度等,對XML 長特征采用LSTM建模,對API 特征采用SVM 建模[15],最終根據模型預測概率差確定檢測結果?;贚STM-SVM 模型的Android 惡意軟件檢測框架如圖2 所示。

圖2 基于LSTM-SVM 的惡意軟件檢測框架Fig.2 Malware detection framework based on LSTM-SVM

2.2 基于SVM 的異常檢測模型

SVM 的本質是一種二分類算法,通過求取能使兩類樣本以最大間隔分開的超平面建立分類模型??紤]到惡意樣本數量較少,API 特征維數較高,而SVM 在小樣本、高維度的情況下仍具有較強的分類能力和泛化能力,可以在一定程度上克服“維度災難”和“過學習”的問題[16],本文采用SVM 構建基于API 特征的異常檢測模型。

對于給定的樣本數據(x1,y1),(x2,y2), ,(xN,yN),X2 Rd,y2 f+1,?1g,N為樣本數,d為輸入維數,x為提取的API 特征向量,y為類標簽,如果y的值為1,表示對應的樣本為良性;如果y的值為-1,表示對應的樣本為惡意。根據SVM 理論,對于待分類樣本存在一個超平面,使得兩類樣本完全分開,該超平面為

其中:w表示法向量,決定了超平面的方向;b表示偏移量,決定了超平面與原點之間的距離。

求解超平面可以看成如下二次規劃問題求解:

其中:C為懲罰因子,控制對錯分樣本的懲罰程度;ξi為松弛變量,每個樣本都有一個對應的松弛變量,表征該樣本不滿足約束的程度。

求解式(2)可轉化為求解其對偶問題:

其中: αi為拉格朗日乘子,對應于 αi>0 的向量稱為

K?xi,xj)=φ(xi)Tφ?xj)支持向量; 為核函數,常用的核函數有線性核函數、多項式核函數、高斯核函數等,不同的核函數將形成不同的算法。決策函數為

其中, S gn(x) 代表符號函數,當x<0 時,返回值為-1;當x>0 時,返回值為1;當x=0 時,返回值為0;αi*表示最優拉格朗日乘子;b*表示最優偏置。

2.3 基于LSTM-SVM 網絡的異常檢測模型

長短期記憶(LSTM)網絡[17]是為了克服遞歸神經網絡(Recurrent Neural Network, RNN)中梯度消失和梯度爆炸問題而提出的一種深度學習方法,通常應用在具有時間序列的分類問題中。它可以通過基于時間序列的記憶門學習長期依賴關系,模擬多個輸入變量的問題,因此常用于時間序列檢測。此外,由于LSTM 網絡能夠有效保留長序列數據中對最終判定結果有益的歷史信息,因此,對于挖掘數據之間的關聯關系也表現出了良好的效果??紤]到XML特征描述了應用軟件的運行特性,其中存在著時序關系,本文采用LSTM 構建基于XML 長特征的異常檢測模型。

LSTM 添加了記憶單元專門用于保存歷史信息,記憶單元的結構如圖3 所示。每個記憶單元含有3 個輸入:來自原始輸入序列中當前時刻t傳入模型的所有有用數據xt、到t-1 時刻模型記錄的歷史狀態ct-1和所有有用的隱藏信息ht-1。每一個記憶單元的輸出包括當前時刻記錄的所有有用信息ht和當前狀態ct。

圖3 LSTM 單元標準結構Fig.3 LSTM unit standard construction

為了尋找歷史信息中的有效內容,輸入數據要通過3 個門:遺忘門(f)、輸入門(i)、輸出門(o)。遺忘門負責判斷是否丟棄歷史信息,它的輸入是歷史隱藏信息ht-1以及當前序列節點信息xt,使用Sigmoid 函數輸出一個0 到1 之間的值,表示是否遺忘歷史單元狀態模式的信息,1 表示保留歷史信息,0 表示遺忘歷史信息。遺忘門的計算如式(5)所示:

其中:W表示神經單元中的權重矩陣;下標f 表示遺忘門;下標x 表示當前節點信息;下標h 表示歷史隱藏信息(即Wfx表示遺忘門當前節點信息的權重矩陣;Wfh表示遺忘門歷史隱藏信息的權重矩陣);b為對應權重偏置; σ 表示Sigmoid 函數。

同理可得輸入門和輸出門對應的計算公式,如式(6)和式(7)所示:

候選狀態gt和當前狀態st決定了在當前單元中可以保留哪些新的信息到下一個神經元。

最終根據傳輸信息的狀態確定輸出值,以tanh 函數處理當前單元狀態,并與輸出門相乘得到當前單元的隱藏信息ht,再傳遞給下一個單元。

2.4 概率差融合算法

實際上惡意軟件檢測的本質是二分類,對應的樣本標簽為正(1)或負(-1),正標簽對應良性應用,負標簽對應惡意軟件。在進行二分類時,LSTM 和SVM 檢測模型輸出的是樣本屬于正、負標簽的概率值,并取較大概率值對應的標簽為分類結果,即:

其中: l abel 表示得到的樣本標簽;pbenign表示輸入數據屬于正標簽(即良性應用)的概率;pmalicious表示輸入數據屬于負標簽(即惡意軟件)的概率。概率差為

通常,兩個概率之間的差值越大,可認為模型得到的分類結果越可靠。

在LSTM-SVM 并聯檢測模型中,當兩個檢測模型給出的分類結果不同時,認為概率差較大的檢測模型給出的預測結果更為可靠,即

其中: ΔpLSTM為LSTM 模型給出的輸入數據的概率差; ΔpSVM為SVM 模型給出的輸入數據的概率差;labelLSTM為LSTM 模型給出的分類結果; l abelSVM為SVM 模型給出的分類結果。

2.5 算法描述

基于LSTM-SVM 模型的Android 惡意軟件檢測算法描述如下:

輸入:APK 文件

輸出:樣本分類標簽

(1) apktool 反編譯訓練樣本,獲得xml 文件和smali 文件

(2) 從AndroidManifest.xml 文件中提取XML特征,從smali 文件中提取API 特征,分別構建特征列表

(3) 對應特征列表將XML 特征和API 特征映射為0 或1 組成的特征向量

(4) 基于XML 特征訓練LSTM 檢測模型,基于API 特征訓練SVM 檢測模型

(5) 反編譯測試樣本,提取XML 特征和API特征,對應特征列表得到XML 和API 特征向量

(6) 測試樣本的XML 特征向量送入訓練好的LSTM 模型,API 特征向量送入訓練好的SVM 模型,得到對應標簽及概率

(7) If labelLSTM= labelSVM

(8) 最終分類標簽label=labelLSTM=labelSVM

(9) End

(10) If labelLSTM≠ labelSVMΔpLSTM>ΔpSVM

(11) If 概率差

(12) 最終分類標簽label=labelLSTM

(13) Else

(14) 最終分類標簽label=labelSVM

(15) End

(16) End

3 實驗部分

實驗的硬件環境為Intel Core i5-9300H CPU 2.40 GHz, 8 GB RAM, 軟 件 環 境 為Windows10,python3.7,apktool。

3.1 實驗數據

實驗采用CICAndMal2017[18]數據集,其中包含了1 700 個良性軟件和426 個惡意軟件。該數據集的良性樣本多于惡意樣本,符合現實世界中良性軟件多于惡意軟件的狀況。實驗時,對數據集按照訓練集、驗證集和測試集分別為60%、20%和20%進行隨機劃分,各部分數量如表2 所示。在構建各特征序列時,都只使用訓練集中的樣本,以保證測試集中的樣本對于檢測都是未知軟件。

表2 數據集劃分Table2 Data set partition

表3 示出了API 和XML 兩類特征的數量??梢钥吹?,API 特征維度為2 253,維度較高;XML 特征中的3 類特征合并后維度達23 893,屬于高維特征。

表3 特征類別及其數量Table3 Category and quantity of features

3.2 評價指標

表4 列出了4 個基本評價指標。其中,N(Negative)代表標簽為惡意軟件;P(Positive)代表標簽為良性軟件;TN 代表真實標簽是N、模型分類為N 的軟件數量;FN 代表真實標簽是P、模型分類為N 的軟件數量;TP 代表真實標簽是P、模型分類為P 的軟件數量;FP 代表真實標簽是N、模型分類為P 的軟件數量。

表4 基本評價指標Table4 Basic evaluation index

基于4 個基本指標,定義以下評估指標:

準確率(ACC):被正確識別出來的惡意軟件和良性軟件個數在樣本總數中的占比。

良性檢測率(TPR):被正確識別出來的良性軟件個數在所有良性軟件個數中的占比。

漏檢率(FPR):被錯誤識別為良性的惡意軟件個數在所有惡意軟件個數中的占比。

3.3 實驗結果及分析

實驗中,LSTM 模型的神經元數量為256,采用的優化器為adam,學習率為0.001,使用的損失函數為sparse_categorical_crossentropy,SVM 模型的懲罰因子C=0.1。

3.3.1 XML 特征實驗 為了驗證XML 特征的有效性,XML特征中包含了Permission、Component和Intent 3 類特征,采用LSTM 模型,對比單獨使用3 類特征和XML 特征的分類結果,如圖4 所示。

由圖4 可知,采用XML 特征的ACC 為96.48%,高于3 類特征單獨使用時的94.13%、94.13%和92.48%;采用XML 特征的FPR 為6.98%,明顯低于3 類特征單獨使用時的18.6%、17.44%和31.4%,這是因為各分特征都只描述了程序應用清單的一個方面,單獨使用時不能刻畫特征間的內在聯系,使得準確率較低、漏檢率較高??梢?,使用XML 特征比單獨使用Permission、Component 和Intent 3 類特征更有效。

圖 4 3 類特征和XML 特征檢測結果比較Fig. 4 Comparison of detection results of three types of features and XML features

3.3.2 API 特征子列表長度對比實驗 每個應用軟件所用到的API 數量不同,多的甚至達到上萬個,但并不是所有的API 調用對惡意軟件的檢測都是有效的,所選取的API 序列也不是越長越好,選取的序列過長會使得無用信息增加,稱為冗余特征。為了在API 特征原始列表中選取合適的子列表長度n,采用SVM 模型進行檢測,實驗結果如表5 所示。

從表5 中可以看出,雖然TPR 隨著API 子列表長度(n)的增加而變大,但是FPR 在API 子列表長度達到2 000 時取得最小,更長的子列表對惡意軟件的識別沒有更大的作用,因此API 子列表長度取2 000是合理的。

表5 不同API 特征子列表長度檢測結果對比Table5 Comparison of detection results of different API feature sublist lengths

3.3.3 特征融合方式對比實驗 實驗采用LSTM 檢測模型,對比使用XML 特征、XML 特征與API 特征向量級聯(XML+API)、XML 特征與API 特征向量并聯(XML-API)時的分類結果。這里,XML 特征與API特征向量并聯指對兩種特征分別采用LSTM 建模,輸出結果采用概率差融合算法判斷。實驗結果如表6 所示。

從表6 中可以看出,在XML 特征的基礎上引入API 特征,ACC 和TPR 都有所提高,但在級聯模式下,FPR 最大,這意味著有更多的惡意軟件被漏檢。而XML 特征與API 特征并聯使用,在不增加漏檢率的條件下提升了ACC 和TPR??梢?,將XML 特征與API 特征采用并聯方式建模是合理有效的。

表6 不同特征融合方式檢測結果比較Table6 Comparison of detection results of different feature fusion methods

3.3.4 基于XML 特征的不同算法模型對比實驗 為了驗證基于XML 特征的LSTM 檢測模型的有效性,實驗基于XML 特征,對比了LSTM 模型、SVM 模型、RF(Random Forest)模型、MLP(Multi_Layer Perceptron)模型、CNN(Convolutional Neural Networks)模型的實驗結果,如表7 所示。

從表7 中可以看出,對于XML 特征,幾個模型的TPR 相差不大,RF 模型和CNN 模型的TPR 略高于LSTM 模型,但LSTM 模型的FPR 指標最低,即漏檢率最低。因此,基于XML 特征選擇LSTM 模型是有效的。

表7 基于XML 特征的不同模型檢測結果比較Table7 Comparison of detection results of different models based on XML features

3.3.5 基于API 特征的不同算法模型對比實驗 為了驗證基于API 特征的SVM 檢測模型的有效性,實驗基于API 特征,對比了上述幾種不同模型的檢測結果,以及SVM模型采用線性核(Linear)、高斯核(RBF)和多項式核(Poly)的檢測結果,如表8 所示。

表8 基于API 特征的不同模型檢測結果比較Table8 Comparison of detection results of different models based on API features

從表8 看出,采用LSTM 模型的TPR 最高,但FPR 也偏高;使用SVM(Poly)模型的FPR 最低,但ACC 和TPR 也偏低。SVM(Linear)模型的ACC 和TPR 較高,FPR 較低,整體性能好于其他模型。因此,對于API 特征,后續采用SVM(Linear)模型。

3.3.6 并聯模型對比實驗 為了驗證LSTM-SVM 并聯模型的有效性,以基于XML 特征的LSTM 模型作為基礎對比模型(Baseline),分別將基于API 特征的SVM 模型、RF 模型、LSTM 模型、MLP 模型、CNN模型與基礎模型進行并聯,采用概率差融合算法給出檢測結果,如表9 所示。

從表9 中可以看出,采用并聯檢測模型可以有效提升檢測精度。同時,相較于其他并聯模型,本文的LSTM-SVM 模型具有最高的ACC 和TPR,分別為98.12%和99.41%,具有最低的FPR,為6.98%,模型具有最佳性能。

表9 并聯模型的對比實驗結果Table9 Comparison of parallel models experiments

4 結束語

提出了一種基于LSTM-SVM 模型的Android 惡意軟件檢測方法。從Android 惡意軟件反編譯后獲得的AndroidManifest.xml 文件中提取Permission、Component、Intent 信息組成XML 特征列表,從smali文件提取API 特征,并通過分析API 調用情況構建API 特征列表;基于XML 特征構建了LSTM 異常檢測模型,基于API 特征構建了SVM 異常檢測模型,兩個模型采用并聯模式,基于概率差融合算法給出檢測結果。實驗結果表明,與單特征單模型、多特征單模型、多特征級聯模型相比,基于多特征多模型的LSTM-SVM 模型檢測方法具有更高的檢測精度。未來考慮進一步在虛擬機或沙箱環境中運行惡意軟件獲取動態特征,從靜態和動態兩個方面描述惡意行為,進一步提高Android 惡意軟件檢測效果。

猜你喜歡
列表并聯良性
走出睡眠認知誤區,建立良性睡眠條件反射
識別串、并聯電路的方法
呼倫貝爾沙地實現良性逆轉
學習運用列表法
擴列吧
基層良性發展從何入手
審批由“串聯”改“并聯”好在哪里?
并聯型APF中SVPWM的零矢量分配
一種軟開關的交錯并聯Buck/Boost雙向DC/DC變換器
甲狀腺良性病變行甲狀腺全切除術治療的效果分析
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合