完全隔离 VirtualBox 机器

giu*_*sti 17 security virtualbox

我想使用 VirtualBox 安装一些不应访问我的主机的软件(反之亦然)。但是,我也设想了尝试更“危险”的东西的可能性,比如尝试运行零日漏洞并看看他们能做什么。

虚拟机与主机的隔离程度如何?我应该(还是可以?)在来宾和主机之间设置防火墙?来宾附加组件是否存在安全风险?共享目录呢?

现在,来宾机器正在运行 GNU/Linux Debian 测试。

小智 36

我首先要说这个问题非常广泛,并且显示出很少的原创研究,并且不应将此答案视为对此类问题的鼓励。相反,这个答案希望为刚开始进行恶意软件分析的人们提供一些非常基本的安全提示。

假设您正在运行已知的、先前研究过的恶意软件,如何隔离您的环境在很大程度上取决于该恶意软件的能力。适用于大多数现代恶意软件的一些一般规则可能是:

  • 将您的 VM 与 Internet 隔离。这可以像不设置转发到来宾机器的接口一样简单,并防止恶意软件与任何可能指示其采取不可预测行为的潜在命令和控制节点进行通信。

  • 使用适当的管理程序。市场上有几个主要的,包括 VirtualBox、HyperV、QEMU 和 macOS 的Hypervisor.framework,仅举几例;其中一些是恶意软件的主动攻击目标,并且根据版本的不同,可能容易受到从来宾计算机中爆发出来的恶意软件的攻击。

  • 绝对不要安装来宾添加或其他平台的模拟。这类软件的字面目标是在来宾和主机之间建立集成,有效地削弱它们之间的分离。我不是恶意软件研究人员,但如果没有专门针对此类表面的恶意软件,我会感到惊讶。

要直接解决您的一些问题:

虚拟机与主机的隔离程度如何?

在这一点上,虚拟机可以完全隔离,但某些功能仍然需要或多或少地直接通过主机,几乎没有虚拟机管理程序保护。马上,大多数非 KVM 虚拟机(如 VirtualBox)不会与主机操作系统共享内核。仅此一项就可以阻止许多漏洞利用类,最显着的是阻止对主机内核运行任意系统调用的能力(值得注意的星号是损坏的 VM 层实现可以允许恶意软件以不太明显的方式绕过这个)。

你的虚拟机仍然有进程空间的主机的硬件中,虽然-虽然这不是一般的危险,因为现代的操作系统提供体面的进程空间隔离,它仍然可以用来利用非常像一个低级别的攻击rowhammer,其中一个进程以特定方式顺序写入内存,直到它可以读取不属于它的相邻内存块——有效地允许进程之间的内存泄漏。

还值得注意的是,当您基本上想要进行任何类型的 I/O 时,隔离往往会在某种程度上消失:输入和输出必然意味着直通,这会暴露可用于执行主机操作的攻击面。这包括像鼠标和键盘这样的 HID 直通,以及像网络直通这样的东西——尽管这通常取决于在您的 VM 中实现 I/O 直通的程度。

我应该(还是可以?)在来宾和主机之间设置防火墙?

这取决于,但这通常不是一个坏主意。大多数主要平台都支持管理程序级别的防火墙。它们至多与主机上的防火墙一样宽松,而主机上的防火墙又至多与 LAN 或 VLAN 上的防火墙一样宽松。如果您想利用这一点而不是通过断开虚拟网络接口来完全切断网络访问,我建议您研究一下您选择的恶意软件目标的端口和主机,然后从那里开始。

来宾附加组件是否存在安全风险?

是的。它们允许您的主机和来宾机器之间进行各种集成,并且并不总是具有开放规范,您可以在其中看到正在打开的内容;看上面。

共享目录呢?

这取决于你是如何做的,但这通常是一个坏主意。许多虚拟机管理程序通过创建一个安装在来宾机器中的虚拟驱动器来实现这一点,其根在该目录中。根据该机制的实现(在不同框架之间可能略有不同),您可能安全也可能不安全,具体取决于您尝试测试的恶意软件。


我担心的是,您对此的研究很少,最终可能会损害您的机器或数据。在您继续之前,我建议您研究一下常见操作系统(KVM,它们如何与更高级别的虚拟化框架()、容器()以及要命名的chroot机制()集成的不同隔离机制)几个),当每个都合适时,以及他们能做什么和不能做什么。那时,您将能够更好地判断是否可以在适当隔离的环境中安全地玩弄恶意软件。

最后,您不应该尝试使用新的或鲜为人知的恶意软件(除非您是经验丰富的安全研究人员,但此答案并非针对经验丰富的安全研究人员)。恶意行为者在利用什么以及如何利用方面极具创造力。要了解这一点,请查看最近的任何 DEFCON 演讲,这些演讲以社会工程或通过机械方式获得物理访问为中心。

  • 我认为 KVM 和 VirtualBox/VMWare/... 在隔离方面没有太大区别,因为它们都需要内核模块支持并使用硬件辅助虚拟化。也许你的意思是容器/码头工人?也就是说,可以说纯粹的 qemu 漏洞利用只会在用户空间,但现在它可能比 kvm 的审查要少得多(另见软盘驱动器漏洞利用),但 kvm 和 qemu 都不允许直接系统调用进入内核,但都允许间接(通过虚拟化或半虚拟化) . (3认同)