APP下载

基于Ghost-DenseNet-SE的恶意代码检测方法

2021-12-22怡,李

空军工程大学学报 2021年5期
关键词:准确率卷积家族

李 怡,李 进

(空军工程大学防空反导学院,西安,710051)

近年来,互联网上的恶意代码数量呈井喷式增长,已成为互联网安全的主要威胁之一。《2020年中国网络安全报告》[1]显示:2020年瑞星“云安全”系统共截获病毒样本总量1.48亿个,病毒感染次数3.52亿次,病毒总体数比2019年同期上涨43.71%。与此同时,为了躲避杀毒软件的检测,攻击者采用各种混淆技术对恶意代码进行变种,使其隐蔽性大大增强,安全检测难度加大,因此对恶意代码及其变种进行高效检测是互联网安全目前面临的巨大挑战。

恶意代码检测主要分为静态检测和动态检测。静态检测[2]指不实际运行样本,通过反编译工具将恶意代码反汇编为可读的二进制源代码,从中提取操作码和API等静态特征对其进行分析。动态检测[3]指在安全可控的虚拟环境中运行样本,根据恶意代码对操作系统的资源调度行为进行分析。然而这些传统方法需要依赖大量人工特征工程,比较耗时,也无法有效检测恶意代码变体。近年来,研究人员在传统检测方法的基础上,将恶意代码二进制文件可视化为图像,然后结合深度学习对恶意代码家族进行分类。卷积神经网络[4]是深度学习中最具代表性的技术之一,近年来在自然语言处理、文本处理和图像识别等领域发展迅速,它可以自动学习输入数据的特征而不需要人工参与。Cui等人[5]提出了一种基于CNN的恶意软件变体检测模型,将恶意代码转化为灰度图,并使用BAT算法解决了恶意代码样本家族数量不平衡的问题。王国栋等人[6]提出基于CNN-BiLSTM的恶意代码家族检测模型,该模型可以从恶意代码灰度图中自动学习特征,大大降低了人工提取特征的成本,同时BiLSTM可以关注更多的局部和全局特征。但随着恶意代码变种越来越多样化,浅层卷积神经网络已不足以提取复杂的纹理特征,于是一些深层卷积神经网络被用于恶意代码家族检测中,如:Alexnet[7]、VGGNet[8]、GoogleNet[9]和ResNet[10]等,这些网络结构通过不断加深网络深度和宽度,使其能够提取更深层次的特征。蒋考林等人[11]提出一种基于多通道图像特征和AlexNet神经网络的恶意代码检测方法,多通道图像比二阶灰度图能体现更多的纹理特征。王博等人[12]利用VGGNet生成恶意样本分类模型,对恶意代码RGB图像进行分类检测,识别准确率有一定提升。不断加深网络深度,一定程度上可以提高恶意代码识别效率,但同时也会引起模型梯度爆炸,参数量剧增等问题,需要耗费大量的计算开销。

针对上述现有恶意代码检测模型识别率不高且模型参数过大的问题,本文提出一种基于Ghost-DenseNet-SE的恶意代码家族检测方法。同时,为进一步提高对恶意代码家族准确分类的能力,在DenseNet中引入通道域注意力机制,得到特征更显著的特征图。通道注意力机制的加入也会增加模型参数量,并使用Ghost模块替换Dense Block的卷积层,以达到保证模型检测精度的前提下减少模型参数,最终实现恶意代码家族检测模型的轻量化,使其能更好地部署在资源有限的平台上。

1 基础理论

1.1 密集连接网络DenseNet

DenseNet是Huang G[13]等人提出的一种具有密集连接的卷积神经网络。该网络结构主要由稠密块 (Dense Block)和过渡层(Transition Layer)组成,模型结构见图1。DenseNet网络结构中包含了多个Dense Block模块,其中每个Dense Block由BN-Relu-Conv(3×3)组成;每两个相邻的Dense block之间的Transition Layer由BN-Relu-Conv(1×1)(filternum:m)-doupout-Pooling(2×2)组成。

图1 DenseNet结构

1.1.1 稠密块(Dense Block)

在Dense Block模块中,任意两层之间有着密切的联系,其内部结构见图2,将所有层的特征进行相互拼接,即对任意一层之前的所有层的输出结果进行叠加作为该层的输入,然后把该层的结果和之前层的输出结果作为下一层的输入传输下去。

