【論文筆記】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、INetSim二、Cuckoo Sandbox等工具生成惡意和良性軟件的日誌。共生成81個惡意軟件、69個良性軟件日誌文件。windows

日誌數據生成環境以下圖:安全

Logging-environment

使用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對這些特徵圖像進行分類。
流程圖以下:工具

Overview-of-proposed-method

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神經元。
網絡結構以下:spa

Flow-of-RNN-training


生成特徵圖像

用trained RNN提取Process的特徵並生成特徵圖像。
特徵提取流程以下圖所示:日誌

Flow-of-feature-extraction

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

feature-image-1

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

feature-image-2

經過sigmoid函數將矩陣F的每一個元素映射到[0,1]空間,並乘以255來造成256級灰度圖像。 最後,輸出矩陣\(F\)做爲特徵圖像矩陣。


訓練CNN

使用帶有惡意、良性標記的特徵圖像矩陣做爲輸入訓練CNN網絡。CNN網絡結構以下圖:

Structure-of-the-CNN

輸出\(y_0\)\(y_1\)分別爲爲良性軟件、惡意軟件的機率。可用sigmoid函數\(Sig\)(\(y_1\))計算出爲惡意軟件的機率。



實驗結果

做者嘗試了不一樣的RNN的隱含層維度、CNN輸入矩陣大小、CNN卷積層池化層參數\(w\)。使用5折交叉驗證,最佳結果爲在下表中Cond2條件時,AUC爲0.96。

RNN-Cond
CNN-Cond
malDecScore



我的總結

在惡意程序檢測方向,將程序的動靜態數據轉爲圖像,再套用CNN對圖像分類,這是一個常見的思路。

本論文值得學習的點

  • 使用RNN把保留了程序行爲的時序特徵
  • 提供了一種將程序行爲日誌轉爲圖像的思路


不足之處

  • 實驗數據集太少
  • 在公開沙箱中生成的惡意軟件行爲日誌,可能存在對抗
  • 沒有公開數據集
  • 行爲類型太少
  • 只用了程序的動態數據,沒有使用靜態數據
相關文章
相關標籤/搜索