【综述-恶意软件检测】Towards a fair comparison and realistic evaluation framework

十个检测研究分析: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

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

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

10 项检测研究分析

介绍

[!tip]- 恶意软件检测的现状介绍
在过去的十年中,我们见证了移动设备的令人瞩目的进步。除了硬件之外,专为移动市场设计的操作系统 (OS) 也经历了成对的功能改进。截至 2021 年最后一个季度,Android 平台的市场份额接近 72%(Statista,2022),是领先的移动操作系统。它具有开源性质,可用于多种处理器架构。这些事实,加上可实现丰富服务(语音和图像识别、非接触式支付等)的记录良好的开发框架的可用性,促进了 Android 在智能手机之外的应用(Alaa 等人,2017 年; Do 等人,2017 年;Macario 等人,2009 年)。
再加上这种日益流行的趋势,恶意软件作者对该操作系统的日益关注凸显了用户面临的风险(Xu et al.,2016b)。移动设备上存储的数据对于用户来说至关重要、敏感,并且已成为攻击者的宝贵目标。卡巴斯基表示,针对这些设备的广告软件和银行恶意软件是 2020 年的两个主要安全威胁,甚至在 Google Play 等可信应用市场中也被检测到(实验室,2021 年)。
意识到这些问题,研究人员将机器学习 (ML) 技术视为实现 Android 恶意软件检测器的一种有前景的解决方案(Tan 等人,2015)。机器学习方法利用应用程序数据来识别对检测恶意软件有用的信号。为此,恶意软件检测可以遵循以下策略之一(或两种策略的组合):(1)基于异常的检测侧重于从好软件构建配置文件,以便将与这些配置文件的偏差标记为危险; (2) 相反,基于误用的检测侧重于学习恶意软件和好软件的特征,以便识别它们在新应用程序中的存在(Molina-Coronado 等人,2020)。大多数关于Android恶意软件检测的研究工作属于第二类。更具体地说,其检测机制依靠有监督的 ML 算法(Faruki 等人,2014 年;Tam 等人,2017 年)。
要使用机器学习算法(无论是针对滥用还是基于异常的系统)执行恶意软件检测,需要对应用程序进行预处理,以提取最能描述其行为的特征集。该任务是使用动态或静态软件分析技术来执行的。在动态分析中,应用程序的行为在受控环境(沙箱)中进行监控,在沙箱中模拟用户和系统交互。静态分析基于对应用程序包 (APK) 中包含的文件的检查,而无需运行代码。这些技术各有优点和缺点。一方面,通过动态分析,可以访问运行时加载并执行的代码。然而,就代码覆盖率而言,这种分析的成功很大程度上取决于模拟机制以及应用程序中是否缺少沙箱规避工具(Afianian 等人,2019)。另一方面,静态分析能够评估 APK 中存在的所有信息,但其成功在于缺乏诸如混淆或动态加载代码之类的规避技术(Moser 等,2007)。两种分析方法是互补的,可以结合起来进行 Android 恶意软件检测(Arshad 等人,2018 年;Spreitzenbarth 等人,2015 年)。
研究人员在提出、开发和测试 Android 恶意软件检测器时面临的主要困难之一是缺乏通用且现实的评估框架。该框架应包括适当且带标签的数据集,这对于训练和/或测试机器学习算法至关重要。特别是,正如我们在本文中所说明的,大多数公开可用的数据集都已过时,仅包含恶意软件、重复样本或样本数量不足。鉴于此,作者选择通过从不同来源下载应用程序示例并使用 VirusTotal1 等工具对其进行标记来构建临时的自定义数据集。这个过程不仅成本高昂,而且还使基于机器学习的恶意软件检测建议的再现性和比较变得复杂。
由于无法获得实现所提出方法的代码,或者在各自的出版物中遗漏了允许其实现的重要细节,从而加剧了可重复性问题。这对于使用 ML 算法的方法尤其明显,这些算法需要调整大量参数才能正常执行(Pendlebury 等人,2019),因为通常不提供此信息。评估程序也是如此。在许多情况下,它们没有得到明确描述,或者是在假设非常乐观的情况下设计的(Allix 等人,2016a;Pendlebury 等人,2019)。
本研究的主要目的是对文献中已发表的 Android 恶意软件检测建议进行公平比较,揭示其实际有效性。鉴于多年来提出的大量提案,以及缺乏共同且现实的评估标准,对方法进行公平的比较并不是一项简单的任务。我们基于静态分析选择了 10 个使用不同特征和 ML 方法的流行检测器,并在通用评估框架下对它们进行了比较。在许多情况下,由于缺乏原作者的实现,需要重新实现检测器中使用的算法。据我们所知,这种广泛的实施和实验工作的结果是迄今为止对 Android 恶意软件检测方法最全面的比较研究。

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

  • 我们提出了一些对Android恶意软件检测器的准确性产生负面影响的因素。特别是,我们考虑了现实生活中存在的五个条件,但在提出恶意软件检测器时经常被忽略:(1)数据集包含大量几乎相同的应用程序;(2)对于什么是好软件,什么是恶意软件,人们并不总是达成一致,有些应用程序缺乏足够的共识,无法被视为恶意或良性;(3)好软件多于坏软件;(4)恶意软件作者可能会使用混淆技术进行逃避尝试;(5)恶意软件和好软件会随着时间的推移而进化。然后,我们认为在设计和评估Android恶意软件检测器时必须考虑所有这些因素,以提供真实的性能值。

  • 考虑到上述因素后,我们分析了最先进的基于 ML 的 Android 恶意软件检测方法的性能。为此,我们选择了 10 个利用静态分析技术的极具影响力的探测器。我们表明,由于设计和评估缺陷,这些方法的作者提供的出色表现是不切实际的乐观。

  • 我们强调该领域已发表的工作缺乏可重复性。从这个意义上说,我们公开了这项比较工作中使用的代码和数据集。

  • 我们讨论 Android 恶意软件检测的未来研究方向,旨在解决已识别的设计和评估缺陷。

    本文的结构组织如下。第 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 格式,分为三个主要块或部分:

  • 应用程序组件块定义在应用程序运行时或用户向操作系统请求特定操作时与操作系统交互的应用程序元素。这些组件实现后台功能(服务)、管理用户屏幕和应用程序交互(活动)、启用应用程序与其他操作系统组件或应用程序(广播接收器和意图过滤器)的交互以及与其他进程(内容提供者)共享数据的接口。
  • 硬件和软件功能块定义应用程序运行所需的操作系统属性和功能。这包括软件功能,例如备份支持、用户帐户管理、输入法等。硬件功能包括相机、蓝牙传输、指纹传感器等元素。声明请求的功能很有用,例如,可以防止应用程序运行在不符合所需规格的手机上。
  • 权限块指示应用程序所需但受操作系统保护的功能。对这些功能的访问必须由用户明确授予。默认情况下,Android 应用程序无权执行可能危及操作系统、用户信息或其他应用程序的操作。因此,需要访问麦克风、摄像头、联系人列表、互联网连接、位置等的权限。

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恶意软件检测器

