重庆大学 | MDADroid:一种通过构建功能-API映射的新型恶意软件检测方法
嗯,用户让我帮忙总结一篇文章,控制在100字以内,而且不需要特定的开头。首先,我需要快速浏览文章内容,抓住主要信息。 文章讲的是Android恶意软件检测,提到了现有的方法存在API老化和资源消耗高的问题。然后他们提出了MDADroid方法,通过功能-API映射来应对这些问题,并且在多个数据集上表现优异。 接下来,我需要将这些要点浓缩到100字以内。要确保涵盖方法名称、核心机制、实验结果以及优势。 可能的结构是:介绍MDADroid方法,说明其如何工作(功能-API映射、ASCM更新),然后提到检测准确率和资源效率。 最后检查字数,确保不超过限制,并且语言简洁明了。 </think> 本文提出了一种名为MDADroid的恶意软件检测方法,通过构建功能-API映射和设计低资源消耗的映射更新策略,有效应对Android API迭代带来的挑战。实验表明该方法在多个数据集上表现出高检测准确率(95%以上),同时具备抗老化能力和低资源消耗优势。 2025-10-14 10:30:0 Author: www.freebuf.com(查看原文) 阅读量:2 收藏

freeBuf

主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

图片

1、引言

Android 操作系统作为全球市场份额最高的移动操作系统(截至 2023 年 9 月达 68.74%),在为用户带来便利的同时,也面临着日益严峻的恶意软件威胁,2022 年全球报告的恶意应用已达约 166 万款。为应对这一挑战,研究人员提出了多种基于机器学习的恶意软件检测方法,这些方法多以 API 作为描述应用行为的关键特征。然而,现有方法存在明显不足:部分方法依赖过时的敏感 API 列表,难以应对 Android API 的持续迭代,导致模型出现老化问题;另一些具有抗老化能力的方法则存在资源消耗过高的问题。因此,研发一种既能有效检测恶意软件,又能适应 API 更新且资源消耗低的方法成为当前研究的重要课题。为此,本文提出一种名为 MDADroid 的新型恶意软件检测方法,该方法通过构建功能 - API 映射,将应用的 API 级特征转换为功能级特征,以应对 API 变化带来的影响,并设计了低资源消耗的映射更新策略,旨在为 Android 恶意软件 detection提供一种高效且稳健的解决方案。

2、MDADroid 预处理机制

MDADroid 的预处理阶段是构建功能 - API 映射的基础,核心任务是获取并优化权限相关 API 集,同时为异构图构建准备必要数据,其中 ASCM(API 相似度计算方法)是应对 API 版本迭代、保障 API 集完整性的关键创新。该机制围绕权限相关 API 的获取、更新与筛选展开,具体包括以下内容:

图片

权限相关 API 的初始获取 。通过多源开源知识构建初始的权限相关 API 集,获取流程如下图所示:

  • 解析 Android API 文档,提取那些在描述中明确指定调用所需权限的 API(如 "getDeviceId" 需要 "READ_PRIVILEGED_PHONE_STATE" 权限)。
  • 整合前人研究成果,聚合 PScout、Axplorer、NatiDroid 等工作中已识别的权限相关 API,形成初始集合。
  • 利用 Google 提供的 Android Support Library 与 AndroidX 官方映射关系,将已知权限相关 API 迁移至 AndroidX 对应版本,补充 API 集。

图片

ASCM(API 相似度计算方法)的核心设计 。 为发现更多遗漏的权限相关 API(尤其是 AndroidX 中未被官方映射覆盖的),ASCM 通过结构与语义双重维度计算 API 相似度,ASCM流程如下图所示:

  • 结构相似度计算 :比较两个 API 名称的包名、类名、方法名结构,提取共享子串并计算其长度占比(如 "android.app.AlarmManager.setAlarmClock"与 "androidx.core.app.AlarmManagerCompat.setAlarmClock" 的共享子串),公式为两者共享子串长度分别与两个 API 名称总长度比值的平均值。
  • 语义相似度计算 :当结构相似度超过阈值时,将 API 名称按标点和大小写分割为语义单元,通过 BERT 模型生成句子嵌入,计算嵌入向量的余弦相似度,捕捉功能语义关联。
  • 综合相似度与筛选 :将结构相似度与语义相似度按权重加权求和,当综合相似度超过 95% 时,判定为相似 API,将新发现的 AndroidX API 补充至权限相关 API 集,并建立 "android" 与 "androidx" 类的映射关系。

