【論文筆記】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個良性軟件日志文件。

日志數據生成環境如下圖:

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

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\)

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把保留了程序行為的時序特征
  • 提供了一種將程序行為日志轉為圖像的思路

不足之處

  • 實驗數據集太少
  • 在公開沙箱中生成的惡意軟件行為日志,可能存在對抗
  • 沒有公開數據集
  • 行為類型太少
  • 只用了程序的動態數據,沒有使用靜態數據




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM