机器狗四大变种详细分析

来源:百度文库 编辑:神马文学网 时间:2024/05/28 06:07:39
Explorer.exe机器狗-分析(逆向工程)
文章末尾所添加的机器狗、IGM、写穿还原的工具
样本脱壳
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提供的,
但一些杀毒软件
也通过此渠道进行文件系统监控)及其上的文件系统过滤驱动(大多数文件访问控制和监控
都是这个层次的)无效
在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)等待网络链接,当网络链接畅通后,则从下载列表
4)对于列表中的文件每个文件,创建一个新线程下载并执行,线程计数加一(INC)
5)等待所有线程结束后(线程计数为0)结束进程。
对于线程计数的操作并不是原子操作,理论上多CPU情况下有小的概率出问题。
不过人家是写针对普通PC的病毒,多CPU不常见,也不需要稳定
文中所指的病毒就是一般说的新AV终结者
机器狗:
IGM:
写穿还原的工具:
目前防护办法可以选用新的第三代还原软件。
08机器狗变种二:注入"spoolsv.exe"进程
0、检查explorer.exe、spoolsv.exe是否有ntfs.dll模块,并查找“ssppoooollssvv”字符串(互斥体)
如果发现,则退出。
1、首先启动一个进程:spoolsv.exe,这是一个打印服务相关的进程。
即便是禁用系统的打印服务,它仍然可以由机器狗启动。
从任务管理器可以发现,这是一个当前用户级的权限,很容易区别
2、临时文件夹和%SystemRoot%\system32\drivers\释放Ntfs.dll。
并尝试注入spoolsv.exe。测试时没有实现。
3、根据病毒体内的加密字符串解密:
10004180=userinit.10004180 (ASCII "NB0dDqN55bCYi1jO4jtulzpa2G3iC244")(ecx)
77C178C0    8B01            mov     eax, dword ptr ds:[ecx]
77C178C2    BA FFFEFE7E     mov     edx, 7EFEFEFF
77C178C7    03D0            add     edx, eax
77C178C9    83F0 FF         xor     eax, FFFFFFFF
77C178CC    33C2            xor     eax, edx
77C178CE    83C1 04         add     ecx, 4 \\循环
77C178D1    A9 00010181     test    eax, 81010100
每次取双字节,与7EFEFEFF相加。(Edx)
再将双字节内的数据和FFFFFFFF异或(Eax)
然后xor     eax, edx
最后解密得:hXXp://a1.av.gs/tick.asp
从这个网站获得urlabcdown.txt。读取里面的内容:
最后下载27盗号木马,品种还是比较齐的,大话、梦幻、机战、奇迹、传奇、QQ、QQgame等。
释放路径是:%SystemRoot%\system32\drivers。
4、加载驱动%SystemRoot%\system32\drivers\puid.sys:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\puid]
"Type"=dword:00000001
"Start"=dword:00000003
"ErrorControl"=dword:00000000
"ImagePath"=hex(2):53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\
52,00,49,00,56,00,45,00,52,00,53,00,5c,00,70,00,75,00,69,00,64,00,2e,00,73,\
00,79,00,73,00,00,00
"DisplayName"="puid"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\puid\Security]
"Security"=hex:01,00,14,80,90,00,00,00,9c,00,00,00,14,00,00,00,30,00,00,00,02,\
00,1c,00,01,00,00,00,02,80,14,00,ff,01,0f,00,01,01,00,00,00,00,00,01,00,00,\
00,00,02,00,60,00,04,00,00,00,00,00,14,00,fd,01,02,00,01,01,00,00,00,00,00,\
05,12,00,00,00,00,00,18,00,ff,01,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,\
20,02,00,00,00,00,14,00,8d,01,02,00,01,01,00,00,00,00,00,05,0b,00,00,00,00,\
00,18,00,fd,01,02,00,01,02,00,00,00,00,00,05,20,00,00,00,23,02,00,00,01,01,\
00,00,00,00,00,05,12,00,00,00,01,01,00,00,00,00,00,05,12,00,00,00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\puid\Enum]
"0"="Root\\LEGACY_PUID\\0000"
"Count"=dword:00000001
"NextInstance"=dword:00000001
并释放iefjsdfas.txt,里面记录一些puid.sys信息。
如果iefjsdfas.txt里面的内容和实际的不符合,可能判断为puid.sys是免疫文件夹或无效文件。
这时候它可能会删除这个文件,再重新加载。
(未证实,我禁止了它的驱动加载)
5、记录一个进程快照,每隔30秒执行一次。如果发现以下字符串则结束:
antiarp.exe
360tray.exe
360Safe.exe
6、另外那个puid.sys可能会修改userinit.exe达到穿透还原的目的。
来自:孤独更可靠
08机器狗变种三:注入"conime.exe"进程
conime.exe是输入法编辑器相关程序,早期用来传播igm病毒,现在也成为机器狗的载体。穿透后,成为一个木马下载器病毒。
08机器狗变种四:注入"ctfmon.exe"进程
找不到~输入法被的图标没有了,就是文字服务和输入语言->高级->关闭高级文字服务  那里打勾了~怎么去也去不掉。
还找到了病毒下载其他病毒木马的地址列表文件:C:\\WINDOWS\\system32\\tutility.txt