简单的活着

Forced Execution

Posted on By Mista Cai

Automated Hybrid Analysis of Android Malware Through Augmenting Fuzzing With Forced Execution

(IEEE TMC’18)


Abstract

自动触发恶意行为是了解恶意软件以开发有效解决方案的重要步骤。现有的自动动态分析方法通常试图通过依赖简单的模糊测试或复杂的输入生成技术(例如,复杂的执行)来触发恶意行为。然而,高级恶意软件通常采用各种规避技术来隐藏恶意行为,例如,通过引入非常难以触发的复杂条件检查。在本文中,我们提出了一种名为DirectDroid的新方法,该方法通过按需强制执行绕过相关检查,同时采用模糊测试来提供必要的程序输入。通过这种方式,可以成功触发许多隐藏的恶意行为。为了确保对恶意行为的正常执行,DirectDroid还在很大程度上处理由强制执行引起的潜在程序崩溃。最后,我们实现了DirectDroid的原型,并针对最近的951个恶意软件样本对其进行了评估。我们的实验结果表明,即使发生崩溃,DirectDroid也可以触发比以前的几个恶意行为更多的恶意行为。我们的进一步分析表明,即使采用强制执行,DirectDroid的误报率也很低。

1 INTRODUCTION

迄今为止,Android是最受欢迎的移动设备平台,拥有数百万个Android应用程序(应用程序)。其巨大的受欢迎程度和开放性促进了移动技术的发展,但同时也使用户面临各种安全和隐私风险。正如[1],[2]报道的那样,移动威胁在过去几年中不断上升,不仅来自传统恶意软件,还来自其他可能有害的应用程序(PHA),如后门,商业间谍软件,欺诈应用程序和勒索。

为了应对移动威胁的快速增长,已经提出了许多自动分析技术。其中,静态分析[3],[4],[5],[6]是一种非常强大的技术;然而,在许多情况下它本质上是不精确的,例如消除,反射和动态代码加载。出于这个原因,自动动态分析技术[7],[8],[9],[10],[11],[12]已被提倡用于移动应用分析[13]。与静态分析相比,动态分析不必理解恶意代码中的复杂逻辑,并且不受代码混淆和打包的影响。

为了隐藏他们的恶意行为,恶意软件和PHA越来越多地采用各种规避技术[5],[6],[14],[15]并且仅在非常特定的条件检查(特定事件输入或环境设置)下展示恶意行为。例如,PHA可以仅在其在物理设备上运行并与人类用户交互时才弹出广告或收集用户的联系人[6]。因此,有效触发隐藏的恶意行为对于针对移动恶意软件的战争中的自动化动态分析至关重要。

为了解决这个问题,研究人员提出了几种生成输入的技术,这些技术可以满足控制恶意行为执行的复杂条件检查。其中,最具代表性的是符号/范围测试[9],[11],[16],[17],[18],它们使用具体值和符号派生的路径约束来运用不同的路径并生成事件输入。但是,这些方法中的大多数主要处理对事件输入的检查,并且经常忽略(或支持有限的一组)恶意软件所期望的环境设置,例如时间,位置等。这种固有的限制阻止了它们的发生。触发受特定环境设置检查保护的恶意行为。此外,他们还面临可扩展性问题。最近,FuzzDroid [8]被提出来解决这个限制。它使用基因突变模糊器来绕过对必要环境设置的检查,并将执行驱动到特定的目标位置。但是,仍然存在一些限制。虽然它可以模拟更广泛的环境设置,但仍然无法模拟潜在环境设置的所有方面。此外,它还缺乏对生成某些特定事件输入的支持,例如正确顺序的两个特定事件输入。结果,现有技术都没有能够绕过各种条件检查,这些检查引入了事件输入和环境设置以逃避检测。他们仍在努力触发一些隐藏的恶意行为并获得更完整的恶意行为视图。

我们的工作。在本文中,我们专注于击败Android恶意软件中的各种规避技术,并在自动化动态分析过程中触发更多隐藏的恶意行为,从而帮助生成更全面的恶意软件报告。我们的方法主要利用三个观察结果:1)逃避技术通常旨在控制恶意行为的执行; 2)逃避技术通常实施各种条件检查(即预测),这些检查受事件输入或环境设置的影响。 3)Android应用程序通常通过各种API处理来自事件输入或环境设置的值。基于这些观察,我们提出了一种名为DirectDroid的有效方法,旨在绕过逃避技术带来的条件检查并触发隐藏的恶意行为。

DirectDroid通过按需强制执行来增强模糊测试。 1)模糊。为确保程序正常运行,需要必要的程序输入。这是通过拦截各种模糊API并启发式返回值提供者提供的值来完成的。 2)按需强制执行。我们只需通过强制执行来检测和禁用这些检查,而不是需要耗时且重量级的程序分析来生成测试输入来绕过复杂的检查。具体而言,DirectDroid在执行期间动态监视条件检查的结果,并试探性地修改某些检查的分支结果,以强制执行通向目标位置的程序路径。此外,处理潜在的崩溃以确保代码正常地朝向目标位置运行。 DirectDroid可以提供一些有价值的信息,帮助分析师进行进一步的手动分析。例如,当未能到达目标位置时,Direct-Droid将返回无法绕过的最新条件检查的代码位置。

我们对951个恶意软件样本进行了DirectDroid评估。实验结果表明,DirectDroid有效地达到了1255个目标位置,大大超过了FuzzDroid达到的744个目标位置[8]。对DirectDroid达到的其他目标位置的进一步手动分析表明,一些逃避技术仍然可以轻松地解决许多现有的自动化动态方法,如FuzzDroid。此外,在我们提出的碰撞处理的帮助下,即使发生碰撞,DirectDroid也可以从24个样本到达55个目标位置。

总结一下,我们的贡献如下:

  • 我们提出了一种新的混合方法来对抗Android恶意软件中使用的各种规避技术。 通过增加对新实现的按需强制执行的模糊测试(动态修改某些条件检查的分支结果),我们的方法可以触发更多隐藏的恶意行为。
  • 我们建议通过模糊测试和必要的instrument来避免崩溃。 结果表明,崩溃可以在很大程度上处理。
  • 我们实施了我们的方法原型,并在大量现实世界的恶意软件样本上对其进行评估,以证明其有效性和效率。