1. 引言
恶意软件是旨在损害或破坏计算机系统的软件,构成了数字化世界中对隐私和数据安全的严峻威胁。通过窃取、加密或删除用户数据,篡改或控制计算机的核心功能,以及在未经授权或用户不知情的情况下监视计算机活动,恶意软件可以泄露包括个人资料、财务记录、医疗记录、密码等敏感信息。这种泄露不仅威胁到个人隐私保护,也对数据安全构成了重大挑战。更加严重的是,这些数据有可能被恶意的行为者所利用,实施更加精密和具有说服力的网络钓鱼或勒索行为。例如,2021年7月,卡西亚公司的VSA远程管理服务遭受零日漏洞攻击,导致数百万个文件被加密,并引发了史上最大规模的勒索软件攻击。同年11月,世界最大的域名注册商GoDaady的WordPress托管环境遭到入侵,导致多达120万WordPress托管客户的电子邮件地址泄露,增加了网络钓鱼攻击的风险。2022年3月,希尔兹医疗保健集团经历了一次数据泄露,攻击者获取了近240万名患者的敏感信息,包括姓名、保险信息和医疗信息,带来了身份盗用和医疗欺诈的风险。这些事件展现出现代网络威胁的不断演变和复杂性,同时也凸显了恶意软件检测和分类在保护敏感数据和确保隐私方面的重要性。当前的恶意软件分类方法,通常仅从单个恶意文件中提取特征进行分类检测,由于特征信息的单一性,导致检测模型的准确性受限。因此,研究有效的特征融合方法以分类恶意软件,不仅可以提高检测准确率,还能增强模型的泛化能力,为隐私保护和数据安全构筑更坚固的防线。
2. 相关工作
在恶意软件检测领域,传统方法主要通过特征工程为每个恶意软件手工构建特定的签名,并运用哈希匹配算法进行检测 [1] 。这一方法在快速识别已知恶意软件方面效果显著,然而,仅需微小变更的恶意软件便能轻易规避这种检测,尤其在恶意软件及其变种数量与类型爆炸性增长的背景下,此方法的准确率急剧下降。近年来,随着人工智能技术的飞速发展,国内外研究者开始尝试利用机器学习等先进技术自动提取恶意软件的特征信息,从而提升检测效率和准确率。当前,恶意软件检测方法大体可分为三类:基于静态分析、基于动态分析和基于可视化分析。
2.1. 静态分析
静态分析通过不运行软件程序的方式,分析可执行文件的结构、代码、API调用等特征,以判断其潜在恶意性。通过解密和分解数据文件或应用程序,静态分析将这些信息转化为特征向量,表征了文件的基本特征和格式信息。例如,Pechaz [2] 通过使用马尔可夫毯特征选择算法提取字节N-gram特征,并运用隐马尔可夫模型来检测和分类恶意软件。其他研究者如Yang [3] 通过提取PE文件中的图标,并应用图像相似度算法来识别恶意软件。Wadkar [4] 则提取了PE文件头部的54个静态特征,并采用支持向量机分类器进行识别。Gao等人 [5] 提出了一种创新的半监督迁移学习模型,该模型结合循环神经网络和XGBoost算法分别对字节特征和汇编特征进行分类,以提高检测准确性。
2.2. 动态分析
动态分析需要在安全且可控的环境中进行,通过监测恶意软件的行为、系统调用、网络通信等特征来评估其恶意性。这种分析方法的优势在于能够记录恶意行为,有效检测使用代码混淆技术编写的恶意软件,相较于静态分析更具健壮性 [6] 。例如,Ding等人 [7] 发现系统调用之间的依赖关系,并提取通用行为图以检测恶意软件。Zhong [8] 的研究则设计了一种多层次深度学习系统,利用树状结构来协调多个深度学习模型,从而提高了基于深度学习的恶意软件检测系统的效率。在树状结构中,每个深度学习模型都专注于学习某一类恶意软件的特定数据分布,所有深度学习模型相互协作以达成决策。Li等人 [9] 提出了一种动态恶意软件分析框架DMalNet,利用API名称和参数的语义信息生成API调用图,并结合图神经网络实现恶意软件检测。
2.3. 可视化分析
随着计算机视觉技术的进步,可视化分析方法已被应用于恶意软件的检测和分类。这种方法通过将恶意软件转换为图像,并利用图像的特征结合深度学习模型进行检测和分类,从而提高检测的准确性和鲁棒性。Nataraj等人 [10] 首先提出一种方法,将恶意软件二进制内容转换为灰度图像。在该方法中,恶意软件的每个字节被映射为一个像素点,其值范围从0到255,最终构成一个二维数组形式的灰度图像。Han等人 [11] 展示了如何利用可视化图像和熵图来检测新型恶意软件及其变种。Ni [12] 使用SimHash与双线性插值法,将操作码序列转换成图像进行恶意软件检测。Yuan等人 [13] 则基于字节转移概率矩阵将恶意软件二进制文件转换为马尔可夫图像,并采用卷积神经网络(CNN)进行分类。Hemalatha等人 [14] 提出的基于DenseNet的深度学习模型结合类平衡损失函数,解决了数据集类别不平衡问题,提高了分类的准确性和鲁棒性。Xiao等人 [15] 使用彩色标签框标记PE文件的各个段,并将其转换为CoLab图像用于恶意软件检测。Mallik [16] 提出了一种基于CNN和双向长短期记忆网络(BiLSTM)的恶意软件分类方法,通过数据增强技术平衡数据集,并结合VGG16和BiLSTM提取视觉和时序特征以分类恶意软件。Conti等人 [17] 将恶意软件二进制文件的不同特征图像融合为一个三通道的彩色图像,称为GEM图像,使用卷积孪生神经网络和Shallow-FS来实现从少量样本中学习和分类恶意软件。上述可视化分析方法中存在几个主要限制:(1) 特征提取来源于单个文件,限制了特征差异信息的丰富性;(2) 在特征融合图像相关工作中,忽视了通道权重对分类结果的影响。
3. 本文方法
本文方法的架构如图1所示,从Asm文件中提取操作码序列并转换为操作码熵图,同时从Byte文件中提取马尔可夫图像和灰度矩阵图像。这些单通道图像被融合为一个三通道的彩色图像,从而包含了丰富的特征信息,能够有效地揭示不同恶意软件家族样本之间的差异性。之后,该图像被输入到EfficientNetV2-S深度学习模型进行分类检测。
3.1. 图像转换
3.1.1. 操作码熵图
本文采用了一种创新的方法,按照一定长度将操作码序列分割,并对每个子序列的文本熵进行计算,以此生成单通道的操作码熵图。该方法不仅兼容二维CNN的输入要求,而且能够捕捉到操作码序列的细粒度信息,提高了对恶意软件行为特征的捕获能力。操作码熵图转换流程如图2所示,该过程不仅考虑了操作码的顺序执行特性,还重视了操作码之间的上下文关系,从而更加全面地揭示恶意软件的微妙差异和复杂行为模式,增强了恶意软件家族分类的准确性。

