简单的活着

A Survey

Posted on By Mista Cai

Malware Dynamic Analysis Evasion Techniques: A Survey

Abstract


网络世界充斥着不断变化的恶意软件,这些恶意软件很容易渗透到所有防御机制中,恶意地向用户提供操作并秘密地泄露敏感数据。了解此类恶意软件的内部工作方式可以有效地对抗它们。通过手动或自动进行的动态分析来实现这种理解。因此,恶意软件作者已经设计并推进了逃避技术以阻止或逃避这些分析。在本文中,我们提出了一个关于恶意软件动态分析规避技术的综合调查。此外,我们提出了这些技术的详细分类,并进一步证明了它们对不同类型的检测和分析方法的有效性。

我们的观察证明,回避行为主要是对检测和规避沙箱感兴趣。我们认为,这种恶意软件的主要策略是指纹识别,然后是针对检测人类交互的反向图灵测试策略的新趋势。此外,我们将假定当前的防御策略从反应性方法开始,以致力于更透明的分析系统,很容易被零日指纹识别技术或其他逃避策略(如拖延)所挫败。因此,我们建议采用更通用的防御策略,重点放在可能阻碍所有规避策略的路径探索技术上。

1 Introduction


通过ARPANET网络获取访问权限,Creeper将自己远程复制到其他计算机,并提示消息:“如果可以,请抓住我”。作为1971年的一项实验[1],Creeper没有任何有害的目的,然而,随着它的快速传播,它将个人或实体的未来转化为将其恶意意图纳入软件(因此称为恶意软件),能够对受感染的系统产生不良和有害的影响[2]。在那些日子里,开发恶意软件仅仅是炫耀;但是,在当今世界,随着互联网将每个人,机构和组织整合到一个有凝聚力的复合体中,恶意软件作者的目标已扩展到包括更有利可图的目标,即金钱,智力和权力。因此,这些可能性极大地推动了一个新的恶意行业,其结果是高度复杂的变体,它恰当地渗透到系统中,并且对用户或防御机制恶意地操作。 只有通过了解此类恶意软件的精确内部工作,才能设计出能够承受这种复杂程度的对策或技术。恶意软件分析是实现这种理解的方法[3]。最初,在反汇编程序,反编译器等的帮助下,分析师检查了恶意软件的二进制文件和代码以推断其功能。这种方法,也被称为静态分析变得更加艰巨,并且与代码混淆策略[4,5,6,7,8]和其他针对静态分析的规避策略的出现和演变相关。不透明常数[9],封隔器[10]等作为一种解决方案,采用的一种有前景的方法是动态分析,其中分析和检测的基础是文件的作用(行为)而不是文件的作用。 (二元和签名)[11]。换句话说,在动态分析中,运行可疑程序的实例并在运行时检查其行为。这种方法可以消除上述静态分析规避策略所带来的障碍。然而,为了阻止这些努力,恶意软件作者转而采用针对动态分析的新类型的逃避策略。 在本文中,我们确定了两种动态分析模式,即手动和自动。手动动态分析是一种更传统的动态分析形式,通常在调试器的帮助下进行。自动化动态分析是一种更新颖的方法,也是对安全供应商日常面临的不断增加的新样本的回应。自动动态分析通常由Sandbox技术代表。此外,我们对针对每种分析模式量身定制的规避技术进行了全面调查。 此外,我们将描绘当前以及新出现的回避趋势。在手动动态分析规避的情况下,我们认为反调试技术仍在实施中。此外,我们将讨论新的无文件恶意软件是如何出现并普遍采用传统的动态分析。此外,在自动动态分析的情况下,我们将逃避策略分为两大类:依赖于检测和与检测无关。我们认为,直到最近,沙箱技术一直专注于主要针对检测依赖规避策略的技术。作为回应,恶意软件作者正逐渐采用越来越多的与检测无关的策略来规避这种自动化动态分析环境。 我们在本文中的目标是三重的。首先,鉴于该主题的重要性,我们的目标是提供全面的分类,希望走向既定的分类。其次,我们渴望揭示回避行为趋势的方向。因此,我们试图了解每种逃避策略普遍存在的现状。我们的第三个目标是确定当前防御策略的缺点,并提供一个我们认为有效面对规避恶意软件的潜力的方向。 我们的贡献是: •我们针对手动和自动两种模式提供了恶意软件动态分析规避技术的全面调查。 已经有一些关于恶意软件分析规避的调查,如[12],它只关注自动化动态分析规避,只涵盖了一个(我们已经确定的五个)逃避策略。 其他调查如[13,14]通过调查分析规避,并未提供恶意软件动态分析规避的详细概述。 •对于手动和自动模式,我们提供了恶意软件规避策略和技术的详细分类。 据我们所知,这将是第一次动态分析规避策略的全面调查,提供彻底的分类。 •我们描述了领域自动化动态分析规避技术的当前趋势,并讨论了未来方向的正确行动方案。