图2 Dense Block内部结构

对于L层网络而言,第l层的输入由式(1)得出:

xl=H([x0,x1,…,xl-1])

(1)

式中:x0,x1,…,xl-1分别表示第0层到第l-1层所对应的特征图;

[x0,x1,…,xl-1]表示对第0层到第l-1层的所对应的特征图进行级联;

Hl(•)表示包含BN,Relu和Conv 3种操作的复合函数。

在Dense Block中每个复合函数Hl(•)可以输出k个特征图,则第l层会输入k0+k(l-1)特征图,其中k0表示输入层的的通道数channel。k也称为网络的生长率(groeth rate),它是一个超参数,用来避免网络增长过快。

1.1.2 过渡层

过渡层用来连接两个相邻的密集块,通过池化来降低特征图的大小,让模型变得更紧凑。为了进一步压缩模型尺寸,引入压缩因子θ,取值范围为(0,1]。当密集块输出m个特征图时,过渡层通过卷积可以产生θm个特征。θ<1时,特征图数目压缩为原来的θ倍;θ=1时,不压缩。

1.2 通道域注意力机制(SeNet)

通道域注意力机制常被用于卷积神经网络中,对图像中的重要信息部分进行可视化[14]。该机制的核心架构单元为Squeeze-and-Excitation(SE) Block[15],内部结构如图3所示。首先使用Squeeze(挤压)操作作用于经过卷积池化操作的特征图,使其在通道上得到特征图的全局信息;然后使用Excitation(激励)操作来获得通道之间的依懒性,得到不同通道的权重,该操作采用Sigmoid(门函数);最后对最终特征图进行Scale操作。

图3 Squeeze-and-Excitation Block内部结构

Squeeze操作是对图像进行全局平均池化操作,即对得到的每个特征图进行空间维度上的压缩,结果得到该层C个特征图的全局信息。见式(2):

(2)

Excitation操作是对Squeeze得到的1×1×C征图先进行全连接层操作,在全连接层操作中引入缩放因子(reduction ratio)来减少通道数量从而减少计算量;再将其结果经过Sigmoid(门函数)得到C个特征图的权重,通过权重来表示通道之间的依赖程度,最终使得神经网络能够自主学习到不同通道的关键信息,见式(3):

x=Fex(z,W)=σ(g(z,W))=σ(W2δ(W1z))

(3)

Scale操作是将原特征通道值与Excitation相乘得到的不同权重,从而加强对原特征图的关键通道域的注意,得到新特征图并输入到下一层,如式(4)所示:

XC=Fscale(uC,sC)=sC·uC

(4)

1.3 Ghost模块

Ghost模块是Han等人从特征图的冗余问题出发,提出的一种轻量化卷积模块[16]。该卷积模块通过一系列线性操作来生成更多的特征映射,在不改变输出特征图大小的情况下,既保证了模型的精度,又减少了模型参数,达到了网络模型轻量化的效果。

Ghost模块分两步进行,内部结构如图4所示。第1步先通过普通卷积生成少量真实的冗余特征图Y;第2步对第1步生成的少量真实冗余特征图进行线性变换,获得另一部分冗余特征图Y′;最后将两部分冗余特征图拼接在一起,组成完整的冗余特征图。

图4 Ghost模块内部结构

2 基于Ghost-Densenet-SE的恶意代码家族检测模型

2.1 恶意代码可视化

恶意代码二进制位字符串可以分为多个长度为8 bit的子字符串,这些子字符串中的每一位都可以被视为一个像素,因为这8 bit可以解释为0~255范围内的无符号整数,其中0为黑色,255为白色。选取连续的3个子字符串,分别对应于彩色图像中的R、G、B3个通道,即第1个8 bit字符串转化为R通道的值,第2个8 bit字符串转化为G通道的值,第3个8 bit字符串转化为B通道的值;重复这一操作使得所有数据都被选完(最末段端数据量不足3字符串的,用0补足)。利用该原理,二进制恶意代码便转化为十进制数字的一维向量,固定256为行宽向量,高度根据文件大小变化。最终,恶意代码被解释为RGB图像,具体流程如图5所示。

图5 恶意代码可视化过程

2.2 模型构建

