zoukankan      html  css  js  c++  java
  • 【论文笔记】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把保留了程序行为的时序特征
    • 提供了一种将程序行为日志转为图像的思路

    不足之处

    • 实验数据集太少
    • 在公开沙箱中生成的恶意软件行为日志,可能存在对抗
    • 没有公开数据集
    • 行为类型太少
    • 只用了程序的动态数据,没有使用静态数据



  • 相关阅读:
    将json的时间格式转换成正常的时间格式
    Log4Net
    “我记录”开发框架
    面诊治病图文百科1000问
    手脚治病养生图文百科1000问
    生活真需要:1288个实用偏方
    很老很老的老偏方——对症自疗奇效方全集
    边上班边养生(套装共10册)
    五谷杂粮养生一本全
    现代生活知识百科(全4册)
  • 原文地址:https://www.cnblogs.com/BYRans/p/10289938.html
Copyright © 2011-2022 走看看