202301.十个检测研究分析:Towards a fair comparison and realistic evaluation framework of android malware detectors based on static analysis and machine learning

老章汇报的概念漂移概念漂移处理论文的上一代项目

源码:androidmaldet_comparative-main
源码地址:Borja Molina Coronado / AndroidMalDet_Comparative · GitLab

实操笔记

Towards a fair comparison and realistic evaluation framework of android malware detectors based on static analysis and machine learning
基于静态分析和机器学习的 Android 恶意软件检测器的公平比较和现实评估框架

安装环境的命令
python.exe -m pip install --upgrade pip
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install pomegranate -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install networkx -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install androguard -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install rotation_forest -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install lief -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install python-magic -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install scikit-learn -i https://pypi.tuna.tsinghua.edu.cn/simple/


翻译

基于静态分析和机器学习的 Android 恶意软件检测器的公平比较和现实评估框架

摘要翻译:
与其他网络安全领域一样,机器学习 (ML) 技术已成为检测 Android 恶意软件的有前景的解决方案。从这个意义上说,迄今为止已经提出了许多采用各种算法和功能集的提案,通常报告了令人印象深刻的检测性能。然而,缺乏可重复性和缺乏标准的评估框架使得这些建议难以进行比较。在本文中,我们使用通用评估框架对 10 项有影响力的 Android 恶意软件检测研究工作进行了分析。我们已经确定了五个因素,如果在创建数据集和设计检测器时不考虑这些因素,将会显着影响经过训练的 ML 模型及其性能。特别是,我们分析了以下因素的影响:(1) 重复样本的存在,(2) 标签(好软件/灰色软件/恶意软件)归因,(3) 类别不平衡,(4) 使用规避技术的应用程序的存在,以及( 5)应用程序的演变。基于这项广泛的实验,我们得出的结论是,所研究的基于机器学习的检测器已经得到了乐观的评估,这证明了所发表的良好结果是合理的。我们的研究结果还强调,考虑到上述因素,必须生成现实的实验场景,以促进更好的基于 ML 的 Android 恶意软件检测解决方案的兴起。

10 项检测研究分析

介绍

这项工作的科学贡献总结如下:

本文的结构组织如下。第 2 部分回顾了与本文主题相关的最重要的著作。第 3 节包括有关 Android 应用程序、静态分析以及使用此技术可以获得的数据类型的基本概念。第 4 节介绍了本工作中考虑的基于监督 ML 分类器的最先进的检测器。第 5 节描述了通常如何构建恶意软件检测数据集及其局限性(构建它们时应考虑的因素,但经常被忽略)以及使用自定义数据集带来的再现性问题。在第 6 节中,我们介绍了我们的实验设置。第 7 节根据第 5 节中确定的因素的分析讨论了所选 Android 恶意软件检测器的局限性。第 8 节讨论了现实评估框架应考虑的特征,以及 Android 恶意软件中的挑战和未来研究方向检测。我们在第 9 节中总结本文。

2 相关工作

Android 恶意软件检测是信息安全文献中经过深入研究的领域。尽管如此,只有少数实验研究侧重于分析影响恶意软件检测器性能的因素,这也是本文的主题。他们中的大多数人将分析集中在一小群具有相似特征的探测器上。迄今为止,最全面的研究是 Pendlebury 等人。 (2019)。本文分析了三种检测算法评估中的两种不同的偏差来源。第一个称为空间偏差,来自数据集中每个类别的样本比例之间的差异。第二种类型是时间偏差,与模型训练期间包含未来知识有关。测试空间偏差的实验得出的结论是,类别之间的比例是作者报告的结果的决定因素。关于时间偏差影响的实验表明,随着时间的推移,模​​型往往会错误分类恶意软件,而好软件的准确性随着时间的推移保持稳定。这项工作得出的结论与之前另外两项研究中得出的结论类似,每项研究在实验中只考虑一个探测器(Allix 等人,2016a;Roy 等人,2015)。
   Rastogi等人(2014)研究了恶意软件应用程序使用混淆技术来逃避检测。该研究对十款Android商业杀毒产品进行了分析,通过对恶意软件应用不同的混淆技术对其进行测试。结果证明,所有被分析的工具在检测至少一种混淆类型的恶意软件时的有效性都有所下降。这项工作突出了这些商业解决方案的弱点。然而,考虑到检测器的细节并不公开,关于混淆如何影响Android机器学习检测器的具体结论无法从本研究中得出。另一项工作评估了Windows机器学习恶意软件检测器识别打包恶意软件的能力(Aghakhani等人,2020)。进行了一系列广泛的实验,以确认包装样品是否由于包装人员留下的痕迹或样品的行为而被识别。作者总结说,依赖于静态分析特征的机器学习检测器倾向于关注混淆的迹象。因此,由于误报的数量,这些方法对Windows恶意软件的可行性提出了质疑。尽管如此,还需要进一步的研究来评估这些发现是否也适用于Android恶意软件检测器。
   Surendran (2021) 部分讨论了设计和评估检测器时数据集中存在重复项的问题。对两种 ML 检测器进行了初步实验,一种基于 API 调用的使用,另一种使用权限。该工作的作者假设重复项与获得高估的模型性能之间存在关系。然而,需要额外的分析来证实这一假设,因为极端重复删除配置(使用充足的相似性阈值)的数据集大小的隐式减小最终可能会产生类似的结果。
   综上所述,之前的工作主要集中在分析影响探测器的一些具体评估缺陷,包括:空间偏差(Allix et al., 2015;Pendlebury et al., 2019;Roy et al., 2015)、时间偏差(Allix et al., 2015)、时间偏差(Allix et al., 2015)、时间偏差(Allix et al., 2015) al.,2015;Pendlebury 等人,2019)、混淆的影响(Maiorca 等人,2015;Rastogi 等人,2014)或数据中重复项的影响(Surendran,2021)。然而,这些分析是通过少数方法进行的(Allix 等人,2016a;Roy 等人,2015;Surendran,2021),在某些情况下,利用了类似的特征集(Pendlebury 等人,2019) 。一些研究不够深入(Surendran,2021)或专门针对商业黑盒检测器进行,因此有关其检测机制的详细信息(即其特征或是否基于签名或 ML 算法)并未公开,并且结果无法推断(Maiorca 等人,2015 年;Rastogi 等人,2014 年)。这些已发表的作品都没有考虑到由于从数据集中删除既不明显是恶意软件的应用程序而造成的偏差,也没有分析在许多现有检测器上使用不同阈值将应用程序标记为恶意软件的效果。因此,我们认为,在 Android 恶意软件检测领域,必须进行更全面的分析,包括所有已识别的因素以及使用不同特征和机器学习方法的更多检测器。与已发表的文献相反,这份手稿不仅提供了一个比较框架,证明缺乏现实的建议,并说明了许多扩展的设计和评估偏差,而且还针对现实的恶意软件检测器的建议提出了建议并确定了未来的研究方向。

