2. 国家计算机网络应急技术处理协调中心 北京 100029
2. National Computer Network Emergency Response Technical Team/Coordination Center of China, Beijing 100029, China
近年来,随着网络技术的普及,恶意代码数量越来越庞大,给信息安全带来了严重的威胁。目前比较流行的恶意代码种类有恶意脚本、木马、勒索软件、间谍软件、计算机病毒、漏洞利用、内核套件和蠕虫以及它们的组合或变体等[1]。根据AV-Test反病毒测试有限责任公司统计,2022年增加了近9 699万个Window恶意代码,同时检测到Window潜在有害程序(potential unwanted application,PUA)增加约335万个。在各个计算机操作系统中,Window系统的恶意代码和PUA分布最多,其次是安卓系统(https://portal.av-atlas.org/malware)。近年来恶意代码的数量急剧增长,因此,如何由已知的恶意代码样本对未知的恶意代码样本准确分类是当前研究的重要问题。
目前较为广泛的恶意代码检测方法主要有静态检测方法和动态检测方法:静态检测方法是利用恶意代码样本的静态特征,即样本内容和结构相关的特征实现恶意代码检测;动态检测方法则是通过提取样本在运行过程中的动态行为特征来实现恶意代码检测[2]。
本文提出了一种基于静态检测方法的MGFG模型,通过MGFG模型实现对恶意代码的分类检测。MGFG模型首先将恶意代码样本转换成灰度图像,接下来采用二维离散傅里叶变换(two-dimensional discrete Fourier transform,2D-DFT) 将灰度图像转换为频谱图。通过对频谱图的高频信息和低频信息处理达到恶意代码灰度图像去噪效果,并通过gist方法获取图像纹理的全局特征,最后完成恶意代码家族的分类。本文所提出的方法能够有效提高“加壳”“混淆”后的恶意代码分类问题的准确性。
1 相关工作目前已有大量关于将恶意代码与图像结合实现样本分类的研究,Nataraj等[3]借助同一家族的恶意代码具有相似的代码结构等特点将恶意代码PE文件转化为灰度图像,开创了恶意代码与图像分析结合的先河。Xiao等[4]借助彩色标签框来标记恶意代码PE文件的头部和节信息,使用VGG16提取特征后在支持向量机中分类。利用彩色标签框的方法提高了分类的准确率,但是由于恶意代码存在打包后会重写,从而混淆PE文件的头字段的问题,因此这种方法不能很好地描述打包后的恶意代码。受Xiao等启发,Shaukat等[5]提出将恶意代码二进制序列直接转化成彩色图像,然后使用深度学习与机器学习的方法实现恶意代码特征提取和分类,这种方法不涉及逆向工程方法,不仅提高了分类准确率,还缩短了分类时间。但是这种将恶意代码转化为彩色图像的方法对于打包的恶意代码适应性差,而灰色图像可以很好地处理打包的恶意代码。Azab等[6]利用短时傅里叶变换将恶意代码生成频谱图,再利用神经网络将恶意代码生成的频谱图进行分类,找到对应的家族,该方法使用图像处理技术克服了静态分析中多态性和打包的规避性技术,提高了分类准确率。Qiao等[7]提出了一种建立在字节词向量和多层感知机的恶意代码可视化分类方法,先将恶意代码文本化,再使用Word2Vec为每个字节计算词向量,再按照升序生成一个矩阵,将此矩阵归一化生成灰度图像,最后进行分类。Word2Vec计算的词向量具有很好的表示语料库语言特征的能力,提高了恶意代码分类准确率。陈小寒等[8]提出一种先利用循环神经网络对恶意代码提取操作码处理,再借助局部敏感哈希方法把原始编码和预测编码结合得到特征图,最后用卷积神经网络进行分类。由于借助循环神经网络得到的预测序列可以使信息间的关联性提升,从而增强了抗干扰能力。
虽然研究人员将恶意代码分类问题转化为图像处理的问题在多数恶意代码分类任务中获得了成功,但是对于增加了干扰信息的恶意代码家族并不能获得较好的分类结果。因此,基于上述情况,本文提出了MGFG模型,能够更好地解决此类问题。
2 MGFG模型MGFG模型对恶意代码的检测过程如图 1所示。MGFG模型主要由样本预处理、特征提取和样本分类三部分构成。将恶意代码分为测试数据和训练数据,然后将数据进行样本预处理,以便提取恶意代码PE文件的二进制串,再使用可视化算法将二进制文件可视化得到恶意代码灰度图像。在MGFG模型的特征提取阶段,首先将恶意代码灰度图像进行二维离散傅里叶变换,将图像时域转化为频域并对图像进行处理,接着再利用二维离散傅里叶逆变换,最终实现灰度图像去噪的效果。然后使用gist特征提取的方法得到恶意代码的特征,最后将获得的图像特征进行样本分类。
![]() |
图 1 MGFG的分类方法流程图 Fig. 1 The flow chart of the MGFG classification method |
首先读取恶意代码PE文件的二进制串,将每8位二进制数转换成1位十进制的整数,整数在0到255范围中恰巧对应一个灰度值,并按照文件的大小设定图像宽度,从而生成一幅灰度图像[9-10]。如图 2所示为恶意代码PE文件被转换成灰度图像过程。
![]() |
图 2 恶意代码二进制转换为灰度图像示意图 Fig. 2 Schematic diagrams of binary conversion of malware to gray images |
如图 3所示, 图 3(a)到3(f)是分别从恶意代码家族backdoor_agent_new、allaple、adLoad、agent、ageneric、WBNA中选取的样本灰度图像示例,从灰度图像来看,属于同一个家族的恶意代码样本在纹理结构上相似,而不同家族的样本具有差异性,但是随着恶意代码压缩或加密等技术的增强,使得相同恶意代码家族的样本之间存在较大的差异,如图 3(d)、(e)、(f)家族存在较大的差异,给恶意代码图像分类造成困难。
![]() |
图 3 恶意代码家族灰度图像的示例 Fig. 3 Example of a gray image of the malware family |
离散傅里叶变换(discrete Fourier transform,DFT)是一种信号处理技术,经常被用于图像处理、音频处理、通信系统等相关领域,它可以把信号由时域转换成频域,进而研究信号的频谱变化规律。假设f(x)是离散变量x的函数,一维离散函数f(x)的傅里叶变换和逆傅里叶变换公式为[11]
$ F(u)=\sum\limits_{x=0}^{N-1} f(x) \mathrm{e}^{-j 2 \pi u x / N}, $ | (1) |
$ f(x)=\frac{1}{N} \sum\limits_{u=0}^{N-1} F(u) \mathrm{e}^{j 2 \pi u x / N}, $ | (2) |
其中:x, u∈{0, 1, …, N-1},N表示频率采样的样本数,u为离散频率变量。
本文提出的MGFG模型是基于2D-DFT特征提取的方法。2D-DFT通常被应用在图像处理领域,可将图像从时域转换到频域,从而得到图像的频谱图。频谱图中的高频或者低频代表图像灰度的清晰度。假设一幅恶意代码灰度图像f(x, y)的大小为M×N,f(x, y)的2D-DFT是F(u, v),定义为公式(3),对应地,二维离散傅里叶逆变换定义为公式(4),
$ F(u, v)=\sum\limits_{x=0}^{M-1} \sum\limits_{y=0}^{N-1} f(x, y) \mathrm{e}^{-j 2 \pi(u x / M+v y / N)}, $ | (3) |
$ f(x, y)=\frac{1}{M N} \sum\limits_{u=0}^{M-1} \sum\limits_{v=0}^{N-1} F(u, v) \mathrm{e}^{j 2 \pi(u x / M+v y / N)}, $ | (4) |
其中:u, x∈{0, 1, …, M-1};v, y∈{0, 1, …, N-1}。
恶意代码文件是由二进制序列组成的,将恶意代码转化成灰度图像的方法可以直观感受到恶意代码的特征信息。对于一幅恶意代码灰度图像,能量主要集中在灰度变化比较缓慢的低频区域,只有小部分能量集中在图像边缘的高频区域,灰度变化缓慢的区域往往用低频的正弦信号近似,而灰度变换较大的边缘区域则需要用高频正弦信号近似。因此,根据这个特点,本文提出了将傅里叶变换应用到恶意代码检测领域的思想,通过2D-DFT把灰度变换比较大的边缘地带的高频正弦波的频率去除,然后进行逆变换,就会达到恶意代码图像去噪的目的。如图 4所示为恶意代码家族WBNA的一个样本,将其转化成为灰度图像后可以发现图像中含有丰富的图形特征,这些增加了“混淆”技术的图形特征会对恶意代码分类造成干扰,因此通过2D-DFT可以对图形特征去噪,有利于恶意代码家族分类。
![]() |
图 4 WBNA家族样本2D-DFT的示例 Fig. 4 Example of 2D-DFT of WBNA family samples |
2D-DFT对恶意代码灰度图像处理过程如图 5所示。其中图 5(a)中恶意代码灰度图像f(x, y)的左上角是零频率成分f(0, 0),低频位于图像的四个角上,高频位于图像的中央。根据傅里叶变换的周期性和平移性[12],对图像进行中心移位变换,即对输入的恶意代码灰度图像乘以(-1)x+y,使得傅里叶变换F(u, v)的原点从频率坐标(0, 0)的位置移动到中心位置(M/2, N/2)处,将图像能量集中在频谱图中央的位置,实现将恶意代码灰度图像从时域到频域的转化,得到图 5(b),所得到新的恶意代码灰度图像低频成分位于中间,高频成分位于四个角落,并且中央部分的变化幅度大,由内向外的幅度逐渐衰减。接着根据傅里叶变换的周期性和平移性,利用2D-DFT逆变换抵消中心移位的作用,主要工作是对傅里叶逆变换的结果乘以(-1)x+y,或者直接对2D-DFT逆变换的结果取绝对值,使全部灰度值为正值。通过逆中心移位变换将图像零频率成分由频谱中心位置移动到图像左上角位置,最终得到2D-DFT变化之后的图像5(c)。通过2D-DFT实现恶意代码图像去噪的效果,对后面恶意代码分析具有重要的影响。
![]() |
图 5 MGFG的2D-DFT过程图 Fig. 5 The flow chart of 2D-DFT in MGFG |
图 6展示了恶意代码agent家族和ageneric家族经过2D-DFT之后的图像。图 6(a),(b)中左边为原图,右边为2D-DFT图。在两个恶意代码样本的灰度图像中均含有明显的图形信息,其对恶意代码的分类造成干扰,通过2D-DFT使得图形中边缘和细节等高频成分弱化,得到去噪之后的图像并提取有利的特征进行恶意代码家族分类。
![]() |
图 6 恶意代码图像与2D-DFT变化之后图像的示例 Fig. 6 Example of comparison of malware images with 2D-DFT images |
离散傅里叶变换的目的是对频率进行过滤,本文提出的MGFG模型的2D-DFT可以修改频率以达到对恶意代码灰度图像去噪的效果。MGFG模型对图像特征提取算法如下。
输入:恶意代码灰度图像数据集G。
输出:2D-DFT图像数据集F。
Step 1 读取灰度图像的每个样本Gl={G1, G2, …, Gn};
Step 2 计算样本Gi经2D-DFT生成的频谱图Fi,Fi是一个浮点型的复数数组;
Step 3 将频谱Fi的低频从左上角原点位置移动到频谱中心位置,得到Ci;
Step 4 将复数数组转换到[0, 256]灰度区间内,取绝对值得到振幅Ri;
Step 5 将零频率分量还原为Zi;
Step 6 计算二维傅里叶逆变换,变换后的结果还是一个复数数组Pi;
Step 7 将复数数组转换到[0, 256]灰度区间内,取绝对值得到振幅Ki;
Step 8 2D-DFT图像Fl={F1, F2, …, Fn}。
3 实验与分析 3.1 实验数据集为了验证MGFG模型的可靠性和准确性,本文在三个数据集上进行了实验。第一个数据集是文献[3]中使用的数据集,命名为NVDA数据集,包含32个恶意代码家族,样本数量为11 011个;第二个数据集是CNCert提供的数据集,命名为CVDB数据集,共有10个恶意代码家族,样本数为14 211个;第三个数据集是不含恶意信息的良性数据集,命名为BenignDC数据集,总共选取了13 496个良性样本。
3.2 实验设计实验中,将本文提出的MGFG模型与文献[3]使用的模型进行对比。其中MGFG模型按照本文算法提取恶意代码灰度图像特征,文献[3]是将恶意代码转化成灰度图像后直接使用gist算法[13]来提取纹理特征,两种算法最终都得到512维的特征向量,最后使用支持向量机(support vector machine,SVM)、K最近邻(K-nearest neighbor,KNN)和随机森林(random forest,RF)等机器学习分类算法进行分类。在实验中,SVM算法的核函数选择多项式核函数,KNN算法中K值为5,RF算法中决策树的数量为50。同时,实验还将MGFG模型与两种深度学习的分类算法进行比较,分别是文献[14]和文献[15]。在文献[14]中,首先将恶意代码转化成灰度图像,然后使用卷积神经网络(convolutional neural networks,CNN)进行比较,其中CNN主要由两部分组成,先将灰度图像设置成128*128*1的相同大小,输入到CNN模型中,然后在CNN模型中实现分类。在文献[15]中,将恶意代码转换成马尔可夫图像,使用深度卷积神经网络(deep convolutional neural networks,DCNN)实现恶意代码的检测,先将马尔科夫图像设置像素为256*256相同的大小,再将其放入DCNN中提取相关特征并分类,其中DCNN包括13个卷积层、5个池化层和1个全连接层,其输出维度为1 024。
在实验评估方面,本文采用准确率(accuracy)、精确率(precision)、召回率(recall)和F1值对分类效果评估检测。
3.3 实验结果分析通过三个实验对MGFG模型的有效性进行验证,分别在NVDA数据集和CVDB数据集进行验证,并对MGFG模型稳定性进行验证。
3.3.1 在NVDA数据集上的实验对比为验证MGFG模型的有效性,在NVDA数据集上将MGFG模型、文献[3]、文献[14]以及文献[15]四种算法进行比较。为了保证实验结果的可靠性,使用十折交叉验证并重复分类算法100次,最后计算平均准确率、精确率、召回率和F1值得出实验结果。
表 1展示了在NVDA数据集上MGFG模型与文献[3]中基于机器学习的恶意代码分类方法进行比较。从表 1中可以看出,MGFG模型在恶意代码分类方面表现出更好的分类性能,其中使用RF分类算法的准确率最高,可达到97.7%。实验结果证明,对于三种分类器而言,MGFG模型性能相比文献[3]方法均有所提高,其中提高最多的是SVM算法,准确率提高了6.3%,其次是KNN算法,准确率提高了4.2%,RF算法准确率提高了2.6%。
![]() |
表 1 在NVDA数据集上的分类结果 Tab. 1 Classification results on the NVDA dataset |
另外,为了进一步验证MGFG模型的有效性,在NVDA数据集上将MGFG模型与文献[14]、文献[15]等基于深度学习的分类方法和RF、KNN、SVM等基于机器学习的恶意代码分类方法进行比较,实验结果证明,MGFG模型相比深度学习的恶意代码分类方法也表现出比较好的性能。其中在MGFG模型的分类算法中,使用RF算法分类准确率最高,为97.7%,其次是文献[15]使用DCNN的分类方法,准确率为96.1%,最后是文献[14]使用DCNN的分类方法,准确率为95.6%。
图 7显示了采用KNN分类器时,文献[3]和MGFG的混淆矩阵,NVDA数据集中有32个家族(如表 2所示,对每一个家族进行编号)。从图中得知文献[3]方法中有16个家族没有被正确分类,而使用MGFG模型仅有14个家族没有被正确分类,其他家族分类均无错误。
![]() |
图 7 NVDA数据集的混淆矩阵 Fig. 7 Confusion matrix of the NVDA dataset |
![]() |
表 2 NVDA数据集家族与其对应编号 Tab. 2 NVDA dataset families with their corresponding numbers |
其次从混淆矩阵中可以看出标签9家族benign_ new和标签28家族virut_a_new的分类准确率极低,使用文献[3]的方法准确率仅仅达到19%和26%,而使用MGFG模型之后这两个家族被正确分类的样本达到33%和58%,分别提高了14%和32%。实验结果证明在NVDA数据集中,本文提出的MGFG模型通过对恶意代码进行2D-DFT处理来达到其过滤和去噪的效果,更有助于提高分类准确率。
3.3.2 在CVDB数据集上的对比实验表 3结果表明,在CVDB数据集中采用了RF算法的MGFG算法分类效果最好,准确率达到93.5%,其次是KNN分类和SVM分类,准确率分别是90.4%和90.1%。
![]() |
表 3 在CVDB数据集的分类结果 Tab. 3 Classification results on the CVDB dataset |
图 8展示了文献[3]方法和MGFG模型采用KNN分类器的混淆矩阵,结果表明,采用了MGFG模型后恶意代码分类准确率有所提升。从图中可以看出ageneric家族的分类精度最低,可能的原因是这个家族的样本数量比较少,导致分类精度最低。
![]() |
图 8 CVDB数据集的混淆矩阵 Fig. 8 Confusion matrix of the CVDB dataset |
为验证模型的有效性,本文将MGFG模型分别使用KNN、RF、SVM、Resnet-50以及VGG16这五种分类方法进行比较,得到图 9在数据集NVDA和数据集CVDB的整体运行结果。由图 9可知,MGFG模型在两个数据集上的准确率相差不大,但是在NVDA数据集上的整体运行准确率略高于CVDB数据集。同时,对于分类算法而言,MGFG模型与RF算法能得到更高的准确率,在数据集NVDA和数据集CVDB上的准确率分别达到97.7%和93.5%。同时,使用Resnet-50分类算法准确率最低,准确率分别为87.4%和85.6%。
![]() |
图 9 不同数据集的实验结果 Fig. 9 Experiment results in different datasets |
本文采用了二分类实验来进一步验证MGFG模型的有效性和适用性。将NVDA数据集和CVDB数据集作为恶意数据集,共27 067个样本,BenignDC数据集作为良性数据集,样本数为13 496个,实验结果见表 4。实验结果表明MGFG模型与文献[3]方法的性能基本持平,可获得非常好的分类结果。
![]() |
表 4 MGFG稳定性检验结果 Tab. 4 Results of MGFG stability test |
本文提出了一种基于2D-DFT的恶意代码特征提取的框架MGFG。在恶意代码分类检测中,虽然MGFG模型在准确率方面优于其他文献的方法,但是对于被压缩或者加密了的样本无法获得令人满意的结果,这将是未来工作中需要进一步研究的问题。
[1] |
杨铭, 张健. 基于图像识别的恶意软件静态检测模型[J]. 信息网络安全, 2021, 21(10): 25-32. YANG M, ZHANG J. Static detection model of malware based on image recognition[J]. Netinfo security, 2021, 21(10): 25-32. ( ![]() |
[2] |
吕杨琦, 王张宜, 杨秀璋, 等. 基于特征功能函数的APT样本分类方法[J]. 郑州大学学报(理学版), 2023, 55(2): 10-17. LYU Y Q, WANG Z Y, YANG X Z, et al. A novel APT malware classification method based on feature function code[J]. Journal of Zhengzhou university (natural science edition), 2023, 55(2): 10-17. DOI:10.13705/j.issn.1671-6841.2021417 ( ![]() |
[3] |
NATARAJ L, KARTHIKEYAN S, JACOB G, et al. Malware images: visualization and automatic classification[C]//The 8th International Symposium on Visualization for Cyber Security. New York: ACM Press, 2011: 21-29.
( ![]() |
[4] |
XIAO M, GUO C, SHEN G W, et al. Image-based malware classification using section distribution information[J]. Computers & security, 2021, 110: 102420. ( ![]() |
[5] |
SHAUKAT K, LUO S H, VARADHARAJAN V. A novel deep learning-based approach for malware detection[J]. Engineering applications of artificial intelligence, 2023, 122: 106030. DOI:10.1016/j.engappai.2023.106030 ( ![]() |
[6] |
AZAB A, KHASAWNEH M. MSIC: malware spectrogram image classification[J]. IEEE access, 2007, 8: 102007-102021. ( ![]() |
[7] |
QIAO Y C, ZHANG B, ZHANG W Z. Malware classification method based on word vector of bytes and multilayer perception[C]//ICC 2020-2020 IEEE International Conference on Communications (ICC). Piscataway: IEEE Press, 2020: 1-6.
( ![]() |
[8] |
陈小寒, 魏书宁, 覃正泽. 基于深度学习可视化的恶意软件家族分类[J]. 计算机工程与应用, 2021, 57(22): 131-138. CHEN X H, WEI S N, QIN Z Z. Malware family classification based on deep learning visualization[J]. Computer engineering and applications, 2021, 57(22): 131-138. ( ![]() |
[9] |
DENG H X, GUO C, SHEN G W, et al. MCTVD: a malware classification method based on three-channel visualization and deep learning[J]. Computers & security, 2023, 126: 103084. ( ![]() |
[10] |
CONTI G, BRATUS S, SHUBINAINA A. A visual study of primitive binary fragment[R]. Las Vegas: Black Hat, 2011.
( ![]() |
[11] |
朱秀昌, 刘峰, 胡栋. 数字图像处理与图像通信[M]. 北京: 北京邮电大学出版社, 2002: 58-59. ZHU X C, LIU F, HU D. Digital Image Processing and Image Communication[M]. Beijing: Beijing University of Posts and Telecommunications Press, 2002: 58-59. ( ![]() |
[12] |
禹晶, 孙卫东, 肖创柏. 数字图像处理[M]. 北京: 机械工业出版社, 2015: 78-101. YU J, SUN W D, XIAO C B. Digital Image Processing[M]. Beijing: China Machine Press, 2015: 78-101. ( ![]() |
[13] |
TORRALBA, MURPHY, FREEMAN, et al. Context-based vision system for place and object recognition[C]//Proceedings Ninth IEEE International Conference on Computer Vision. Piscataway: IEEE Press, 2008.
( ![]() |
[14] |
KABANGA E K, KIM C H. Malware images classification using convolutional neural network[J]. Journal of computer and communications, 2018, 6(1): 153-158. ( ![]() |
[15] |
YUAN B G, WANG J F, LIU D, et al. Byte-level malware classification based on Markov images and deep learning[J]. Computers & security, 2020, 92: 101740. ( ![]() |