吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8845|回复: 19
收起左侧

[PC样本分析] 对一个木马的算法简单分析

  [复制链接]
Smoke 发表于 2012-2-9 17:55
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子!
病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途!
禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!
本帖最后由 Smoke 于 2012-2-9 17:58 编辑

[文章标题]对一个木马的算法简单分析
[文章作者]:Smoke
[木马名称]:fuckme.exe
[下载地址]:见附件
[分析环境]windows xp sp3
[使用工具]:OD PEID
[详细过程]
今天无意之中在 C:\WINDOWS\system32 此文件夹下发现了这个名为 fuckme.exe
感到很无奈,不知道是什么东西。于是就载入OD看了下。结果吓了我一跳,不知是神马时候中的这木马。
PEID查壳:Microsoft Visual C++ 6.0
0040458F >  55                    push    ebp
00404590    8BEC                  mov     ebp, esp
00404592    6A FF                 push    -0x1
00404594    68 B0A14000           push    0040A1B0
00404599    68 10444000           push    00404410
0040459E    64:A1 00000000        mov     eax, dword ptr fs:[0]
004045A4    50                    push    eax
004045A5    64:8925 00000000      mov     dword ptr fs:[0], esp
004045AC    83EC 58               sub     esp, 0x58
004045AF    53                    push    ebx
004045B0    56                    push    esi
004045B1    57                    push    edi
004045B2    8965 E8               mov     dword ptr ss:[ebp-0x18], esp
004045B5    FF15 F4A04000         call    dword ptr ds:[<&KERNEL32.GetVers>; kernel32.GetVersion
004045BB    33D2                  xor     edx, edx
004045BD    8AD4                  mov     dl, ah
004045BF    8915 E4DF4000         mov     dword ptr ds:[0x40DFE4], edx
004045C5    8BC8                  mov     ecx, eax
004045C7    81E1 FF000000         and     ecx, 0xFF
004045CD    890D E0DF4000         mov     dword ptr ds:[0x40DFE0], ecx
004045D3    C1E1 08               shl     ecx, 0x8
004045D6    03CA                  add     ecx, edx
004045D8    890D DCDF4000         mov     dword ptr ds:[0x40DFDC], ecx
004045DE    C1E8 10               shr     eax, 0x10
004045E1    A3 D8DF4000           mov     dword ptr ds:[0x40DFD8], eax
004045E6    33F6                  xor     esi, esi
004045E8    56                    push    esi
004045E9    E8 52180000           call    00405E40
004045EE    59                    pop     ecx
004045EF    85C0                  test    eax, eax
004045F1    75 08                 jnz     short 004045FB
004045F3    6A 1C                 push    0x1C
004045F5    E8 B0000000           call    004046AA
004045FA    59                    pop     ecx
004045FB    8975 FC               mov     dword ptr ss:[ebp-0x4], esi
004045FE    E8 1D150000           call    00405B20
00404603    FF15 F0A04000         call    dword ptr ds:[<&KERNEL32.GetComm>; kernel32.GetCommandLineA
00404609    A3 04F54000           mov     dword ptr ds:[0x40F504], eax
0040460E    E8 DB130000           call    004059EE
00404613    A3 18E04000           mov     dword ptr ds:[0x40E018], eax
00404618    E8 84110000           call    004057A1
0040461D    E8 C6100000           call    004056E8
00404622    E8 49FBFFFF           call    00404170
00404627    8975 D0               mov     dword ptr ss:[ebp-0x30], esi
0040462A    8D45 A4               lea     eax, dword ptr ss:[ebp-0x5C]
0040462D    50                    push    eax
0040462E    FF15 ECA04000         call    dword ptr ds:[<&KERNEL32.GetStar>; kernel32.GetStartupInfoA
00404634    E8 57100000           call    00405690
00404639    8945 9C               mov     dword ptr ss:[ebp-0x64], eax
0040463C    F645 D0 01            test    byte ptr ss:[ebp-0x30], 0x1
00404640    74 06                 je      short 00404648
00404642    0FB745 D4             movzx   eax, word ptr ss:[ebp-0x2C]
00404646    EB 03                 jmp     short 0040464B
00404648    6A 0A                 push    0xA
0040464A    58                    pop     eax
0040464B    50                    push    eax
0040464C    FF75 9C               push    dword ptr ss:[ebp-0x64]
0040464F    56                    push    esi
00404650    56                    push    esi
00404651    FF15 D4A04000         call    dword ptr ds:[<&KERNEL32.GetModu>; kernel32.GetModuleHandleA
00404657    50                    push    eax
00404658    E8 F3D5FFFF           call    00401C50             //我们F8单步走下来 走到这里的时候 这个猥琐的玩意就跑起来嘞.那么很明显了,这个call里面肯定有问题,那个鸟人在这里做了坏事. 所以我们在这里F2下个断,然后重新载入 F9运行后 断在这里.我们F7跟进
0040465D    8945 A0               mov     dword ptr ss:[ebp-0x60], eax
00404660    50                    push    eax
00404661    E8 37FBFFFF           call    0040419D
00404666    8B45 EC               mov     eax, dword ptr ss:[ebp-0x14]
00404669    8B08                  mov     ecx, dword ptr ds:[eax]
0040466B    8B09                  mov     ecx, dword ptr ds:[ecx]
0040466D    894D 98               mov     dword ptr ss:[ebp-0x68], ecx
00404670    50                    push    eax
00404671    51                    push    ecx
00404672    E8 950E0000           call    0040550C
00404677    59                    pop     ecx
00404678    59                    pop     ecx
00404679    C3                    retn
F7跟进后 来到了这里,继续F8单步下去
00401C50 83EC 10 sub esp, 0x10
00401C53 57 push edi
00401C54 68 F0B24000 push 0040B2F0 ; ASCII "Q@VQ"
00401C59 E8 52070000 call 004023B0
00401C5E BF D0B14000 mov edi, 0040B1D0 ; ASCII "qu{{sisirr.;;::.ozg"
00401C63 83C9 FF or ecx, -0x1
00401C66 33C0 xor eax, eax
00401C68 6A 05 push 0x5
00401C6A F2:AE repne scas byte ptr es:[edi]
00401C6C F7D1 not ecx
00401C6E 49 dec ecx
00401C6F 51 push ecx
00401C70 68 D0B14000 push 0040B1D0 ; ASCII "qu{{sisirr.;;::.ozg" 发现这里把0040B1D0压入堆栈嘞.数据窗口跟随到0040B1D0,看到是密文
00401C75 E8 A6FFFFFF call 00401C20 //那么这个call里面肯定是在进行强大的解密嘞.我们F7进去看看
00401C7A 83C4 10 add esp, 0x10
00401C7D E8 7E000000 call 00401D00
00401C82 85C0 test eax, eax
00401C84 5F pop edi
00401C85 74 43 je short 00401CCA
00401C87 E8 D4230000 call 00404060
00401C8C 85C0 test eax, eax
00401C8E 75 2B jnz short 00401CBB
00401C90 894424 08 mov dword ptr ss:[esp+0x8], eax
00401C94 894424 0C mov dword ptr ss:[esp+0xC], eax
00401C98 8D4424 00 lea eax, dword ptr ss:[esp]
00401C9C C74424 00 30B04000 mov dword ptr ss:[esp], 0040B030 ; ASCII "Windows Time Acquisition"
00401CA4 50 push eax
00401CA5 C74424 08 A0184000 mov dword ptr ss:[esp+0x8], 004018A0
00401CAD FF15 1CA04000 call dword ptr ds:[<&ADVAPI32.StartServiceCtrlDi>; advapi32.StartServiceCtrlDispatcherA
00401CB3 33C0 xor eax, eax
00401CB5 83C4 10 add esp, 0x10
00401CB8 C2 1000 retn 0x10
跟进来来到
00401C20 /$ 8B4424 0C mov eax, dword ptr ss:[esp+0xC]
00401C24 |. B9 FE000000 mov ecx, 0xFE
00401C29 |. 25 FF000000 and eax, 0xFF
00401C2E |. 56 push esi
00401C2F |. 99 cdq
00401C30 |. F7F9 idiv ecx
00401C32 |. 8B7424 0C mov esi, dword ptr ss:[esp+0xC]
00401C36 |. FEC2 inc dl
00401C38 |. 85F6 test esi, esi
00401C3A |. 76 10 jbe short 00401C4C //很显然 发现了一处循环,就是算法嘞 由于我是算法盲人 只能大致的理解下 如有错误之处 还望大家指出 o(∩_∩)o 
00401C3C |. 8B4424 08 mov eax, dword ptr ss:[esp+0x8]
00401C40 |> 8A08 /mov cl, byte ptr ds:[eax] //取eax第一位的16进制给cl
00401C42 |. 2ACA |sub cl, dl //cl减dl 结果为cl
00401C44 |. 32CA |xor cl, dl //cl疑惑dl
00401C46 |. 8808 |mov byte ptr ds:[eax], cl
00401C48 |. 40 |inc eax
00401C49 |. 4E |dec esi
00401C4A |.^ 75 F4 \jnz short 00401C40
00401C4C |> 5E pop esi
00401C4D \. C3 retn
根据解密的信息可得这应该是一个木马
上线地址为:misskekejj.3322.org
端口为:8088
fuckme.rar (22.33 KB, 下载次数: 26)
由于从没分析过病毒,所以此为处女贴。(*^__^*)
写的很低级。望大牛切勿打击。。。


免费评分

参与人数 1热心值 +1 收起 理由
低调(d-iao) + 1 福尔摩斯大侦探又出神帖

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

小乐 发表于 2012-2-9 18:04
保存下来  据研究研究
fengkissping 发表于 2012-2-9 18:05
凸~~凸 发表于 2012-2-9 18:08
头像被屏蔽
892644330 发表于 2012-2-9 18:09
提示: 作者被禁止或删除 内容自动屏蔽
kaito1412 发表于 2012-2-9 18:12
楼住写的很详细,正好适合我这种小白学习
皇家夜逝 发表于 2012-2-9 18:17
第一次看到这样的帖子 很受教育啊
 楼主| Smoke 发表于 2012-2-9 18:17
892644330 发表于 2012-2-9 18:09
怎么没说是分析到哪个地址才解密出所谓的上线地址呢?

00401C70 68 D0B14000 push 0040B1D0 ; ASCII "qu{{sisirr.;;::.ozg" 发现这里把0040B1D0压入堆栈嘞.数据窗口跟随到0040B1D0,看到是密文
00401C75 E8 A6FFFFFF call 00401C20 //那么这个call里面肯定是在进行强大的解密嘞.我们F7进去看看

kaluote200 发表于 2012-2-10 10:46
下下来研究一下,,
优利金旺 发表于 2012-2-10 20:06
收藏了,以后好好学习学习、研究研究,支持楼主
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 13:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表