您的位置:首页 > 其它

一次病毒分析过程的体会

2012-10-11 21:03 218 查看
病毒分析过程





这个gay8病毒是在看雪上看到的,别人已经分析过了。感觉自己东搞西搞的一直到现在还是不叫混乱,今天来分析一个病毒试试,结果。。。呵呵依然是一头雾水,把这个过程写出鼓励一下自己不要灰心气馁。

首先peid查壳,还好没有加壳。然后ida反汇编查看string,imports。发现文件操作相关的api还有临时文件的api开辟内存api还有几个窗口的。其实看到他们没一点感觉。现在知道应该想到的至少有释放dll出来啊。然后可能是修改注册表让dll自动被加载,或者是创建线程注入一下的都有可能啊。当时丝毫没有向这想,以后可以自己写一个获取string,imports资源的工具总结一下病毒木马还有相关的api都能组成哪几种病毒首先预判一下都可以干些什么的也不错。

其实是想静态分析的不过好难啊,根本搞不定。尤其是这个病毒的函数调用方式让偶着实难受下面大家可以一起看看。

.text:00404000

.text:00404000 push ebp

.text:00404001 mov ebp, esp

.text:00404003 sub esp, 100h

.text:00404009 mov [ebp+var_4], 0

.text:00404010 push esp

.text:00404011 push offset loc_4041E8//////回调函数入口EnumWindows参数

.text:00404016 push offset locret_404036////////这个是EnumWindows另一个参数

.text:0040401B push eax///////这个push没什么作用

.text:0040401C mov eax, 40401Dh

.text:00404021 movzx eax, ax

.text:00404024 shr eax, 4

.text:00404027 sub eax, 2

.text:0040402A mov eax, [esp+110h+var_110]

.text:0040402D add esp, 4

.text:00404030 jmp EnumWindows。。。

没用call 而是jmp方式调用api

然后程序流程跳转到回调函数

我们来到这个
00404208 > \8B1424 MOV EDX,DWORD PTR SS:[ESP] ; gay80.00404204,这个是上面push的
0040420B . 83C4 04 ADD ESP,4 //本来返回地址应该是00404204的,可是add esp后变成会返回到系统空间了
0040420E . FF02 INC DWORD PTR DS:[EDX]//00404204地址处,根据这个值做不同的跳转
00404210 . 833A 01 CMP DWORD PTR DS:[EDX],1
00404213 . 74 2B JE SHORT gay80.00404240
00404215 . 833A 02 CMP DWORD PTR DS:[EDX],2
00404218 . 74 26 JE SHORT gay80.00404240
0040421A . 833A 03 CMP DWORD PTR DS:[EDX],3
0040421D . 74 21 JE SHORT gay80.00404240
0040421F . 833A 04 CMP DWORD PTR DS:[EDX],4
00404222 . 74 1C JE SHORT gay80.00404240
00404224 . 833A 05 CMP DWORD PTR DS:[EDX],5
00404227 . 74 17 JE SHORT gay80.00404240//前面这几个跳转的地址都一样的,跟一个就行了,都调回来了
00404229 . 833A 06 CMP DWORD PTR DS:[EDX],6
0040422C . 0F84 F9050000 JE gay80.0040482B //最终到这里面,跟下去
00404232 . 833A 07 CMP DWORD PTR DS:[EDX],7
00404235 . 0F84 F0050000 JE gay80.0040482B
0040423B . 31C0 XOR EAX,EAX
0040423D . C2 0800 RETN 8
00404240 > 31C0 XOR EAX,EAX
00404242 . 40 INC EAX
00404243 . C2 0800 RETN 8

问题又出现了 这是回调函数函数结束后又该流向哪呢?实在是想不明白我就用od跟踪一下结果发现函数返回到系统空间中。这才明白过来这是个回调函数啊肯定要跟系统空间交互的。

接下来程序经过几次循环进入到了主体

这个病毒函数调用的特点很明显

0040482B > \8B6424 08 MOV ESP,DWORD PTR SS:[ESP+8]
0040482F . 68 4E484000 PUSH gay80.0040484E/////////这里是函数执行完后面jmp返回的地址
00404834 . 50 PUSH EAX///不知道写这个有什么作用
00404835 . B8 36484000 MOV EAX,gay80.00404836
0040483A . 0FB7C0 MOVZX EAX,AX
0040483D . C1E8 04 SHR EAX,4
00404840 . 83E8 02 SUB EAX,2
00404843 . 8B0424 MOV EAX,DWORD PTR SS:[ESP]
00404846 . 83C4 04 ADD ESP,4/////此时esp指向返回地址
00404849 . E9 66040000 JMP gay80.00404CB4

用od的过程还是比较欣慰释放dll,替换系统dll通过。这些过程通过api都能明白的知道。但是文件的读写过程还是硬伤以后注意看。。。。。

明天的你会感激,现在努力的自己。。。。。加油
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: