恶意软件检测(13)Dynamic Malware Analysis
Dynamic Malware Analysis in the Modern Era—A State of the Art Survey
本次调查的目的是对用于动态分析恶意软件的现有方法进行全面和最新的概述,其中包括对每种方法的描述、其优缺点以及对恶意软件规避技术的适应性。此外,我们还概述了利用机器学习方法来增强动态恶意软件分析能力的一些重要研究,这些研究旨在检测、分类和分类。
学习内容:
- 分析方法:易失性内存取证(volatile memory forensics)、侧通道分析(side-channel analysis)
动态分析的意义:
- 虽然恶意软件编写者可以使用各种技术(如代码混淆、动态代码加载、加密和打包)来逃避静态分析(包括基于签名的防病毒工具)态分析对这些技术是健壮的,并且可以提供关于所分析文件的更多理解,因此可以导致更好的检测能力。
动态分析的局限性:
- 只有执行的代码是可观察的。这意味着,如果没有精确地满足所需的条件,那么某些代码可能无法执行,从而无法进行分析。Deeplocker
- 动态分析还需要计算开销,这可能会降低执行速度。
- 分析必须在恶意软件针对的特定操作系统和/或硬件上执行。
说明:
- 物联网设备是另一个可以受益于内存分析的平台示例,因为基于软件的新检测机制的设计和安装并不简单。此外,由于物联网设备具有有限的计算资源,现有的动态分析技术对于此类设备可能不太相关或有效。
恶意软件分类
- Classification of Malware by Type
- Classification of Malware by Malicious Behavior
- Classification of Malware by Privilege
- About Behavior and Privilege
ANALYZING MALWARE BEHAVIOR
动态恶意软件分析框架描述
分析技术和学术工具
函数功能分析
- 每个进程都依赖函数调用来执行其职责,不管这些函数是进程内部的还是外部的(例如,由其他进程导出的函数、系统调用)。通过跟踪恶意软件调用的各种函数以及与这些函数相关的参数,可以更好地了解所分析恶意软件的行为。调用函数时获取通知可以通过将一段代码Hooking到该函数来实现。
- hooking mechanism
- code injection
- TTAnalyze(LastLine)是一个分析工具,它用一个称为Inside the Matrix(insideetm)的客户机组件扩展了QEMU仿真器,该组件将虚拟地址转换为物理地址。
- CWSandbox基于将可信DLL的代码注入到分析的进程中,该进程通过覆盖导出地址表(EAT)中的条目并将执行重定向到CWSandbox来拦截函数调用。CWSandbox收集大量的信息(比如被调用函数的名称、参数、系统状态等),然后将这些信息呈现给用户。
- Capture使用三个监视器分析操作系统的状态:文件系统监视器(跟踪所有硬盘上的读/写事件)、注册表监视器(跟踪多个注册表事件,如OpenKey、CreateKey等)和进程监视器(跟踪进程的创建和终止)。所有监视器都提供其他数据,如触发事件的进程、完整路径和时间戳。使用内核驱动程序,捕获与上述每个监视器对应的内核事件。最终结果是恶意软件触发的事件列表,以及它们的时间戳和参数。
- MalTRAK是一个跟踪恶意软件行为并扭转其影响的框架。它使用内核模式组件并将自身与关键函数挂钩,以跟踪恶意软件的操作,同时提供撤消这些操作的机制。
- dAnubis是用来分析内核驱动程序和检测rootkit的。它使用一个in-guest组件来监视rootkit和系统其余部分之间的通信。触发器引擎调用各种windowsapi调用来显示rootkit(定义为一组在恶意软件中获得root访问权限、完全控制目标操作系统和其底层硬件的技术编码)的存在(例如,隐藏的进程或文件)。
- 每个进程都依赖函数调用来执行其职责,不管这些函数是进程内部的还是外部的(例如,由其他进程导出的函数、系统调用)。通过跟踪恶意软件调用的各种函数以及与这些函数相关的参数,可以更好地了解所分析恶意软件的行为。调用函数时获取通知可以通过将一段代码Hooking到该函数来实现。
Execution Control 执行控制
动态恶意软件分析应该包含一种机制,偶尔停止恶意软件的执行,并检查恶意进程和操作系统的状态。执行控制技术包括:
- Debugging调试(也称为单步)是一种可靠的分析技术,最初是为了帮助程序员发现代码中的错误而开发的。使用CPU的陷阱标志在每个操作码指令后生成中断,调试器可以允许恶意软件在强制上下文切换回分析进程之前只运行一条操作码指令,然后分析进程可以检查恶意软件和操作系统的状态。
- 等
Flow Tracking 流量跟踪
细粒度分析用于跟踪通过恶意软件执行代码的信息流(例如,当一个函数的结果用作调用另一个函数的参数时)。
- Data Tainting
- Vigilite是一种分析工具,它使用二进制工具实现数据污染。最初是为了检测和阻止蠕虫的传播而开发的,Vigilite寻找来自网络的受污染数据的执行。因此,污点源是网络,当指令指针(IP)指向污点数据时,污点接收器就到达了,这意味着一些来自网络的不可信代码正在被执行。
- Panorama最初是一个TEMU插件,用于对各种I/O设备(包括硬盘、键盘或鼠标)进行污染分析。后来成为一个独立的平台。全景图的输出是以图形的形式提供的,它允许用户跟踪进程和内存区域之间的数据流。
- Dytan是Pin仪器系统的一个扩展,为数据污染提供了一个易于使用的API。它的开发采用了灵活的设计,允许用户配置各种组件,如污染源、污染汇、数据流跟踪器和控制流跟踪器。Dytan可以配置为跟踪显式和隐式信息流。此外,它的功能可以通过使用回调函数来扩展,回调函数实现额外的污染源、标签、传播和接收器。
- TQana是一个构建在QEMU之上的框架,用于分析和检测安装在internetexplorer上的恶意浏览器扩展。它使用带有两个污点源的数据污点:(1)用户访问的页面的所有URL字符串和(2)浏览器收到的响应其请求的信息。污点接收器是文件系统、注册表和网络。当受污染的数据被写入文件或通过网络发送时,被分析的样本就被怀疑是间谍软件。
Tracing 追踪
收集执行某些代码后留下的信息称为跟踪。网络连接和分配给恶意软件的内存会留下恶意软件行为的痕迹。分析这些痕迹可以提供有关恶意软件的见解,而无需使用客户端组件中的。
- Volatile memory analysis 易失性内存分析分析从内存转储文件分析恶意软件的影响(见第6.5节)需要了解操作系统如何跟踪进程、文件、用户和配置。所有这些数据结构都以二进制形式存在于内存转储中。
- Network Tracing 网络跟踪由于恶意软件在大多数情况下需要连接Internet才能执行其操作,因此在没有Internet访问的情况下,可能无法显示恶意软件的确切性质。然而,允许恶意软件完全访问互联网有时是不可取或不可能的。通过恶意软件限制网络访问并分析网络连接可以揭示恶意软件的C&C和从中收到的命令。恶意软件留下的网络痕迹有助于理解其呈现的通信模式。
- HookFinder是TEMU实现的另一部分,旨在通过分析易失性内存来检测和分析恶意钩子。在堆栈中找到的信息被转换为创建钩子图,这有助于识别钩子链。然后,HookFinder将属于恶意软件的内存段标记为污点接收器。为了验证钩子实际上是由恶意软件安装的,HookFinder调用各种函数调用,并通过检查指令指针(IP)来跟踪控制流。当IP指向受污染的内存时,恶意钩子就会被发现并验证。
- LiveDM利用QEMU来分析内核中新内存区域的分配。通过挂接操作系统实现的几个内存分配函数,它可以跟踪恶意软件的安装位置,并对恶意软件的二进制代码执行静态分析。使用模拟器对客户操作系统的控制,LiveDM能够获得客户操作系统的易失性内存并分析受感染的内核。
- 等
Side-channel Analysis
- 到目前为止提出的分析技术依赖于从操作系统、易失性存储器或仿真机器的状态中提取数据。然而,任何类型的计算设备都可能成为恶意软件的攻击目标。这些设备包括PCI卡、物联网设备、硬盘、医疗设备等。分析和检测这些设备上运行的恶意软件是困难的,因为大多数情况下,这些设备不包含一个操作系统,可以支持传统的分析技术。与从操作系统的角度(或二进制级别)跟踪系统的行为不同,可以通过物理组件的功耗、电磁辐射或内部CPU事件来分析它们的行为。获取的数据分为“正常行为”和“感染行为”。使用统计方法和机器学习算法,检测到偏离正常行为可能表明CPU行为异常(例如,存在cryptominer或rootkit)。侧通道分析无法提供有关操作系统、网络或正在修改的文件的内部事件的深入信息。没有向仅仅收到最终判决的用户提供报告(称为恶意或非恶意)。
- WattsUpDoc是一种分析工具,用于使用外部设备对医疗设备进行侧信道分析。它证明了侧通道分析可以用于分析没有操作系统的设备,而无需向分析的设备加载任何代码。
布局映射技术(MAPPING TECHNIQUES TO LAYOUTS)
恶意软件和分析工具之间的战争是一场军备竞赛。攻击者不断开发新的方法来规避和检测分析框架,同时负责检测恶意软件的分析框架和工具的能力也在不断提高。创建图13是为了帮助读者理解这场军备竞赛以及攻击者和分析人员使用的不同方法。
综合比较研究
本部分比较了近年来动态恶意软件分析的研究,并讨论了与此相关的趋势和参数。进行此比较,我们可以发现一些重要的见解,我们也与读者分享。
基于功能和实际方面的比较
我们的比较基于以下几个关键方面:
(1)该工具的相关性(其对科学界的影响和贡献基于引文数量和是否开源),
(2)该工具提供的分析的多功能性,
(3)用于实现该工具的分析布局(见第6节),
(4)工具的限制(预分析要求、所依赖的附加软件、特殊要求的硬件)和
(5)工具提供的输出。请注意,这些工具是按分析技术分组的,在每种技术中,它们是按出版年份排序的。关于图14的详细说明如下: