文本版|topic 高级搜索
   名人堂 帮助 论坛制度 意见反馈 | 首页 博客 周新贴 专题 求职 读书
RSS 底部
 
社区导航: 专家门诊   网络技术   操作系统   数据库   程序设计   系统应用   考试认证   CIO及信息化   站长交流   综合交流   下载基地  51CTO产品服务 设为首页 | 收藏本站
51CTO技术论坛» 网络安全 » 病毒木马 » Bmnt.exe木马分析       [ 打印]  [ 订阅]  [ 收藏]  [ 推荐给朋友]   [ 本帖文本页]

论坛跳转:
     
标题: [木马分析] Bmnt.exe木马分析  ( 查看:155  回复:0 )   
 
otta13
技术员  点击可查看详细



十二生肖之猪   水瓶座   行业勋章   技术勋章   诚信兄弟  
帖子 146
精华 0
无忧币 1283
积分 207
阅读权限 30
注册日期 2008-6-18
最后登录 2008-9-20 离线

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2008-6-25 16:39   标题:Bmnt.exe木马分析
上一帖 |
这个木马,它所提供的是普通灰鸽子的功能,而技术却利用了目前先进的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的含义,一般来说,HOOK都被使用在利用修改系统服务描述表来截获系统的服务函数调用,并在函数中添加进我想要附加进去的功能(比如在删除文件的时候比系统更先接收到删除命令,并反馈回一个伪造的结果),而feixueHOOK系统函数是一种保护手段,它将注册表相关函数的地址修改到自己的地址(但是仍是跳向正确的地址,不做任何处理),为的是防止自己的线程被结束,所以结束此线程前若没有还原被HOOK的注册表函数,很可能结果是系统崩溃(这段是抄来的 ),而要还原被HOOK了的注册表函数,就要先结束线程,它们互相保护,feixue的厉害就在于此。



论坛活动:测测你对IT技术大会的了解指数(赠微软礼品、无忧币)
2008-6-25 16:391楼
[ 顶部 ]
     
论坛跳转:  

| | |

标记已读 · 删除论坛Cookies · 文本版 · WAP
 
| 诚征版主 | 版主堂 | 意见建议 | 大史记 | 论坛地图
Copyright©2005-2008 51CTO.COM  Powered by Discuz!
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系。
京ICP备05051492号