【求助】关于VT技术在Rootkit方面应用的问题
最近在做一些隐藏方面的东西,看网上的资料说,可以通过虚拟化技术,实现EPT HOOK或者MSR HOOK,在Windows10 X64环境下达到绕过Patch Guard无痕HOOK的效果,但又看网上有人说现在VT技术限制很大,看论坛的帖子也有大佬介绍了基于虚拟化的安全(VBS),想问一问现在VT技术在这方面还能够发挥作用吗?如果不行的话,又是哪些东西限制了它的应用呢? 本帖最后由 tangptr@126.com 于 2020-12-15 19:18 编辑要说让PatchGuard,PCHunter啥的检测不到倒是简单,但是要说“无痕”那可太难了。从原理上讲可以用单步调试异常的方式检测特定的钩子,这个检测方式不是说VT就不能阻止,而是要小心一个问题,那就是你针对调试异常的处理会不会重新产生CVE-2018-8897漏洞。(微软已经修复了Windows 7及以上的版本,问题在于你这一处理会不会“捅破”这个补丁)。
提到VBS是因为有了它,处理器的虚拟化接口被占且不给嵌套,只能用微软提供的API了。所以如果你非要以Windows驱动的方式使用处理器的硬件虚拟化技术的话,那必然会产生与VBS,WSL,Hyper-V啥的不兼容现象。
用EPT在Intel系CPU上隐藏Hook欺骗PatchGuard以及ARK还算可行,几乎不会额外占CPU,因为极少产生VM-Exit。但在AMD上,NPT页表定义和EPT有个很致命的差别,这使得每次调用这个函数时就会产生至少两次的VM-Exit(相应的,在Intel上调用被Hook的函数可以只在刚检测钩子之后调用函数才产生VM-Exit,平时不会产生VM-Exit)。因此如果是要HOOK极高频的函数,那就会很占CPU且难以优化,用户会显著感受到电脑变慢了。
据说腾讯早年玩过VT,后来又放弃了。你可以自己猜测一下他们为什么放弃。(别问我,我不知道,并且我还不想去猜)
补充材料:有关CVE-2018-8897漏洞:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-8897
http://everdox.net/popss.pdf
https://www.0xaa55.com/thread-26223-1-1.html 非常感谢大佬的回答!最近在看VT相关的东西,也在试着模仿网上的代码做一个自己的VT框架,目前的方案确实还是使用Windows驱动的方式使用在Intel处理器上实现虚拟化。 只要开启了“基于虚拟化的安全”,或者启用了微软虚拟机(Hyper-V),WINDOWS内核就先把VT给占坑了。第三方驱动根本玩不起来。 Tesla.Angela 发表于 2020-12-22 22:04
只要开启了“基于虚拟化的安全”,或者启用了微软虚拟机(Hyper-V),WINDOWS内核就先把VT给占坑了。第三方 ...
非常感谢!
页:
[1]