如何识别您正在VM下运行?
收藏

有没有一种方法可以从VM内识别代码是否在VM内运行?

我猜有很多或更少的简单方法可以识别特定的VM系统,尤其是在VM已安装了提供程序扩展的情况下(例如VirtualBox或VMWare)。但是,是否有一种通用方法可以确定您不是直接在CPU上运行?

最佳答案

关于此的大量研究致力于检测所谓的“蓝色药丸”攻击,即恶意的管理程序正在积极尝试逃避检测。

检测VM的经典技巧是填充ITLB,运行必须虚拟化的指令(当它将对虚拟机管理程序的控制权提供给虚拟机时,必须清除此类处理器状态),然后运行更多代码以检测ITLB是否仍在填充。它的第一篇论文位于这里,研究人员的博客和替代Wayback Machine对该博客文章的链接进行了相当丰富的解释(图像已损坏)。

讨论的底线是,总有一种方法可以检测到恶意的虚拟机管理程序,而检测未隐藏的虚拟机管理程序要简单得多。

    公众号
    关注公众号订阅更多技术干货!