AndrODet:一种自适应Android模糊检测器外文翻译资料

 2022-02-02 21:44:17

英语原文共 22 页,剩余内容已隐藏,支付完成后下载完整资料


AndrODet:一种自适应Android模糊检测器

摘要

混淆技术修改应用程序的源代码(或机器代码),以便使其更难分析。这通常适用于保护良性应用程序中的知识产权,或者阻碍在恶意软件的情况下提取可操作信息的过程。由于恶意软件分析通常需要相当大的资源投资,检测到使用的特定混淆技术可能有助于应用正确的分析工具,从而导致一些节省。

在本文中,我们提出了AndrODet,一种机制来检测Android应用程序中的三种流行类型的混淆,即标识符重命名、字符串加密和控制流混淆。安德洛特利用在线学习技术,因此适合于需要以连续的方式操作的资源受限的环境。我们比较我们的结果与批处理算法使用数据集的34962个应用程序从恶意软件和良性应用程序。实验结果表明,在线学习方法不仅能够在精度上与批量学习方法相竞争,而且还节省了大量的时间和计算资源。特别地,AndrODet实现了标识符重命名检测的准确度92.02%,字符串加密检测的81.41%,以及控制流混淆检测的平均值68.32%。此外,当应用程序可能被多于一种技术混淆时,系统的整体精度大约为80.66%。

1.引言

近年来,智能手机在各种安全敏感操作中的广泛使用,如银行交易和在线支付[1],要求提高这些平台的安全性。这尤其影响到托管Android应用的智能手机,因为它们拥有世界上最大的市场份额[2]。更具体地说,近年来,重新包装流行的智能手机银行应用程序的数量不断增加[3],针对逆向工程的硬化应用程序变得越来越重要。

源代码是合法软件开发者和恶意软件编写者的重要知识产权;具体而言,在Android操作系统中,应用程序可以很容易地反编译以进行代码分析或视觉检查。在合法的上下文中,混淆防止竞争对手以很少的努力来克隆或复制源代码,仅仅通过添加非常少的额外特征,而在非合法的上下文中,它通过增加反向工程和反编译的成本来隐藏应用程序的语义。

混淆已广泛应用于恶意软件和良性Android应用程序在过去的几年[4]。特别地,已经使用了三种类型的混淆,包括标识符重命名、字符串加密和控制流混淆,这主要是因为它们要么在免费混淆器中可用,要么在商业混淆器的试用版本中可用。此外,他们在应用程序的源代码中创造了令人满意的混乱程度。基于以前的研究[4],恶意软件编写者喜欢使用更复杂的重命名策略而不是合法的软件开发人员。此外,字符串加密在恶意软件中比在良性应用程序中更流行。最后,虽然控制流混淆仅由很少的商业混淆者提供,但是它的流行和检测还没有被研究过。

在Android恶意软件中混淆的普遍使用也对大多数Android恶意软件分析工具[5,6]的可靠性产生了怀疑,特别是静态的恶意软件分析工具。这些工具中的大多数依赖于从源代码获得的一些静态特征,并且在源代码[6]中受到很少的转换的严重影响。因此,它们对变换攻击没有弹性。此外,混淆已经成为保护Android用户的新障碍[7],因此,检测混淆对于理解恶意软件样本的潜在语义至关重要。

以前的作品利用批量学习系统来检测混淆。因此,在从汇集为训练集的应用程序中提取一组特征之后,系统被训练以检测一种或多种类型的混淆[4,8]。虽然这些系统提供了有希望的准确率,但它们确实有一个主要缺点。基于批量学习的系统不一定保持有效的时间-当新的应用出现或当提出新的混淆技术。因此,他们必须最终重新训练与更新的数据集。这个任务在一个应用程序不断开发和引入的环境中是不可行的(因为它目前在Android恶意软件和良性应用程序中都发生)。此外,大多数最近的作品都试图在应用程序的小数据集上检测琐碎类型的混淆。最后,基于例如最近的恶意软件数据集[8]还没有解决诸如控制流混淆之类的高级混淆技术。

为了克服这些限制,在本文中,我们探索使用在线学习算法通过数据流挖掘(此后DSM)[9]。DSM可以看作是适应传统的机器学习方法,以适合于元素流。值得注意的是,DSM方法不需要再训练,因为它们不断地从输入样本中学习。利用DSM,我们的目的是检测混淆的基本形式(特别是标识符重命名和字符串加密),以及非平凡的控制流混淆。为了评估我们的方法,我们考虑来自恶意软件和良性应用程序的34962个样本的数据集。

我们系统的概述

