发布于2022年11月8日3年前 病毒分析过程 这个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],100404213 . 74 2B JE SHORT gay80.0040424000404215 . 833A 02 CMP DWORD PTR DS:[EDX],200404218 . 74 26 JE SHORT gay80.004042400040421A . 833A 03 CMP DWORD PTR DS:[EDX],30040421D . 74 21 JE SHORT gay80.004042400040421F . 833A 04 CMP DWORD PTR DS:[EDX],400404222 . 74 1C JE SHORT gay80.0040424000404224 . 833A 05 CMP DWORD PTR DS:[EDX],500404227 . 74 17 JE SHORT gay80.00404240//前面这几个跳转的地址都一样的,跟一个就行了,都调回来了00404229 . 833A 06 CMP DWORD PTR DS:[EDX],60040422C . 0F84 F9050000 JE gay80.0040482B //最终到这里面,跟下去00404232 . 833A 07 CMP DWORD PTR DS:[EDX],700404235 . 0F84 F0050000 JE gay80.0040482B0040423B . 31C0 XOR EAX,EAX0040423D . C2 0800 RETN 800404240 > 31C0 XOR EAX,EAX00404242 . 40 INC EAX00404243 . 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.004048360040483A . 0FB7C0 MOVZX EAX,AX0040483D . C1E8 04 SHR EAX,400404840 . 83E8 02 SUB EAX,200404843 . 8B0424 MOV EAX,DWORD PTR SS:[ESP]00404846 . 83C4 04 ADD ESP,4/////此时esp指向返回地址00404849 . E9 66040000 JMP gay80.00404CB4 用od的过程还是比较欣慰释放dll,替换系统dll通过。这些过程通过api都能明白的知道。但是文件的读写过程还是硬伤以后注意看。。。。。 明天的你会感激,现在努力的自己。。。。。加油
创建帐户或登录后发表意见