本帖最后由 virusdefender 于 2012-7-17 18:03 编辑
感染型病毒有多种感染方式,有的是在文件上添加一个新节,有的是捆绑到文件尾部,有的把目标程序放到病毒程序的资源中。今天我们来演示一个添加节的病毒的手工处理方法。 P.S. 今天图片上传功能不知怎么回事,上传的图片看不到,也无法引用,导致文章的一些图片跑到了最后边,大家就这么看吧。本人第一次发这样的帖子,还望大家多多指教。
我们可以看到这两个文件大小和MD5都已经发生变化。 使在分析感染性的病毒时,原文件和感染后的文件对比将有助于分析。我们今天就对比两个文件。 用PeiD软件查看这两个文件,发现infected.exe文件尾部添加了一个.boy的节,大小为000001B4。
分析到此,我们可以初步判断,要清除该病毒,就要把新添加的节删除,然后将节数据清除,恢复PE头中镜像文件大小的实际大小。别忘了,还有恢复被感染程序的原始代码入口。 绝大多数的感染性的病毒,在执行完病毒代码后都回到会被感染程序的原始入口。这个入口时在感染之前保存的。 接下来我们的任务就是寻早原始程序入口地址的保存位置,看看病毒在执行完功能后在什么地方寻找原始入口地址。 使用OllDbg载入程序,在内存窗口看到了那个节。
我们可以看到病毒代码新增节数据所在内存起始地址为00412000处,大小为00001000.载入样本到OD中代码停留地址为00412054,也就是病毒新增的节数据区域中,代码如下。
00412054 > 55 push ebp
00412055 8BEC mov ebp, esp
00412057 83EC 34 sub esp, 34
0041205A 53 push ebx
0041205B 56 push esi
0041205C 57 push edi
0041205D E8 00000000 call 00412062
00412062 5E pop esi
00412063 83EE 62 sub esi, 62
00412066 8975 E8 mov dword ptr [ebp-18], esi
00412069 8B1E mov ebx, dword ptr [esi]
0041206B 895D DC mov dword ptr [ebp-24], ebx
0041206E 83C6 04 add esi, 4
00412071 8B1E mov ebx, dword ptr [esi]
00412073 895D CC mov dword ptr [ebp-34], ebx
00412076 C745 D0 0000000>mov dword ptr [ebp-30], 0
0041207D C745 F4 0000000>mov dword ptr [ebp-C], 0
00412084 C745 E4 0000000>mov dword ptr [ebp-1C], 0
0041208B C745 D8 0000000>mov dword ptr [ebp-28], 0
00412092 C745 F0 0000000>mov dword ptr [ebp-10], 0
00412099 C745 D4 0000000>mov dword ptr [ebp-2C], 0
004120A0 C745 FC 0000000>mov dword ptr [ebp-4], 0
004120A7 C745 E0 0000000>mov dword ptr [ebp-20], 0
004120AE 8B45 E8 mov eax, dword ptr [ebp-18]
004120B1 83C0 08 add eax, 8
004120B4 8945 D0 mov dword ptr [ebp-30], eax
004120B7 8B4D E8 mov ecx, dword ptr [ebp-18]
004120BA 83C1 15 add ecx, 15
004120BD 894D F4 mov dword ptr [ebp-C], ecx
004120C0 8B55 E8 mov edx, dword ptr [ebp-18]
004120C3 83C2 24 add edx, 24
004120C6 8955 E4 mov dword ptr [ebp-1C], edx
004120C9 8B45 E8 mov eax, dword ptr [ebp-18]
004120CC 83C0 2F add eax, 2F
004120CF 8945 D8 mov dword ptr [ebp-28], eax
004120D2 8B4D E8 mov ecx, dword ptr [ebp-18]
004120D5 83C1 3B add ecx, 3B
004120D8 894D F0 mov dword ptr [ebp-10], ecx
004120DB 8B55 E8 mov edx, dword ptr [ebp-18]
004120DE 83C2 47 add edx, 47
004120E1 8955 D4 mov dword ptr [ebp-2C], edx
004120E4 60 pushad
004120E5 33C0 xor eax, eax
004120E7 64:8B1D 3000000>mov ebx, dword ptr fs:[30]
004120EE 8B5B 0C mov ebx, dword ptr [ebx+C]
004120F1 8B73 1C mov esi, dword ptr [ebx+1C]
004120F4 AD lods dword ptr [esi]
004120F5 8B40 08 mov eax, dword ptr [eax+8]
004120F8 8BD8 mov ebx, eax
004120FA 53 push ebx
004120FB 6A 02 push 2
004120FD 8B7D D0 mov edi, dword ptr [ebp-30]
00412100 EB 03 jmp short 00412105
00412102 8B7D F4 mov edi, dword ptr [ebp-C]
00412105 33C0 xor eax, eax
00412107 50 push eax
00412108 0BDB or ebx, ebx
0041210A 74 6E je short 0041217A
0041210C 66:813B 4D5A cmp word ptr [ebx], 5A4D
00412111 75 67 jnz short 0041217A
00412113 53 push ebx
00412114 035B 3C add ebx, dword ptr [ebx+3C]
00412117 66:813B 5045 cmp word ptr [ebx], 4550
0041211C 75 5C jnz short 0041217A
0041211E 8B53 78 mov edx, dword ptr [ebx+78]
00412121 5B pop ebx
00412122 03D3 add edx, ebx
00412124 8B4A 18 mov ecx, dword ptr [edx+18]
00412127 8B42 20 mov eax, dword ptr [edx+20]
0041212A 03C3 add eax, ebx
0041212C 41 inc ecx
0041212D 52 push edx
0041212E 50 push eax
0041212F 8BD7 mov edx, edi
00412131 58 pop eax
00412132 49 dec ecx
00412133 83F9 00 cmp ecx, 0
00412136 74 42 je short 0041217A
00412138 8BFA mov edi, edx
0041213A 8B7488 FC mov esi, dword ptr [eax+ecx*4-4]
0041213E 03F3 add esi, ebx
00412140 50 push eax
00412141 8A07 mov al, byte ptr [edi]
00412143 0AC0 or al, al
00412145 74 08 je short 0041214F
00412147 3A06 cmp al, byte ptr [esi]
00412149 ^ 75 E6 jnz short 00412131
0041214B 47 inc edi
0041214C 46 inc esi
0041214D ^ EB F2 jmp short 00412141
0041214F 58 pop eax
00412150 5A pop edx
00412151 8B42 24 mov eax, dword ptr [edx+24]
00412154 03C3 add eax, ebx
00412156 0FB74C48 FE movzx ecx, word ptr [eax+ecx*2-2]
0041215B 8B42 1C mov eax, dword ptr [edx+1C]
0041215E 03C3 add eax, ebx
00412160 8B0488 mov eax, dword ptr [eax+ecx*4]
00412163 03D8 add ebx, eax
00412165 58 pop eax
00412166 58 pop eax
00412167 48 dec eax
00412168 50 push eax
00412169 83F8 00 cmp eax, 0
0041216C 74 08 je short 00412176
0041216E 895D FC mov dword ptr [ebp-4], ebx
00412171 58 pop eax
00412172 5B pop ebx
00412173 50 push eax
00412174 ^ EB 8C jmp short 00412102
00412176 895D E0 mov dword ptr [ebp-20], ebx
00412179 58 pop eax
0041217A 61 popad
0041217B 8B45 E4 mov eax, dword ptr [ebp-1C]
0041217E 50 push eax
0041217F FF55 FC call dword ptr [ebp-4]
00412182 8945 EC mov dword ptr [ebp-14], eax
00412185 8B4D D8 mov ecx, dword ptr [ebp-28]
00412188 51 push ecx
00412189 8B55 EC mov edx, dword ptr [ebp-14]
0041218C 52 push edx
0041218D FF55 E0 call dword ptr [ebp-20]
00412190 8945 F8 mov dword ptr [ebp-8], eax
00412193 6A 00 push 0
00412195 8B45 D4 mov eax, dword ptr [ebp-2C]
00412198 50 push eax
00412199 8B4D F0 mov ecx, dword ptr [ebp-10]
0041219C 51 push ecx
0041219D 6A 00 push 0
0041219F FF55 F8 call dword ptr [ebp-8]
004121A2 FF65 CC jmp dword ptr [ebp-34]
通过分析样本和反汇编代码,得知原始入口地址被保存在病毒新增节数据区偏移4个字节出,去除恢复样本入口地址,值为00401000。
使用PEtools加载样本。其中镜像大小000121B4,其中病毒节大小为0X01EC,将其取出后为000121B4-0X01EC,然后把原始入口地址0000532C填到入口点。
单击OK,打开节编辑器。选中.boy节,从文件删除就可以了。
就像这样, 病毒分析师弄清感染原理之后,就可以编制专杀工具了,或通过杀毒软件接口编写清除代码。
|