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