1.1 Overview

1.1.1 Scope

最新报告证明,2017年Windows恶意软件占据了惊人的77.22%[15]。 统计数据还显示,由于采用了逃税技术,“64%的AV扫描仪在1年后未能识别出1%的恶意软件”[16]。 这些数据进一步激励我们将注意力集中在针对Windows操作系统的规避恶意软件上。 此外,在我们的研究中,我们努力探索学术界和工业界的交叉点。 因此,我们审查了学术论文和相关行业提供的文献。

1.1.2 Approach

我们的主要工作是提供动态分析规避技术的详细而生动的概述。 为此,我们将审查结果分为三个层次:类别,策略和技术。 每个类别代表一种特定的方法和目标,通过不同的策略共享和追求。 然后,每种策略都通过不同的技术实现。 在整个调查过程中,我们详细阐述了战术层面的细节,并讨论了几种有代表性的技术。 在每个部分的最后,我们提供了一个总结表。

1.1.3 Evaluation

为了实现本次调查的目标,我们采用了一些标准,如效力和不同技术的普遍性,作为相关主题比较的基础。 在我们的总结表中,我们提供了可用统计数据的审查工作数据,否则我们会根据自己的观察结果进行评估。

1.1.4 Organization

在第二部分中,我们讨论了手动动态分析(调试)和相应的反调试策略。 在第三节中,我们讨论了自动化动态分析和相应的规避策略。 第二节和第三节之后是讨论。 最后,第四节总结了该文件。 图1展示了我们对恶意软件动态分析规避策略的建议分类。

2 Preliminaries

2.1 Evasion and Transparency

在文献中,逃避构成了恶意软件使用的一系列技术,以保持隐身,避免检测或妨碍分析工作。 我们将要讨论的主要逃避策略是指纹识别[17]。 通过指纹识别,恶意软件会尝试检测其环境并验证它是否位于生产系统或分析系统中。

在同一水平上,一个主要策略是隐藏可能暴露分析系统的线索和线索。 如果系统暴露出较少的恶意软件线索,则系统更加透明[18]。

2.2 Manual vs Automated

手动和自动分析是构成我们分类基础的两个主要术语。 手动分析是指分析过程由专业人员执行。 另一方面,自动化是由机器或软件自动执行的过程。

2.3 Detection vs Analysis

以前,没有必要定义这两个术语。 检测只是指识别给定文件是否是恶意的过程; 另一方面,分析将指的是理解给定恶意软件如何工作的过程。 然而,今天,这条分界线模糊不清。 原因是现在扩展了沙盒等自动分析工具的作用。 除了报告恶意软件行为之外,沙箱现在正在扮演自动检测机制的核心角色[18]。 在本文中,我们在说出“分析”时遵循类似的概念。 对于“手动”,这将意味着理解恶意软件行为[19],对于自动化,另外它可以意味着检测。

2.4 Static vs Dynamic

有两种主要的分析类型,即静态和动态。 静态分析是分析代码或二进制文件而不执行它的过程。 动态分析是在运行时研究恶意软件(API,系统调用等)的行为的过程。 两种类型的分析都可以手动或自动执行。 在本文中,我们的重点是动态分析以及恶意软件如何阻止或规避此类分析。

2.5 Category, Tactic, and Technique

在本文中,我们使用术语“类别”,“策略”和“技术”作为我们分类的基础。 逃税类别是我们的高级别分类。 每个类别都有逃避的目标,并以实现它的特定态度。 这种态度与逃税的效力高度相关,并且每种类别下的策略都追求这种态度。 换句话说,战术是以其父类别的特定态度逃避的具体动作或方法。 最后,技术是这些策略的各种实际实施。

4 Automated Dynamic Analysis Evasion

