基于深度学习的恶意样本行为检测(含源码)

本文采纳卷积神经收集(CNN)算法,借助CNN在自然说话处置惩罚方面的钻研成果,进行样本的恶意动态行径检测

0×01 媒介

今朝的恶意样本检测措施可以分为两大年夜类:静态检测和动态检测静态检测是指并不实际运行样本,而是直接根据二进制样本或响应的反汇编代码进行阐发,此类措施轻易受到变形、加壳、暗藏等要领的滋扰动态检测是指将样本在沙箱等情况中运行,根据样本对操作系统的资本调整环境进行阐发现有的动态行径检测都是基于规则对行径进行打分,分值的上下代表恶意程度的上下,然则无法给出种别定义

本文采纳CNN深度进修算法对Cuckoo沙箱的动态行径日志进行检测和分类考试测验,分手测试了二分类和多分类措施,效果还有不小提升空间,盼望合营交流

0×02 现有技巧

在大年夜数据情况背景下,应用机械进修算法成为选择的趋势比拟手工阐发,机械进修算法加倍高效今朝已经有不少采纳机械进修算法对样本动态行径进行检测的钻研Malheur由Konrad Rieck等人提出并给出了响应的开源实现,以样本中API呈现的相对顺序作为特性向量,使用原型和聚类算法进行检测阐发,该措施的毛病是特性向量过于稀疏,在高达几万维的特性向量中每每只有几十到几百维的特性值非零

Radu等人采纳随机森林算法检测恶意动态行径,根据API调用信息提取了68维的特性向量,对四类恶意样本进行了分类该钻研没有斟酌白样本,得当在对样本诟谇分类落后行恶意种别细分Ivan等人用KNN,质朴贝叶斯,SVM,J48,MLP这5种算法进行了对照阐发,不过其用于实验的总样本数只有470个,其结果的靠得住性不是很高笔者也用这些算法进行了实验,其结果没有论文中的数据那么好

上述钻研措施都采纳了传统机械进修算法,使用手工阐发获取特性向量进行分类处置惩罚,其结果受特性向量拔取的影响极大年夜特征是不必要人工提取特性向量,详细的特性是算法根据样本的动态行径信息自行进修的

CNN即卷积神经收集,1998年Yann LeCun设计了用于手写数字识别的卷积神经收集LeNet-5,后经Hinton及其门生Alex Krizhevskyx改动,于2012年得到了ImageNet角逐冠军之后CNN就获得了广泛利用,检测结果十分优良下图是经典卷积神经收集LeNet-5的收集布局,可以看到CNN主要包括卷积层,降采样层和全连接层等部分本文采纳CNN算法分手对样本的动态行径进行二分类和多分类二分类表示只根据样本的动态行径判别样本是否为恶意的多分类是指对付恶意样本还更具体的划分出恶意种别信息后面给出详细的算法实现历程

0×03 数据预处置惩罚

经由过程在沙箱运行样本,获取样本的动态行径申报这里受限于两个前提:1)样本能跑出动态行径;2)该样本在VirtusTotal上能查询到对应结果因为当前处于预研阶段,故先采纳了部分样本进行试验动态行径申报款式如下图

在实验历程中一共应用了7类共15921个样本样本的散播如下表:

对付每一个样本,其原始的动态行径申报是json布局数据为了便于应用,将原始申报转为了如下图(a)所示的文本款式每个样本的行径由一个txt文档表示,文档中的每一行表示一个api调用每一行分为三个部分,由空格分隔第一部分是api类型,对应原始report.json中的category字段;第二部分是调用的api名称;剩下部分是调用历程中的相关参数在实际实验历程中发明,不斟酌参数信息时算法效果更好,以是去除了动态行径的参数信息,如下图(b)终极应用时对付相邻的重复api调用只斟酌一次,相称于做了去重处置惩罚,如下图(c)颠末处置惩罚后每个样本的动态行径日志信息可以获得大年夜幅度精简

颠末款式转换后,动态行径检测问题就变成了对文本的分类问题是以可以采纳CNN在自然说话处置惩罚方面的措施

0×04 算法实现

1.获取词库

