标题:
[sudami]友情提醒微点的工程师 -- MmLoadSystemImage(微点的响应速度真快)
[打印本页]
作者:
点饭的百度空间
时间:
2008-12-8 14:15
标题:
[sudami]友情提醒微点的工程师 -- MmLoadSystemImage(微点的响应速度真快)
WINDOWS内核疯狂爱好者 sudami
2008年11月21日 星期五 00:05
哦,今天熬夜来了,得学习一下啦.比如微点驱动MP110013.SYS调用MP110003.SYS导出的一些函数,很有意思.然后都是CALL HOOK啊,什么栈回溯判断调用者啊([nt]WriteProcessMemory,CreateRemoteThread...),patch人家的IAT啊... 哎,该好好猥琐一下啦~~~
2008年12月06日 星期六 22:24
老技术,所以随便提醒下.
关于HOOK
MmLoadSystemImage
.可以监测到由SCM、ZwLoadDriver、ZwSetSystemInformation等加载的驱动信息,以便进行及时的记录,patch, 当然瑞星的卡卡助手06年用的老技术 -- 从DriverEntry回溯一层找到IopLoadDriver中call DriverEntry,再进行patch拦截,也是个不错的选择. 其他诸如SSDT层面的就不说了. by sudami 2008-12-06
微点之所以在拦截驱动加载方面过滤不严格,不是他们没有注意这块,而是在处理hook MmLoadSystemImage上code的写法有问题,如下:
1.
MP110003.SYS
调用ZwSetSystemInformation来加载到C盘根目录的测试驱动"
\
\??\\c:\\hook.sys
".时未attach到
CSRSS.EXE
进程空间, 而是在
SYSTEM
空间中去调,显然EPROCESS中的
ProcessInSession
标志位是0, 自然没有足够的section来存放新的Driver,于是很强大的返回0xC0000017(
STATUS_NO_MEMORY
)错误.根本进不到微点瞬间下的钩子里面去.
2. 微点很猥琐的通过栈回溯找到了Call MmLoadSystemImage地址,既而找到原始的MmLoadSystemImage地址.不过微点的驱动开发人员却还要进一步特征匹配,在地址-0x100h内搜索出
0x266Ah
才肯HOOK. 这样匹配还不如找Call MmLoadSystemImage下方的
call RtlImageNtHeader
校验. 我测试了N中环境,都没有出现过0x266Ah字符串,所以微点自然放弃了对ZwSetSystemInformation内部调用MmLoadSystemImage处的CALL HOOK.
不过微点挂了NtMapViewOfSection,还有个
ImageNotify
,监控起来也差不多了.据MJ同学说ImageNotify比MmLoadSystemImage更底层,所有的回调都是很底层的,不过我觉得Notify太容易被摘了(当然HOOK也很好恢复,没有万能的对策).
找MmLoadSystemImage的地址,方法很多,若要暴搜,绝对不要全部硬编码特征匹配,很搓很不稳定, 所以啊MJ同学说搜一个
XX
即可,"(应某同学要求,打成马赛克)"哈哈,我的想法是在xxxx里面找
每个call
,分析call的函数地址开头
0x20
字节,就可以快速找到了. 不过我是这样做的,通过
栈回溯
找到MmLoadSystemImage,然后把它里面的那个xx搞成别的, 嘿嘿,这样我的程序强奸完系统后,其他恶意程序暴搜的话就够呛了...
简单用栈回溯做了个监控的,如下:
至于在
fake_MmLoadSystemImage
里面做处理,就可随自己做了. 比如黑白名单判断,patch 驱动的XX,单纯的记录... 也可在
创建Object
或
Section
时候拦截,效果也不错.
其实没必要这样复杂嘛.挂钩下ZwLoadDriver足矣,再把几个进R0的关键API挂上, 一个小型监控驱动加载的
HIPS
就成型了. 啊啊啊啊啊啊啊啊~~~
我呢,非常搓,看见微点更挫,所以我便用更加搓的方式来搞了.各位同学切勿效仿切勿效仿~
【boy_hacker】微点的工程师会感动滴
【killvxk】还是hook RtlImageNtHeader强大~
【360safe keenjoy95】 邪了门0xC0000017...
[
Last edited by 点饭的百度空间 on 2008-12-23 at 10:34
]
作者:
点饭的百度空间
时间:
2008-12-15 10:55
标题:
[sudami]哎,微点的响应速度真快.MmLoadSystemImage
2008/12/10
哎,微点的响应速度真快,一下就改进了.微点升级后的效果如下:
nt!NtSetSystemInformation+0x358:
8061071e db0400 fild dword ptr [eax+eax]
80610721 008b038945d8 add byte ptr [ebx-27BA76FDh],cl
80610727 8b4304 mov eax,dword ptr [ebx+4]
8061072a 8945dc mov dword ptr [ebp-24h],eax
8061072d 8d45ac lea eax,[ebp-54h]
80610730 50 push eax
80610731 8d45b4 lea eax,[ebp-4Ch]
80610734 50 push eax
80610735 6a01 push 1
80610737 57 push edi
80610738 57 push edi
80610739 8d45d8 lea eax,[ebp-28h]
8061073c 50 push eax
8061073d e8cb4a7701 call 81d8520d ; 很挫...
80610742 8945e4 mov dword ptr [ebp-1Ch],eax
80610745 3bc7 cmp eax,edi
80610747 0f8cb0040000 jl nt!NtSetSystemInformation+0x837 (80610bfd)
8061074d ff75ac push dword ptr [ebp-54h]
80610750 e8c1edf1ff call nt!RtlImageNtHeader (8052f516)
或许微点在有的机器上有效,在有的机器上无效??? 还是看了这篇搓文后立马修改了代码??? 靠, 真不厚道!!!升级之后总得说一声吧,害得我为了兼容微点,还得换其他方法搞. 囧
13 匿名网友 2008年12月11日 星期四 21:13
sudami 作为一个公司的程序员,应该尊重竞争对手,并以自我技术的创新为乐,而不是找别人的茬。
15 sudami 2008年12月12日 星期五 09:34
嗯,有道理,不过我目前技术太菜.
需要分析学习其他安全软件的一些技术,才能不断提高自己.
这个也不算找"微点"的茬,倒是帮他们纠正了一个小错误,难道是坏事啊?
哎,以后我就不会把其他安全软件的这种漏洞写出来了,留着自己用倒是不错~~~
人家又不给钱我,干么费那么大劲去提醒他们,还吃力不讨好的....
还又一个月学校就放假啦.哈哈,终于可以回家咯~~~
留言回复作者:
http://hi.baidu.com/sudami/blog/ ... 3df6084bfb51ab.html
作者:
lotei
时间:
2008-12-19 18:47
觉得大米还是很不错的,哎!好好学习技术!MJ能教你技术却教不了你做人!呵呵!有时候不是看起来搓而是还没看懂!
[
Last edited by lotei on 2008-12-19 at 18:51
]
作者:
点饭的百度空间
时间:
2008-12-19 21:02
可爱的mj她好像被“禁止发言”了:o
作者:
snhao
时间:
2008-12-23 11:20
不能人家提出了批评意见就封人家的嘴吧?那以后谁还给你提意见?
不但不能封嘴,还应当鼓励大家提出批评意见,对于正确的意见应该给予一定的奖励。只有这样才能不断进步。
欢迎光临 微点交流论坛 (http://bbs.micropoint.com.cn/)
bbs.micropoint.com.cn