在这项工作中,我们提出了AndrODet,一种在线学习系统,用于检测Android应用程序中三种常见类型的混淆技术,称为标识符重命名,字符串加密和控制流混淆。 所有这些混淆技术都是基于从应用程序的Dalvik可执行字节码中提取的一些静态的,快速获取的特征来检测的。 AndrODet是模块化的,这意味着系统中有一个单独的嵌入式模块来检测每种类型的混淆,并且每个模块都是单独训练的。

AndrODet已经在Python中实现,并在恶意软件和良性样本的组合上进行测试。前一组应用程序是从最近发布并仔细标注的恶意软件数据集中收集的,称为AMD(10),而后者则是通过抓取流行的开源程序库(称为F- DROID)[11 ]获得的。我们还比较了我们的结果与最先进的批量学习算法通过利用自动调谐模型(ATM)〔12〕,一个开发用于批量学习算法的超参数调整和使用此类各种算法进行分类的系统。

实验结果表明,在线学习算法可以检测出三种流行的Android应用中的混淆技术。此外,与批量学习算法相比,它们可以节省大量的时间和内存。

贡献

总之,本文的主要贡献如下:

  • 我们建议AndrODet,一个模块化的在线学习机制来检测Android应用程序中的标识符重命名、字符串加密和控制流混淆。为了让将来的工作受益于这项研究,我们使我们的工具可以在:HTTPS://Github. COM/OmirZaie/HANDRODET公开可用。
  • AndrODet是基于DSM技术的,不需要从头开始重新训练系统。因此,我们比较了我们的系统与基于批学习的机器学习算法的有效性。要做到这一点,我们利用MOA(9),并添加一些额外的功能,这个工具的超参数调谐,稍后将用于分类。这使得我们能够从使用MOA的在线学习算法和使用ATM的批量学习方法获得的结果之间获得公平的比较。
  • AndrODet能够处理多用途Android应用程序。我们的系统在不同目录中查找所有类.DEX文件,并从所有目录中提取其特征。
  • 我们用AMD〔10〕和PROGUARD〔13〕评估工具的效率。这两个数据集,总共有超过24 K的应用程序,包含应用标识符重命名和字符串加密技术混淆的应用程序的真实性。此外,为了创建以前缺少的控制流混淆应用程序的基础事实,我们利用了众所周知的混淆器ALALATORI〔14〕,并且混淆了F- DROID[11]的所有样本,这是一个免费和开源的Android应用程序库。我们的目标是公开发布后者的应用程序,以促进这方面的进一步研究。

组织

本文的其余部分如下。 第2节介绍了一些基本概念作为背景。 第3节描述拟议的制度。 评估结果见章节4然后在第5节进行讨论。第6节调查一些相关的工作,最后,第7节总结了论文和介绍未来的研究方向。

2.背景

在这一节中,我们介绍了主要概念和技术。与我们的工作有关,即Dalvik bytecode(第2.1节),Android中常见的混淆类型(第2.2节)及其相关

数据挖掘和机器学习的细节(第2.3节)。

2.1 Dalvik bytecode

Android程序主要使用Java编写,尽管它们可以包含对二进制文件的调用以及称为本机组件的其他共享库[15]。 一旦编写,它们将被编译为Java字节码,然后编译为Dalvik字节码。 最终结果是具有.dex格式的Dalvik EXecutable(DEX)文件或具有.odex格式的优化版本。

Dalvik虚拟机(DVM)是一个基于寄存器的机器,它执行Dalvik字节码指令(通过一个名为libdvm.so的共享库),并为应用程序的Java组件提供Java级抽象[16],而Java Native Interface (JNI)支持使用本机组件。 DVM基于即时(JIT)编译,并在Android 4.4版本之后被Android RunTime取代(ART)它基于Ahead-OfTime(AOT)编译工作,并导致性能和内存消耗的显着改善[17]。

分析Dalvik bytecode比机器代码简单,对人类分析人员具有更好的可读性,并提供更好的语义信息。同样,使用像DeXDIPP(18)、DEX2JAR(19)、ANDROGARID(20)和APKToover(21)这样的工具进行逆向工程是很容易的。因此,已经提出了许多静态恶意软件分析工具[22 ]、DeBoFoCutoRe[4]、[23-]和[24]、[25],它们直接从Dalvik bytecode中提取它们的特征。例如,从名称文件、类名、字段名、变量和字符串等关键程序特征可以很快从.DEX文件中获得,并给出有用的初步信息。图1提供了属于FakeInstaller家族的恶意应用程序的Dalvik bytecode快照。可以看出,通过解析字节码,可以容易地获得恒等字符串和有关标识符的一些有用信息。

2.2 Android中的混淆

混淆通常用于保护软件免受逆向工程,从而使软件更难理解[26]。有多种混淆技术[27]。在这项工作中,我们专注于三种众所周知的混淆技术,这些技术通常应用于Android应用程序,即标识符重命名,字符串加密和控制流混淆[27,28]。

