[论文解读] MaMaDroid: Detecting Android Malware by Building Markov Chains of Behavioral Models (Extended Version)
MaMaDroid 是一种基于静态分析的 Android 恶意软件检测系统,通过使用抽象化的 API 调用序列(按家族、包或类分组)构建马尔可夫链来建模应用行为,从而提高对 API 演变的鲁棒性。它在未见过的恶意软件上实现了高达 0.99 的 F1 值,并在一年后保持 0.86 的 F1 值,两年后为 0.75,优于最先进的方法如 DroidAPIMiner。
As Android has become increasingly popular, so has malware targeting it, thus pushing the research community to propose different detection techniques. However, the constant evolution of the Android ecosystem, and of malware itself, makes it hard to design robust tools that can operate for long periods of time without the need for modifications or costly re-training. Aiming to address this issue, we set to detect malware from a behavioral point of view, modeled as the sequence of abstracted API calls. We introduce MaMaDroid, a static-analysis based system that abstracts the API calls performed by an app to their class, package, or family, and builds a model from their sequences obtained from the call graph of an app as Markov chains. This ensures that the model is more resilient to API changes and the features set is of manageable size. We evaluate MaMaDroid using a dataset of 8.5K benign and 35.5K malicious apps collected over a period of six years, showing that it effectively detects malware (with up to 0.99 F-measure) and keeps its detection capabilities for long periods of time (up to 0.87 F-measure two years after training). We also show that MaMaDroid remarkably outperforms DroidAPIMiner, a state-of-the-art detection system that relies on the frequency of (raw) API calls. Aiming to assess whether MaMaDroid's effectiveness mainly stems from the API abstraction or from the sequencing modeling, we also evaluate a variant of it that uses frequency (instead of sequences), of abstracted API calls. We find that it is not as accurate, failing to capture maliciousness when trained on malware samples that include API calls that are equally or more frequently used by benign apps.
研究动机与目标
- 应对 Android API 演变和恶意软件行为变化带来的有效恶意软件检测挑战。
- 克服基于权限和频率的检测方法存在的误报问题,并减少频繁重新训练的需求。
- 通过将底层 API 调用抽象为更高层级的家族、包或类,设计一种对 API 变化具有鲁棒性的行为建模方法。
- 设计一种系统,即使在 Android 生态系统持续演化的背景下,也能在无需重新训练的情况下长期保持高检测准确率。
- 评估 API 抽象与序列建模在提升恶意软件检测鲁棒性方面各自的相对贡献。
提出的方法
- 将低层级的 API 调用抽象为更高层级的抽象形式——如家族(例如 android、java)、包(例如 java.io)或类(例如 java.lang.Throwable)——以降低对 API 废弃和变更的敏感性。
- 通过静态分析 Android 应用构建调用图,以提取抽象化 API 调用序列。
- 将抽象化 API 调用序列建模为一阶马尔可夫链,以捕捉行为的转移模式。
- 从马尔可夫链转移矩阵中提取统计特征,以表示应用行为。
- 使用这些特征训练二分类器(例如 SVM 或随机森林),以区分良性与恶意应用。
- 使用 2010 至 2016 年间收集的 8.5K 个良性应用和 35.5K 个恶意应用的大型长期数据集对系统进行评估。
实验结果
研究问题
- RQ1与基于频率的方法相比,通过马尔可夫链建模抽象化 API 调用序列是否能提升长期恶意软件检测的鲁棒性?
- RQ2MaMaDroid 在检测之前未见过的恶意软件样本时表现如何,特别是在使用旧数据集进行训练时?
- RQ3与原始 API 频率分析相比,API 抽象在多大程度上有助于应对 Android 框架演进带来的影响?
- RQ4与依赖常用 API 调用的系统(如 DroidAPIMiner)相比,MaMaDroid 的性能随时间退化程度如何?
- RQ5抽象与序列建模的结合是否比仅使用抽象或基于频率的建模更有效?
主要发现
- MaMaDroid 在检测与训练时期相同的数据库中的恶意软件时,达到峰值 F1 值 0.99。
- 该系统在时间上保持了强大的检测性能,训练后一年的 F1 值为 0.86,两年后为 0.75。
- MaMaDroid 显著优于 DroidAPIMiner(一种最先进的基于频率的系统),在准确率和长期鲁棒性方面均表现更优。
- 仅使用抽象化 API 调用频率的 MaMaDroid 变体(FAM)优于 DroidAPIMiner,但准确率低于完整的马尔可夫链模型。
- 研究证实,通过马尔可夫链进行序列建模对于高检测准确率至关重要,尤其是在恶意与良性应用使用相似 API 频率的情况下。
- 仅靠 API 抽象不足以实现鲁棒检测;真正实现对 API 演变的鲁棒性与高检测性能的是抽象与序列建模的结合。
更好的研究,从现在开始
从论文设计到论文写作,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。