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

 

作者:
标题: 【360MJ0011】一种绕过全局钩子安装拦截的思路
点饭的百度空间
银牌会员




积分 2315
发帖 2236
注册 2007-11-30
#1  【360MJ0011】一种绕过全局钩子安装拦截的思路

2009-07-02

本文介绍了一种思路,利用安全软件驱动和WINDOWS本身处理全局钩子安装过程的不同,以绕过安全软件对全局钩子安装的拦截。这种方法并不保证能通用于任何安全软件。

安全软件,例如HIPS,AV等,通常会安装 NtUserSetWindowsHookEx / NtUserSetWinEventHook的钩子

拦截全局钩子注入,防止键盘、消息拦截或者DLL注入。

在这两个函数的参数中,都存在一个pstrlib参数,指向了要注册全局钩子的DLL路径名,这个路径是DOS路径名,通常安全软件会分配BUFFER,将pstrlib这个UNICODE_STRING中的字符串读取出来,再加上NT路径头 (\??\),然后进行相关处理后传递给RING3的处理程序,比较常见的例如使用RtlCopyUnicodeString , 或者直接RtlCopyMemory(LocalName , pstrlib->Buffer , pstrlib->Length)

而WINDOWS函数自身,例如NtUserSetWindowsHookEx, NtUserSetWinEvnetHook,他们是怎么处理这个参数的呢?

实际上,这些函数最终会调用内部函数GetHmodTableIndex将DLL名加入一个ATOM Table中,并返回一个INDEX,记为为ihmod,等到CallNextHook2,或者分发winevent hook 时,通过 ihmod再取回这个index,得到DLL名,并通过User mode callback调用LoadLibrary加载这个DLL

GetHmodTableIndex则会调用一个UserAddAtom函数来将DLL名加入UserAtomTableHandle这个atom中。UserAddAtom这个函数接收的DLL名参数,是一个LPCWSTR类型的字符串,来自pstrlib->Buffer.UserAddAtom并不关心pstrlib->Length的长度。等到向RING3程序注入这个DLL时,调用xxxLoadHmodIndex中才在UserGetAtomName获取这个字符串后,通过调用RtlInitUnicodeString重新计算这个字符串的长度。

那么,很简单的方法就可以绕过安全软件的全局钩子拦截了:

(1).length 传入0,直接绕过检测

(2).buffer为c:\windows\system32\msctf.dllx

length传递为该字符串字节长度-sizeof(wchar)

也就是让安全软件得到错误的系统DLL名,实际注册的是其他的文件


防御并不是HOOK几个函数,根据参数的字面意思做点判断就足够的了,要做得完美需要对WINDOWS细节非常深入的了解,对攻击的考虑,否则就想某些国产杀软一样,非常容易,随便看几眼就能突破

[ Last edited by 点饭的百度空间 on 2009-7-12 at 09:04 ]

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

你的微笑 is 微点的骄傲!
http://hi.baidu.com/new/micropoint
2009-7-8 18:31
查看资料  发送邮件  访问主页  发短消息   编辑帖子
lsj301
银牌会员




积分 1388
发帖 1382
注册 2009-3-16
来自 甘肃兰州
#2  

我很菜,不懂

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

我们一直在默默支持微点!
2009-7-8 20:01
查看资料  发送邮件  发短消息  QQ   编辑帖子
点饭的百度空间
银牌会员




积分 2315
发帖 2236
注册 2007-11-30
#3  

所以说 防御并不是HOOK几个函数,根据参数的字面意思做点判断就足够的了,要做得完美需要对WINDOWS细节非常深入的了解,对攻击的考虑,否则就想某些国产杀软一样,非常容易,随便看几眼就能突破

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

你的微笑 is 微点的骄傲!
http://hi.baidu.com/new/micropoint
2009-7-12 09:04
查看资料  发送邮件  访问主页  发短消息   编辑帖子



论坛跳转:

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


[ 联系我们 - 东方微点 ]


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

闽ICP备05030815号