权限相关 API 的过滤 。 为精准获取应用实际调用的权限相关 API,需对应用解析结果进行过滤:

  • 解析应用的 "AndroidManifest.xml" 文件,提取其中声明的 "Activity" 组件及对应的类文件。
  • 从类文件中提取所有被调用的 API,与预处理得到的权限相关 API 集比对,过滤掉不相关的 API,仅保留权限相关的部分,为后续异构图构建提供精准节点数据。

3、功能 - API 映射构建方法

功能 - API 映射是 MDADroid 的核心创新,通过构建功能、应用与 API 之间的关联,实现从 API 级特征到功能级特征的转换,具体流程包括异构图构建、基于元路径的随机游走及映射生成三个环节,操作如下:

3.1 功能 - 应用 - API 异构图构建

为捕捉功能、应用与 API 的复杂关系,首先构建异构图,包含三类节点和三类边,异构图结构示例如下图所示:

图片

  • 节点类型 :功能节点(从良性应用描述中提取的 234 个潜在主题,如 "社交互动""位置服务")、应用节点(从 Google Play 筛选的含详细功能描述的良性应用)、API 节点(预处理阶段得到的权限相关 API)。
  • 边的定义
    • 应用与功能的边:权重表示应用具备该功能的概率(基于主题模型计算)。
    • 应用与应用的边:权重反映两者描述的语义相似度(通过多语言模型计算)。
    • 应用与 API 的边:存在性表示应用是否调用该 API(调用则为 1,否则为 0)。

该图通过节点间的关联,为后续挖掘功能与 API 的隐藏关系提供基础。

3.2 基于元路径的随机游走

为发现功能与 API 的潜在关联,在异构图中执行基于元路径的随机游走,具体规则如下:

图片

  • 基础元路径设计 :定义两种核心路径,"I-A-F"(API→应用→功能)和 "F-A-I"(功能→应用→API),分别从 API 和功能出发,通过应用节点建立连接。
  • 元路径扩展 :通过两条规则生成变体路径:
    • 规则 I:允许 "应用(A)" 节点重复,如 "I-A-A-F""F-A-A-I",以覆盖更多关联。
    • 规则 II:拼接不同元路径(如 "I-A-F-A-I"),捕捉更复杂的语义关系。 随机游走执行:按元路径在图中随机移动,生成节点序列(如 "API1→应用 A→应用 B→功能 X"),序列长度根据需求设定(示例中为 5)。

这些序列能反映功能与 API 的共现规律,为学习节点关联提供数据。

3.3 功能 - API 映射生成

利用随机游走生成的节点序列,通过嵌入学习建立功能与 API 的映射:

  • 节点嵌入学习 :采用 skip-gram 模型(类似 word2vec),以节点序列为输入,学习功能、应用、API 的向量表示(嵌入),使语义相关的节点在向量空间中距离更近。
  • 映射构建 :计算每个功能节点与所有 API 节点的余弦相似度,取相似度最高的前 k 个 API,形成 "功能→API" 的映射关系(如 "发送短信" 功能对应 "sendTextMessage" 等 API)。
  • 映射更新 :当 API 版本迭代时,通过 ASCM 找到新 API 与已有 API 的相似性,将新 API 绑定到最相似 API 对应的功能,实现低成本更新。

通过该映射,应用的 API 调用特征可转换为功能特征,有效减少 API 版本迭代对检测模型的影响。

4、实验评估

MDADroid 在多个数据集上展现出优异的恶意软件检测性能,同时在抗老化能力、资源消耗及 ASCM 有效性方面表现突出,具体结果如下:

多数据集检测性能 :在 AndroZoo、CICAndMal 2017、CICMalDroid 2020、Drebin 四个数据集上,MDADroid 的检测准确率普遍超过 95%,其中 XGBoost 分类器表现最优。

