首页
社区
课程
招聘
灌水-某木马初步分析
2004-5-25 16:16 8706

灌水-某木马初步分析

2004-5-25 16:16
8706
某木马初步分析
kongfoo/2004.5.25
  今天早上把QQ挂在线上,过了一会有个人加了好友,过了一会就发了个文件
过来,“照片62.EXE”,JPG的图标,用PEiD看一下是ASPACK的壳,反正正
想要找些东西来玩玩(上个星期搞了一个星期某壳的unpacker还未成功,郁
闷中)。
  ASPACK的壳好脱啦,直接去入口+3ae的地方就是出口。
0040A3AF    61              POPAD
0040A3B0    75 08           JNZ SHORT 照片62.0040A3BA
0040A3B2    B8 01000000     MOV EAX,1
0040A3B7    C2 0C00         RETN 0C
0040A3BA    68 E2154000     PUSH 照片62.004015E2  ==去OEP
0040A3BF    C3              RETN

  有壳文件111K,脱出来56K,好像和ASPACK的压缩效率不相符。。。先不管。
  脱出来后先bpx j看看都用了什么API,心里面先有个底:)。没发现什么
有大杀伤力的调用,可以放心跟:)
  看代码是VC的程序。dump窗口数据段有80c834bc.jpg的字串,呵呵,