虽然有效,但手动动态分析受到严重限制,即时间。 McAfee提供的2018年统计数据报告每天收到超过600K的新样本[68]。 分析大量的恶意样本需要采用更加灵活的方法。 这种需求导致了一种新的分析范式,我们称之为自动化动态分析。 Sandbox,是这种范式的代表性技术。 在本节中,我们将简要介绍沙箱,并进一步提出恶意软件规避策略的分类和比较。

4.1 An overview of malware sandboxes

恶意软件自动化动态分析系统背后的概念是在一个名为sandbox的受控和包含的测试环境中捕获可疑程序,在该环境中可以仔细研究和分析其在运行时的行为。 最初,沙箱被用作手动恶意软件分析的一部分。 但是今天,他们正在扮演自动化检测过程的核心角色[18]。 沙箱以不同的方式构建。 为了更好地掌握逃避策略,并描述它们如何反对不同的沙箱技术,首先,我们必须了解它们是如何制造的。

4.1.1 Virtualization-based sandboxes

根据Goldberg [69]的虚拟机(VM)是“真实机器的高效,孤立的副本。”管理程序或虚拟机管理器(VMM)负责管理和调解程序对底层硬件的访问请求。 。换句话说,为了访问硬件,VMM顶上的每个虚拟机必须首先通过管理程序。有几种方法可以基于虚拟化实现沙箱。一种方法是将分析工具直接编织到管理程序中,如以太[34]的情况。另一种方法是在运行恶意软件样本的虚拟机中嵌入分析工具(例如安装挂钩)。这种设计的实例是:Norman sandbox [70],CWsandbox [71]。这两种方法都固有地泄漏了一些恶意软件可以选择以检测沙箱存在的细微提示。在后一种情况下,例如,VMM必须向分析VM提供所需信息,这意味着每当恶意软件正在进行敏感系统调用时,VMM必须将控制传递给VM内的分析工具。执行这些程序而不泄漏的挑战是深刻的,我们将据此详细说明。

4.1.2 Emulation-based sandboxes

仿真器是一种模拟功能或硬件的软件[72]。 可以通过不同的设计实现基于仿真的沙箱。 一种是模拟必要的OS功能和API。 另一种方法是模拟CPU和内存,许多反病毒产品就是这种情况[72]。 除存储器和CPU之外的I / O仿真在文献中被称为完整的系统仿真。 基于仿真的沙箱的显着特性是它们提供的恶意软件内部工作(内省)的极大灵活性和详细可见性。 特别是在完整的系统仿真中,可以用微小的细节来研究被检查程序(PUI)的行为。

4.1.3 Bare-metal sandboxes

最近演变和令人困惑的逃避策略,由复杂的恶意软件所采用,需要一种新的分析范式。 新兴的想法是在几个不同的分析环境中同时执行恶意软件,假设任何行为偏差都是恶意意图的潜在指示[73]。 这种想法的可行性需要一个参考系统,其中分析恶意软件而不使用任何可检测的组件,理想的选择是在透明度方面等于真实生产系统的裸金属环境。 这种情况有几种产品,例如 Barebox,裸云等[73,74,75]。 除了每个设计提供的优点,微妙的漏洞或恶意软件利用的特定工作原则,以制定他们的逃避策略。

4.2 Proposed Classification of Automated Dynamic Analysis (sandbox) Evasion tactics

如果恶意软件实现了一个特定目标,它就可以胜利地逃避沙箱。这个目标是表现良好或者只要它驻留在沙箱中就不要执行其恶意有效负载。该策略利用两个事实。首先是由于大量恶意软件样本和资源限制,沙箱分配一个特定的有限时间来分析样本。第二个源于动态分析的固有局限性。在动态分析中,由于正在检查“运行时行为”和“执行”,因此检查器(沙箱)只能看到执行路径。因此,如果恶意软件在检查过程中没有描述任何恶意行为,则沙箱会将其标记为良性。 我们建议将自动化动态分析规避策略分为两类,即依赖于检测的逃避和与检测无关的规避。我们将详细阐述这些策略以及每种策略下的几种技术。此外,我们简要暗示了沙箱试图打败这些策略的方式。为了对这些规避技术提供更加一致的概述,我们采用以下三个标准作为我们比较的基础:

  • 复杂性:实施逃避策略的难度。 我们评估复杂性的试金石是代码行(LOC),更重要的是每个策略不同的挑战。 我们将在制定策略时讨论这些挑战.
  • 普遍性:该标准记录了特定策略的相对流行程度。 根据我们的观察或安全报告[68,76]和安全报告,我们尝试为每种策略提供相对流行率。
  • 功效等级:每种战术都有效力等级。 这证明了特定策略有效的沙箱类型。