Figure 1. Architecture diagram of the classification method
图1. 分类方法架构图

Figure 2. Diagram of the opcode entropy image conversion process
图2. 操作码熵图转换流程图
如算法1所示,在提取操作码序列的过程中,本文方法专注于Asm文件中的text段,因其包含了程序的核心指令。首先,在x86指令集中手工筛选出能够真实反映恶意软件行为的操作码,并剔除了如“align”等无意义的操作码。之后根据序列切分长度和N-gram技术处理操作码序列,N-gram技术假设第m个词的出现概率仅与前m − 1个词相关,而与其它任何词都不相关。最终,计算每个操作码子序列的文本熵值,并将其绘制为折线图,计算公式如式(1)所示。
(1)
3.1.2. 马尔可夫图像
马尔可夫图像转换流程如图3所示,首先将恶意软件视为字节流
,并计算每个字节到其他字节的传输频率
和转移概率
,计算公式如式(3)和式(4):
(2)
(3)
(4)
通过归一化处理和映射操作,将字节转移概率矩阵转换马尔可夫图像,图像中每个像素点对应归一化后的转移概率值
,最终获得256 × 256的马尔可夫图像,计算公式如式(5)和式(6):
(5)
(6)
其中,
表示字节转移概率矩阵第m行所有元素。值得注意的是,BIG2015数据集Byte文件中形如“??”的字节,在实验中被统一处理为了“00”字节。

