Page 288 - 《软件学报》2026年第4期
P. 288

凌祥 等: RMDroid: 基于多模态融合学习的安卓恶意软件鲁棒检测                                             1729


                  3.1.4    对抗性恶意软件生成方法
                    为了充分地评估鲁棒性, 本文采用当前最先进的                3  种对抗攻击生成相应的对抗性安卓恶意软件.
                    (1) COPYCAT [73] 是当前最具代表性的针对      Windows PE  恶意软件中图像特征的对抗攻击方法. COPYCAT           首
                 先提取   Windows PE  恶意软件的图像特征, 然后利用图像领域的对抗攻击方法生成对抗图像样本, 接着将对抗图
                 像样本附加到原始图像样本末尾, 再逐字节还原为二进制文件从而生成相应的对抗性                           PE  恶意软件. 由于  COPYCAT
                 原本针对的是     Windows PE  恶意软件, 因此本文进一步将        COPYCAT  适配到可以攻击安卓恶意软件, 并采用图像
                 领域当前最先进的       C&W [38] 作为核心的对抗攻击方法.
                    (2) GADGET [74] 是一种专门针对恶意软件中       API 调用序列特征而设计的对抗攻击方法, 该攻击方法在梯度的
                 引导下主要通过添加额外的          API 调用来生成相应的对抗性恶意软件.
                    (3) HRAT [17] 是  2021  年发表于  ACM CCS  上的一种专门针对恶意软件中      API 调用图特征而设计的对抗攻击
                 方法, 也是当前针对安卓恶意软件最先进的对抗攻击方法. 具体而言, HRAT                      设计了   4  种  (插入节点、删除节点、
                 添加边、重新布线) 针对        API 调用图的操作方式, 并采用强化学习作为启发式优化算法, 从而生成相应的对抗性
                 安卓恶意软件.
                  3.1.5    实验环境及参数设置
                    在实验环境方面, 本文中所有实验均在一台使用                 Ubuntu 20.04.1 LTS  操作系统的服务器上进行, 处理器为
                 Intel(R) Xeon(R) Gold 5218R, 内存为  64 GB, GPU  为  4  张  NVIDIA GeForce RTX 3090. 本文中代码实现所用的编
                 程语言为   Python 3.8.16, 其中所有神经网络的代码实现均采用          PyTorch 2.0.1  和  PyTorch_Geometric 2.3.1  深度学习
                 框架. 特别地, 本文利用      Androguard  逆向工具  [75] 对所有的实验数据集即安卓软件进行预处理, 从而得到相应的
                 API 调用序列信息和控制流图信息.
                    对于  IMCFN  而言, 在数据预处理阶段, 本文将安卓软件的             Dalvik  字节码以  8 bit 为单位连续编码为   0–255  之
                 间灰度值, 并根据表      4  中的规则确定灰度图的宽度, 将灰度值序列按照固定宽度排列为二维灰度矩阵, 并在不满足
                 宽度的最后一行填充        0  构造完整的灰度图像. 接着使用预训练的            VGG16  图像分类模型提取输入图像的特征, 然
                 后通过   1  层卷积层和   3  层全连接层逐层提取特征进行最终的恶意性预测. 本文使用初始学习率                      1E–4、权重衰减
                 系数  1E–4  的  Adam  优化器训练  IMCFN, 训练  epoch  为  20.

                                      表 4 灰度图像宽度与       Dalvik  字节码文件大小的对应关系

                                         Dalvik文件大小 (KB)             图像宽度 (pixel)
                                               <5                        64
                                              5–10                       128
                                              10–20                      256
                                              20–50                      512
                                              50–100                     1 024
                                              >100                       2 048

                    对于  MaMaDroid  而言, 本文遵循原文的方法流程来提取安卓软件的调用图, 并从家族                    (family) 和包  (package)
                 两个粒度抽象调用关系, 构建         family  和  package 粒度的特征, 使用决策树数量为     512  的随机森林进行拟合学习, 并
                 在实验中评估对比不同粒度特征下            MaMaDroid  的有效性. 对于   MalScan  而言, 本文同样遵循原文的方法, 首先提
                 取安卓软件的调用图特征, 然后计算调用图的               Harmonic 中心性, 最后基于预定义的敏感         API 列表获取敏感     API
                 的中心性分数, 所有敏感       API 的中心性分数构成安卓软件的特征向量. 模型选择方面, 本文首先使用少量训练集和
                 验证集对   MalScan  所使用的  KNN-1、KNN-3  和随机森林这      3  种模型进行预实验评估模型的性能, 最终本文选择
                 效果最稳定、性能最高的随机森林, 决策树数量设置为                 100.
                    对于本文的     RMDroid  而言, 在参数设置方面, 默认情况下, 本文所实现及评估的各个子模态                  (灰度图、API 调
                                                    d 均设置成         d = 300, 并且训练周期   epoch  设为  20, mini-batch
                 用序列和控制流图) 所学习的特征向量的维度                       300, 即
                 设为  16, 优化算法选择    AdamW  优化器, 默认初始学习率为        1E–5, 默认权重衰减系数为      0.01. 其中, RMDroid  使用
   283   284   285   286   287   288   289   290   291   292   293