4.2.1 Detection-Dependent Evasion

4.2.1.1 Fingerprinting

指纹识别是恶意软件通过寻找可揭示虚拟/仿真机器指示的环境伪影或标志来检测沙箱存在的一种策略。这些标志可以是设备驱动程序,磁盘上的明显文件和注册表项,也可以是差异模拟/虚拟化处理器。虚拟机或仿真的指示分散在不同的层次[77,78,79,80]。值得注意的是,最初,许多沙箱如Norman [70]是在VM上开发的。因此,在文献中,您仍然可以观察到沙箱和虚拟机被用于交换使用以暗示所包含的分析环境。同样的事实也是被称为反VM的技术出现的原因,这表明检测虚拟机可能意味着分析环境。已经进行了不同的研究以揭示沙箱留下痕迹的水平[23,81]。这些级别是:

  • 硬件:设备和驱动程序是恶意软件可能需要识别其环境的明显工件。对于设备,VM通常会模拟可以像爬虫恶意软件一样容易检测到的设备[82]。其范围从明显的足迹,例如VMWare以太网设备及其可识别的制造商前缀,到更微妙的标记。此外,VM使用特定的驱动程序与主机OS正确交互。这些驱动程序是恶意软件分析环境的其他指示。例如在路径中:C:\Windows\System32\Drivers存在可能暴露VMWare,VirtualBox等的迹象(例如Vm- mouse.sysvm3dgl.dllVMToolsHook.dll等)[83]。
  • 执行环境:沙箱中的恶意软件会在执行环境时遇到差异。例如,内核空间内存值在沙箱和本机系统之间是不同的,可以通过恶意软件检测到,如AgobotStorm Trojans [84,85]。此级别的工件在内存或执行中表现出来。例如,在内存工件的情况下,为了允许在主机和客户操作系统之间进行检查和控制,VMWare在它们之间创建了一个通道(“ComCHannel”)。虚拟PC挂钩以相同的方式工作[86]。
  • 应用程序:当在环境中使用分析应用程序时,通常会由于安装和执行的工件而泄露其存在,这些工件可以由好奇的恶意软件(如Rbot [87]或Phatbot [88])获取。即使没有执行,分析工具的证据可能驻留在光盘,注册表密钥等上,恶意软件可以很容易地找到它们,特别是如果它们包含众所周知的文件名或位置,例如SYSTEM\CurrentControlSet\Control\VirtualDeviceDrivers.。在类似的实例中,如果名称未被更改或隐藏相应的过程,则可以通过恶意软件枚举它们而不会遇到任何麻烦。例如,如果被恶意软件查询,VMtools.exeVmwareuser.exevboxservice.exe是虚拟机和分析环境的生动指标。
  • 行为:对于反恶意软件供应商而言,最麻烦的可能是由不完美的虚拟化/仿真或这些环境固有的特征引起的泄漏。特别值得关注的是模拟CPU和物理CPU之间的行为差​​异[77]。在仿真下运行的应用程序的性能优于真实系统。这种性能损失源于必须在仿真/虚拟化中执行的转换或拦截。这种差异可以通过各种时间攻击来揭示[89,49,90]。由于硬件配置的多样性,计算指纹识别的绝对性能是一项艰巨的任务。 恶意软件的另一种选择是计算相对性能[77]。采用此方法,恶意软件会比较同一系统上两个或多个操作的性能比。如果生产和仿真系统中的测量值发生显着变化,则沙箱存在的可能性很高。另一种利用仿真限制的有趣方法是观察和比较缓存对仿真和真实环境的影响。在该技术中,多次执行功能。正如预期的那样,第一次运行必须是最慢的。在没有缓存的情况下,再次执行相同的测试。时序分析描述了所采用的缓存的有效性。处理器缓存的模拟是一项复杂的任务,仿真器可能不支持它,其结果是在上述测试中暴露仿真[77]。另一个值得注意的技术是红丸测试[91]。一个不可思议的行为工件沙箱共享,是不完美的CPU模拟和驻留指令错误。如果恶意软件专门发现此类错误,并且在执行期间,它会注意到错误处理的指令,则会怀疑是否存在沙箱。
  • 网络除了陈等人提出的先前水平。 [23],恶意软件也可以探测网络以追求沙盒的标记。 这些标记以许多形式表现出来,例如已知的固定IP地址,[92],与防止或模仿互联网接入的沙箱有关的限制[93,94]或极快的互联网连接[95]。 例如,在[92]中提出的一种技术是基于其已知的IP地址来检测沙箱。 这是通过诱饵恶意软件在早期攻击中获得的。