在动态行径文本中的每一行表示一个动态行径,将一行视为一个整体,遍历所有的动态行径日志,获取所有呈现过的动态行径,作为词库用继续数字对词库中的每一个词进行标号,这样可以获取动态行径到标号id的映射留意,除了呈现过的动态行径外,还别的添加了一个“Unknown”动态行径,用于之后匹配不在词库中的未知行径下图是一个简单的例子,表示在一共只有两个样本的环境下,获取到的词库信息

2.将样本转为矩阵表示

CNN最初用于图像处置惩罚在应用CNN进行文本分类时首先必要将文本转为类似图片的二维矩阵为了实现文本的矩阵表示,先将词库中的每一个词用一个长度为300的向量表示,这个向量长度是一个可以选择的参数初始化向量时采纳随机初始化,之后会跟着练习赓续更新词向量对付每一个样本,将样本中的动态行径根据词库转换为对应的id序列再根据此id序列以及词库中每个id的向量将样本转换为二维矩阵整体历程如下图所示留意,在转换历程中必要拟订最大年夜词长度,以包管所有样本转换后的矩阵有相同的维度对付长度不够的样本必要在最落后行补0,对付超长的样本,笔者考试测验过用tf-idf阐发处置惩罚,但实际效果并没有提升,以是这里采纳直接截断

[1] [2]下一页

3.应用CNN练习样本

借用一张Ye Zhang等人论文中的流程图对付输入的样本矩阵,分手用多个卷积核进行卷积卷积核的长度可所以随意率性选择的,本文中应用的是(3, 4, 5),即应用了3个不合长度的卷积核卷积核的宽度与词向量的长度相同这样颠末一次卷积操作后,蓝本的二维矩阵就会变成一个列向量这种处置惩罚类似于N-Gram算法,取长度为3的卷积核着实便是对相邻的3个动态行径提取特性每一种尺度的卷积核都可以有多个,图中每种尺度的卷积核有2个本文实际应用时采纳了128个颠末卷积后,再对每一个卷积结果应用max-pooling,取列向量中的最大年夜值这样每一个列向量就改变成了一个1×1的值将所有卷积核结果对应的最大年夜值连接在一路组玉成连接层着末用softmax进行多分类处置惩罚

0×05 实验结果

本文采纳Tensorflow实现算法布局整体流程的谋略图如下图所示Embedding是词嵌入部分,即将动态行径文本转换为二维,conv对应上面先容的卷积操作,pool对应max-pooling,fc为全连接层,着末结果由softmax输出在详细实现时还加入了batchnorm和进修速度指数衰减,用以加速进修和优化结果留意图中有一个dropout层,但实际应用时keep_prob传入的是1.0,即并没有进行dropout该层是在调试结果时应用的

运行时采纳80%的数据作为练习数据,20%的数据作为测试数据每个batch大年夜小为128,共迭代50轮,每轮需迭代99个batch,每练习200个batch统计一次模型在测试集上的效果

分手测试了二分类和多分类效果二分类是指只判断样本的行径是否为恶意的多分类指将样本根据动态行径划分为数据预处置惩罚中提到的7类

1.二分类结果

只对样本的动态行径进行诟谇分类算法在练习集和测试集上的准确率和丧掉值如下图所示,蓝色线是练习集结果,血色线是测试集结果可以看到结果在迭代1400个batch后趋于稳定在练习集上,准确率在98%相近浮动,丧掉值在0.04相近浮动在测试集上,准确率最高为93.37%,然则丧掉值在迭代400个batch后就开始发散,并没有收敛

2.多分类结果

下面给出了跟着练习次数增添算法在练习集和测试集上的准确率和丧掉值变更蓝色线表示练习集上效果,橙色线表示测试集上效果可以看到,在迭代到1600个batch后,算法效果已经基础趋于稳定,练习集准确率在98%相近颠簸,丧掉值在0.07相近颠簸在测试集上,算法准确率最高点呈现在迭代了2600个batch的时刻,准确率为89.20%,丧掉值也在迭代了400个batch后开始发散

0×06 相关代码

代码的git地址为:https://github.com/zwq0320/malicious_dynamic_behavior_detection_by_cnn 迎接大年夜家交流斧正

上一页[1] [2]

赞(0) 打赏
分享到: 更多 (0)
免责申明:本站所有资料均来自于网络,版权归原创者所有!本站不提供任何保证,不保证真实性,并不承担任何法律责任

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

阿里云优惠网 更专业 更优惠

阿里云优惠券阿里云大礼包