12   1  /  2  页   跳转

20.48 无反应的 cao.exe

20.48 无反应的 cao.exe


 附件: 您所在的用户组无法下载或查看附件

文件说明符 : e:\temp\cao.exe
属性 : A---
数字签名:否
PE文件:是
获取文件版本信息大小失败!
创建时间 : 2008-6-9 13:16:10
修改时间 : 2008-6-9 13:16:12
大小 : 25728 字节 25.128 KB
MD5 : 1754e55800f753f51f69f7f21183d5ab
SHA1: CF3CA884E2176CF786676B076FD669920C6F0DD0
CRC32: 111b6e3f

卡巴在线上传扫描 09-06-2008 09:16的病毒库无反应

瑞星20.48 无反应 :-(

用户系统信息:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
http://blog.csdn.net/purpleendurer

宠辱不惊,笑看堂前花开花落; 去留无意,漫随天外云卷云舒。
分享到:
gototop
 

回复:20.48 无反应的 cao.exe

与之前拿到的某样本(瑞星报Dropper.Win32.Agent.gcx)行为其实是一样的,可以看出代码也是一样的,但是改了一点特征。
如原来是调用子函数释放文件,现在就直接把代码搬到主函数来;原来是用WinExec来运行文件,现在就用CreateProcess;原来释放的病毒(单独释放,以及覆盖ctfmon.exe、conime.exe、wuaulct.exe)是没有加壳的,现在就是加了upack壳的;原来的字符串局部变量全部由栈腾出空间存放,现在其中一个就用指针,由GloalAlloc申请空间来存放(字符串内容放在堆中)。
另外还加了几处花:
0040220F    60              pushad
00402210    B8 05000000    mov    eax, 5
00402215    BB 05000000    mov    ebx, 5
0040221A    61              popad
总之一句话,与之前对比没啥新鲜,就是代码改了一下,纯粹为了免杀。
最后编辑轩辕小聪 最后编辑于 2008-06-09 14:10:57
gototop
 

回复:20.48 无反应的 cao.exe

行为上能不能判断啊?
gototop
 

回复: 20.48 无反应的 cao.exe

1.在%systemroot%\system32文件夹下生成一个随机六位小写字母为名称的.exe文件,将自身内存0x838C偏移处开始的0x32E4字节内容拷贝进这个文件并保存,并CreateProcessA运行此文件。

2.为自身进程提SE_DEBUG权限。

3.比较自身文件路径是否是在开始菜单的启动文件夹中(这句应该是作者写错了,路径有问题),或者是否是system32\ctfmon.exe或system32\conime.exe

这部分判断其实没有用,因为无论结果是还是不是,都照样执行下面的流程。怀疑这是作者把别人代码直接copy过来,但是又没有加入相关的功能。

4.使用toolhelp32 API得到系统进程快照,遍历进程检查其中是否有以下进程名的进程:
GuardField.exe
ctfmon.exe
conime.exe
wuauclt.exe
如有,得到其PID,OpenProcess后TerminateProcess结束之。
这一步重复3次。

5.调用SFC.DLL序号为5的API函数,去除system32\ctfmon.exe、system32\conime.exe、system32\wuauclt.exe、system32\spoolsv.exe的windows系统文件保护。

6.修改对ctfmon.exe、conime.exe、wuauclt.exe的访问权限(以前的类似病毒一般用calcs.exe来修改,现在则直接调用AllocateAndInitializeSid等几个与之相关的API来设置),之后依次删除这三个文件。

7.ZwOpenDirectoryObject,ZwQueryDirectoryObject遍历驱动路径,这个不太明白它在干嘛,不过在下面刚好没有用到

8.停止beep.sys的服务,调用SFC.DLL序号为5的API函数,去除对beep.sys的系统文件保护,然后删除beep.sys,以自身内存0x4000开始的0x3F80字节的内容创建并写入beep.sys,再启动其服务,从而实现以替换beep.sys的方式启动自身驱动。

这里又有一个比较奇怪的地方,0x3F80字节这个长度不对,(之前变种中相应的0x3E80字节则是对的。而这个变种的驱动改了,这里正确的应为0x4380),所以释放出来的驱动没有办法运行,额……
9.在当前用户Temp文件夹下创建"_temp.dat"文件,将以自身内存0x4000开始的0x4380字节的内容写入其中,并注册为驱动,驱动项名为随机5位小写字母,然后启动这个驱动服务。
这次的0x4380字节长度就是正确的了,真不明白作者怎么回事,我看是改了这里忘了改那里吧……

10.驱动应该是使用了第二代机器狗虚拟磁盘的技术,这个我不在行,具体分析可参考http://www.debugman.com/read.php?tid=1292
另外驱动还有一个巧妙的地方,由于驱动创建的设备名是驱动加载时随机生成的,其中包含任意小写字母以及数字,因此驱动必须把设备名通知给Ring3部分程序,Ring3部分才能访问它的设备与之交互,因此它采取了这样的办法:
驱动SSDT HOOK了NtTerminateProcess
Ring3部分调用TerminateProcess,传递的PID为-3,而exitcode参数则是一个缓冲区指针
这时候,驱动在自身的NtTerminateProcess例程中拦载到这个调用(由PID是否为-3来判断,不为-3则调用原始函数),就把自身设备名中的“随机生成字符”部分转换成ANSI形式,写到exitcode参数指向的缓冲区里了。
这样当这个调用返回之后,Ring3部分就可以得到驱动的设备名中的“随机”内容,从而可以通过CreateFile及DeviceIoControl与之通信。

11.最后应该就是凭借着驱动虚拟磁盘的功能,穿还原写ctfmon.exe、conime.exe、wuauclt.exe了。写入内容同样是自身内存0x838C偏移处开始的0x32E4字节
最后编辑轩辕小聪 最后编辑于 2008-06-09 16:26:31
gototop
 

回复:20.48 无反应的 cao.exe

除了免杀之外,驱动似乎也与之前不一样。

驱动部分及与Ring3程序交互部分涉及比较专门的驱动编程知识,时间与能力所限,没有很仔细地进行逆向,所以只能定性而论了。
最后编辑轩辕小聪 最后编辑于 2008-06-09 16:28:13
gototop
 

回复:20.48 无反应的 cao.exe

又看了一下,之前的样本(瑞星报Dropper.Win32.Agent.gcx)使用的驱动,用的技术是第三代机器狗的方法,详细分析仍见4楼给出的链接,被瑞星报Rootkit.Win32.Undef.ig给杀了。所以这次采用了第二代机器狗技术的驱动。
gototop
 

回复:20.48 无反应的 cao.exe

看来是个大杂烩
gototop
 

回复:20.48 无反应的 cao.exe

7.ZwOpenDirectoryObject,ZwQueryDirectoryObject遍历驱动路径,这个不太明白它在干嘛,不过在下面刚好没有用到

这个功能,貌似应该在释放的exe文件再释放的dll创建路径"Root#RCVYL"之后,才读取这个路径的信息。因为我分析时没有让它释放的exe跑起来,所以这里它直接得不到信息,跳过了一些代码。

cao.exe释放的六位随机小写字母名的.exe(同时替换了ctfmon.exe、conime.exe、wuauclt.exe)主要行为:

1.在system32文件夹下释放六位随机小写字母名的驱动并加载,对DrvAnti.exe等多个安全软件进程进行IFEO劫持,
利用驱动(这驱动又是当时看雪金山逆向大赛的那个结束进程的代码,作者又直接抄了),还原全部SSDT项。
以及创建线程,利用驱动不停地结束这些安全软件进程(好几种方xxx流试,有Ring3级的关闭在csrss.exe中的句柄,到Ring0插APC)
这都是磁碟机的老方法了。
2.判断自身是否是system32\userinit.exe,是则启动explorer.exe。这显然是以前机器狗覆盖userinit.exe时留下的功能。
3.在system32文件夹下释放六位随机小写字母名的dll,并加载调用其导出的函数Init。这个函数的作用只是SetWindowsHookEx创建一个全局钩子,钩子函数地址为NULL,显然只是为了插入其他进程。

4.运行一个IE进程,目的其实就是此进程运行时,dll会插入其中,执行下载功能。奇怪的是它把IE的路径直接默认在E盘了。
5.在Temp文件夹里产生了个orz.exe,但是似乎并不是可执行文件,而只是把一行字"FUCK FLASH"保存到里面去了,并以独占方式打开这个文件,避免被删除。这个似乎没有什么意义。
6.在C盘根目录下释放一个_uniep.bat并运行,bat中不断重复删除exe自身的操作,这样使得当此exe进程退出时,文件就会被删除。

被释放的dll,除了Init函数之外,当发现自己位于IE进程中时,将会连网下载病毒。
也就是说,下载者的功能是在插入IE进程的dll里实现的。

两个下载的URL列表的地址,都是经加密的字符串,加密方法是xor 0x28
解密后,两个列表地址分别是:
http://ccc.awername.cn/txt.txt
http://ccc.awerinfo.cn/txt.txt

两个txt.txt内容均为:

http://heihei.awerbiz.cn/cao/aa1.exe
http://heihei.awerbiz.cn/cao/aa2.exe
http://heihei.awerbiz.cn/cao/aa3.exe
http://heihei.awerbiz.cn/cao/aa3.exe
http://heihei.awerbiz.cn/cao/aa4.exe
http://heihei.awerbiz.cn/cao/aa5.exe
http://hehe.awerbiz.cn/cao/aa6.exe
http://hehe.awerbiz.cn/cao/aa7.exe
http://hehe.awerbiz.cn/cao/aa8.exe
http://hehe.awerbiz.cn/cao/aa9.exe
http://hehe.awerbiz.cn/cao/aa10.exe
http://hehe.awerbiz.cn/cao/aa11.exe
http://huhu.awerbiz.cn/cao/aa12.exe
http://huhu.awerbiz.cn/cao/aa13.exe
http://huhu.awerbiz.cn/cao/aa14.exe
http://huhu.awerbiz.cn/cao/aa15.exe
http://hoho.awerbiz.cn/cao/aa16.exe
http://hoho.awerbiz.cn/cao/aa17.exe
http://hoho.awerbiz.cn/cao/aa18.exe
http://hoho.awerbiz.cn/cao/aa19.exe
http://ma.awerbiz.cn/cao/aa20.exe
http://ma.awerbiz.cn/cao/aa21.exe
http://ma.awerbiz.cn/cao/aa22.exe
http://ni.awerbiz.cn/cao/aa23.exe
http://ni.awerbiz.cn/cao/aa24.exe
http://ni.awerbiz.cn/cao/aa25.exe


另外那个dll好像还有一些很罗嗦的东西,没有仔细去看。
最后编辑轩辕小聪 最后编辑于 2008-06-09 17:57:40
gototop
 

回复:20.48 无反应的 cao.exe

文件已收
gototop
 

回复:20.48 无反应的 cao.exe

文件名:cao.exe
病毒名:Trojan.Win32.Undef.hmk
分析说明:

您所上报的病毒文件将在瑞星2008的20.48.12版本,如遇到问题可能会推后几个版本
gototop
 
12   1  /  2  页   跳转
页面顶部
Powered by Discuz!NT