百度空间 | 百度首页 
 
查看文章
 
[note]哎,微点的响应速度真快.MmLoadSystemImage
2008年12月06日 星期六 22:24

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)

或许微点在有的机器上有效,在有的机器上无效??? 还是看了这篇搓文后立马修改了代码??? 靠, 真不厚道!!!升级之后总得说一声吧,害得我为了兼容微点,还得换其他方法搞.

-----------------------------------------------------------------------------------------------------------------------------------

2008/12/06

老技术,所以随便提醒下.

      关于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,单纯的记录... 也可在创建ObjectSection时候拦截,效果也不错.

其实没必要这样复杂嘛.挂钩下ZwLoadDriver足矣,再把几个进R0的关键API挂上, 一个小型监控驱动加载的HIPS就成型了. 啊啊啊啊啊啊啊啊~~~

我呢,非常搓,看见微点更挫,所以我便用更加搓的方式来搞了.各位同学切勿效仿切勿效仿~


类别:Note | 浏览() | 评论 (19)
 
最近读者:
 
网友评论:
1
2008年12月06日 星期六 23:39
路过。
 
2
2008年12月07日 星期日 00:00
XXX 学习了
 
3
2008年12月07日 星期日 09:12
还是hook RtlImageNtHeader强大~
 
4
2008年12月07日 星期日 09:45
到处都很强大啊~~
 
5
2008年12月07日 星期日 10:35
过来膜拜膜拜
 
6
2008年12月07日 星期日 14:36
微点的工程师会感动滴
 
8
2008年12月07日 星期日 17:07
我就纳闷了 怎么牛逼人这么多呢
 
9
2008年12月07日 星期日 19:27
膜拜
 
10
2008年12月08日 星期一 10:28
邪了门0xC0000017...
 
11
2008年12月11日 星期四 16:31
1. 说错了 是邪了门的0xc000001d 有时间我来跟踪一下 2. 就是个定位问题嘛 大家解析pdb吧 或者从分配内存处开始回溯 3. Sudami呀 俺的日志写好了 - -
 
12
2008年12月11日 星期四 16:36
4. pic 马赛克打的不完整...... -_-!
 
13
2008年12月11日 星期四 21:13
sudami 作为一个公司的程序员,应该尊重竞争对手,并以自我技术的创新为乐,而不是找别人的茬。
 
14
2008年12月11日 星期四 22:57
大概是学MJ了
 
15
2008年12月12日 星期五 09:34
嗯,有道理,不过我目前技术太菜. 需要分析学习其他安全软件的一些技术,才能不断提高自己. 这个也不算找"微点"的茬,倒是帮他们纠正了一个小错误,难道是坏事啊? 哎,以后我就不会把其他安全软件的这种漏洞写出来了,留着自己用倒是不错~~~ 人家又不给钱我,干么费那么大劲去提醒他们,还吃力不讨好的.... 还又一个月学校就放假啦.哈哈,终于可以回家咯~~~
 
16
2008年12月12日 星期五 09:54
to wy同学: 马赛克确实没打全,也罢.让病毒木马来的更猛烈些吧~~ (*^__^*)
 
17
2008年12月13日 星期六 10:17
替微点用户感谢博主帮助微点改进升级:) 呵呵刚看到
 
18
2008年12月13日 星期六 17:57
8楼 不知道你心中的牛B是什么样子的?
 
19
2008年12月23日 星期二 18:23
很搓的 摆个凳子学习学习再学习。
 
20
2009年01月06日 星期二 17:09
回复sudami:这个也不算找"微点"的茬,倒是帮他们纠正了一个小错误,难道是坏事啊? 逻辑问题:1.FIND BUG-》SENDMESSAGE TO MP 2.WRITING THE BUG IN http://hi.baidu.com/sudami/blog
 
本篇日志被作者设置为禁止发表新评论

     

©2009 Baidu