数据结构论坛

首页 » 分类 » 分类 » 恶意软件和攻击技术八恶意软件分析之反
TUhjnbcbe - 2024/10/11 16:15:00
《网络安全知识体系1.1》恶意软件和攻击技术(八):恶意软件分析之反分析和规避技术3.3反分析和规避技术恶意软件作者很清楚,安全分析师使用程序分析来识别恶意软件行为。因此,恶意软件作者采用多种技术使恶意软件难以分析。3.3.1规避分析方法恶意软件的源代码通常不可用,因此,静态分析的第一步是将恶意软件二进制文件反汇编成汇编代码。恶意软件作者可以应用一系列反反汇编技术(例如,重用字节)来导致反汇编分析工具生成不正确的代码列表。

最通用和最常用的代码混淆技术是打包,即压缩和加密恶意软件的一部分。一些简单打包的二进制文件可以使用简单的工具解压缩并进行静态分析,但对于大多数现代恶意软件,打包的代码仅在以下情况下才会解压缩在恶意软件执行期间需要。因此,解压缩工具需要分析恶意软件的执行,并考虑稳健性、性能和透明度之间的权衡。例如,基于虚拟机内省(VMI)的解包程序更透明、更健壮,但也更慢。相比之下,基于动态二进制检测(DBI)构建的解包程序速度更快,但也更易于检测,因为DBI代码在与恶意软件相同的权限级别。

许多技术旨在混淆恶意软件的预期控制流,例如,通过在其控制流图中添加更多基本块和边缘。对策是通过其动态特征(即恶意软件的作用)分析恶意软件样本。原因是静态分析可以通过使用不透明常量的高级混淆来实现,这使得攻击者能够隐藏哪些值在运行时加载到寄存器中。这反过来又使静态恶意软件分析很难从二进制文件中提取控制流图和变量。更有效的方法是结合静态和动态分析。例如,这种方法已被证明能够反汇编高度混淆的二进制代码。

一种不太常见但更有效的混淆技术是代码模拟。借用技术最初旨在提供软件版权保护,恶意软件作者使用随机生成的指示集将本机恶意软件二进制文件转换为字节码程序,并配对解释指令集的本机二进制模拟器。也就是说,使用这种方法,恶意软件“二进制文件”是模拟器,原始恶意软件代码成为模拟器程序使用的“数据”。请注意,对于相同的原始恶意软件,恶意软件作者可以将其转换为模拟恶意软件实例的许多实例,每个实例都有自己的随机字节码指令集和相应的模拟器二进制文件。分析模拟恶意软件非常困难。首先,对模拟器代码的静态分析不会生成有关特定恶意软件行为的信息,因为模拟器处理字节码指令集中所有可能的程序。恶意软件字节码的静态分析首先需要理解指令集格式(例如,首先通过静态分析模拟器),并为指令集开发工具;但是需要对模拟恶意软件的每个实例重复此过程。其次,标准动态分析没有直接用处,因为它观察的是模拟器的运行时指令和行为,而不是恶意软件的运行时指令和行为。

需要一种专门的动态分析方法来分析模拟的恶意软件。主要思想是执行恶意软件模拟器并记录整个指令跟踪。将动态数据流和污染分析技术应用于这些跟踪,然后我们识别包含字节码的数据区域,显示字节码如何解析为操作码和操作数的语法信息,以及有关控制传输指令的语义信息。此方法的输出是数据结构,例如恶意软件的控制流图(CFG),这为后续的恶意软件分析提供了基础。恶意软件通常使用指纹识别技术来检测是否存在分析环境并逃避动态分析(例如,它停止执行预期的恶意软件代码)。更一般地说,恶意软件行为可以是“基于触发器的”,其中触发器是必须为真的运行时条件。条件的示例包括正确的日期和时间、某些文件或目录的存在、与Internet的已建立连接、缺少特定的互斥对象等。如果条件不为真,则恶意软件不会执行预期的恶意逻辑。使用标准动态分析时,不能保证测试输入会触发其中一些条件,因此可能会错过相应的恶意软件行为。为了发现基于触发器的行为,多路径分析方法探索了恶意软件的多个执行路径。分析器监视恶意软件代码如何使用类似条件的输入来做出控制流决策。对于每个决策点,分析器都会对当前恶意软件执行状态进行快照,并允许恶意软件为给定的输入值执行正确的恶意软件路径;例如,输入值表示未满足触发条件,并且恶意软件路径不包含预期的恶意逻辑。然后,分析器返回到快照并重写输入值,以便创建另一个分支;例如,现在触发条件被重写为true,恶意软件分支是预期的恶意逻辑。3.3.2确定分析环境恶意软件通常使用系统和网络工件,表明它正在分析环境中运行,而不是在真实的受感染系统中运行。这些工件主要分为四类:虚拟化、环境、流程内省和用户。在虚拟化指纹识别中,规避性恶意软件试图检测它是否在虚拟化环境中运行。例如,它可以使用红色药丸测试,这需要执行特定的CPU指令序列,这些序列在比较时会导致开销,独特的时序偏差和差异。在裸机(即非虚拟化)系统上执行。关于环境项目,虚拟机和仿真程序具有唯一的硬件和软件参数,包括设备模型、注册表值和进程。在进程内省中,恶意软件可以检查操作系统上是否存在特定程序,包括防病毒公司和虚拟机供应商提供的监视工具。最后,用户工件包括特定的应用程序,例如Web浏览器(或缺少Web浏览器),Web浏览历史记录,最近使用的文件,交互式用户提示,鼠标和键盘活动等。这些是真实人类是否将环境用于有意义的任务的信号。如果恶意软件可以检测到分析环境,则该环境不透明。有缓解技术,一些解决特定类型的规避,而另一些则更广泛地提高透明度。二进制修改可以通过动态删除或重写指令来防止检测来执行,并且可以通过挂接操作系统功能来隐藏环境工件对恶意软件。路径探索方法强制恶意软件执行多个条件分支以绕过规避。基于虚拟机管理程序的方法使用比恶意软件具有更大特权的内省工具,以便它们可以隐藏在恶意软件之外,并提供预期的答案恶意软件检查系统和网络工件时。为了提供最大程度的透明度,有几种方法在真实计算机上执行恶意软件分析,以避免引入伪影。
1
查看完整版本: 恶意软件和攻击技术八恶意软件分析之反