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

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



                                                   i=N (
                                                 1  ∑                       )
                                                                  ⌢
                                            L = −     ⌢ y log(p z i  )+(1−y )log(1− p z i )          (13)
                                                 N     z i        z i
                                                   i=1
                                                                                            ⌢
                 其中,  N  为训练集中所有安卓软件的总数量,          p z i   代表第  i 个安卓软件被预测为恶意软件的概率, 而       y  代表第   个安
                                                                                                    i
                                                                                             z i
                 卓软件的真实标签值, 即       0  代表善意软件, 1   代表恶意软件.
                    具体而言, 为了充分地训练本文所提出的中多模态特征学习中的深度学习子模型, 本文首先单独训练只针
                 对单个模态的子模型参数, 即灰度图模态特征学习模型                     RMDroid(img)、API 调用序列模态特征学习模型
                 RMDroid(api)、控制流图模态特征学习模型         RMDroid(cfg); 然后, 将针对单个模态的子模型参数对完整的鲁棒检
                 测模型进行初始化, 并进一步利用公式             (13) 训练包含  F robust  在内的整个基于多模态融合学习的安卓恶意软件鲁
                 棒检测模型    RMDroid.
                  3   实验评估

                    首先在第    3.1  节中对本文实验评估中所用的实验数据、评价指标、对比的基线检测方法、实验环境及参数
                 设置等实验设置进行详细介绍, 然后在第             3.2 节中对相关实验结果进行分析.
                  3.1   实验设置
                  3.1.1    实验数据
                    AndroZoo  是由  Allix  等人  [69] 在  2016  年开始从谷歌官方  Google Play  应用程序市场收集并构建的包含大量安
                 卓软件的数据集, 每个安卓软件不仅包括应用程序               APK  本身, 而且还包括相应的哈希值、APK          大小、被    VirusTotal
                 杀毒引擎检测的结果列表, 被         VirusTotal 杀毒引擎检测的日期等. 由于       AndroZoo  数据集不仅数据规模巨大, 而且
                 包含权威杀毒引擎       VirusTotal 的检测结果, 因此  AndroZoo  及其相关数据集已经被广泛地用于评估安卓恶意软件
                 检测任务中    [17,18,70,71] .
                    为了充分地评估本文所提出的            RMDroid  检测有效性和鲁棒性, 本文采用了与经典安卓恶意软件检测方法
                       [18]                           [17]
                 MalScan  和最新安卓恶意软件对抗攻击          HRAT   相同的实验数据, 并且这些实验数据全部来源于                AndroZoo  数
                         D. 与此同时, 考虑到恶意软件检测方法的有效性评估存在概念漂移                     (concept drift) 的问题  [72] , 即随着时
                 据集, 记为
                 间推移, 之前训练好的恶意软件检测方法很可能无法检测最新出现的恶意软件. 因此, 为了充分对比并进一步消除
                                                                                           D 进行划分, 从而
                 安卓软件的时间对有效性和鲁棒性的影响, 本文按照如下两种不同的数据划分方式对实验数据
                 分别形成随机划分的数据集          D rand  和时间划分的数据集   D time , 两者具体的数据量统计如表     3  所示.


                                                 表 3 实验数据集的统计信息

                             数据集          类型         训练集         验证集        测试集         总量
                                        恶意软件          7 093      1 424       5 674      14 191
                                        善意软件
                              D rand                  7 129      1 433       5 703      14 265
                                          总量         14 222      2 857       11 377     28 456
                                        恶意软件          7 668      1 307       5 216      14 191
                                        善意软件
                              D time                  7 409      1 372       5 484      14 265
                                          总量         15 077      2 679       10 700     28 456

                    ● 随机划分的数据集       D rand : 针对数据集  D 中  2011–2018  年时间窗口内所有安卓软件, 按照训练集、验证集和
                 测试集为   5:1:4  的划分比例, 对  D 中的恶意软件和善意软件进行随机划分, 从而得到随机划分的数据集                      D rand . 由于
                 D rand  中训练集的时间窗口和验证集/测试集完全重合, 因此该数据集划分方式并不符合实际场景中训练阶段数据
                 与部署应用后测试样本数据分布不同的现实情况.
                                                   D 中  2011–2018  年时间窗口内所有安卓应用软件, 进一步按照时间窗
                    ● 时间划分的数据集       D time : 针对数据集
                 口划分, 将训练集限制在       2011–2014  年的时间窗口内, 将验证集/测试集限制在           2015–2018  年的时间窗口内, 从而
                 得到时间划分的数据集        D time . 由于  D time  中训练集的时间窗口全部小于验证集/测试集的时间窗口, 很大程度上符合
   281   282   283   284   285   286   287   288   289   290   291