楼主: minchaovip
收起左侧

[讨论] 谁来讲讲 intelVT 是怎么回事

  [复制链接]
wowocock
发表于 2013-10-8 10:25:02 | 显示全部楼层
细节不清楚,但原理应该和以前看雪上老V说的差不多。
【讨论】让PatchGuard变狗屎的那些方法~
   
我首先抛砖
1. x64 kermel mode peloader 一枚 (以前发的代码里有)
2. x64 HVMEngine 一枚 (bluepill的代码大家都有的)
3.syscall hook 模型一枚 (wrmsr改syscall很简单,不超过100字节)
4.x64 syscall64hook engine一枚 (hookport x64版,论坛有个叫Rprotect的东西)

首先reload ntoskrnl(x64下都是这个名字貌似)
然后定位syscall64和syscall32(RDMSR 0xC0000082  0xC0000083)保存好
初始化HVMEngine在VMEXIT处理MSR的read对syscall64和syscall32的MSR的read给原始值地址。
对新内核做syscall64hook,然后WRMSR修改syscall32和syscall64去新内核。

PG完全无效,完全无效~

砖头的bin和src就不扔了(主要是这个玩意代码太多太长,估计没人看都是拿来复制抄袭的所以不发了),思路万岁~

由于系统效验syscall的入口是通过RDMSR读取的,所以被vmexit直接骗过了,然后悲剧,悲剧,悲剧。

等人给玉石了

评分

参与人数 1人气 +1 收起 理由
22667999 + 1 感谢解答: )

查看全部评分

gxrsprite
头像被屏蔽
发表于 2013-10-8 10:42:25 | 显示全部楼层
wowocock 发表于 2013-10-8 10:25
细节不清楚,但原理应该和以前看雪上老V说的差不多。
【讨论】让PatchGuard变狗屎的那些方法~
   

那干掉PG是杀毒软件可以采用的策略么?有什么代价?影响安全么?
dl123100
发表于 2013-10-8 11:18:04 | 显示全部楼层
本帖最后由 dl123100 于 2013-10-9 17:49 编辑

不随便回复了,部分可见楼下。
Flameocean
发表于 2013-10-8 12:49:10 | 显示全部楼层
本帖最后由 Flameocean 于 2013-10-8 19:35 编辑
wowocock 发表于 2013-10-8 10:19
不是督导,没权限。你们测试看看VMWARE使用VT是否有影响?


额,大肉鸡都没有,奇怪了 ,我偷偷给你一份 ,我笔记本配置太低,而且还是32位,测试不了
(PS:我真不是督导,所以我给包没违反卡饭版规或者360论坛督导版规)

http://pan.baidu.com/share/link? ... ;shareid=3210295856
Flameocean
发表于 2013-10-8 12:51:36 | 显示全部楼层
wowocock 发表于 2013-10-8 10:25
细节不清楚,但原理应该和以前看雪上老V说的差不多。
【讨论】让PatchGuard变狗屎的那些方法~
   

虽然不懂内核,但是大体思路明白了,通过欺骗来绕过PG,不过这个Rprotect是啥东西
Flameocean
发表于 2013-10-8 12:53:37 | 显示全部楼层
dl123100 发表于 2013-10-8 11:18
VMWare 10 Win7 x64环境我这开启不了,后来用这个环境的磁盘文件去Bochs 2.4.6和2.6下试了下也不行。

看来用到了类似的技术了,那么是不是说明360这个新办法有点类似虚拟机那种?
dl123100
发表于 2013-10-8 13:46:42 | 显示全部楼层
Flameocean 发表于 2013-10-8 12:53
看来用到了类似的技术了,那么是不是说明360这个新办法有点类似虚拟机那种?

估计是检测了配置环境,不让开启吧。
wowocock
发表于 2013-10-8 13:51:32 | 显示全部楼层
Flameocean 发表于 2013-10-8 12:53
看来用到了类似的技术了,那么是不是说明360这个新办法有点类似虚拟机那种?

VT本身可以用来实现虚拟机,不过这里只不过用来欺骗OS,来绕过PTACHGUARD 而已。

VT的简单介绍
VT是Intel的硬件虚拟化技术,说到VT,就不得不提虚拟机(例如VMWare)。在硬件还没有支持VT前,系统级的虚拟机其实是很难做的,要考虑的东西非常多(主要是效率问题,因为用软件模拟东西资源开销比较大)。VT技术主要就是为了解决这个问题而诞生的,有了VT后,可以减少非常多的资源开销,让虚拟机的速度接近于真机速度。

OK,那么VT到底是个什么技术呢?
首先要说一下VMM(Virtual Machine Monitor),这个是虚拟机的监控器,监控着虚拟机的运行。比如虚拟机想执行一条指令:cpuid,这个时候被VMM捕捉到,然后VMM去模拟执行这条指令,然后返回给虚拟机,完成了一次vm exit。因为VMM需要执行ring0的指令,所以VMM需要运行在ring0下。
而VT使得CPU进入了一个全新的特殊模式(VMX模式),在这个模式下,CPU可以处于VMX root状态或者VMX non-root状态。处于VMX non-root操作状态下的CPU行为受到了某些方面的限制,关键的共享资源必须运行于VMX root操作状态的监控器的控制之下,并且,对于VMX non-root状态中的任何CPU特权都有效(只要处于VMX non-root状态,ring0 - ring3 都被监控)。因此,将VMM运行于VMX root操作状态,可以轻松监控管理客户操作系统(就是安装在虚拟机里面的操作系统)和客户应用程序(虚拟机里面操作系统里面安装的软件)。

大家可能被绕晕了,我举个例子简单解释一下上面最后一句话
比如:
一个虚拟机,里面装了winxp系统,系统里面有一个记事本程序
OK,winxp内核肯定要运行于ring0,而记事本肯定要运行于ring3,那么VMM怎么高效得管理这两个特权呢?
比如,POPFD这条指令,可以修改EFLAGS的IF位,即中断允许位,但是,在ring3下,是无法修改的。所以,VMM需要先判断客户机处于哪个特权级别(ring0?ring3?),如果ring0就可以修改,如果ring3就拒绝修改。这样的过程就有开销。而VMX non-root状态对任何CPU特权都支持,因此,VMM可以让客户机完全在真实CPU上执行这条指令,不需要考虑这条指令执行后结果会不会出现问题。

简单的说:VT是为了减少虚拟化技术带来的性能开销而开发的硬件虚拟化技术,尽量消除关键指令和关键共享资源(比如内存的访问)的影响。而全新的VMX模式,可以使CPU运行于一个受监控的VMX non-root状态。

具体的VT技术的实现非常复杂,这里就不说了
Flameocean
发表于 2013-10-8 18:19:41 | 显示全部楼层
wowocock 发表于 2013-10-8 13:51
VT本身可以用来实现虚拟机,不过这里只不过用来欺骗OS,来绕过PTACHGUARD 而已。

VT的简单介绍

感谢大肉鸡哥的解答,虽然那些名称看不懂,但是大致思路还是明白了
Flameocean
发表于 2013-10-8 19:43:09 | 显示全部楼层
dl123100 发表于 2013-10-8 13:46
估计是检测了配置环境,不让开启吧。

也有可能,笔记本配置太差,无法测试X64位了
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-2-4 02:24 , Processed in 0.092519 second(s), 14 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

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