Page 298 - 《软件学报》2025年第7期
P. 298

杨宏宇 等: 基于   API 聚类和调用图优化的安卓恶意软件检测                                               3219


                 中心, 将其他函数抽象为包, 生成聚类中心调用对. 调用对抽象将频繁变化的                      API 抽象为  API 聚类中心, 使检测方
                 法适应安卓框架和恶意软件的变化.
                    (5) 特征嵌入: 首先使用独热编码对软件样本集的聚类中心调用对进行特征嵌入; 然后使用主成分分析                              [29] 将高
                 维特征向量线性映射到低维空间, 生成软件样本集的特征向量集合.
                    (6) 分类器检测: 分类器检测包括样本集划分、训练和检测这                  3  部分. 首先使用十折交叉验证法将特征向量集
                 合划分为训练集和测试集; 然后使用训练集训练                K  近邻  (k nearest neighbor, KNN)、支持向量机  (support vector
                 machine, SVM) [32] 和随机森林  (random forest, RF) [33] 这  3  种分类算法; 最后将测试集输入训练好的分类器进行恶意
                 软件检测, 选择检测平均       F1  值最高的分类算法作为最终检测结果.

                 6   实验及结果分析

                    在实验中, 从恶意软件检测的有效性方面对本文提出的                  DroidSA  进行验证评测. 在有效性测试实验中, 首先验
                 证  DroidSA  能否实现恶意软件检测; 然后验证        DroidSA  能否有效检测观念迁移样本; 最后分别评估            API 聚类和调
                 用图优化对    DroidSA  检测性能的影响.

                 6.1   实验设置
                    实验中使用的软件样本集如表           3  所示, 该软件样本集包括      42 450  个恶意软件样本和     42 154  个良性软件样本,
                 时间跨度为    7  年. 恶意软件来源于     AndroZoo [34] 、VirusTotal [35] 和  AMD  软件样本集  [36] , 在  VirusTotal 中至少被  15
                 个反病毒引擎标记为恶意. 良性软件来源于              Google Play  商店  [37] , 通过  AndroZoo  下载, 被  VirusTotal 中所有反病毒
                 引擎标记为良性.

                                                    表 3 实验软件样本集

                    年份        良性软件 (B)        恶意软件 (M)        M + B      M / (M + B) (%)   平均大小 (MB)
                    2012         4 418           4 624        9 042          51.1             2.23
                    2013         6 488           6 519        13 007         50.1             2.65
                    2014         6 364           6 409        12 773         50.2             4.58
                    2015         6 506           6 494        13 000         50.0             5.08
                    2016         6 474           6 449        12 923         49.9             5.09
                    2017         5 348           5 388        10 736         50.2             7.79
                    2018         6 556           6 567        13 123         50.0             6.95
                    总计           42 154         42 450        84 604         50.2             4.96

                    在训练和测试过程中, 采用十折交叉验证法对                DroidSA  进行评估. 具体方法为: 将软件样本集分为          10  份, 其
                 中  9  份用于训练模型, 剩下一份用作测试进行模型评估, 重复               10  次直至每一份软件样本都经过测试评估. 最后,
                 对  10 次的测试结果取平均值, 得到评估结果. 采用精确度             (precision, Pre)、召回率  (recall, Rec)、F1 值  (F1-Measure)
                 和准确率   (accuracy, Acc) 指标衡量  DroidSA  的检测效果.

                 6.2   恶意软件检测
                    为验证本文     DroidSA  对恶意软件的检测能力, 采用       DroidSA、MalSan [12] 和  MaMaDroid [13] 这  3  种方法进行检
                 测对比实验. 对表     3  中  2012–2018  这  7  年软件样本分别进行十折交叉验证测试, 得到上述          3  种方法对恶意软件的
                 4  个检测性能指标, 实验结果如表        4  所示.
                    由表  4  可见, 在支持向量机、随机森林和         K  近邻  3  种分类算法中, DroidSA  使用随机森林时检测效果最好, 取
                 得  96.7%  的平均  F1  值, 与  MaMaDroid  和  MalScan  相比分别提升  4.3%  和  6.4%. DroidSA  的平均准确率为  96.7%,
                 与  MaMaDroid  和  MalScan  相比分别提升  4.3%  和  6.1%; 精确率为  98.5%, 与  MaMaDroid  和  MalScan  相比分别提
                 升  5.5%  和  5.6%; 召回率为  94.8%, 与  MaMaDroid  和  MalScan  相比分别提升  3.2%  和  6.2%.
                    由表  4  可见, MaMaDroid  的各项指标随时间推移缓慢提升, MalScan        在  2012–2014  年间精确率较高, 召回率较
   293   294   295   296   297   298   299   300   301   302   303