![1](https://i-blog.csdnimg.cn/direct/44cb27d830664d209b42f6d07bf83d99.png)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/18599.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

基于Java Springboot论坛系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…

Vue2教程001:初识Vue

文章目录 1、初识Vue1.1、Vue2前言1.2、创建Vue实例1.3、插值表达式1.4 Vue响应式特性 1、初识Vue 1.1、Vue2前言 Vue是什么? 概念:Vue是一个用于构建用户界面的渐进式框架。 Vue的两种使用方式: Vue核心包开发 场景:局部模块…

113页PPT制造业研发工艺协同及制造一体化

研发工艺协同及制造一体化解决方案是制造业数字化转型的重要组成部分,它涵盖了从产品设计到生产的全过程,旨在提高生产效率、降低成本、提升产品质量,并增强企业的市场竞争力。以下是对该解决方案的详细阐述: 一、方案概述 研发…

红外遥控信号解码

红外遥控信号解码 之前就已经做过红外遥控的解码了,但是一直没有做记录,最近的项目又使用到了红外遥控,索性就把他捡起来记录一下,对于信号的解码,我一般的习惯都是先用逻辑分析仪抓取一下信号波形,然后对…

Spring:纯注解开发模式-Ioc对bean的管理

我们知道(请见 注解开发定义bean),可以使用注解来配置bean,但是依然有用到配置文件,在配置文件中对包进行了扫描,Spring在3.0版已经支持纯注解开发 Spring3.0开启了纯注解开发模式,使用Java类替代配置文件…

赛元免费开发板申请

在作者网上冲浪的时候,突然发现了一个国内的良心企业,虽然现在不是很有名,但是他现在是有一个样品申请的活动,他就是国内的Redfine新定义,他申请的板子是用的赛元MCU,作者本着有板子就要申请的原则&#xf…

【编译】多图解释 什么是短语、直接短语、句柄、素短语、可归约串

一、什么是短语二、什么是“直接”短语?三、什么是句柄?四、什么是素短语?五、什么是最左素短语可归约串就是“最左素短语” 首先,这些概念 都是相对于【句型】的,都是相对于【句型】的,都是相对于【句型】…

基础IO2

文章目录 磁盘结构磁盘存储结构磁盘的逻辑结构引入文件系统理解文件系统inode 映射 data blocks文件名与inode的关系dentry树文件描述符与进程之间的关系 深刻理解软硬链接软链接硬链接 动静态库静态库1. 手动制作静态库2.调用静态库(1)安装到系统(2)自己指定查找路径(3)自己创…

RPC-健康检测机制

什么是健康检测? 在真实环境中服务提供方是以一个集群的方式提供服务,这对于服务调用方来说,就是一个接口会有多个服务提供方同时提供服务,调用方在每次发起请求的时候都可以拿到一个可用的连接。 健康检测,能帮助从连…

ZD Soft Screen Recorder:电脑录屏软件

前言 ZD Soft Screen Recorder 是一款屏幕录制软件 安装环境 [名称]:ZD Soft Screen Recorder [版本]:11.7.2 [大小]:6.8MB [语言]:英文 [环境]:pc 链接: 百度网盘 请输入提取码 提取码: ua23 软件界面 1、双击…

某杀软环境下的添加账户

某杀软环境下的添加账户 我们在某个杀软环境下,正常添加账户一般是会被直接拦截的 白+黑 在这个环境下,白+黑是最实用的绕过方式,我们可以通过调用winapi来创建账户,这些代码再存储到dll里面&#xff0c…

《Spring 基础之 IoC 与 DI 入门指南》

一、IoC 与 DI 概念引入 Spring 的 IoC(控制反转)和 DI(依赖注入)在 Java 开发中扮演着至关重要的角色,是提升代码质量和可维护性的关键技术。 (一)IoC 的含义及作用 IoC 全称为 Inversion of…

【C++】set,map,multiset,multimap的介绍和使用

set、map、multiset、multimap set、multiset的介绍和使用1、关联式容器2、键值对3、树形结构的关联式容器4、setset的介绍set的定义set的使用 5、multisetmultiset的介绍multiset的使用 map、multimap的介绍和使用1、map的介绍map的定义insert插入函数map的迭代器find查找函数…

Midjourney基础命令和提示词

1 基础命令 1.1 /imagine prompt 生成图片的核心命令,prompt 后输入描述。 /imagine prompt: A majestic dragon flying over a misty mountain, cinematic lighting, 4K resolution 高级提示 1.1.1 基本参数 图片比例 --ar 图片比例 混乱 Aspect Ratios --…

【代码pycharm】动手学深度学习v2-04 数据操作 + 数据预处理

数据操作 数据预处理 1.数据操作运行结果 2.数据预处理实现运行结果 第四课链接 1.数据操作 import torch # 张量的创建 x1 torch.arange(12) print(1.有12个元素的张量:\n,x1) print(2.张量的形状:\n,x1.shape) print(3.张量中元素的总数&#xff1…

智云-一个抓取web流量的轻量级蜜罐v1.5

智云-一个抓取web流量的轻量级蜜罐v1.5 github地址 https://github.com/xiaoxiaoranxxx/POT-ZHIYUN 新增功能-自定义漏洞信息 可通过正则来添加相关路由以及响应来伪造 nacos的版本响应如下 日流量态势 月流量态势 抓取流量效果

【Android原生问题分析】夸克、抖音划动无响应问题【Android14】

1 问题描述 偶现问题,用户打开夸克、抖音后,在界面上划动无响应,但是没有ANR。回到Launcher后再次打开夸克/抖音,发现App的界面发生了变化,但是仍然是划不动的。 2 log初分析 复现问题附近的log为: 用户…

2024年11月16日 星期六 重新整理Go技术

今日格言 坚持每天进步一点点~ 一个人也可以是一个团队~ 学习全栈开发, 做自己喜欢的产品~~ 简介 大家好, 我是张大鹏, 今天是2024年11月16日星期六, 很高兴在这里给大家分享技术. 今天又是休息的一天, 做了很多的思考, 整理了自己掌握的技术, 比如Java, Python, Golang,…

go-zero(一) 介绍和使用

go-zero 介绍和使用 一、什么是 go-zero? go-zero 是一个基于 Go 语言的微服务框架,提供了高效、简单并易于扩展的 API 设计和开发模式。它主要目的是为开发者提供一种简单的方式来构建和管理云原生应用。 1.go-zero 的核心特性 高性能: g…

VUE+SPRINGBOOT实现邮箱注册、重置密码、登录功能

随着互联网的发展,网站用户的管理、触达、消息通知成为一个网站设计是否合理的重要标志。目前主流互联网公司都支持手机验证码注册、登录。但是手机短信作为服务端网站是需要付出运营商通信成本的,而邮箱的注册、登录、重置密码,无疑成为了这…