指纹识别策略是恶意软件作者检测和规避沙箱的最初努力,正如我们观察到的那样,技术已经有了很大的发展。 在对抗指纹识别时,大多数解决方案都是反应性的,即必须首先公开指纹技术,然后提供相应的反逃避措施。 总的来说,指纹识别策略仍然是逃避沙箱的主要方法。[76]。

4.2.1.2 Reverse Turing Test

旨在检测的第二种策略是检查人与系统的交互。这种策略利用了沙箱是自动化机器而没有人或操作员直接与它们交互的事实。因此,如果恶意软件没有观察到任何人为交互,则它假定是在沙箱中。这种策略被称为反向图灵测试,因为机器试图区分人或人工智能。这种策略可以通过各种技术[80,96,97,95,98]进行。例如,UpClicker [98]或更高级的,BaneChant [99]等待鼠标左键单击以检测人类交互[100]。在反向图灵测试技术的很大一部分中,恶意软件会查找最后一个用户的输入。为此,恶意软件通常利用GetTickCount()和GetLastInputInfo()函数的组合来计算用户的空闲时间。为了测试它是否在真实系统上运行,恶意软件无限期地等待任何形式的用户输入。在一个真实的系统中,最终会按下一个键或者用户移动鼠标。如果发生特定次数,则恶意软件会执行其恶意负载。为了对抗这种逃避策略,模拟人类行为似乎很直观,但可能适得其反。一个原因是数字生成的人类行为也可以被检测到[101]。第二个原因是设计这种反转图灵测试的限制似乎只是想象力的一个功能。为了证明我们的观点,请考虑另一种技术,其中恶意软件在执行恶意有效负载之前等待用户滚动到富文本格式(RTF)的第二页。或者在另一种方法中,使用Windows函数GetCursorPos()来保存系统光标的位置,恶意软件检查光标在指令之间的移动速度;如果超过特定阈值,则意味着该移动太快而不能由人类生成并且恶意软件停止运行[100];或者另一种更新近的技术,它依赖于寻找生产系统的磨损迹象[102]。设计反转图灵测试的看似无穷无尽的可能性使沙箱成为一个令人费解的挑战。这种策略正变得越来越普遍,但仍然没有指纹识别那么普遍[76]。

4.2.1.3 Targeted

依赖于检测的类别的第三种策略是靶向检测。这种策略与以前的策略略有不同,因为该恶意软件不是直接检测或回避沙箱,而是指示环境以验证主机是否恰好是预期(目标)机器。换句话说,恶意软件会查找其目标,而不是沙箱。这种策略可以采用不同的路线: •环境目标:众所周知,Stuxnet是第一个将目标战术作为其逃避策略的一部分的网络武器[97]。 Stuxnet明确地寻找特定工业控制系统的存在,否则将保持休眠状态。根据感染方法,APT攻击遵循不同的路线。 •单独目标:在Stuxnet的情况下,策略是继续探测受害者(蠕虫行为),直到达到目标。其他类别的APT包括诸如darkhotel [103]之类的攻击,其中感染是通过鱼叉式网络钓鱼(即直接针对目标)进行的。换句话说,攻击者确保他们的恶意代码直接传递给他们的目标。 •依赖于环境的加密:此类有针对性的恶意软件具有加密的有效负载,其解密权受到从受害者环境派生的密钥的影响。密钥可能是硬件序列号,特定环境设置等。有关该主题的详细讨论,请参阅[104]。

4.2.2 Detection-Independent Evasion

这类策略的主要区别在于它们不依赖于检测目标环境,并且它们的逃避策略独立于目标系统,这使得它们不必使用复杂的检测技术。 因此,旨在实现更高透明度的努力对这些策略没有影响。 在下文中,我们详细介绍了此类别的策略以及部署它们的几种技术。

4.2.2.1 Stalling

