j9数字货币九游会--信誉保证

WEB宁静 宁静运维

基于深度学习的歹意样本举动检测

基于深度学习的歹意样本举动检测

公布>###38 泉源:freebuf 欣赏人数:5362 次

0×01 媒介

现在的歹意样本检测办法可以分为两大类:静态检测和静态检测。静态检测是指并不实践运转样本,而是间接依据二进制样本或响应的反汇编代码举行剖析,此类办法容易遭到变形、加壳、隐蔽等方法的搅扰。静态检测是指将样本在沙箱等情况中运转,依据样本对操纵体系的资源调理状况举行剖析。现有的静态举动检测都是基于规矩对举动举行打分,分值的上下代表歹意水平的上下,但无法给出种别界说。

本文接纳CNN深度学习算法对Cuckoo沙箱的静态举动日记举行检测和分类实验,辨别测试了二分类和多分类办法,结果另有不小提拔空间,盼望配合交换。

0×02 现有技能

在大数据情况配景下,利用呆板学习算法成为选择的趋向。相比手工剖析,呆板学习算法愈加高效。现在曾经有不少接纳呆板学习算法对样本静态举动举行检测的研讨。Malheur由Konrad Rieck等人提出并给出了响应的开源完成,以样本中API呈现的绝对次序作为特性向量,使用原型和聚类算法举行检测剖析,该办法的缺陷是特性向量过于希罕,在高达几万维的特性向量中每每只要几十到几百维的特性值非零。

Radu等人接纳随机丛林算法检测歹意静态举动,依据API挪用信息提取了68维的特性向量,对四类歹意样本举行了分类。该研讨没有思索白样本,合适在对样本好坏分类落伍行歹意种别细分。Ivan等人用KNN,质朴贝叶斯,SVM,J48,MLP这5种算法举行了比力剖析,不外其用于实行的总样本数只要470个,其后果的牢靠性不是很高。笔者也用这些算法举行了实行,其后果没有论文中的数据那么好。

上述研讨办法都接纳了传统呆板学习算法,使用手工剖析获取特性向量举行分类处置,其后果受特性向量选取的影响极大。本文接纳卷积神经网络(CNN)算法,借助CNN在天然言语处置方面的研讨效果,举行样本的歹意静态举动检测。特点是不必要人工提取特性向量,详细的特性是算法依据样本的静态举动信息自行学习的。

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剖析处置,但实践结果并没有提拔,以是这里接纳间接截断。

基于深度学习的歹意样本举动检测

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后开端发散。

基于深度学习的歹意样本举动检测

上海九游会信息科技有限公司 Shanghai Gaojia Information Technology Co.,Ltd 版权一切 

>###1905号远中科研楼206室

天下办事热线
###