虚拟机通过页面错误逃逸

逆向工程 虚拟机
2021-06-18 04:21:28

Sergey Bratus 和 Julian Bangert 在 Github 上trapcc 项目声称,使用 x86 MMU 的图灵完备功能,代码可以使用单个指令(移动、零分支、递减)逃离虚拟机。它通过页面错误和双重错误来实现。我试图阅读论文,但似乎太令人费解了。这个想法可行吗?

1个回答

事实上,他们根本没有声称要逃避任何虚拟机。但是,通过使用 MMU 故障处理程序机制来执行计算,他们希望使他们的程序封装变得不切实际。事实上,关键是找到意想不到的原语来执行计算,这样做只有少数虚拟机环境能够处理这样的特定程序。而且,即使他们这样做,虚拟机也由管理程序管理,管理程序可能会因处理此类程序所需的所有中断信号而不堪重负。

因此,事实上,他们提出了一种与 C(图灵完备)一样强大的编程方式,但在虚拟化环境中运行将非常乏味。

当然,这样做的目的是为了减缓程序在虚拟机中运行时的分析速度(这是为了避免动态分析的反调试技术)。