本文提出的基于Ghost-Densenet-SeNet的恶意代码家族检测模型,首先利用恶意代码可视化技术将恶意代码转化为RGB图像,然后用提出的模型对图像数据集进行训练,最终实现对恶意代码家族的分类识别。本文使用密集连接网络DenseNet作为主干网络,既缓解了传统卷积神经网络因不断加深网络深度和宽度而带来的梯度消失和参数量剧增问题;同时鼓励特征复用,能够提取恶意代码图像更丰富的特征。然后在DenseNet中引入通道域注意力机制,得到特征更显著的特征图,进一步提高对恶意代码家族准确分类的能力。最后使用Ghost模块去重构Dense Block的卷积层以减少模型参数,使得模型能更好地部署在资源有限的移动端。

在将图像数据集输入到模型中时,先做一次卷积操作,然后进入第1个Dense Block,一共使用了3个Dense Block。每2个Dense Block之间连接1个Transition Layer,共2个Transition Layer。在最后一个Dense Block之后引入SE,得到特征更显著的特征图,SE中共两个全连接层,在第1个全连接层中引入缩放因子ratio来减少通道数,具体数值通过实验调优来设置。为减少因引入SE而增加的模型参数,使用由1个点卷积和1个5×5的通道卷积组成的Ghost模块替换除第1层卷积之外,所有Dense Block中的3×3标准卷积。最后在SE后连接1个全局平均弛化和1个有25个神经元的全连接层,以实现对恶意代码家族的分类。

本文的恶意代码家族检测模型训练与检测过程相关算法如表1所示。

表1 恶意代码家族检测模型训练与检测过程相关算法

3 实验结果与分析

3.1 数据集

本文选取公开数据集Malimg,此数据集包括25个不同家族的恶意样本,共9 339个,具体样本种类和数量分布如图6所示。

图6 Malimg恶意代码样本种类和数量分布

3.2 数据预处理

卷积神经网络要求输入的图像大小要相同,而不同大小的恶意代码二进制可执行文件转化成的RGB图像尺寸不同,因此在输入神经网络之前需要先将图像处理为大小一致的图片。本文所使用的模型要求输入的RGB图像尺寸为224×224,为了确保图像纹理信息的完整性,本文先对图像的边界部分使用0 byte填充使其成为正方形,然后等比例缩放至224×224大小。图7显示了部分恶意代码家族二进制文件预处理后的图像示例,由上到下依次是:Adialer.C家族,VB.AT家族和Skintrim.N家族。从这些图像示例中可以看出,同一家族的恶意代码在图像纹理性上具有相似性,而不同家族的恶意代码在图像纹理性上具有差异性。

图7 部分恶意代码家族图像

3.3 评价指标

在实验过程中,本文使用以下5个评价指标对本文提出的恶意代码检测模型进行评估:A为准确率(Accuracy),P为精确率(Precision),R为召回率(Recall),F1为F1-score,L为损失率(Loss)。

TP为正类样本被模型预测为正类的比例;TN为负类样本被模型预测为负类的比例;FP为负类样本被模型预测为正类的比例;FN为正类样本被模型预测为负类的比例。

(5)

(6)

(7)

(8)

(9)

3.4 对比分析

本次实验在Centos7系统环境下进行,硬件配置:Intel(R) Xeon(R) Silver 4110 CPU @ 2.10 GH,GPU型号为 Quadro RTX 5000/Pcle/SSE2,CUDA 11.0。软件平台为PyCharm,使用Phthon3.8编程,训练与测试框架为深度学习开源框架Keras2.4.3和 TensorFlow2.4.1。

3.4.1 压缩比影响实验

本实验将恶意代码图像数据集按照8∶1∶1的比例随机划分为训练集、验证集和测试集。Epoch设置为100,Batch Size设置为32。实验模型采用加入通道域注意力机制的密集连接网络DenseNet,其学习率、压缩比、损失函数等参数的设置都会影响恶意代码检测的精度。模型采取交叉熵损失函数来衡量真实值与预测值之间的差异,采用Adam优化器对网络进行优化,学习率选用经验值0.001,最终通过softmax函数进行分类。通道域注意力机制中的超参数ratio通过实验获取最合适的值。压缩比ratio对恶意代码检测性能的影响如表2所示:

表2 压缩比r对检测结果的影响