图片

  • AndroZoo 数据集 :XGBoost 的准确率达 95.22%,精确率 0.941,召回率 0.9422,F1 值 0.9416;随机森林的准确率 0.9518,F1 值 0.9404,均优于 MaMaDroid(准确率 93.07%)和 DroidDet(准确率 95.11%)。
  • CICAndMal 2017 数据集 :XGBoost 准确率 96.23%,精确率 0.9224,召回率 0.8823,F1 值 0.9016,优于 Tarwireyi 等(2023)的 LGBM 方法(准确率 94.23%)。
  • CICMalDroid 2020 数据集 :XGBoost 准确率 98.77%,精确率 0.992,召回率 0.9918,F1 值 0.9919,与 Xie 等(2023)的 Stacking 方法(准确率 98.56%)相当,但训练测试时间仅 1.34 秒(远低于 Stacking 的 27 秒)。
  • Drebin 数据集 :XGBoost 准确率达 99.56%,精确率 0.9928,召回率 0.9979,F1 值 0.9954;随机森林准确率 99.48%,召回率接近 100%,展现出对旧数据集的强适应性。

抗老化能力评估 :在 AndroZoo 数据集的跨年度测试中(2015-2020 年对),MDADroid 的准确率维持在 85.81%-92.6%,多数年份优于 MaMaDroid 和 DroidDet。

图片

  • 2015-2016 年对 :MDADroid 准确率 85.81%,F1 值 0.7314,显著高于 MaMaDroid(F1 值 0.4791)和 DroidDet(F1 值 0.5731),即使面对良性与恶意样本比例 4:1 的不平衡数据,仍表现稳定。
  • 2016-2017 年对 :准确率 92.39%,F1 值 0.9056,优于 MaMaDroid(F1 值 0.8732)和 DroidDet(F1 值 0.8403)。
  • 2019-2020 年对 :准确率 90.47%,F1 值 0.8891,略高于 MaMaDroid(F1 值 0.8836),体现出对 API 迭代的强适应性。

ASCM 有效性验证 :引入 ASCM 后,各分类器性能均有提升,尤其在补充 AndroidX 中遗漏的权限相关 API 方面效果显著。

图片

  • XGBoost 分类器 :加入 ASCM 后,准确率从 94.59% 提升至 95.22%,F1 值从 0.9341 提升至 0.9416。
  • 随机森林 :准确率从 94.86% 提升至 95.18%,F1 值从 0.9368 提升至 0.9404,验证了 ASCM 在完善 API 集、增强映射准确性上的作用。

效率评估 :MDADroid 在训练测试时间和特征提取时间上远低于基线方法。

  • 训练测试时间 :在 AndroZoo 数据集上,XGBoost 仅需 2 秒,而 MaMaDroid 需 529.2 秒,DroidDet 需 158.4 秒;在 CICAndMal 2017 数据集上,XGBoost 仅需 0.6188 秒,远低于 Stacking 方法的 8.4992 秒。

图片

  • 特征提取时间 :MDADroid 的特征提取时间为 17395 秒,约为 MaMaDroid(48372 秒)的 1/2.8,DroidDet(292272 秒)的 1/17,体现出低资源消耗优势。

图片

总体而言,MDADroid 在检测精度、抗老化能力和资源效率上均优于现有方法,ASCM 的引入进一步增强了其对 API迭代的适应性,使其在实际 Android 恶意软件检测场景中具有高实用性。

5、总结

本文提出了一种名为 MDADroid 的新型恶意软件检测方法,通过构建功能 - API 映射实现对 Android 恶意软件的有效检测。该方法利用开源知识获取权限相关 API,结合 ASCM(API 相似度计算方法)更新 API 集以适应版本迭代,再通过构建功能 - 应用 - API 异构图,基于元路径随机游走生成节点序列,进而建立功能 - API 映射,将应用的 API 级特征转换为功能级特征用于检测。研究在 AndroZoo、CICAndMal 2017、CICMalDroid 2020 和 Drebin 四个数据集上进行实验评估,结果显示该方法检测准确率分别达到 95.22%、96.23%、98.77% 和 99.56%,且训练测试时间短,资源消耗低,同时在抗老化能力测试中表现优异,能有效应对 API 迭代带来的影响,适合实际 Android 恶意软件检测场景。

本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)


文章来源: https://www.freebuf.com/articles/452795.html
如有侵权请联系:admin#unsafe.sh