3 背景

本节稍微介绍一些理解手稿其余部分所需的背景知识。它包括有关 Android 应用程序结构的描述以及可以通过应用程序静态分析来检查以提供 ML 算法的信息类型。

3.1 安卓app

Android 应用程序以 APK(Android 应用程序包)形式分发。 APK 是一个 ZIP 压缩文件,其中包含在系统上执行应用程序所必需的资源:清单数据和编译的代码。

3.1.1 Manifest 数据

Android 应用程序的清单文件定义了应用程序运行所需的一组属性和组件。该文件采用 XML 格式,分为三个主要块或部分:

3.1.2 应用程序代码

Android 应用程序通常使用 Java 或 Kotlin(Google 用于 Android 开发的首选语言)开发,并在编译过程中转换为 Dalvik 字节码格式。 Dalvik 字节码运行在 Android 虚拟机上,该虚拟机充当独立于平台的环境。由操作系统直接管理的移动设备的硬件组件与由虚拟机管理的应用程序之间的交互是通过 API 库执行的。这些 API 提供了一种访问应用程序所需的硬件功能的通用方法。因此,将程序员从设备的特殊性中抽象出来。
   应用程序的 Dalvik 字节码位于 APK 内的classes.dex 文件中。它包括所有用户定义的类和函数,以及常量和变量定义。外部库(例如 Android 框架)不属于此文件的内容。

3.2 安卓app的静态分析

静态分析是一种软件技术,可检查应用程序以提取其特征,而无需在运行时执行代码并监控其行为(Li et al., 2017a)。通过静态分析,可以检查代码中存在的所有执行路径以及应用程序文件中的所有信息。这是通过使用具有代码解释机制的工具来完成的,这些工具提取描述应用程序内部功能的可理解的结构,例如调用图、数据流、有关代码结构的统计度量等。然后将这些信息转换为一组通用的解释性特征,稍后将由 ML 算法进行处理。
  要对 APK 文件的内容进行静态分析,可以使用 AXMLprinter3 等工具来使清单文件中声明的字段和组件可访问。相反,可以使用 bakSmali4 等反编译器将classes.dex 文件转换为更高级别的格式。之后,可以获得不同的特征,包括有关指令、方法、类、字符串和 API 调用的使用的信息(Faruki et al., 2014)。还可以构建表示代码的不同图形结构。其中包括根据代码中存在的调用指令(调用)构建的调用图;控制流图,在创建时还考虑了由条件和循环语句(if、switch、for、while...)引起的代码跳转。在这两种类型的图中,节点代表只能顺序执行的方法或指令块,即基本块;边代表节点之间的执行流程(Li et al., 2017a)。
  执行静态分析后,从 APK 获得的数据被映射到以结构化方式表示应用程序的特征向量,适合通过 ML 算法进行处理。图 1 描述了通过字符串、API 调用和权限来表示三个应用程序的二进制映射。它使用值 1 或 0 来表示应用程序代码中是否存在某个功能。其他映射也是可能的,例如,频率编码说明某个功能在应用程序代码中出现的次数。

4 基于监督分类器的Android恶意软件检测器

![](/img/user/czc知识库/杂七杂八/9-附件/附件/10个检测研究分析:Towards a fair comparison and realistic evaluation framework of android malware detectors based on static analysis and machine learning_image.png)