经上述实验,通过权衡模型的准确率和参数量,最终将超参数ratio设置为4。本文提出的方法实验结果如图8所示,随着测试次数的增加,精确度和交叉熵损失值会收敛到一定值,模型逐渐收敛、平稳。在这100次迭代过程中,选取测试集中准确率最高的值为模型的准确率,相应的损失值即为该模型的损失值,本模型的准确率可达到99.14%。

图8 Ghost-DenseNet-SE检测模型实验结果

3.4.2 模型性能对比

为了进一步验证本文所提的加入通道域注意力机制的DenseNet模型对恶意代码家族有更高的识别准确率,将其与文献[11]中的AlexNet检测模型与文献[12]中的VGGNet检测模型进行比较。采用准确率、召回率、F1-score和损失值等作为评价指标,实验结果如表3、图9所示。

表3 各模型实验结果对比

图9 各模型实验结果对比

从上述表和图可以看出,在实验数据不变的情况下,结合通道域注意力机制和密集连接网络DenseNet的恶意代码家族检测模型效果最好,准确率高达99.17%,对比文献[11]中的AlexNet和文献[12]中的VGGNet分别提高了1.37%和3.01%,召回率和F1-score也均高于文献中的两种模型,模型收敛速度也更加迅速;同时DenseNet-SE的损失值也最低,表明该模型的检测结果与真实值更接近。在没有加入注意力机制之前,仅采用DenseNet,准确率也高于其余两种模型,这是由于Dense Block采用密集连接方式,使所有层之间的特征都相互联系,加强了特征传播,因此DenseNet网络对恶意代码图像特征的提取能力更强。在DenseNet中加入注意力机制后,准确率提高了0.97%,说明该机制为通道分配不同的权重,能够得到信息更显著的特征通道。因此DenseNet-SE模型在恶意代码家族识别准确率和收敛速度上有更优越的性能。

实验除对各模型准确率进行对比外,还对各模型参数进行对比。在提高恶意代码检测精度的前提下,减小模型体积也是优化模型的目标之一,模型参数对比结果如表4所示。

表4 各模型参数量对比

由上表可以清晰地看出,DenseNet网络对于AlexNet准确率虽只提高了0.4%,但是模型参数却大大减少,对比VGGNet模型参数量也明显减少。这还是由于DenseNet各层间密集连接的方式,传统CNN有L个连接,而DenseNet只有L(L+1)/2个连接。通道域注意力机制的引入,会导致模型参数量增加,在此基础上用轻量化Ghost模块重构Dense Block的卷积层,参数量减少了39%,模型体积得到了有效的压缩,同时准确率只下降了0.03%,几乎无损精度。结合轻量化Ghost卷积,密集连接网络DenseNet和通道域注意力机制SE的恶意代码家族检测模型最终综合性能优于其它检测模型,证明了本文所提方法的有效性。

4 结语

本文针对现有恶意代码家族检测模型存在识别准确率不高,且模型参数太大,难以在实际环境中运行等问题,提出一种基于Ghost-DenseNet-SE的恶意代码家族检测方法。将DenseNet作为主干网络,该网络对各层使用密集连接的方法,解决了由于加深网络带来的模型退化问题,减少了模型参数,又加强了特征传递。在提高模型准确率方面,同时探索了计算机视觉中的通道域注意力机制,发现该机制通过为特征通道分配不同的权重,能够对恶意代码RGB图像纹理特征的关键信息进行增强,进而提高原有模型的检测效果。在减少模型复杂度方面,使用轻量化Ghost模块对Dense Block的卷积层进行重构,减少了参数量,压缩了模型体积。实验结果表明,本文提出的方法在提高恶意代码家族检测精度的同时,又能减少参数量,降低模型复杂度,一定程度上解决了大批量恶意代码检测过程中的资源浪费问题。但本文方法还存在一定不足,模型训练时内存开销太大,后续工作将进一步研究保证模型检测精度与计算参数的同时,较少的模型内存开销使其能更好地部署在资源有限的移动端上。

猜你喜欢

准确率卷积家族
基于全卷积神经网络的猪背膘厚快速准确测定
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
多层螺旋CT技术诊断急性阑尾炎的效果及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
颈椎病患者使用X线平片和CT影像诊断的临床准确率比照观察
《小偷家族》
皿字家族