一定是要解一个图片出来明修栈道,暗渡陈仓啦。
00403D8D    FF15 A0D04000   CALL DWORD PTR DS:[<&kernel32.CreateFile>; kernel32.CreateFileA  ==打开自己。

00401C23    FF15 3CD04000   CALL DWORD PTR DS:[<&kernel32.SetFilePoi>; kernel32.SetFilePointer  ==去文件尾。

00403926    FF15 6CD04000   CALL DWORD PTR DS:[<&kernel32.ReadFile>] ; kernel32.ReadFile  ==读1000字节。

00401C23    FF15 3CD04000   CALL DWORD PTR DS:[<&kernel32.SetFilePoi>; kernel32.SetFilePointer  ==去文件尾(就是上面的代码啦)。

0040102E    E8 EE030000     CALL dumped_.00401421  ==可以看到401421/4013ca/4013bf都被调用了3次
00401033    53              PUSH EBX                      ==401421就是设置文件指针,4013ca读文件
00401034    8D5424 30       LEA EDX,DWORD PTR SS:[ESP+30]
00401038    6A 06           PUSH 6
0040103A    52              PUSH EDX
0040103B    E8 8A030000     CALL dumped_.004013CA
00401040    8D4424 38       LEA EAX,DWORD PTR SS:[ESP+38]
00401044    50              PUSH EAX
00401045    E8 75030000     CALL dumped_.004013BF
0040104A    6A 02           PUSH 2
0040104C    6A F4           PUSH -0C
0040104E    53              PUSH EBX
0040104F    8BE8            MOV EBP,EAX
00401051    E8 CB030000     CALL dumped_.00401421
00401056    53              PUSH EBX
00401057    8D4C24 44       LEA ECX,DWORD PTR SS:[ESP+44]
0040105B    6A 06           PUSH 6
0040105D    51              PUSH ECX
0040105E    E8 67030000     CALL dumped_.004013CA
00401063    8D5424 4C       LEA EDX,DWORD PTR SS:[ESP+4C]
00401067    52              PUSH EDX
00401068    E8 52030000     CALL dumped_.004013BF
0040106D    6A 02           PUSH 2
0040106F    6A FA           PUSH -6
00401071    53              PUSH EBX
00401072    894424 54       MOV DWORD PTR SS:[ESP+54],EAX
00401076    E8 A6030000     CALL dumped_.00401421
0040107B    83C4 44         ADD ESP,44
0040107E    8D4424 28       LEA EAX,DWORD PTR SS:[ESP+28]
00401082    53              PUSH EBX
00401083    6A 07           PUSH 7
00401085    50              PUSH EAX
00401086    E8 3F030000     CALL dumped_.004013CA
0040108B    8D4C24 34       LEA ECX,DWORD PTR SS:[ESP+34]
0040108F    51              PUSH ECX
00401090    E8 2A030000     CALL dumped_.004013BF
00401095    83C4 10         ADD ESP,10
00401098    8D5424 30       LEA EDX,DWORD PTR SS:[ESP+30]
0040109C    894424 14       MOV DWORD PTR SS:[ESP+14],EAX
004010A0    68 80000000     PUSH 80
004010A5    52              PUSH EDX
004010A6    FF15 08D04000   CALL DWORD PTR DS:[<&kernel32.GetSystemD>; kernel32.GetSystemDirectoryA  ==很明显了
004010AC    BF 5C704000     MOV EDI,dumped_.0040705C                 ; ASCII "\help3721.dll"  ==看到3721就有点&^$#$@#感觉$%^%#$

00403D8D    FF15 A0D04000   CALL DWORD PTR DS:[<&kernel32.CreateFile>; kernel32.CreateFileA  ==生成%systemdir%\help3721.dll

00401C23    FF15 3CD04000   CALL DWORD PTR DS:[<&kernel32.SetFilePoi>; kernel32.SetFilePointer  ==去文件头

004011BE    FF15 04D04000   CALL DWORD PTR DS:[<&kernel32.GetTempPat>; kernel32.GetTempPathA  ==图片要解在临时目录
004011C4    BF 30704000     MOV EDI,dumped_.00407030                 ; ASCII "80C834BC.jpg"

00403D8D    FF15 A0D04000   CALL DWORD PTR DS:[<&kernel32.CreateFile>; kernel32.CreateFileA  ==生成图片

00401266    FF15 C0D04000   CALL DWORD PTR DS:[<&shell32.ShellExecut>; shell32.ShellExecuteA  ==打开图片

00401276    FF15 60D04000   CALL DWORD PTR DS:[<&kernel32.WinExec>]  ; kernel32.WinExec  ==用rundll32打开help3721.dll
                                                                                         ==rundll32 %system%\help3721.dll,Rundll32

  之后程序结束。由于脱了壳的关系,原来附加在文件里面的图片、DLL都被脱
掉了,所以2个文件生成后,都是0byte大小的。知道了代码流程,跟踪一下有壳的
程序,生成DLL后复制出来(有壳的程序生成的图片是一个PLMM哦:))。

  DLL也被加壳了。用OD打开,入口:
10007001 >  60              PUSHAD
10007002    E8 03000000     CALL help3721.1000700A
10007007  - E9 EB045D45     JMP 555D74F7
  又是ASPACK,去10007001+3ae的地方找出口:
100073AF    61              POPAD
100073B0    75 08           JNZ SHORT help3721.100073BA
100073B2    B8 01000000     MOV EAX,1
100073B7    C2 0C00         RETN 0C
100073BA    68 7B230010     PUSH help3721.1000237B  ==去OEP
100073BF    C3              RETN

  LordPE,点一下OD的loaddll.exe,在下面的列表选help3721.dll,再dump full。
ImpREC选loaddll进程,Pick DLL,选help3721.dll,OEP填237b。IAT autoseach,
Get Import,Fix dump。呵呵,DLL的脱壳就这么简单。
  再看看DLL的代码:
1000128B    68 A4400010     PUSH dumped_.100040A4                    ; ASCII "help3721.dll"
10001290    A3 28460010     MOV DWORD PTR DS:[10004628],EAX
10001295    FF15 44A00010   CALL DWORD PTR DS:[<&kernel32.GetModuleH>; kernel32.GetModuleHandleA
1000129B    50              PUSH EAX
1000129C    FF15 1CA00010   CALL DWORD PTR DS:[<&kernel32.DisableThr>; kernel32.DisableThreadLibraryCalls  ==这个API我可是第一次见:(
                                                                       ==看看API文档,原来是禁DLL_THREAD_ATTACH/DETACH通知用的,呵呵,虚惊一场

  初始化代码之后,bpx j看看用了什么API,咦,这次可是大大的有杀伤力,
用了消息钩子,用了ReadProcessMemory,用了msvcrt的文件操作函数,用了注
册表操作函数,用了ws2_32的网络操作函数。。。
  木马该用的好像都用了:)大概看看API调用情况后就收工啦。用rundll32载
入DLL跟用OD的loaddll载入可不一样,会真正把木马运行起来的。

  程序就不放上来了,免得变成放毒者:)放个图灌一下水:)

===================================
平台:xp  工具:OllyDBG1.10修改版
===================================


[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞10
打赏
分享
最新回复 (11)
雪    币: 392
活跃值: (909)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
cyclotron 17 2004-5-25 16:54
2
0
不错,支持一下
雪    币: 221
活跃值: (100)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
luckynt 2004-5-25 22:12
3
0
顶下``
雪    币: 233
活跃值: (160)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
shaitan 1 2004-5-25 23:52
4
0
呵呵  不知道DLL脱壳还能不能用呢!
可惜这个DLL不太好试。。。

我用以上方法脱 加密与解密 第11章的ASPACK 的DLL壳还没成功

晕。
雪    币: 216
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
noNaMe-mOnk 2004-5-26 09:17
5
0
呵呵,应该是用什么捆绑软件绑过了,绑过之后,都是aspack.:D 曾经玩过。
雪    币: 267
活跃值: (280)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
marsaber 2004-5-27 08:37
6
0
呵呵......
这种方法对付一般的小菜鸟或新手一般是百发百中!
雪    币: 207
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
chaolumen86 2004-5-27 20:23
7
0
灌水都这么有水准
雪    币: 227
活跃值: (130)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
iceplus 2004-5-28 19:52
8
0
佩服佩服
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
拉登 2004-5-28 20:12
9
0
把plmm放上来让我们过过眼瘾呗:D
雪    币: 369
活跃值: (790)
能力值: ( LV12,RANK:570 )
在线值:
发帖
回帖
粉丝
kongfoo 14 2004-5-28 22:21
10
0
最初由 拉登 发布
把plmm放上来让我们过过眼瘾呗:D


放不来就不好啦,去各大贴图论坛就可以过眼瘾:D
雪    币: 36
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_omqyxbij 2019-7-24 21:36
12
1
老哥能不能帮我看一个软件???
游客
登录 | 注册 方可回帖
返回