无忧启动论坛

标题: IGM 机器狗是怎样穿透的分析 [打印本页]

作者: xiangsui    时间: 2007-11-7 22:50
标题: IGM 机器狗是怎样穿透的分析
机器狗:http://www.esfast.net/downs/explorer.rar
IGM:http://www.esfast.net/downs/IGM.rar
写穿还原的工具:http://www.esfast.net/downs/SectorEditor.zip
样本脱壳
OD加载样本explorer.exe,
对GetModuleHandleA下断,参数为NULL时即为入口点处对此函数的调用,
退出CALL之后可以得到入口为 004016ED。
重新加载样本,对004016ED下内存写入断点,中断后StepOver一步,然后在004016ED
下断点,F9运行到入口,DUMP。DUMP之后不关闭OD,让样本处于挂起状态,使用ImportREC修复DUMP
出来的文件的导入表。
修复之后DUMP出来的文件用OD加载出错,使用PEDITOR的rebuilder功能重建PE之后即可用OD加载,说明
脱壳基本成功,但资源部分仍有问题,无法用Reshacker查看

pcihdd.sys的提取
OD加载样本explorer.exe,设置有新模块加载时中断,F9运行
当ADVAPI32.DLL加载时,对CreateServiceA下断点,F9运行
当CreateServiceA中断时,即可提取出pcihdd.sys

pcihdd.sys基本流程如下
1)检查IDT的09(NPX Segment Overrun)和0E(Page Fault )处理程序的地址
如果09号中断处理程序存在,并且处理程序地址的高8位与0E处理程序高8位不同,则把
IDT中0E的高16位设为0。估计是检查0E是不是被HOOK了
我比较龌龊,看不懂这些操作的意思,这样不BSOD?请懂的兄弟跟帖告诉一声
2)通过搜索地址来查找自己的加载地址
查找驱动文件的资源中的1000/1000,并复制到一个全局缓冲区中
3)创建了\Device\PhysicalHardDisk0及其符号连接\DosDevices\PhysicalHardDisk0
4)只对IRP_MJ_CREATE
          IRP_MJ_CLOSE
          IRP_MJ_DEVICE_CONTROL
      作出响应
  
      其中IRP_MJ_CREATE中会断开\Device\Harddisk0\DR0上附加的设备。这个操作会使磁盘过滤驱动、文件系统驱动(OS提供的,
      但一些杀毒软件也通过此渠道进行文件系统监控)及其上的文件系统过滤驱动(大多数文件访问控制和监控
      都是这个层次的)无效(参见http://blog.csdn.net/joshua_yu/archive/2006/02/04/591636.aspx)

      在IRP_MJ_CLOSE 中对恢复DR0上的附加

在IRP_MJ_DEVICE_CONTROL中对0xF0003C04作出响应,只是把2)中找到的资源数据解密后返回到应用程序。
解密密钥是通过应用程序传入的一个串(密钥种子?)查表后产生(KEY:0x3f702d98)

0xF0003C04的作用:
          将用户态传入的整个代码体作为密钥种子对这个代码体进行类似于校验和的运算后得
到4字节的解密KEY,然后使用此解密key将驱动自身携带的资源解密(仅仅是XOR),将解密
结果返回给用户态。


关于解除DR0上的附加设备:
      这种操作应该会影响系统正常的文件系统操作,但是因为实际操作时此驱动被打开和关闭的的间隔很短,所以应该
      不会有明显影响。

explorer.exe流程
1、释放资源中的pcihdd.sys并创建名为pcihdd的服务,启动服务
2、定位userinit.exe在硬盘中的位置。定位方法如下
      1)通过FSCTL_GET_RETRIEVAL_POINTERS获取文件数据的分布信息

      2)通过直接访问硬盘(\\\\.\\PhysicalHardDisk0)的的MDR和
      第一个分区的引导扇区得到分区参数(每簇扇区数),配合1)中得到的信息
      来定位文件在硬盘上的绝对偏移量。
      这里有个小BUG,扇区大小是使用固定的512字节而不是从引导扇区中获取

      3)通过对比ReadFile读取的文件数据和自己定位后直接
      读取所得到的文件数据,确定定位是否正确
3、把整个代码体作为参数传递给pcihdd.sys,控制码0xF0003C04,并将pcihdd返回
      的数据直接写入userinit.exe的第一簇

被修改后的userinit.exe
1)查询SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon下的Shell键值
2)创建Shell进程
3)等待网络链接,当网络链接畅通后,则从http://yu.8s7.net/cert.cer下载列表
4)对于列表中的文件每个文件,创建一个新线程下载并执行,线程计数加一(INC)
5)等待所有线程结束后(线程计数为0)结束进程。
  
      对于线程计数的操作并不是原子操作,理论上多CPU情况下有小的概率出问题。
      不过人家是写针对普通PC的病毒,多CPU不常见,也不需要稳定

simple.rar
==============================================




其实担心被电子狗咬到可以把FAT格式的分区转为NTFS的,这样最起码在文件检索上面不是很容易得手,
当然2000平台上会将userinit彻底破坏,XP一般没有问题,搞不懂什么原因,
中了电子狗的患者可以将userinit删除(之后千万不可以重启计算机),然后从系统dllcache中恢复系统原
有的userinit(其实这个是SFC自动的,但是有可能系统SFC功能被关闭了),建议不要使用gho版的系统,
多数gho版的系统是没有dllcache目录的,尤其是一些精简版系统。
http://www.txwm.com/BBS722668.vhtml
《病毒即将三分天下,我们应该如何去面对》

作者: fd5158    时间: 2007-11-8 09:11
最近公司里的电脑就是中这种毒,有没有什么专杀啊
作者: netwinxp    时间: 2007-11-8 11:05
PE启动卡巴可杀......好像变种还会感染多个系统文件。
作者: dannypeng    时间: 2007-11-8 11:51
公司的电脑一直用冰点,看了这个帖子,真是没有用穿不透的墙啊~还是ghost妥当些~
作者: 123    时间: 2007-11-8 15:24
          

1.JPG (6.04 KB, 下载次数: 156)

1.JPG

作者: xiangsui    时间: 2007-11-13 09:47
机器狗:http://www.esfast.net/downs/explorer.rar
作者: custompc    时间: 2007-11-25 16:00
我也中了,是上PPLIVE的网站中的.
作者: kangyi    时间: 2007-11-25 18:44
原帖由 dannypeng 于 2007-11-8 11:51 AM 发表
公司的电脑一直用冰点,看了这个帖子,真是没有用穿不透的墙啊~还是ghost妥当些~


现在手动破冰点的方法就是用“直接硬盘访问工具”修改冰点的“还原标记”^$^
作者: enjon    时间: 2008-8-28 09:38
好贴得顶,谢谢分享 希望再次分享
作者: xyl5565    时间: 2008-9-19 15:20
提示: 作者被禁止或删除 内容自动屏蔽
作者: kmnt123    时间: 2009-9-7 16:30
好帖子,学习了.....




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3