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