这种分析逃避的策略利用了这样一个事实,即沙箱分配有限的时间来分析每个样本。恶意软件必须简单地将其恶意活动推迟到后分析阶段。为此,恶意软件作者提出了停滞的想法[16],这可以通过从简单的调用sleep()函数到更复杂函数的各种技术来实现。在这里,我们研究一些已知的主要停滞技术。

  • 简单的睡眠:睡眠是最简单的失速形式,就像失败一样简单。这个想法是在n分钟内保持不活动状态,以便沙箱检查在观察任何恶意活动之前超时。在释放到网络后,恶意软件将执行恶意负载。臭名昭着的DUQU [105]展示了这种技术,作为点火的先决条件之一。它要求系统保持闲置至少10分钟[5]。另一个例子是Khelios僵尸网络[106]。 2013年发现的Khelios样本的新变种(称为Nap)调用SleepEx()API,超时为10分钟。执行延迟会导致沙盒分析超时,然后实现无害标记。为了对抗这些技术,沙箱提出了加速时间的简单想法(称为睡眠修补)。虽然看似合乎逻辑,但睡眠修补具有不可预测的效果。在特定的恶意软件样本中观察到睡眠修补的一个有趣的副作用,其中加速实际上导致在预定义的时间段内等待人类交互的恶意软件实例的不活动[101]。尽管有副作用,但睡眠修补在某些情况下变得有效,恶意软件作者提出了更先进的技术作为回应。
  • 高级睡眠:Pafish [107]等新的恶意软件实例被选为更高级的睡眠技巧。它们使用rdtsc指令结合Sleep()来检测睡眠修补,以检查执行的加速。 •代码停滞:在“休眠”时,延迟执行,在代码停止恶意软件时,选择执行不相关且耗时的良性指令,以避免引起对沙箱的任何怀疑[101]。 Rombertik [108]是一种旨在窃取机密数据的间谍软件。为了混淆沙盒,它将大约9.6亿字节的随机数据写入内存[109]。这种技术对沙箱施加的障碍是双重的。第一个问题是当样本主动运行时,沙箱无法怀疑停滞。第二个问题是,这种过多的写作会压倒跟踪工具[108]。在另一个引人注目的代码停滞技术中,恶意软件使用弱加密密钥加密有效负载,并在执行期间强制执行[73]。

4.2.2.2 Trigger-based

不依赖于探测的第二种策略是基于触发的战术或更传统的逻辑炸弹。正如我们已经指出的那样,逃避沙箱的基础是只要它们在沙箱中就可以避免表现出恶意行为。保持休眠的另一种策略是等待触发。有许多环境变量可以作为恶意软件触发器,从系统日期到特制的网络指令。例如,MyDoom [51]在特定日期触发并执行DDoS攻击,或者某些键盘记录器仅记录特定网站的击键;最后,DDoS僵尸只有在给出正确的命令[110]时才被激活。在文献中,这种行为被称为基于触发器的行为[111]。在下文中,恶意软件中嵌入了许多触发器作为防沙箱的保护。 •基于按键:如果恶意软件注意到特定关键字,则会触发该恶意软件,例如,应用程序的名称或窗口的标题,[112]。触发发生时会发生什么,取决于目的和背景。例如,恶意软件可能会启动日志记录击键。 •系统时间:在这种情况下,系统日期或时间将作为触发器[112,113,114] •网络输入:一部分恶意软件在从部落洪水网络[21]的情况下从网络接收某些输入时被触发。 •基于隐蔽触发器:以前的技术通常预先假定缺少代码检查以保持未被检测到(因为编译的恶意软件通常就是这种情况)。但是,有关自动检测此类节目路线的进展,例如最先进的基于隐蔽触发的技术被设计为对旨在检测此类触发指令的自动化方法的响应。这些技术利用指令级速记来隐藏反汇编程序中的恶意代码。此外,它们实现基于触发器的错误以提供隐身控制传输,这使得动态分析难以发现正确的触发器[97]来自系统调用的返回值是恶意软件触发器的其他实例。 基于触发器的策略最初并未被用于逃避沙箱,并且在野外仍然相对较少。通常通过路径探索方法来寻找这些触发因素,例如,符号执行,目的是以自动方式查找和遍历所有条件分支。这些方法需要大量资源,仍然低于公平的效率水平。

Fileless Malware