编程的一个常见做法是为标识符(即变量,类和方法名称等)选择有意义的名称,以提高代码的可读性。这将有助于识别和修复错误或稍后添加额外功能,因为理解具有有意义标识符的代码的语义要简单得多。但是,恶意软件编写者会尝试为其标识符选择无意义的名称,或者使用混淆器来伪装其源代码中使用的密钥标识符。混淆器使用各种方法在源代码级别或直接在.dex文件中重命名应用程序的密钥标识符。模糊标识符通常可以在视觉上与非模糊标识符分开,因为它的名称没有意义。例如,常见的重命名策略是按字典顺序选择随机短字符串,例如#39;a#39;,#39;b#39;,#39;aa#39;,#39;ab#39;,#39;ac#39;等,通常长度小于3取决于标识符的数量。第二种策略是通过过度重载来利用Java的重载功能,并将不相关的标识符名称映射到原始名称。

通过这样做,当关键信息(如方法名称)被模糊时,逆向工程师需要花费更多精力来理解代码的隐藏语义。根据最近的一项研究[4],恶意软件中标识符重命名的流行程度略低于来自第三方市场的良性应用程序。此外,恶意软件作者倾向于使用更复杂的重命名策略,例如使用特殊字符(例如,以Unicode编码),这为开发用于检测这种类型的混淆的系统带来了挑战。

常量字符串也可以泄漏敏感和私有源代码信息。因此,它们以不同方式加密,以防止对应用程序进行方便的反向分析。加密加密的最简单方法是通过XOR操作。但是,可以应用标准加密算法,包括AES或DES [29]。此外,可以动态定义(或更改)秘密密钥以应用更高级的字符串混淆类型,这几乎不可能由静态分析工具处理。研究表明,字符串加密在恶意软件中更受欢迎,几乎所有良性应用程序都不使用这种类型的混淆。

控制流混淆通过其控制流图(CFG)中的修改来改变程序的逻辑流程,从而阻碍静态分析。此类别的典型技术试图扩展或压平CFG,以增加应用程序逆向工程的成本。执行此操作的常见方法包括注入死(或不相关)代码,扩展循环条件,添加冗余操作,并行化代码,重新排序语句,循环以及插入不透明谓词。这些方法中的大多数影响了CFG的一些属性,例如节点和分支的数量。根据最近的观察,控制流混淆并未得到广泛使用,并且它仅由少数商业混淆器提供,例如Allatori [14]和DashO [30]。

2.3数据挖掘和机器学习

虽然数据挖掘和机器学习共享一些概念,但它们在几个主要方面有所不同。通常,数据挖掘被定义为从大量数据中发现隐藏模式的过程,或者换句话说,获得关于存储在数据库中的数据的一些见解[31]。数据可以以电子方式存储,并且模式的搜索通常由计算机自动化。另一方面,机器学习通常被定义为从先前的观察中学习的过程[32]。在大多数情况下,在通过尝试各种数据挖掘方法获得的先前看到的数据中探索有意义的模式之后,学习新信息。数据挖掘已被用于各种领域,包括网络安全的许多领域[31],特别是恶意软件检测[33]。

传统的数据挖掘算法需要具有整套过去的观察(称为训练集)以发现有趣的模式,并且稍后将由机器学习算法用于预测未来的观察。因此,为了从一组新的观察中探索新模式,需要重新运行。然而,随着新设备和技术的出现,以及智能手机和物联网(IoT)等产生的数据的数量和频率,传统的数据挖掘算法无法有效应用,因为它们需要在短时间间隔,以低成本不可行。

连续和快速的数据流特别为传统的数据挖掘算法带来了巨大的挑战,并且机器学习方法通​​常基于它们工作。其中一些挑战包括但不限于概念漂移[34],特征漂移[35],时间依赖性[36]以及时间和内存方面的受限资源要求。此外,可以在此处找到传统数据挖掘和机器学习算法中已知的典型问题,包括训练数据集的非代表性,遗漏的特征值,欠拟合,过度拟合和不相关的特征。因此,近年来已经进行了若干尝试以引入用于处理数据流的新方法。

DSM是传统挖掘技术的变体,它试图从持续快速发展的数据中探索模式。这两种方法在预测由即将被称为特征向量的许多特征所代表的新即将到来的实例的标签方面是类似的。然而,与传统数据挖掘算法常用的大型静态训练数据集相比,DSM方法从逐渐增长的训练实例池构建模型[37]。因此,所有基于传统数据挖掘的机器学习方法称为批量学习算法,利用数据流挖掘的机器学习方法称为在线学习算法。由于DSM的广泛应用领域,已经开发了几种工具,包括大规模在线分析(MOA)[38],可扩展的高级大规模在线分析(SAMOA)[39],高级数据挖掘和机器学习系统(ADAMS)[40] ],JUBATUS [

全文共17468字,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[59],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。