找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 6520|回复: 4

【求助】关于VT技术在Rootkit方面应用的问题

[复制链接]

1

主题

24

回帖

0

精华

铜牌会员

积分
34
发表于 2020-12-8 16:33:26 | 显示全部楼层 |阅读模式
    最近在做一些隐藏方面的东西,看网上的资料说,可以通过虚拟化技术,实现EPT HOOK或者MSR HOOK,在Windows10 X64环境下达到绕过Patch Guard无痕HOOK的效果,但又看网上有人说现在VT技术限制很大,看论坛的帖子也有大佬介绍了基于虚拟化的安全(VBS),想问一问现在VT技术在这方面还能够发挥作用吗?如果不行的话,又是哪些东西限制了它的应用呢?

78

主题

190

回帖

9

精华

贵宾会员

积分
15605
发表于 2020-12-8 19:41:32 | 显示全部楼层
本帖最后由 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

评分

参与人数 1水晶币 +100 收起 理由
Tesla.Angela + 100 很给力!

查看全部评分

1

主题

24

回帖

0

精华

铜牌会员

积分
34
 楼主| 发表于 2020-12-8 20:40:29 | 显示全部楼层
非常感谢大佬的回答!最近在看VT相关的东西,也在试着模仿网上的代码做一个自己的VT框架,目前的方案确实还是使用Windows驱动的方式使用在Intel处理器上实现虚拟化。

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2020-12-22 22:04:21 | 显示全部楼层
只要开启了“基于虚拟化的安全”,或者启用了微软虚拟机(Hyper-V),WINDOWS内核就先把VT给占坑了。第三方驱动根本玩不起来。

1

主题

24

回帖

0

精华

铜牌会员

积分
34
 楼主| 发表于 2020-12-25 20:52:22 | 显示全部楼层
Tesla.Angela 发表于 2020-12-22 22:04
只要开启了“基于虚拟化的安全”,或者启用了微软虚拟机(Hyper-V),WINDOWS内核就先把VT给占坑了。第三方 ...

非常感谢!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表