如何安全地分析潜在有害的二进制文件?

逆向工程 虚拟机 恶意软件 沙盒 安全
2021-07-07 00:18:34

我最近设法隔离和存档了一些文件,这些文件设法对我的一个客户的系统造成了严重破坏。所以我想知道哪些软件和技术可以成为隔离代码并深入研究以了解其工作原理的最佳沙箱。

通常,到目前为止,我只会启动一个新的 VMWare 或 QEMU 实例并进行挖掘,但我很清楚,一些编写良好的恶意软件可以相对容易地从 VM 中脱离出来。因此,我正在寻找技术(例如使用具有不同模拟 CPU 架构的 VM。)和软件(也许是此类沙箱套件?)来减轻我正在处理的代码“爆发”的可能性。

你推荐什么技术?你推荐什么软件?

4个回答

标题提到了“沙箱”,但 VMWare 或 QEMU 通常不这样称呼,所以问题似乎更多地是关于“我如何在没有感染危险的情况下对其进行分析?”

您可以在此处采用三大类工具和方法。

1. 用户模式沙箱

用户模式沙箱基本上运行正在调查的样本,但拦截所有或至少是访问主机操作系统的最关键的 API,中和它们并修改结果以欺骗软件认为它是单独运行的。最受欢迎的此类工具之一似乎是Sandboxie,但还有其他工具,例如PyBox通常可以很容易地被恶意软件检测到,并且总是存在未经模拟的 API 会让代码疯狂运行的危险。

2. 虚拟机和模拟器

这些更深入一些,不仅尝试模拟 API,还尝试模拟实际代码的执行。同样,通常您需要在模拟器内运行完整的操作系统,并且不能按原样使用主机操作系统(根据您的目标,可能是优势也可能是劣势)。根据用于仿真的方法,这些可以进一步细分为三类:

a) 虚拟化

其中包括 VMWare、VirtualBox 和 VirtualPC。他们使用最新处理器的虚拟化功能在本地运行大部分代码,并且仅模拟内存或硬件访问。这使它们很快,但理论上可能会导致代码在出现实现错误的情况下逃逸 VM。

b) 动态翻译

这种方法被 QEMU 使用。它将每个基本块转换为本地 CPU 的指令序列并执行该指令。这种方法允许它合理快速地模拟许多不同的架构,但是时间可能与原始架构有很大不同。我想我没有听说过任何 VM 转义错误,但可以检测到它。

c) 完全仿真

这是 Bochs 使用的。它在每个单独的指令被执行时完全模拟它们。这使得它比其他解决方案慢一些,但允许它实现几乎完美的模拟,即使是最底层的细节。它也可能是最安全的 VM 转义错误。有一些实现错误可用于检测它,但我认为其中大部分都已修复。

3. 静态分析

避免爆发的最好方法是根本不运行代码!此外,静态分析允许您查看二进制文件的完整代码并查看所有代码,甚至是运行它时未采用的代码路径,并且您可以避开所有运行时检查和检测。

不幸的是,恶意软件中使用的打包或混淆可能会阻碍静态分析。所以通常需要将几种方法结合起来。我不是专业分析师,但我确实涉足过一些恶意软件分析。我的工作流程通常是这样的:

  1. 在 IDA 中打开示例。
  2. 如果它看起来已打包或已加密,请使用Bochs 调试器模拟其执行并让它自行解包。
  3. 完成后(通常很明显),我拍摄内存快照,停止调试,并继续静态分析。
  4. 如果解压后的代码包含另一个嵌入文件(很常见的情况),将其保存到单独的文件中并转到步骤 1

Bochs如果您不需要速度但需要很大的灵活性。您可以将Bochs 与 GDB 一起使用

Qemu如果您需要更高的速度和更少的灵活性(它进行动态转换,因此您可以获得一点速度,但会丢失指令的实际序列)可能比 bochs 安全一些。它类似于Vmware,而virtualbox 实际上是从它派生而来的。您可以将GDB 与 Qemu 一起使用

Xen 我的一个朋友对 Xen 管理程序非常有信心,只要您正确设置它,这意味着使用串行环回进行配置和其他复杂设置。然而,它会非常快但仍然是孤立的,据我所知,只要您控制串行连接,它就会保证您的安全。Bochs 可能仍然是最安全的。

此外,虽然不是模拟器/虚拟化解决方案,但像SoftICE这样的调试可能很有用,尽管现在许多软件都可以检测并绕过它。

Gilles 提供了一些很好的链接,我想更多地讨论使用虚拟机进行恶意软件分析。虽然 VM 突破肯定是可能的,但我还没有遇到过这样的情况,甚至听说过这样的情况,我认为如果有人找到的话,这会引起一些轰动。为安全起见,只需像使用调试器一样在隔离的计算机和网络上运行 VM 软件即可。

我鼓励您尝试Cuckoo Sandbox它会自动执行在 VM 中运行恶意软件的过程(支持 VMware、VirtualBox 和 KVM)并提取数据,例如修改后的文件、内存转储或网络流量。它甚至支持通过非常简洁的 DLL 注入进行 API 跟踪。

从字面上看,第一眼看到恶意软件,您不需要在本地安装任何特殊的东西。您可以使用足够多的在线沙箱:

  • virustotal.com使用Cuckoo Sandbox实现了他们的沙当您应用新样本时,它会作为分析的一部分自动执行。大约 10-15 分钟后,您可以在“行为信息”中看到结果
  • anubis.iseclab.org是另一个地方,您可以在本地执行之前提交二进制文件以查看其行为。在这里,您可以获得网络活动的报告和 pcap 文件(如果有)。

因此 - 您可能对二进制文件的作用以及如何分析它有基本的了解。但是 - 请注意,复杂的恶意软件会检查其环境中是否存在沙箱跟踪和 VM。因此,在真实条件下,看似“无害的二进制文件”有可能是复杂的恶意软件。