我想使用 VirtualBox 安装一些不应访问我的主机的软件(反之亦然)。然而,我也设想尝试更多“危险”的事情的可能性,例如尝试运行零日漏洞并看看它们能做什么。
虚拟机与主机的隔离程度如何?我应该(或能我?)在访客和主机之间设置防火墙?访客附加组件是否存在安全风险?那么共享目录呢?
现在,来宾机器正在运行 GNU/Linux Debian 测试。
答案1
首先我要说的是,这个问题非常广泛,并且几乎没有原始研究,并且这个答案不应被视为对此类问题的鼓励。相反,这个答案希望为刚刚开始恶意软件分析的人们提供一些极其基本的安全提示。
假设您正在运行已知的、先前研究过的恶意软件,那么隔离环境的方式在很大程度上取决于该恶意软件的能力。适用于的一些一般规则最多现代恶意软件可能会:
将您的虚拟机与互联网隔离。这可以像不设置到来宾计算机的接口转发一样简单,并防止恶意软件与任何潜在的命令和控制节点进行通信,这些节点可能会引导其进行不可预测的操作。
使用适当的虚拟机管理程序。市场上有几个主要的,包括 VirtualBox、HyperV、QEMU 和 macOS 等
Hypervisor.framework
;其中一些是恶意软件的主动攻击目标,并且根据版本的不同,可能容易受到从来宾计算机中爆发的恶意软件的攻击。绝对不要安装访客附加功能,或其他平台的类似物。此类软件的字面目标是在客机和主机之间建立集成,有效弱化它们之间的分离。我不是恶意软件研究人员,但如果没有专门针对此类表面的恶意软件,我会感到惊讶。
直接解决您的一些观点:
虚拟机与主机的隔离程度如何?
此时,虚拟机可以相当彻底地隔离,但某些功能仍然必须或多或少地直接通过主机,几乎没有虚拟机管理程序保护。大多数非 KVM 虚拟机(如 VirtualBox)不会分享带有主机操作系统的内核。仅此一项就可以作为针对众多漏洞利用类别的拦截器,最显着的是阻止针对主机内核运行任意系统调用的能力(值得注意的是,损坏的 VM 层实现可能允许恶意软件以不太明显的方式绕过此问题)。
不过,您的虚拟机在主机硬件内仍然有一个进程空间——虽然这不是一般来说这是一个风险,因为现代操作系统提供了良好的进程空间隔离,但它仍然可以用于利用极低级别的攻击,例如行锤,其中进程以特定方式顺序写入内存,直到它可以读取它不拥有的相邻内存块 - 有效地允许进程之间的内存泄漏。
另外值得注意的是,当您想要执行任何类型的 I/O 时,隔离往往会有所消失:输入和输出必然意味着直通,这暴露了可用于执行主机操作的攻击面。这包括鼠标和键盘等 HID 直通,以及网络直通等内容 - 尽管这通常取决于 VM 中 I/O 直通的实施情况。
我应该(或者可以吗?)在访客和主机之间设置防火墙吗?
这取决于情况,但这通常不是一个坏主意。大多数主要平台都支持虚拟机管理程序级防火墙。这些都是最多与主机上的防火墙一样宽松,反过来最多与 LAN 或 VLAN 上的防火墙一样宽松。如果您想利用这一点,而不是通过断开虚拟网络接口来完全切断网络访问,我建议您研究哪些端口和托管您选择的恶意软件目标,然后从那里开始。
访客附加组件是否存在安全风险?
是的。它们允许主机和客户机之间进行各种集成,并且并不总是具有开放规范,您可以在其中看到正在开放的内容;往上看。
那么共享目录呢?
这取决于你如何做,但这通常是一个坏主意。许多虚拟机管理程序通过创建安装在根目录位于该目录中的来宾计算机中的虚拟驱动器来实现此目的。根据该机制的实现(不同框架之间可能略有不同),您可能安全也可能不安全,具体取决于您尝试测试的恶意软件。
我担心的是,您对此进行的研究很少,并且最终可能会损害您的机器或数据。在继续之前,我建议您研究一下常见操作系统上的不同隔离机制(KVM,它们如何与更高级别的虚拟化框架集成(虚拟机)、容器(容器),以及chroot
机制(chroot)仅举几例),每种方法何时适用,以及它们可以做什么和不能做什么。那时,您将能够更好地判断是否可以在适当隔离的环境中安全地使用恶意软件。
最后,您不应该尝试使用新的或鲜为人知的恶意软件(除非您是经验丰富的安全研究人员,但这个答案并不针对经验丰富的安全研究人员)。恶意行为者是极其当涉及到他们利用什么以及如何利用它时,他们就具有创造性。要了解这一点,请查看最近的 DEFCON 会谈不是以社会工程或通过机械手段获得物理访问为中心。