Page 295 - 《软件学报》2025年第8期
P. 295
3718 软件学报 2025 年第 36 卷第 8 期
维数会影响提取信息的质量, 因此经过实验调优, 最终 MCBA 的 3 层编码器维数确定为 768 维, 356 维, 256 维
(详见第 4.4 节实验).
几何投影矩阵 B: 对来自编码器的 256 维中间向量进行处理, 降维至 192 维, 作为分类器的输入向量 y.
解码器 (decoder): 解码器接收编码器输出的低维编码, 并将其解码回原始数据空间. 解码器由一系列的隐藏层
组成, 通过逆向的变换过程逐渐增加维度, 最终重构出与输入数据尽量相似的重建数据. 解码器的目标是尽可能准
确地还原原始数据, 使重建数据与输入数据之间的差异最小化. 解码器通常与编码器结构逆向对应, 因此 MCBA
使用 3 层解码器结构, 每层大小分别设置为 256 维, 356 维, 768 维.
损失函数 (loss function): 瓶颈自编码器的训练过程使用损失函数来衡量重建数据与输入数据之间的差异. 常
用的损失函数包括均方差 (mean squared error) 或交叉熵 (cross entropy). 通过最小化损失函数, 瓶颈自编码器的编
码器和解码器可以逐渐优化, 使得重建数据尽可能接近原始数据, 从而学习出最有代表性的低维数据表示形式.
Vincent 等人 [34] 研究表明, 自编码器的解码器重构向量 z 并不是编码器输入 x 的精确重建, 其损失函数可以表示为
公式 (3):
L recon ∝ −log p(x|z) (3)
因此, 最小化损失函数等价为下面形式:
( [ ])
min(E[L recon (x,z)]) = max E logP(x|z) (4)
通过训练使 z 不断逼近 x, 从而得到有效的低维表达形式 y 作为输出, 进行下一阶段的分类预测.
MCBA 使用简单的全连接层进行分类工作. 通过接收来自瓶颈自编码器的输出 y, 最终得到对应的类别预测
结果.
4 实验分析
4.1 实验数据
为了对分类模型的性能表现进行全面测试, 本文分别在普通环境下和概念漂移环境下进行恶意软件分类实
[4]
验. 为此, 实验分别使用两个不同的数据集: MalwareBazaar 和 MalwareDrift , 如表 1 和表 2 所示.
[4]
表 1 实验数据集 MalwareBazaar 表 2 实验数据集 MalwareDrift
家族 样本数量 家族 漂移前样本 漂移后样本
Gozi 767 Bifrose 171 107
GuLoader 589 Ceeinject 90 458
Heodo 214 Obfuscator 143 61
IcedID 578 Vbinject 379 653
Njrat 942 Vobfus 64 218
Trickbot 881 Winwebsec 218 269
Total 3 971 Zegost 180 114
Total 1 245 1 880
MalwareBazaar 数据集: Ma 等人 [4] 从恶意软件数据网站 MalwareBazaar [35] 上选择了近年排名前 6 的恶意软件
家族, 分别为每个家族下载了 1 000 个最近上传的恶意软件样本. 为了确保数据集的有效性, Ma 等人删除了非 PE
格式的样本, 然后利用 AVClass [36] 和 Joe security [37] 检查样本的家族标签, 剔除标签不一致的噪声样本. 最后, 筛选
出 6 个家族共 3 971 个 PE 恶意软件样本组成数据集 MalwareBazaar.
2
MalwareDrift 数据集: Wadkar 等人 [38] 发现代码变更在 χ 时间线统计量中表现为尖峰, 该统计量用于衡量在滑
动时间窗口上使用 PE 恶意软件特征训练的支持向量机 (SVM) 中的权重差异. 类似地, 恶意软件家族的演化可以
2
被理解为代码变更. Ma 等人 [4] 使用文献 [38] 中的数据集和相应的 χ 时间线统计图, 确定每个恶意软件家族的演
化周期, 并将每个家族的样本分为概念漂移前和概念漂移后. 通过以上步骤, 生成了包含 7 个家族共 3 125 个样本
的数据集 MalwareDrift, 用于测试时间间隔对分类方法的影响. 漂移前和漂移后的样本分别来自 2015 年之前和

