【论文笔记】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把保留了程序行为的时序特征
- 提供了一种将程序行为日志转为图像的思路
不足之处
- 实验数据集太少
- 在公开沙箱中生成的恶意软件行为日志,可能存在对抗
- 没有公开数据集
- 行为类型太少
- 只用了程序的动态数据,没有使用静态数据
【论文笔记】Malware Detection with Deep Neural Network Using Process Behavior的更多相关文章
- 论文笔记之:Decoupled Deep Neural Network for Semi-supervised Semantic Segmentation
Decoupled Deep Neural Network for Semi-supervised Semantic Segmentation xx
- 论文笔记:ReNet: A Recurrent Neural Network Based Alternative to Convolutional Networks
ReNet: A Recurrent Neural Network Based Alternative to Convolutional Networks2018-03-05 11:13:05 ...
- 论文阅读 | Towards a Robust Deep Neural Network in Text Domain A Survey
摘要 这篇文章主要总结文本中的对抗样本,包括器中的攻击方法和防御方法,比较它们的优缺点. 最后给出这个领域的挑战和发展方向. 1 介绍 对抗样本有两个核心:一是扰动足够小:二是可以成功欺骗网络. 所有 ...
- 论文笔记——A Deep Neural Network Compression Pipeline: Pruning, Quantization, Huffman Encoding
论文<A Deep Neural Network Compression Pipeline: Pruning, Quantization, Huffman Encoding> Prunin ...
- 论文阅读(XiangBai——【AAAI2017】TextBoxes_A Fast Text Detector with a Single Deep Neural Network)
XiangBai——[AAAI2017]TextBoxes:A Fast Text Detector with a Single Deep Neural Network 目录 作者和相关链接 方法概括 ...
- Deep Learning 28:读论文“Multi Column Deep Neural Network for Traffic Sign Classification”-------MCDNN 简单理解
读这篇论文“ Multi Column Deep Neural Network for Traffic Sign Classification”是为了更加理解,论文“Multi-column Deep ...
- 论文翻译:2022_PACDNN: A phase-aware composite deep neural network for speech enhancement
论文地址:PACDNN:一种用于语音增强的相位感知复合深度神经网络 引用格式:Hasannezhad M,Yu H,Zhu W P,et al. PACDNN: A phase-aware compo ...
- 目标检测--Scalable Object Detection using Deep Neural Networks(CVPR 2014)
Scalable Object Detection using Deep Neural Networks 作者: Dumitru Erhan, Christian Szegedy, Alexander ...
- XiangBai——【AAAI2017】TextBoxes_A Fast Text Detector with a Single Deep Neural Network
XiangBai--[AAAI2017]TextBoxes:A Fast Text Detector with a Single Deep Neural Network 目录 作者和相关链接 方法概括 ...
随机推荐
- js将手机号中间四位变成*号
方法一.利用数组splice,split,join方法 var tel = 18810399133; tel = "" + tel; var ary = tel.split(&qu ...
- weka安装&配置&使用
安装与配置: 官网下载安装即可,分为带jre和不带jre版本,3.8需要jre1.8.如果装了1.7的话,还是自己先装一个1.8再装不带jre版本的比较好,不然weka装的会让人一脸懵逼,不知道装在哪 ...
- ES6的let
1.let声明的变量只在它所在的代码块有效. 例子: var a = [];for (var i = 0; i < 10; i++) {a[i] = function () {console.l ...
- java-面向对象(公元2017-6-28)
1.面向对象 何为面向对象:编写程序的时候会提取相似的 特征,把这些相似的特征组织起来 类:相似的特征组织起来的类型. 泛指.可理解为模板 对象:属于类中的具体事物 ...
- webclient上传数据到ashx服务
1.上传参数 UploadData()方法可以上传数据参数,需要将所要上传的数据拼成字符. // 创建一个新的 WebClient 实例. WebClient myWebClient = new ...
- flask-bootstrap学习笔记
flask-bootstrap 是flask一个方便扩展使用bootstrap前台的扩展. 使用方法: 安装: pip instal flask-bootstrap4 加载: from flask_b ...
- 最新的 cocoapods 安装与使用(2019.04)
cocoapods简介: cocoapods 是iOS的类库管理工具,可以让开发者很方便集成各种第三方库,而不用去网站上一个个下载,再一个个文件夹的拖进项目中,还得添加相关的系统依赖库.只需要安装好c ...
- Angular No name was provided for external module 'XXX' in output.globals 错误
Angular 7 开发自定义库时,引用ngZorroAntd,build过程中出现 No name was provided for external module 'ng-zorro-antd' ...
- shell脚本中给字符串添加颜色
shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e 格式如下: echo -e "\033[字背景颜色:文字颜色m字符串\033[0m" 例如: ec ...
- mybatis(二)
一级缓存和二级缓存 mybatis一二级缓存测试实例: package com.atguigu.mybatis.test; import java.io.IOException; import jav ...