我正在学习安全性并想知道,如果我在任何主机(Windows或GNU / Linux)上使用VM,那么某人(无论是否在同一网络中)可以收集有关我的主机的信息( ip,mac地址,位置等。)
是否可以仅使用某个虚拟机管理程序(hyper-v,virtualvox,vmware等)或某些主机?
我读到在虚拟机中使用Tails并不安全,因为主机可能会危及访客,反之亦然。怎么样?
答案 0 :(得分:1)
是否可能显然取决于虚拟机监视器(VMM)和主机操作系统设置以及可用/使用的安全机制。
理想情况下,在严格遵守Goldberg-Popek虚拟化条件的主机系统上,可以编写提供完全隔离的虚拟机管理程序。但是,这完全适用于该论文中使用的简单假设机器。它没有说明多核系统,网络或时序问题。
实际上,软件缺陷和硬件错误/勘误/异常作为最后但并非最不重要的不良配置导致至少可以从访客中收集有关主机的一些信息的情况。
如果主机和来宾都位于同一网段,则可以通过使用nmap
network scanner并与已知的操作系统签名进行比较,轻松了解主机的某些属性。
如果没有网络访问权限但共享其他资源(共享虚拟文件夹上的文件),他们仔细研究可以揭示很多。比如,如果您看到c:\program files
与Linux系统共享,它会提示主机的操作系统。
通过检查系统资源,可以看到许多虚拟机管理程序的某些属性。示例:CPUID指令可以报告" KVMKVMKVM"在KVM上;磁盘供应商字符串可以告诉你它是" Virtutech驱动器"对于Wind River Simics; Xen的半虚拟设备的存在是一个明显的猜测,可能主机是Xen;通常,商业虚拟机管理程序没有尽可能接近地模仿真实硬件的目标。
如果设置VMM来隐藏这些明显的错误,那么真实硬件和虚拟化硬件之间的行为仍然存在很多差异。其中最着名的是Red Pill,但类似的检测技术很多,其中至少有一些记录在网上的学术论文中。
由于底层主机架构的复杂性,很难解释机器指令行为的所有差异。例如,非常流行的Intel 64和IA-32系统的体系结构手册有超过4000 pages描述其官方行为。并非所有的角落案例都明显/易于实施/记录/明确定义/充分研究/不受勘误影响。而AMD的处理器实现了相同的" x86架构有自己的AMD64手册;并不总是在这两本书中所有的东西都很漂亮和明确地定义。这同样适用于IBM的ARM MIPS处理器。
更深入,有计算机操作的时间/侧通道细节,在编写管理程序时更难以考虑。用于分析时序的信号/噪声比较低(即,更容易出错并将真实硬件检测为VMM,反之亦然),但它仍然有效。安全社区最近才开始广泛探索基于时间的攻击(参见Spectre / Meltdown系列),并且VMM并未被排除在此类攻击的潜在目标之外。
我读到在虚拟机中使用Tails并不安全,因为主机可能会危及访客,反之亦然。怎么样?
除非有正式证明,否则不能100%依赖。软件很少被证明是正式的。在政府/军事应用中,一种安全感"通过一些非常严格的认证可以保证。只有少数专业操作系统被证明没有错误。尾巴不是其中之一。除了上述所有原因之外,其中可能只是存在一个错误或错误配置,导致数据泄漏给那些寻找它的人。