Figure 3. Diagram of the Markov image conversion process
图3. 马尔可夫图像转换流程图
3.1.3. 灰度矩阵图像
灰度矩阵图像转换流程如图4所示,将恶意软件二进制文件转换为灰度图像后,进一步离散化以降低灰度级别到128。通过计算特定角度和距离值的灰度共生矩阵(Gray-Level Co-occurrence Matrix, GLCM),形成4个包含灰度纹理和空间信息的128 × 128矩阵,进而拼接为256 × 256的灰度矩阵图像。

Figure 4. Diagram of the gray-scale matrix image conversion process
图4. 灰度矩阵图像转换流程图
3.2. 图像转换
在本文方法中,EfficientNetV2-S被选为分类模型,原因在于其在CNN中的卓越表现,特别是在准确率和处理速度之间的平衡方面。EfficientNetV2 [18] 是在原有EfficientNet的基础上进行架构优化得到的新型CNN,它继承并优化了原有模型的多方面特性,使其更适合于复杂的图像处理任务。具体地,EfficientNetV2引入了若干关键优化,显著提高了模型的效率和准确性。
首先,EfficientNetV2进行了网络结构的优化,通过调整层次的扩展和深度,实现了更高效的特征提取。这对于处理恶意软件的复杂特征尤为关键,因为这些特征通常涉及多层次、高维度的数据结构。其次,EfficientNetV2采用了更先进的训练策略,比如渐进式学习和自适应梯度裁剪,这些策略有效提升了模型的学习效率和泛化能力。最关键的是,EfficientNetV2集成了SE (Squeeze-and-Excitation)注意力机制模块,SE模块通过显著增强模型的通道注意力能力,能够对特征融合图像中的不同通道进行加权关注,从而更精确地捕捉和强调关键特征。这一点在恶意软件的可视化表示中极为重要,因为恶意软件的行为模式和特征往往隐藏在大量的数据之中,需要模型能够有效识别和放大这些细微的差异。
综上所述,EfficientNetV2的这些优化点不仅提高了模型的整体性能,更为本文中的特征融合和分类任务提供了强有力的支持。通过有效地利用EfficientNetV2的高效网络结构和SE模块,本文能够更准确地识别和分类恶意软件家族,从而在恶意软件检测领域取得显著的进步。
4. 实验与结果分析
4.1. 数据集

Table 1. Distribution of Microsoft BIG2015 datasets
表1. Microsoft BIG2015数据集分布情况
本文使用的数据集为微软在Kaggle比赛中发布BIG2015数据集,为确保安全性,所有样本的PE头部已被去除。它是恶意软件分类研究中的一个重要标准数据集,涵盖了广泛的恶意软件家族,这使得研究人员可以训练出更具泛化能力的分类模型。该数据集涵盖了9个恶意软件家族,总计包含10,868个样本,其中包括以十六进制字节表示的Byte文件和由IDA Pro反汇编得到的Asm文件 [19] ,家族类别和样本数量如表1所示。为了进行实验,这些样本被按照7:3的比例划分为训练集和测试集。
4.2. 实验环境与评价指标
实验的硬件环境:CPU为Intel(R) Xeon(R) Silver 4210R CPU @ 2.40GHz,内存为250 GB,显卡为GeForce RTX 3090(24G)。实验的软件环境:Ubuntu 18.04操作系统,Python 3.8.16,PyTorch 1.12.1。
当前研究主要采用准确率(Accuracy)和F1值(F1 Score)作为评价指标,具体计算公式如下:
(7)
(8)
(9)
(10)
其中,TP (True Positive)表示模型正确预测的正类样本数,TN (True Negative)表示模型正确预测的负类样本数,FP (False Positive)表示模型错误预测的正类样本数,FN (False Negative)表示模型错误预测的负类样本数。由于实验数据集存在样本不平衡问题,因此本文采用加权平均方法(Weight Average)计算F1值。
4.3. 实验结果分析
模型的超参数如下:batch size为16,学习率为0.001,优化器为Adam,损失函数为FocalLoss函数,学习率调度器为ReduceLROnPlateau函数(mode = “min”, factor = 0.1, patience = 10)。本文模型在训练集上的准确率变化曲线图如图5所示,模型的训练轮次Epoch达到80之后,准确率已经基本停止增长,稳定在99.14%,说明模型已经拟合。
4.3.1. 特征提取参数对比
为了确定最优的操作码序列特征提取参数,本文考察了不同序列分割长度Split Length和N-gram取值对模型准确率的影响。实验结果如表2所示,显示了Split Length和N-gram不同取值的性能比较。当Split Length选择为16,N-gram选择为bigram时,实验取得了最高的分类准确率97.31%。基于此发现,本文的操作码熵图特征提取均依据此参数进行实验。

