【論文筆記】Malware Detection with Deep Neural Network Using Process Behavior
【論文筆記】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把保留了程式行為的時序特徵
- 提供了一種將程式行為日誌轉為影象的思路
不足之處
- 實驗資料集太少
- 在公開沙箱中生成的惡意軟體行為日誌,可能存在對抗
- 沒有公開資料集
- 行為型別太少
- 只用了程式的動態資料,沒有使用靜態資料