logo资料库

论文研究-基于卷积神经网络的恶意代码分类 .pdf

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
中国科技论文在线 http://www.paper.edu.cn 基于卷积神经网络的恶意代码分类 莫君生,王玉龙** (北京邮电大学网络技术学院,北京,100876) 10 5 摘要:提出一种基于恶意代码图像的恶意代码分类的检测方法,通过结合计算机视觉分析技 术与恶意代码变种检测技术,将恶意代码映射为无压缩灰阶图片,基于属于相同族的恶意代 码在恶意代码图像上比不同族的具有更明显的相似性假设,使用计算机视觉的卷积神经网络 分类算法,构造恶意代码分类网络结构,在此基础上,实现恶意代码分类系统的训练与预测。 并通过对 25 种恶意代码样本数据集的分析,训练和检测,完成了对该系统的实验验证。实 验结果表明,基于上述方法分类方法具有检测速度快、识别率高等特点,并且对恶意代码变 种具有较好的辨别能力。 关键词:恶意代码;恶意代码图像;计算机视觉;卷积神经网络 中图分类号:TP311 15 Malware Detection Based On Convolutional Neural Network Mo Junsheng, Wang Yulong (Institute of network technology, Beijing University of Posts and Telecommunications,Beijing,100876) Abstract: A malware detection method based on malware images is proposed. By combining computer vision analysis technology and malware variants detection technology, the malware is mapped to non-compressed gray-level pictures. Based on the malware belonging to the same family in the malware image The classification of malware classification system is constructed based on the convolutional neural network classification algorithm of computer vision. On this basis, the training and prediction of malware classification system is realized. And through 25 kinds of malware sample dataset analysis, training and testing, completed the experimental verification of the system. The experimental results show that the classification method based on the above method has the characteristics of fast detection rate and high recognition rate, and has better discrimination ability against malware variants. Key words: Malware; Malware Image; Computer Vision; Convolutional Neural Network 20 25 30 0 引言 随着互联网的快速发展,恶意代码的规模呈指数级增长,现在已经成为威胁互联网安全 35 的关键因素之一。目前,主要的恶意代码检测方法有两种:基于恶意代码二进制的静态检测 和基于恶意代码运行时行为的动态检测。静态检测需要通过分析恶意代码的文件结构、二进 制的字节码、或者分析反编译后的代码以及分析其具体的系统调用等因素来得到恶意代码的 特征,进一步利用分类的算法来训练分类模型,实现对未知和已知的恶意代码预测。但是静 态检测的方法容易受到代码混淆技术(加壳、变异)的影响,逆向代码成本非常大,还有静态 40 检测并没有真实运行代码,判断是否为恶意代码的行为没有展现,所以误报和漏报比较明显。 动态检测主要原理是将待检测代码放置在一个虚拟机环境(沙箱)中,通过检测目标程序运 行过程中是否有恶意行为来判断是否为恶意代码。动态检测方法又分为粗粒度方法和细粒度 方法。粗粒度方法通过运行恶意代码分析其行为所对应 API 调用序列来进行恶意代码检测, 作者简介:莫君生(1991-),男,研究生,机器学习 通信联系人:王玉龙(1977-),男,副教授,信息安全. E-mail: wyl@bupt.edu.cn - 1 -
中国科技论文在线 http://www.paper.edu.cn 细粒度方法通过恶意代码运行时的动态指令序列来进行检测。与静态检测方法相比,动态检 45 测方法更为有效,无需考虑反编译,分析代码等复杂过程。然而,动态检测方法是时间密集 型和资源消耗型的方法,虚拟机执行包括执行,全路径探索来捕捉调用序列,退出等过程, 时间花费很大,而且由于激发条件不能满足,一些恶意代码的行为不能表现出来。 由于静态检测需要分析恶意代码文件结构、二进制字节码以及逆向代码等这些工作,没 有专业的信息安全方面的知识是无法胜任的,即使是信息安全方面的工作者也需要花费很大 50 的时间才能完成这些工作,分析成本比较大。本文结合机器学习以及恶意代码分析技术,运 用卷积神经网络以及恶意代码图像的特征方法,建立一种自动识别恶意代码并且能够自动分 类的方法,而无需要大量的人工分析。对一个未知的代码样本,输入到识别系统中,系统自 动判断这个样本是属于恶意代码的哪一族。 1 相关理论与技术 55 1.1 恶意代码可视化 恶意代码图像是一个恶意代码可视化的技术,通过把恶意代码转换成一张与之对应的图 片 , 通 过 图 片 进 一 步 分 析 该 恶 意 代 码 。 这 个 技 术 最 早 出 现 在 论 文 : Malware Images: Visualization and Automatic Classification[1] , 由 加 利 福 尼 亚 大 学 的 L.Nataraj 以 及 S.Karthikeyan 提出来的,这种方法不需要任何的反编译或者运行真实的恶意代码,把一个二 60 进制文件以灰度图的形式展现出来,利用图像中的纹理特征对恶意代码进行聚类。给定一个 恶意代码的二进制文件,看作是一个 8 bit 的非负整数向量,然后组织成一个二维数组,每 个字节范围在 0 到 255 之间,刚好对应灰度图 0~255(0 为黑色,255 为白色)。将一个二进制 文件转换为一个矩阵(矩阵元素对应文件中的每一个字节,矩阵的大小可根据实际情况进行 调整),该矩阵又可以非常方便的转换为一张灰度图。图 1 是一个恶意代码的二进制文件转 65 换成一张灰度图。 图 1 恶意代码可视化 Fig. 1 Malware Visualization 70 1.2 恶意代码图像特征 恶意代码变种是攻击者在原来的代码上修改一小部分来产生一个新的恶意代码,该代码 保留了之前的整体,使用图像可以观察到恶意代码变异前的整体结构。并且属于相同族的恶 意代码变异在整体图像上是比较相似的,但是不同族的恶意代码则可以在图像上有明显的区 别,可以比较容易地辨别不同族的恶意代码。图 2 展示了不同族恶意代码图像[2]。 - 2 -
中国科技论文在线 http://www.paper.edu.cn 75 80 图 3 展示了相同族恶意代码图像[3]: 图 2 不同族恶意代码 Fig. 2 Malware of Various Familes 图 3 相同族恶意代码 Fig. 3 Malware of Same Familes 用肉眼可看出,同一个家族的恶意代码图像在纹理上存在一定的相似性,不同的恶意代 码家族是有一定区别的。 1.3 卷积神经网络 85 深度学习是目前人工智能领域最热门的研究方向。深度学习能够更好地表示数据的特 征,同时由于网络的深度、模型参数规模大,能够拟合复杂的特征,因此,深度学习模型能 够更好地表示大规模数据,因此对于图像、语音这种特征不明显(需要手工设计且很多没有 直观物理含义)的问题,能够在大规模训练数据上比传统的机器学习算法取得更好的效果。 此外,深度学习复杂的网络结构,自动从数据去学习特征,减少大量的人工特征提取,因此, 90 不仅仅效果可以更好,而且使用起来也有很多方便之处。 卷积神经网络是深度学习在图像语音识别方面发展起来的算法,并引起广泛重视的一种 高效识别方法。卷积神经网络是人工神经网络的一种,它的权值共享网络结构使之更类似于 生物神经网络,降低了网络模型的复杂度,减少了权值的数量。该优点在网络的输入是多维 图像时表现的更为明显,使图像可以直接作为网络的输入,避免了传统识别算法中复杂的特 - 3 -
中国科技论文在线 http://www.paper.edu.cn 95 征提取和数据重建过程。卷积网络是为识别二维形状而特殊设计的一个多层感知器,这种网 络结构对平移、比例缩放、倾斜或者共他形式的变形具有高度不变性。所以卷积神经网络可 以识别有变化的模式,具有对简单几何变形的鲁棒性[4]。 卷积神经网络较一般神经网络在图像处理方面具有如下优点: (1)输入图像和网络的拓扑结构能很好的吻合; 100 (2)特征提取和模式分类同时进行; (3)权值共享可以减少网络的训练参数,使神经网络结构变得更简单,适应性更强。 1.4 卷积神经网络结构 1.4.1 卷积层 卷积神经网络中每层卷积层由若干卷积单元组成,每个卷积单元的参数都是通过反向传 105 播算法优化得到的。通过共享卷积核参数,使得训练复杂度大为减少。卷积运算的目的是提 取输入的不同特征,例如第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层 级,但是更多层的网络能从低级特征中迭代提取更复杂的特征,使得网络的表达能力更加强 大。 1.4.2 池化层 110 通常在卷积层之后会得到维度很大的特征,将特征切成几个区域,取其最大值或平均值, 得到新的、维度较小的特征。使得特征减少,参数减少,但是还能保持图片某种不变性(旋 转、平移、伸缩等)。 1.5 LeNet-5 深层卷积网络 卷积神经网络 LeNet-5 的结构如图 4 所示:输入图像是 32×32 的图像,经过与卷积 115 核运算,每一个神经元的输入来自于前一层的一个局部邻域,并被加上由一组权值决定的权 重。提取的这些特征在下一层结合形成更高一级的特征。同一特征图的神经元共享相同的一 组权值, 池化层对上一层进行采样。 120 图 4 LetNet-5 Fig. 4 LetNet-5 卷积神经网络 LeNet-5 不包括输入,由 7 层组成。输入是 32×32 像素的图像,其中 C 层表示由卷积层神经元组成的网络层,S 层是则是池化层神经元组成的网络层。网络层 C1 是由 6 个特征图组成的卷积层。每个神经元与输入图像的一个 5×5 的卷积核相连接,因此 每个特征图的大小是 28×28。 网络层 S2 是由 6 个大小为 14×14 的特征图组成网络,它 125 是由 C1 层连接 2×2 的 MaxPooling 采样得到。 网络层 C3 是由 16 个大小为 10×10 的 特征图组成的卷积层。 特征图的每个神经元与 S2 网络层的若干个特征图的 5×5 的邻域 连接。 图 5 显示了 S2 层的特征图如何结合形成 C3 的每个特征图,其中的每一列表示 S2 层的哪些特征图结合形成 C3 的一个特征图。 - 4 -
中国科技论文在线 http://www.paper.edu.cn 130 图 5 连接关系 Fig. 5 Connection 网络层 S4 是由 16 个大小为 5×5 的特征图组成的网络层。特征图的每个神经元与 C3 层的一个 2×2 大小的邻域相连接。 网络层 C5 是由 120 个特征图组成的卷积层。每个神 经元与 S4 网络层的所有特征图的 5×5 大小的邻域相连接。 网络层 F6 包括 84 个神经元, 135 与网络层 C5 进行全连接。 最后输出层有 10 个神经元。计算输入向量和权重向量之间的 点积,再加上一个偏置。然后将其传递给 RBF 函数产生某一个输出单元的状态。 2 系统设计 2.1 系统检测流程 系统结构实现是这样:给定一个恶意代码文件,通过编码转换的形式,得到一张对应的 140 恶意代码图像;然后把该图像作为卷积神经网络的输入,通过模型的训练最后得到恶意代码 分类系统,对于一个未知的样本,则可以通过系统检测属于哪一族恶意代码。系统流程图如 图 6 所示: 145 图 6 系统流程图 Fig. 6 System flow chart 2.2 二进制恶意代码转换图 对于给定的恶意代码可执行文件,即二进制文件,读取 8 bit 为一个无符号的整型, 固 150 定宽度的数值,然后整个文件转换成一个二维数组。 此数组中每个元素的范围都是取值为 [0,255],再将数组保存成一副图像[5]。转换代码如下: #!python import numpy 155 from PIL import Image import binascii def getMatrixfrom_bin(filename,width): - 5 -
中国科技论文在线 with open(filename, 'rb') as f: http://www.paper.edu.cn content = f.read() hexst = binascii.hexlify(content) #将二进制文件转换为十六进制字符串 160 fh = numpy.array([int(hexst[i:i+2],16) for i in range(0, len(hexst), 2)]) #按字节分割 rn = len(fh)/width fh = numpy.reshape(fh[:rn*width],(-1,width)) #根据设定的宽度生成矩阵 fh = numpy.uint8(fh) 165 return fh filename = '459d5f31810de899f7a4b37837e67763'#二进制代码 im = Image.fromarray(getMatrixfrom_bin(filename,512)) #转换为图像 im.save("'459d5f31810de899f7a4b37837e67763'.png") # save the image 2.3 卷积神经网络拓扑结构 170 卷积网络结构如图 7 所示:输入图片是 64×64 的图片,第一个卷积和为 3×3,一共 20 个 feature map, 激励函数选择 Relu 函数,池化层选择 MaxPooling,然后展开成全连接层,输 出接入 softmax 函数,对于 label 为 25 类,对应 25 族恶意代码。 175 图 7 网络结构 Fig. 7 Network Structure 核心网络结构代码如下: model = Sequential() 180 model.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1],border_mode='valid', input_shape=input_shape)) model.add(Activation('relu')) model.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1])) model.add(Activation('relu')) 185 model.add(MaxPooling2D(pool_size=pool_size)) model.add(Dropout(0.25)) model.add(Flatten()) model.add(Dense(128)) model.add(Activation('relu')) 190 model.add(Dropout(0.5)) model.add(Dense(nb_classes)) model.add(Activation('softmax')) - 6 -
中国科技论文在线 http://www.paper.edu.cn 3 实验研究 3.1 实验数据与实验环境 195 实验数据来自论文:Malware Images: Visualization and Automatic Classification使用的恶意 代码库。该数据包含了 25 类恶意代码,一共 9458 个恶意代码样本。数据分类如下表 1 所示: 表 1 恶意代码族 Tab. 1 Malware families 序号 族 族名字 恶意样本数量 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Worm Worm Worm PWS PWS PWS Trojan Trojan Dialer Allaple.L Allaple.A Yuner.A 1591 2949 800 Lolyda.AA 1 213 Lolyda.AA 2 184 Lolyda.AA 3 123 C2Lop.P 146 C2Lop.gen!G 200 Instantaccess 431 Trojan Downloader Swizzor.gen!I 132 Trojan Downloader Swizzor.gen!E 128 Worm Rogue Trojan Trojan PWS Dialer VB.AT Fakerean 408 381 Alueron.gen!J 198 Malex.gen!J 136 Lolyda.AT Adialer.C 159 125 Trojan Downloader Wintrim.BX 97 Dialer Dialplatform.B 177 Trojan Downloader Dontovo.A 162 Trojan Downloader Obfuscator.AD 142 Backdoor Agent.FYI Worm:AutoIT Autorun.K Backdoor Rbot!gen 116 106 158 Trojan Skintrim.N 80 200 实验运行的环境为 ubuntu 14.04 的 64 位系统, 8G 内存, 500G 硬盘。恶意代码图像提 取使用 python 语言,卷积神经网络搭建使用 Keras 深度学习框架。Keras 是基于 Theano 的 一个深度学习框架,它的设计参考了 Torch,用 Python 语言编写,是一个高度模块化的神经 网络库,支持 GPU 和 CPU。 - 7 -
中国科技论文在线 3.2 实验结论 http://www.paper.edu.cn 205 通过在上述恶意代码库所做的实验,使用 7471 个恶意代码样本作为训练样本,剩下的 大概 2000 个作为测试样本,并进行交叉验证实验。最终在测试样本上能达到 94%的准确率, 以及 95%的召回率。 4 结论 基于恶意代码图像的分析技术,本文给出了一种基于卷积神经网络的恶意代码分类方 210 法,该方法中恶意图像能够自动提取原始恶意代码的特征,作为卷积神经网络的输入。卷积 神经网络又能够识别恶意代码在恶意代码图像上的相似性以及连续性,在一定程度上识别恶 意代码的变异。整个检测过程不需要人工分析恶意代码文件,分析指令执行,系统调用等, 而且具有检测速度快、识别率高等特点,并且对恶意代码变种具有较好的辨别能力。 [参考文献] (References) 215 220 225 [1] NATARAJ L, KARTHIKEYAN S, JACOB G, et al. Malware images: visualization and automatic classification[A]. Proceedings of VizSec[C].Pittsburgh, USA, 2011. [2] 王 蕊 , 冯 登 国 , 杨 轶 等 . 基 于 语 义 的 恶 意 代 码 行 为 特 征 提 取 及 检 测 方 法 [J]. 软 件 学 报 , 2012,23(2):378-393. [3] KIRDA E, KRUEGEL C, BANKS G, et al. Behavior-based spyware detection[A]. Proceedings of the 15th USENIX Security Symposium[C].Canada, 2006.273-288. [4] KANCHERLA K, MUKKAMALA S. Image visualization based malware detection[A]. Computational Intelligence in Cyber Security (CICS)[C]. Singapore, 2013.40-44. [5] BELLARD F. QEMU, A fast and portable dynamic translator[A]. USENIX Annual Technical Conference, FREENIX Track[C]. California,USA, 2005.41-46. - 8 -
分享到:
收藏