張偉 徐洋 張思聰 徐貴勇
(貴州師范大學 貴州省信息與計算科學重點實驗室 貴州省貴陽市 550001)
近年來,隨著萬物互聯互通的快速發展以及Android 智能產品為代表的終端產品的推廣,影響我們生活和學習的各類移動軟件不斷涌現,給我們帶來了諸多便捷[1]。目前Google 發明的Android 系統憑借其簡單效率高、高擴展性等優點,現已占據了市場的主導地位。隨著近幾年安卓相關移動產品用戶數量的不斷上升,但惡意軟件給人們造成的諸如經濟損失、隱私泄露等后果也會越來越常見。因此,從安卓信息安全的角度來說,惡意軟件檢測技術的研究與提高是很有意義的。
卿斯漢[2]等人從安卓面臨的大多數威脅、機器學習的手段、惡意安卓軟件檢測等多個維度,對安卓軟件新出的研究進展進行了分析與整理。Blasing[2]等人通過沙箱對Android 惡意軟件進行分析,模擬模擬程序同用戶間的交互,利用自動化測試獲取并記錄程序的系統調用,但由于實驗無法覆蓋所有程序執行的路徑,檢測結果并不能保證十分準確。
安卓軟件動態檢測技術缺點主要是檢測效率較低,需要消耗較多的資源,而且無法保證所有的程序執行路徑都能覆蓋到。而傳統靜態檢測技術,雖然不需要運行程序,檢測效率相對較高,而且對于己知的惡意軟件有較好的檢測率,但在面對不斷出現的新的惡意軟件時不可避免的出現檢測率降低的問題。如何提高檢測方法對于新出現的惡意軟件的檢測準確率,提高檢測模型的泛化能力,是當前研宄中面臨的首要問題[5]。隨著深度學習的方法不斷完善,應用到靜態分析領域中對于安卓惡意軟件檢測已然成為一種趨勢。
本文提出了基于GRU 模型的深度學習方法進行Android 惡意軟件檢測。
循環神經網絡[3]主要用來處理考慮時間先后問題,即上文與下文具有相互依賴關系的問題,相對于支持向量機模型而言,循環神經網絡具有更強的處理問題能力,在面對現實中大規模的數據計算,循環神經網絡具有更強大的擬合能力。但是隨著距離的逐步增大,RNN 學習到連接較遠信息的能力就會降低,梯度的爆炸、梯度的消失問題就越容易出現。為了解決這兩個問題,提出門控機制,LSTM[4]是最先被提出的RNN 門控算法,因為LSTM 擁有3 個門控機制,對于自身的內部狀態成立了自我循環,相對于循環神經網絡的遞歸計算而言,有了解決梯度問題的手段。GRU 的工作原理與LSTM 相同,只是比LSTM 少一個門控機制,其網絡中只有更新門與復位門,GRU 將LSTM 中的輸入門與遺忘門的結構化簡,只用一個更新門代替。

表1:GRU 模型測試結果

表2:測試結果對比

圖1:準確率對比圖
深度卷積神經網絡[5]是最近幾年被高度使用的具有高效識別能力的卷積神經網絡,在卷積神經網絡的基礎上發展而來的,其自適應能力與學習能力也很高,并且DCNN 還可以共享局部權值,可以降低網絡的復雜度,被廣泛應用于人臉特征識別、語音處理、圖像分類等方面。
Android 惡意軟件檢測通常被當做二分類問題,RNN 可以很好的表達出下上文的代碼調用關系,常用在時序方面問題的解決,并且GRU[6]作為RNN 的改進模型具有更為簡單的內部構造,參數也變得更少,這樣可以使得內部的計算更為簡單,提高檢測效率。本文依據GRU 模型可以處理上下文具有長期依賴關系問題的能力,提出了GRU 模型進行Android 惡意軟件分析與檢測。
GRU 神經網絡模型通過卷積進行文本特征的提取,利用池化層把積特征整合,然后將特征放入GRU 神經網絡中進行訓練,再把訓練特征輸入全連接層中。
本文選用ADAM 優化器[7],其特點內存較小而且計算效率高,適合大數據集計算情形。具體算法如下:

其中,mt表示一階動量項,vt表示二階動量項。
實驗用到的損失函數為交叉熵損失函數,它可以提供無偏估計,是使用最為廣泛的一個代理損失,其表達式為:

其中y∈(0,1)其中本文用到的分類器是Softmax 分類,其表達公式為:

其中n=1,…,m,把含有任一實數的m 維的x 向量,壓縮到m維的y 實向量中,讓所有元素值都在(0,1)這個區間,且元素之和為1。
本次實驗環境是在Ubuntu 操作系統,內存32GB,處理器為Intel? Core ? i7-9700K CPU@3.6GHz*8 實現的。實驗采用的框架為Keras,后端TensorFlow,采用的語言Python。數據集采用drebin 的數據集,共129013 個樣本,惡意樣本有5560 個,其他都是正常樣本。選取樣本中70%作為訓練集,30%作為驗證集來檢驗模型對惡意軟件的識別情況。
本次實驗采用drebin 數據集,樣本通過哈希函數映射為256 位的哈希值,然后分類成不同的惡意軟件家族,通過對樣本的哈希值的檢驗,判斷出是正常樣本還是惡意樣本。
用來評估惡意軟件檢測模型的指標為:精確率:表示真正例的個數占實際檢測到正例個數的多少,其計算公式為:

準確率:表示被正確預測出來的真正例和真負例樣本占總樣本的多少:

召回率:表示正例樣本中占正確預測的多少:

F1 值,是對召回率與精確率的一個調和評價,其計算公式為:

以上公式中變量的含義表示如下:
TP:正確判斷正樣本所占的比重;
TN:正確判斷負樣本所占的比重;
FN:錯誤的將正樣本判斷成負樣本;
FP:錯誤的將負樣本判斷成正樣本。
為了檢驗模型的實用性,根據準確率(ACC),召回率(R),精準率(P),F1 值指標,實驗隨機地選擇當中的三次測試結果,
如表1 所示。
為了驗證GRU 模型與單一的DCNN 模型,LSTM 模型,SVM模型在惡意軟件檢測能力的差異,使用統一數據集完成對各個模型的測試,并完成這四個模型的測試結果的對比,結果如圖1 所示。
從圖1 中可以看出,GRU 模型在準確率上明顯高于其他三個模型,準確率維持在99%以上,其次是LSTM 模型,準確率低于98.5%,SVM 模型準確率在98.3%以下,準確率最低的是DCNN模型,在98.0%以下。
各模型的訓練時間對比,結果顯示,GRU 模型用的時間比其他三個模型要少,DCNN 需要3200s,SVM 需要5143s,LSTM 需要3562s,GRU 需要3150s.
從四組模型中,每組隨機選出一組結果,比較他們的P,ACC,R,F1指標。從實驗的指標可以得出,GRU 模型所實現的結果是最好。結果如表2 所示。
本文針對Android 惡意軟件檢測提出的GRU 檢測模型,采用Tensorflow 為后端的框架。通過drebin 數據集進行的對比實驗證明,GRU 模型訓練時間相對較少,準確率,召回率等指標較高。GRU模型的效果要強于傳統的SVM 模型,也比LSTM 和DCNN 模型達到的結果要好。本文只是針對drebin 數據集的測試,針對Android惡意軟件測試,后期研究把算法運用到Windows 惡意代碼檢測中的適用性。