本帖最后由 willJ 于 2012-6-9 19:15 编辑
基本信息
报告名称:对一绑马文件的分析
作者:willJ
报告更新日期:2012/6/9
样本发现日期:未知
样本类型:远控
样本文件MD5 校验值: 7B595050348A9F03CA1EE308E0319910
壳信息:无壳
可能受到威胁的系统:Windowsxp 以上系统
相关漏洞:无
简介
通过资源文件释放病毒文件,加入注册表达到自启动,病毒文件同过自己构造PE加载器加载自己的一个资源文件,资源文件为一个远控。
被感染系统及网络症状
进程中一直有一个vptray.exe
文件系统变化
Temp目录下面多出一个Vptray.exe以及up.bak文件
注册表变化
通过向注册表SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\run创建键值为symantecupdate注册表项达到自启动Temp目录的VPTray.exe文件
网络症状
用户电脑被apples.suroot.com控制
详细分析/功能介绍
文件主体的分析: 1. 首先检查消息队列中有没有键盘鼠标消息,然后发送一个WM_NULL消息过去 .text:0040145B 55 push ebp
.text:0040145C 8B EC mov ebp, esp
.text:0040145E 81 EC C0 08 00 00 sub esp, 8C0h
.text:00401464 57 push edi
.text:00401465 FF 15 F4 70 40 00 call ds:GetInputState ; 检测有没有鼠标键盘消息在消息队列中
.text:0040146B 6A 00 push 0 ; lParam
.text:0040146D 6A 00 push 0 ; wParam
.text:0040146F 6A 00 push 0 ; Msg
.text:00401471 FF 15 20 70 40 00 call ds:GetCurrentThreadId
.text:00401477 50 push eax ; idThread
.text:00401478 FF 15 F8 70 40 00 call ds:PostThreadMessageA
.text:0040147E 6A 00 push 0 ; wMsgFilterMax
.text:00401480 6A 00 push 0 ; wMsgFilterMin
.text:00401482 6A 00 push 0 ; hWnd
.text:00401484 8D 85 A8 FE FF FF lea eax, [ebp+Msg]
.text:0040148A 50 push eax ; lpMsg
.text:0040148B FF 15 FC 70 40 00 call ds:GetMessageA
2. 动态获取各种与资源相关的API .text:00401491 E8 CA 03 00 00 call Get_ResourceAPI ; 获取和资源相关的API
3. 根据文件名做不同的操作,如果文件名不是VPtray.exe做第4步,否则到第9步 .text:004014BD FF 15 78 AD 40 00 call Kernel_GetModuleFileName
.text:004014C3 E8 88 02 00 00 call Nothing
.text:004014C8 68 74 80 40 00 push offset SubStr ; "vptray.exe"
.text:004014CD 8D 95 E8 FE FF FF lea edx, [ebp+String]
.text:004014D3 52 push edx ; String
.text:004014D4 E8 FD 4C 00 00 call __strlwr ; 将大写字符转换为小写
.text:004014D9 83 C4 04 add esp, 4
.text:004014DC 50 push eax ; Str
.text:004014DD E8 1E 0D 00 00 call _strstr ; 查找是不是vptray.exe
.text:004014E2 83 C4 08 add esp, 8
.text:004014E5 85 C0 test eax, eax
.text:004014E7 0F 87 51 01 00 00 ja loc_40163E ; 关键的一个跳转(根据程序名做不同的操作)
4. 将文件以Vptray.exe拷贝到Temp目录下面
5. 解密注册表操作的字符串 .text:0040154D 52 push edx ; Str
.text:0040154E 68 8C 80 40 00 push offset ValueName ; "SymantecUpdate"
.text:00401553 68 A0 80 40 00 push offset a0nzl09te0elly9 ; "0Nzl09Te0eLLy9r2APH88PwF88vL1Pb9A/z08Mv"...
.text:00401558 E8 CC FC FF FF call decryption_RegeditPath ; 解密注册表字符串SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\run
6. 将Temp目录下面的vptray.exe加入注册表自启动项 7. 获取本地时间与oxffff相与,如果等于4就执行下面的操作,否则继续循环获取本地时间(应该是起到一个延时的作用) .text:004015CF B9 01 00 00 00 mov ecx, 1
.text:004015D4 85 C9 test ecx, ecx
.text:004015D6 74 24 jz short loc_4015FC
.text:004015D8 8D 95 80 F9 FF FF lea edx, [ebp+SystemTime]
.text:004015DE 52 push edx ; lpSystemTime
.text:004015DF FF 15 28 70 40 00 call ds:GetLocalTime
.text:004015E5 8B 85 8C F9 FF FF mov eax, dword ptr [ebp+SystemTime.wSecond]
.text:004015EB 25 FF FF 00 00 and eax, 0FFFFh
.text:004015F0 3B 85 7C F9 FF FF cmp eax, [ebp+var_684]
.text:004015F6 75 02 jnz short loc_4015FA
.text:004015F8 EB 02 jmp short loc_4015FC ; 获取本地时间,当达到本地时间与FFFF相与等于4就执行下面的操作
.text:004015FA ; ---------------------------------------------------------------------------
.text:004015FA
.text:004015FA loc_4015FA: ; CODE XREF: WinMain(x,x,x,x)+19Bj
.text:004015FA EB D3 jmp short loc_4015CF
8. 运行Temp目录下面的vptray.exe,生成一个cmd命令操作ping本地三次后删除文件本身达到自删除的效果,进程结束。 .text:004015FC 6A 00 push 0
.text:004015FE 8D 8D 90 F9 FF FF lea ecx, [ebp+NewFileName]
.text:00401604 51 push ecx
.text:00401605 FF 15 68 AD 40 00 call kernel32_Winexec ; 运行Temp目录下的程序本身
.text:0040160B 8D 95 48 F7 FF FF lea edx, [ebp+ExistingFileName]
.text:00401611 52 push edx
.text:00401612 68 E8 80 40 00 push offset aCmd_exeCPingLo ; "cmd.exe /c ping localhost -n 3 & del "%"...
.text:00401617 8D 85 60 F8 FF FF lea eax, [ebp+var_7A0]
.text:0040161D 50 push eax
.text:0040161E FF 15 74 AD 40 00 call User32_wsprintfA ; 拼接cmd.exe /c ping localhost -n 3 & del \文件本身
.text:00401624 83 C4 0C add esp, 0Ch
.text:00401627 6A 00 push 0
.text:00401629 8D 8D 60 F8 FF FF lea ecx, [ebp+var_7A0]
.text:0040162F 51 push ecx
.text:00401630 FF 15 68 AD 40 00 call kernel32_Winexec ; 运行一个CMD ping 本地三次 然后删除自己
.text:00401636 6A 00 push 0 ; uExitCode
.text:00401638 FF 15 2C 70 40 00 call ds:ExitProcess
9. 创建一个互斥对象,然后释放了互斥对象(这步我不太明白为什么)
10.对资源文件进行解密操作,然后在Temp目录释放一个up.bak文件(DLL)并且载入 11.开始一直循环着接收消息 释放在Temp目录的up.bak文件分析 Up.bak的主要功能就是集中在两个导出函数上面: 1. Loop作用 接收键盘鼠标消息
2. mydoor的作用: 载入资源,获取两个ntdll.dll中的函RtlDecompressBufferRtlGetCompressionWorkSpaceSize并且解密了资源文件 解密后: 没有将资源释放出来执行,而是通过申请内存,模拟PE加载器加载这个PE,通过loadlibrary执行功能,前面通过hook了heapdestroy,修改签名的字节为retn 0x4达到方式系统回收内存空间 通过对up.bak释放在内存中的资源的查看,是一个远控,一直向apples.suroot.com连接着。 通过下面看来很有一个名叫Ghost远控的风格 文件中也有大量的对注册表,文件,服务等操作的API
预防及修复措施
手工修复方式: 删除注册表: 删除temp目录下面的vptray.exe和up.bak文件 重启电脑
技术热点及总结
VPTray.exe是Norton AntiVirus反病毒软件的系统托盘程序。它用于快速访问Norton Antivirus反病毒软件。通过这个文件名来欺骗用户,冒充正常软件。 对于远控主体并没有自己释放出来,而是自己写了一个PE装载器去执行这个远控达到比较好的逃避杀毒的效果。 Hook了heapdestroy这个API,防止加载在内存的远控主体被清楚掉。
分析完了,那个远控就不分析了,网上的Ghost源码很多,可以下载来看看
分析得不好的地方还请大牛指点
|