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  年之前和
   290   291   292   293   294   295   296   297   298   299   300