在3.2.3.4中,我们讨论了无文件恶意软件。 除了严格抵制手动分析之外,无文件恶意软件还非常善于回避安全机制。 这种策略的一个主要区别在于,恶意软件通常不会首先受到分析环境的影响。 这是这种策略的固有结果。 无文件恶意软件利用的技术类似于偷渡式攻击[115]。 通常,无文件恶意软件利用目标系统(操作系统,浏览器,浏览器插件等)的漏洞,并将其恶意代码直接注入内存。 无文件恶意软件的新趋势使用Windows PowerShell来执行其任务。 正如前面提到的,这种攻击正在上升,而对它的防御非常复杂。

4.3 Discussion

在表2中,我们总结了我们对恶意软件自动动态分析规避的调查。在此表中,我们比较了基于四个标准的技术,即实施的复杂性,普遍性,功效水平和检测复杂性。此外,在示例列中,我们提供了包含相应技术的恶意软件样本。此外,根据沙盒反击策略,我们暗示防守方如何努力对抗逃避策略以及这些对策的复杂/有效性。 在本节中,我们提供了有关恶意软件自动动态分析规避的调查和分类。我们的观察与[76,66,17]等研究一致,指出了几种趋势。

到目前为止,指纹识别是最普遍的策略,如果精确执行,它已被证明是一种有效的技术。除了其他研究和我们的观察之外,关于指纹战术优势的另一个证据是过去十年中防御性研究的趋势以及它们如何演变[116,117,111,34,118,75,119,120,121, 73,122,123,94,124]。在研究这些研究时,我们注意到他们中的绝大多数都在追求更多的透明系统,其原因是对指纹识别更具弹性,更广泛地说,依赖于检测的策略。

我们看到指纹识别策略普遍存在的两个原因。第一个原因是指纹识别方案的可能性很大。在系统的每个级别(应用程序,网络,行为等)中,始终存在恶意软件可以查找的新标识。

第二个原因是针对指纹策略的对策策略。在这方面有两个主要策略。第一个是重新开始的方法。也就是说,为了使沙箱中和恶意软件的指纹识别尝试,它必须首先知道什么是指纹识别。第二种策略是按照单机分析系统的方法寻求更透明的系统,例如: [34]或异质分析,即裸金属分析[75,73]。回顾一下我们在本节中提到的案例,我们知道这两种策略仍然容易受到零日指纹识别技术的影响。

尽管实现更高透明度的尝试已经提高了指纹识别的标准,但恶意软件采用的新逆转图灵测试策略实际上挫败了大部分工作。再次反向图灵测试战术,推动防御者用反应方法进行防守。

另一方面,我们注意到恶意软件攻击的新趋势 检测独立策略。最值得注意的是[17]和无文件战术[64]。为开发更透明的系统而进行的大部分努力已经提高了依赖于检测的策略的门槛。这是推动恶意软件作者采用更多独立于检测的策略的一个原因。 无限制的指纹识别可能性,被动方法,透明系统对零日检测依赖策略(指纹识别,目标,反向图灵)的脆弱性,寻求透明度的策略对检测独立策略的脆弱性,似乎都需要更通用的有效的防御策略。

一种可能有效对抗大多数逃避策略的有前途的方法是路径探索技术。如果满足特定条件,每个恶意软件都会暴露其恶意负载。路径探索技术可能会触发这些条件并暴露恶意行为。

5 Conclusion and Future Directions

在本文中,我们对恶意软件分析规避技术的主题进行了调查,并提出了手动和自动分析两种模式的分类。

对于自动化动态分析,我们定义了两个主要类型的规避。检测依赖和检测无关。在防守方面,防守者正在寻求四大战略。反应性方法,更透明的分析系统,裸机分析以及针对更通用方法的几种努力,即路径探索。前三个防御战略可以希望仅仅针对依赖于侦测的逃避策略有效,并且可以放松其针对侦测独立策略的有效性。至于与检测无关的策略,我们需要更通用的方法,如路径探索方法。

在努力实现路径探索方法的同时,我们提倡自动化指纹识别技术,如MORPHEUS [125]和Red Pills [91]。这些解决方案不是一般性的回应,但它们会大大提高追踪指纹策略的恶意软件的标准。

我们建议的另一个调查线是分析使用恶意软件规避策略对自己的有效性;对于依赖于检测的策略,恶意软件会不遗余力地检测沙盒并避免执行。安装在模拟沙箱的生产系统上的程序会产生什么结果。如何有效地阻止恶意软件,如果巧妙地执行,这种方法将如何显着提高设计未来逃避企图的标准。