假设我可以完全访问远程机器(特别是root
在 a 上Linux
)。检查这是真正的硬件还是虚拟机的最佳方法是什么?
我见过的大多数方法都依赖于使用诸如lshw
. 在我看来,这些方法很容易受到某种中间人攻击。
提前感谢您的参考或任何其他信息。
假设我可以完全访问远程机器(特别是root
在 a 上Linux
)。检查这是真正的硬件还是虚拟机的最佳方法是什么?
我见过的大多数方法都依赖于使用诸如lshw
. 在我看来,这些方法很容易受到某种中间人攻击。
提前感谢您的参考或任何其他信息。
这取决于。如果它试图隐藏它是一个虚拟机,它可能很难。例如,用于分析恶意软件的虚拟机就是这种情况。
赛门铁克的这篇论文详细介绍了一些内容。简而言之,即使 VM 试图隐藏它,通常也可以通过运行指令将 CPU 置于特定状态,然后运行一些指令强制 hypervizor 执行,并检查虚拟机的状态来检测它。之后的CPU。
定时攻击也可以检测到 hypervizor,但如果您没有基线,可能会很困难。
例如,来自 Azure 的库存虚拟机不会试图隐藏它是一个虚拟机,而且很明显它是一个虚拟机,正如你所说的那样,从描述符中。