【論文筆記】Malware Detection with Deep Neural Network Using Process Behavior
論文基本信息
- 會議: IEEE(2016 IEEE 40th Annual Computer Software and Applications Conference)
- 單位: Nagoya University(名古屋大學)、NTT Secure Platform Laboratories(NTT安全平台實驗室)
方法概述
- 數據:81個惡意軟件日志文件、69個良性軟件日志文件。其中惡意軟件由NTT Secure Platform Laboratory收集,共26個惡意軟件。
- 方法:基於軟件日志(即軟件行為)數據,首先用RNN提取惡意、良性軟件行為特征,生成特征圖像,再用CNN進行分類。
- 效果:AUC = 0.96
數據集
惡意軟件樣本由NTT Secure Platform Laboratory收集,共26個惡意軟件,使用Symantec(賽門鐵克)將其標記為11個家族。
在Ubuntu上使用VirtualBox搭建windows環境,使用Process Monitor、INetSim2、Cuckoo Sandbox等工具生成惡意和良性軟件的日志。共生成81個惡意軟件、69個良性軟件日志文件。
日志數據生成環境如下圖:

使用Process Monitor來記錄ReadFile,RegSetValue,Thread Start等行為;
通過Process Monitor記錄的行為(Operation)數據如下表所示。
字段 | 說明 |
---|---|
Time | Operation執行時間 |
Process Name | Process名 |
PID | Operation的PID |
Event | Operation名 |
Path | Operation執行時所在路徑 |
Result | 執行結果狀態 |
Detail | 參數等信息 |
Result記錄了Operation的結果,如SUCCESS,ACCESS DENIED,FILE NOT FOUND等;
Detail記錄了參數等信息。
方法
方法概述
算法的主要思路為:將Process行為日志轉化為向量,使用RNN轉換為特征圖像,在用CNN對這些特征圖像進行分類。
流程圖如下:

Step1: 監視Process的行為,並生成日志文件。
Step2: 將日志數據轉為one-hot向量,按Operation執行輸入RNN訓練,獲取trained RNN模型。
Step3: 用trained RNN從日志文件中提取特征,並將特征轉換為特征圖像。
Step4: 使用標有惡意、良性標簽的特征圖像數據,訓練CNN模型。
Step5: 訓練結束后,由訓練的RNN模型將Process行為日志文件轉化為特征圖像,再由訓練的CNN模型進行分類,最后輸出Process為惡意軟件的概率。
訓練RNN
將日志文件的Operation數據基於Operation Name轉為one-hot向量作為輸入,隱藏層\(h^1\)的神經元為普通神經元,\(h^2\)、\(h^3\)層為LSTM神經元。
網絡結構如下:

生成特征圖像
用trained RNN提取Process的特征並生成特征圖像。
特征提取流程如下圖所示:

將日志文件中的Operation轉換為one-hot向量,然后依次將它們輸入到trained RNN中。 獲取每個輸入的第三隱藏層\(h^3\)的值,得到集合{\(h^3_1\),\(h^3_2\),...,\(h^3_L\)}。 CNN模型輸入圖像矩陣為固定大小,故需將每個Process日志文件轉為相同大小的特征圖像矩陣。
用了以下等式將Operation特征向量集轉為Process特征圖像矩陣\(F\):

\(f_k\):固定大小的特征圖像矩陣的元素
\(N\):集合{\(h^3_1\),\(h^3_2\),...,\(h^3_L\)}分為N組並計算每組的平均值,\(N\)也就是特征圖像矩陣\(F\)的行數。
\(p_k\):第\(k\)個矢量集的最后一個數。
\(W\):設為第3隱藏層的維數,則固定向量序列可以描述為矩陣F.

通過sigmoid函數將矩陣F的每個元素映射到[0,1]空間,並乘以255來形成256級灰度圖像。 最后,輸出矩陣\(F\)作為特征圖像矩陣。
訓練CNN
使用帶有惡意、良性標記的特征圖像矩陣作為輸入訓練CNN網絡。CNN網絡結構如下圖:

輸出\(y_0\)、\(y_1\)分別為為良性軟件、惡意軟件的概率。可用sigmoid函數\(Sig\)(\(y_1\))計算出為惡意軟件的概率。
實驗結果
作者嘗試了不同的RNN的隱含層維度、CNN輸入矩陣大小、CNN卷積層池化層參數\(w\)。使用5折交叉驗證,最佳結果為在下表中Cond2條件時,AUC為0.96。



個人總結
在惡意程序檢測方向,將程序的動靜態數據轉為圖像,再套用CNN對圖像分類,這是一個常見的思路。
本論文值得學習的點
- 使用RNN把保留了程序行為的時序特征
- 提供了一種將程序行為日志轉為圖像的思路
不足之處
- 實驗數據集太少
- 在公開沙箱中生成的惡意軟件行為日志,可能存在對抗
- 沒有公開數據集
- 行為類型太少
- 只用了程序的動態數據,沒有使用靜態數據