Table 2. Experimental results of feature extraction parameter comparison
表2. 特征提取参数对比实验结果
4.3.2. 视化技术对比实验
本文深入评估了所提出的可视化技术,通过对比实验分析其性能,实验结果如表3所示。实验中使用的模型为浅层卷积神经网络 [17] 。对操作码熵图性能的分析表明,尽管其性能优于传统灰度图像和字节熵图,但与其他可视化技术相比时表现不足。在对转换后的操作码熵图进行细致观察后,发现某些样本的操作码熵图是空白的,这可能是因为数据集中的相关样本操作码序列为空或长度过短导致的。为解决这一问题,本文融合了基于Byte文件的特征图像。融合后的图像不仅弥补了操作码序列缺失造成的准确率下降问题,而且操作码熵图为基于Byte文件的特征图像提供了额外的行为特征信息,有效提升了整体检测准确率。通过与以往研究中采用的其他可视化技术相比较,本文提出的融合图像在分类准确率上展现出最佳的性能。

Table 3. Comparative experimental results of visualization techniques
表3. 可视化技术对比实验结果
4.3.3. 模型对比实验
本文与当前流行的几种方法进行了对比,对比结果如表4所示。实验结果显示,本文方法在分类准确率和F1值均优于其他方法。具体来说,现有方法大多只从单一文件中提取特征图像,导致特征提取单一而分类准确率不高。尽管Conti [17] 使用了特征融合技术,但其融合的特征图像均来自同一恶意文件,并且在设计分类模型时未考虑通道权重对分类的影响。本文方法从两个不同的恶意文件中提取多样化特征,并结合注意力机制深度学习模型,有效解决了特征提取单一和通道权重问题,实现了最佳的分类性能。这验证了本文方法的有效性,展示了特征融合技术与深度学习模型结合的潜力。

Table 4. Model comparison experimental results
表4. 模型对比实验结果
5. 结束语
本文针对现有恶意软件分类方法提取单一特征导致分类准确率低的问题,提出了一种结合EfficientNetV2和特征融合的恶意软件分类方法。通过利用Byte文件和Asm文件,本文方法从不同的角度提取了多样化的特征:从Asm文件中提取操作码熵图,并从Byte文件中提取马尔可夫图像和灰度矩阵图像,以补充样本信息缺失的同时,增加了图像所携带的特征信息量,进而将这些单通道图像融合为一个三通道彩色图像。随后使用EfficientNetV2-S深度学习模型对转换后的图像进行分类。与传统方法相比,这种综合特征融合的策略提供了更全面的恶意软件特征表达,能够更精确地刻画恶意软件间的相似性,提高分类准确率。在BIG2015数据集上的实验结果验证了本方法的有效性,分类准确率和F1分数分别获得了99.14%和99.11%,优于现有的其他恶意软件分类方法。下一步工作将研究使用多头注意力机制替换检测模型中的SE模块,力求再次提高模型检测准确率。
基金项目
广州市重点领域研发计划项目(202007010004)。