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把保留了程序行为的时序特征
    • 提供了一种将程序行为日志转为图像的思路

    不足之处

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



  • 相关阅读:
    Linkerd 2.10(Step by Step)—将 GitOps 与 Linkerd 和 Argo CD 结合使用
    Linkerd 2.10(Step by Step)—多集群通信
    Linkerd 2.10(Step by Step)—使用 Kustomize 自定义 Linkerd 的配置
    Linkerd 2.10(Step by Step)—控制平面调试端点
    Linkerd 2.10(Step by Step)—配置超时
    Linkerd 2.10(Step by Step)—配置重试
    Linkerd 2.10(Step by Step)—配置代理并发
    本地正常运行,线上环境诡异异常原因集合
    Need to invoke method 'xxx' declared on target class 'yyy', but not found in any interface(s) of the exposed proxy type
    alpine 安装常用命令
  • 原文地址:https://www.cnblogs.com/BYRans/p/10289938.html
Copyright © 2011-2022 走看看