查看: 2911|回复: 4
收起左侧

Bmnt.exe木马分析

[复制链接]
猪啊
发表于 2007-2-13 10:51:11 | 显示全部楼层 |阅读模式
这个木马是在卡饭论坛的病毒样本区下载的,它所提供的是普通灰鸽子的功能,而技术却利用了目前先进的rootkit技术


程序运行后,向系统添加一个名为Internet Connection Manager(管理Internet网络连接)的自启动系统服务(用于实现远程监控),源文件为c:\windows\system32\internet.exe,并向ie浏览器添加了一个名为IEHELPER.DLL的插件(公司名为Mass Effect Ntework,也许是这个公司赞助开发),以上就是这个程序的最终目的。到此为止,这都只是个很普通的木马程序做的事情,剩下的就是它为了保证这两项能在系统中常驻所花的心思了,而它厉害的地方也在于此。


程序运行时,在x:\windows\system32\driver文件夹下添加一个名为mspcidrv.sys的系统驱动,向HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\Appinit_Dlls下添加NTDLL32.DLL项(注意,这个大有用处)
同时也向HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects下添加了该项(启动浏览器时自动激活NTDLL32.DLL)
向HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run下添加了两处启动项,分别都指向c:\windows\system32.internet.exe



驱动mspcidrv.sys加载后会改写三个系统服务描述表项,分别为NtDeleteKey、NtDeleteValueKey、NtSetValueKey,并HOOK,使得针对那两个最终目的的注册表项的删除注册表项、删除注册表键值、更改注册表键值这三个操作就失去作用了,这是为了保护Internet Connection Manager系统服务和IEHELPER.DLL插件的注册表项不会被清除



清除方法,我先将被mspcidrv.sysHOOK的系统函数还原,使用的工具是Rootkit Unhooker,还原之后,首先把驱动本身的注册表项清除,至此这个驱动被从系统中连根拔除,其余的启动项和浏览器加载项因为失去驱动的保护,也都可以清理掉了,我以为至此就算结束了。



在我全部清理完后,刷新一下注册表,发现有两项又不可思议的回来了,它们分别是文章开头说的那两个最终目的,一个远程监控的系统服务,一个赞助公司的ie浏览器加载项
难道这就是传说中的即使将文件完全清理掉,也可从内存中恢复的木马?



现在要说到上文提到的HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\Appinit_Dlls下的这个NTDLL32.DLL项,这就是实现内存恢复的关键。
实际上这个是一个插入系统进程的DLL文件,在程序启动时,它就作为一个系统线程插入explorer进程,并对注册表项进行监视,它分别检测上述两个最终目的的两处注册表项,发现它们被删除就立刻重写,以下是它对注册表的监控记录

23:12:03.468 explorer.exe:1416 OpenKey HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects\{D0903A3B-F0EA-434a-9742-98C5335C7946} SUCCESS Access: 0x2000000  
23:12:03.468 explorer.exe:1416 CloseKey HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects\{D0903A3B-F0EA-434a-9742-98C5335C7946} SUCCESS


23:17:47.703 esplorer.exe:1416 OpenKey HKU\.DEFAULT\Software\Microsoft\Internet Explorer\Main SUCCESS Access: 0x2001F  
23:17:47.703 explorer.exe:1416 SetValue HKU\.DEFAULT\Software\Microsoft\Internet Explorer\Main\Enable Browser Extensions SUCCESS "yes"
23:17:47.703 esplorer.exe:1416 CloseKey HKU\.DEFAULT\Software\Microsoft\Internet Explorer\Main SUCCESS



这一招的作用是,在驱动还在的情况下,如果注册表项被删除(虽然系统函数已被驱动HOOK,但使用Icesword也是可以绕过HOOK删除的),就立刻重写
在驱动已被清除的情况下,可以说是最后的挣扎,拼死保证两个最终目功能的完整
因为这个线程自己本身也是要靠驱动保护的,所以在驱动失效,而它自己的注册表项又已被清除的情况下,它也只能维持在驱动被清除之前的那一次进程插入,以保证下次开机时两个最终目的启动项的完整。


清理的办法很简单,只要把它插入的系统进程explorer结束掉,他所残留在内存中的最后一点痕迹也会被清理干净,这时候再去清理那两个最终目的的注册表启动项,就不会再生成了,至此这个木马完全被清理干净。


如果不结束explorer进程而直接关机,虽然下次开机之后还是会加载,但这时的两个启动项已经完全不受任何保护了,清理掉是很容易了。


这个木马和feixue的应用有相似之处,就是插入系统进程在内存中对注册表项进行保护
而feixue更厉害的地方,它是对驱动的注册表项进行保护。因为我们清理的第一步就是还原被驱动HOOK了的系统函数,使保护注册表的驱动失效,进而才能开始清理注册表项。而feixue的驱动加载线程插入system进程,对驱动本身的注册表项进行保护,一旦检测到被HOOK了的系统函数被还原了就立刻重写,使驱动永不失效。也许有人会说,这容易,只要先结束掉保护线程再对函数进行Unhook就行了。一般来说,HOOK都被使用在利用修改系统服务描述表在函数中添加进我想要附加进去的功能(比如在删除文件的时候比系统更先接收到删除命令,并反馈回一个伪造的结果),而feixueHOOK系统函数是一种保护手段,它将注册表相关函数的地址修改到自己的地址(但是仍是跳向正确的地址,不做任何处理),为的是防止自己的线程被结束,所以结束此线程前若没有还原被HOOK的注册表函数,很可能结果是系统崩溃(这段是抄来的 ),而要还原被HOOK了的注册表函数,就要先结束线程,它们互相保护,feixue的厉害就在于此。


[ 本帖最后由 猪啊 于 2007-2-14 00:54 编辑 ]
csxhyq
发表于 2007-2-13 11:43:12 | 显示全部楼层
从剑盟顶到卡饭
bluenice
头像被屏蔽
发表于 2007-2-13 11:43:31 | 显示全部楼层
写的不错!支持一下!
laibao
发表于 2007-2-13 14:30:05 | 显示全部楼层
厉害哦,是用ssm监控的吗?
ooo-ppp
发表于 2007-2-13 15:53:59 | 显示全部楼层

请教问题

您是如何进行监控的,用什么软件才知道各进程的相互关联,找到幕后守护,才得到最后的分析结果,望告之,一直苦恼于此。
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-4-20 08:02 , Processed in 0.114276 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表