virusdefender 发表于 2012-7-17 17:57

感染型病毒的处理方法

本帖最后由 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 , esi
00412069    8B1E            mov   ebx, dword ptr
0041206B    895D DC         mov   dword ptr , ebx
0041206E    83C6 04         add   esi, 4
00412071    8B1E            mov   ebx, dword ptr
00412073    895D CC         mov   dword ptr , ebx
00412076    C745 D0 0000000>mov   dword ptr , 0
0041207D    C745 F4 0000000>mov   dword ptr , 0
00412084    C745 E4 0000000>mov   dword ptr , 0
0041208B    C745 D8 0000000>mov   dword ptr , 0
00412092    C745 F0 0000000>mov   dword ptr , 0
00412099    C745 D4 0000000>mov   dword ptr , 0
004120A0    C745 FC 0000000>mov   dword ptr , 0
004120A7    C745 E0 0000000>mov   dword ptr , 0
004120AE    8B45 E8         mov   eax, dword ptr
004120B1    83C0 08         add   eax, 8
004120B4    8945 D0         mov   dword ptr , eax
004120B7    8B4D E8         mov   ecx, dword ptr
004120BA    83C1 15         add   ecx, 15
004120BD    894D F4         mov   dword ptr , ecx
004120C0    8B55 E8         mov   edx, dword ptr
004120C3    83C2 24         add   edx, 24
004120C6    8955 E4         mov   dword ptr , edx
004120C9    8B45 E8         mov   eax, dword ptr
004120CC    83C0 2F         add   eax, 2F
004120CF    8945 D8         mov   dword ptr , eax
004120D2    8B4D E8         mov   ecx, dword ptr
004120D5    83C1 3B         add   ecx, 3B
004120D8    894D F0         mov   dword ptr , ecx
004120DB    8B55 E8         mov   edx, dword ptr
004120DE    83C2 47         add   edx, 47
004120E1    8955 D4         mov   dword ptr , edx
004120E4    60            pushad
004120E5    33C0            xor   eax, eax
004120E7    64:8B1D 3000000>mov   ebx, dword ptr fs:
004120EE    8B5B 0C         mov   ebx, dword ptr
004120F1    8B73 1C         mov   esi, dword ptr
004120F4    AD            lods    dword ptr
004120F5    8B40 08         mov   eax, dword ptr
004120F8    8BD8            mov   ebx, eax
004120FA    53            push    ebx
004120FB    6A 02         push    2
004120FD    8B7D D0         mov   edi, dword ptr
00412100    EB 03         jmp   short 00412105
00412102    8B7D F4         mov   edi, dword ptr
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 , 5A4D
00412111    75 67         jnz   short 0041217A
00412113    53            push    ebx
00412114    035B 3C         add   ebx, dword ptr
00412117    66:813B 5045    cmp   word ptr , 4550
0041211C    75 5C         jnz   short 0041217A
0041211E    8B53 78         mov   edx, dword ptr
00412121    5B            pop   ebx
00412122    03D3            add   edx, ebx
00412124    8B4A 18         mov   ecx, dword ptr
00412127    8B42 20         mov   eax, dword ptr
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
0041213E    03F3            add   esi, ebx
00412140    50            push    eax
00412141    8A07            mov   al, byte ptr
00412143    0AC0            or      al, al
00412145    74 08         je      short 0041214F
00412147    3A06            cmp   al, byte ptr
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
00412154    03C3            add   eax, ebx
00412156    0FB74C48 FE   movzx   ecx, word ptr
0041215B    8B42 1C         mov   eax, dword ptr
0041215E    03C3            add   eax, ebx
00412160    8B0488          mov   eax, dword ptr
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 , 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 , ebx
00412179    58            pop   eax
0041217A    61            popad
0041217B    8B45 E4         mov   eax, dword ptr
0041217E    50            push    eax
0041217F    FF55 FC         call    dword ptr
00412182    8945 EC         mov   dword ptr , eax
00412185    8B4D D8         mov   ecx, dword ptr
00412188    51            push    ecx
00412189    8B55 EC         mov   edx, dword ptr
0041218C    52            push    edx
0041218D    FF55 E0         call    dword ptr
00412190    8945 F8         mov   dword ptr , eax
00412193    6A 00         push    0
00412195    8B45 D4         mov   eax, dword ptr
00412198    50            push    eax
00412199    8B4D F0         mov   ecx, dword ptr
0041219C    51            push    ecx
0041219D    6A 00         push    0
0041219F    FF55 F8         call    dword ptr
004121A2    FF65 CC         jmp   dword ptr

通过分析样本和反汇编代码,得知原始入口地址被保存在病毒新增节数据区偏移4个字节出,去除恢复样本入口地址,值为00401000。
使用PEtools加载样本。其中镜像大小000121B4,其中病毒节大小为0X01EC,将其取出后为000121B4-0X01EC,然后把原始入口地址0000532C填到入口点。
单击OK,打开节编辑器。选中.boy节,从文件删除就可以了。

就像这样,病毒分析师弄清感染原理之后,就可以编制专杀工具了,或通过杀毒软件接口编写清除代码。

吾爱扣扣 发表于 2012-7-17 19:19

支持你!病毒?太深奥!

LoongKing 发表于 2012-7-17 19:26

膜拜病毒分析......{:17_1068:}

txke 发表于 2012-7-17 19:47

希望能把这个教程中的样本发上来,给大家试试,要不然肯定有很多朋友还是不明白。还有希望在那处病毒文件载入点的汇编代码上加点注释,这样方便理解。要不然没有样本,也没有完整的注释和教程,看得晕乎乎的,只能看个大概

微默 发表于 2012-7-18 00:36

这个的话,很经典,遇事也知道处理的办法,谢谢LZ了啊

kilkilo502 发表于 2012-7-18 00:36

我也分析过病毒 一个属于虚拟文件的这种 然后感染其实就是类似一层壳的代码然后这样释放驱动。
像是你这种的没有试过。

willJ 发表于 2012-7-18 09:10

不错

hackhd 发表于 2012-7-18 14:56

加油 继续发更多的好文章

hw2619 发表于 2012-7-18 16:12

好帖子,版小板凳慢慢学习

Aquamarine 发表于 2012-7-18 18:04

kilkilo502 发表于 2012-7-18 00:36 static/image/common/back.gif
我也分析过病毒 一个属于虚拟文件的这种 然后感染其实就是类似一层壳的代码然后这样释放驱动。
像是你这 ...

的确如此,楼主说了个思路,感觉对新手来说不太好操作。
页: [1] 2 3 4
查看完整版本: 感染型病毒的处理方法