mj0011_decoder
禁止发言
积分 0
发帖 33
注册 2008-10-1
|
#1 微点主动防御(version20080924及以下)多个内核拒绝服务漏洞及内核BUG
\国庆无聊在家,下了一个0924版的微点,从它的HOOK一个个看起,看了4个就发现两个有问题~~再看看,发现有问题的函数几乎是一半对一半~ 多达十几处。还只是简单看看地结果~太挫了
现在说一说其中两个~微点赶紧改吧:D
(1),驱动对ZwOpenEvent的HOOK存在拒绝服务安全漏洞,任何权限用户可以使安装了微点的系统蓝屏
问题在于微点的Hook驱动mp110013.sys对用户态调用ZwOpenEvent传入参数检查不充分导致的
mp110013.sys(版本1.2.10126.0, CheckSum = 0x0000FDB7 , TimeStamp = 0x4859C30E)
偏移0XBAE处实际是其对ZwOpenEvent的HOOK实际处理部分(首先经过一个HOOK引擎mp110003.sys转发)。
ZwOpenEvent的原型是:
NTSTATUS
ZwOpenEvent(
OUT PHANDLE EventHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes
);
微点只对ObjectAttributes做了ProbeForRead检查,没有对该结构内部成员的缓存地址做有效检查,就直接使用系统函数RtlUnicodeStringToAnsiString将该结构的ObjectAttributes->ObjectName转换为ANSI字符,因此只要RING3的程序对该域填充错误地址,就可以引发系统访问无效内存蓝屏
由于该函数的Hook函数中使用了结构化异常处理,因此传0之类的地址是无法引发蓝屏的,但只要传入任何一个无效的内核地址(例如0x80000000),就可以使微点蓝屏
下面是引发蓝屏的测试代码:
HMODULE hlib = LoadLibrary("ntdll.dll" ;
PVOID p = GetProcAddress(hlib , "ZwOpenEvent" ;
OBJECT_ATTRIBUTES oba ;
oba.ObjectName = (PUNICODE_STRING)0x80000000 ;
__asm{
lea eax ,oba
push eax
push 0
push 0
call p
}
运行了这段代码后,系统即蓝屏重启,适用于任何安装了微点的系统任何用户权限。
我编写了一个测试程序"BSOD_MP.exe",在装有20080924及以下版本的微点的系统,运行程序后点"done",系统即会蓝屏。
测试程序下载:http://mj0011.ys168.com 漏洞演示目录下BSOD_mp.rar
(2).驱动对ZwOpenThread的HOOK处理存在漏洞,可能导致系统其他组件工作不正常
在同样版本的mp110013.sys中,对于ZwOpenThread的处理存在BUG,可能导致任意调用该函数的其他驱动程序或系统组件失败!
在对ZwOpenThread的HOOK中,微点的驱动没有判断系统上个模式,而是直接使用ProbeForRead函数去校验ZwOpenThread的参数: ObjectAttributes,这样做的结果会导致在驱动中使用该函数的驱动,只要使用了这个参数,调用这个函数就会返回失败。STATUS_ACCESS_DEIND
正确的做法应该是先判断当前线程的前个模式,如果是UserMode,再做有效性校验。
这个函数在驱动中用得不多,但也不是没有,属于微软有文档的函数,例如在Sandboxie的驱动中就有用到这个,如果这个函数失败,沙箱内的进程在执行某些操作的时候,就可能出错,甚至导致系统崩溃。
====================================================
综上来看,微点的驱动开发者对如何校验用户态参数还是有一些概念的,可惜的是,不仅理解不深,而且还会出现一些粗心大意的毛病~象SSDT HOOK这样直面用户态程序的驱动代码,还是要慎之慎之~~
另外这也暴露出,微点的测试流程不够专业,驱动测试不够重视,如果发布前使用BSODHook等Driver Test工具跑一跑,就不会出现如(1)中那样弱智的错误了~
     
[ Last edited by mj0011_decoder on 2008-10-1 at 18:51 ]
|
※ ※ ※ 本文纯属【mj0011_decoder】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
|
 |
|
2008-10-1 02:37 |
|
mj0011_decoder
禁止发言
积分 0
发帖 33
注册 2008-10-1
|
#2
沙发自己做~大家国庆快乐呀~
|
※ ※ ※ 本文纯属【mj0011_decoder】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
|
 |
|
2008-10-1 02:44 |
|
mj0011_decoder
禁止发言
积分 0
发帖 33
注册 2008-10-1
|
#3
啊呀呀,老刘跟工程师们都去度假了呀~?
|
※ ※ ※ 本文纯属【mj0011_decoder】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
|
 |
|
2008-10-1 02:57 |
|
Legend
超级版主
        超级版主
积分 77171
发帖 70170
注册 2005-10-29
|
|
2008-10-1 05:57 |
|
点饭的百度空间
银牌会员
     
积分 2315
发帖 2236
注册 2007-11-30
|
|
2008-10-1 19:52 |
|
snhao
银牌会员
     
积分 1791
发帖 1782
注册 2007-6-12
|
#6
终于见到高手了
|
※ ※ ※ 本文纯属【snhao】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
|
 |
|
2008-10-2 10:06 |
|
408983504
银牌会员
      此用户已被禁言
积分 1271
发帖 1238
注册 2007-1-6 来自 广东
|
#7
这才是高手啊~~
|
※ ※ ※ 本文纯属【408983504】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
|
 三用户版续费真TM的便宜啊! |
 |
|
2008-10-2 10:11 |
|
天涯
新手上路

积分 40
发帖 40
注册 2006-9-10
|
#8
Quote: | Originally posted by mj0011_decoder at 2008-10-1 02:37:
\国庆无聊在家,下了一个0924版的微点,从它的HOOK一个个看起,看了4个就发现两个有问题~~再看看,发现有问题的函数几乎是一半对一半~ 多达十几处。还只是简单看看地结果~太挫了
现在说一说其中两个~微点 ... |
|
楼主这么牛请看看这个防火墙规则包又如何http://bbs.hzva.org/forumdisplay.php?fid=151
|
※ ※ ※ 本文纯属【天涯】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
|
 |
|
2008-10-3 15:30 |
|
苹果小柚子
注册用户
 
积分 154
发帖 152
注册 2007-3-15
|
#9
mj blog上也发过好像!
|
※ ※ ※ 本文纯属【苹果小柚子】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
|
 个人主页:
[URL]http://hi.baidu.com/80age[/URL] |
 |
|
2008-10-3 19:42 |
|
Legend
超级版主
        超级版主
积分 77171
发帖 70170
注册 2005-10-29
|
|
2008-10-6 14:10 |
|