首页
社区
课程
招聘
[原创]当当养“鸡”专业户!
发表于: 2007-2-6 18:55 16608

[原创]当当养“鸡”专业户!

2007-2-6 18:55
16608
【文章标题】: 当当养“鸡”专业户!
【文章作者】: KOOK1991
【作者邮箱】: WeKnow@163.com
【作者QQ号】: 371161181
【软件名称】: Poison Ivy 2.2.0
【下载地址】: http://www.poisonivy-rat.com/
【加壳方式】: 未知
【编写语言】: Borland Delphi 6.0 - 7.0
【使用工具】: OllyICE、LoadPE、ImportREC、Topo
【操作平台】: Win9x/NT/2000/XP
【软件介绍】: 国外知名木马,服务端才几KB,强!
【作者声明】: 我是菜鸟我怕谁!!!
--------------------------------------------------------------------------------
【详细过程】
  
  初中的时候一直认为拥有几千台肉鸡才叫“黑客”。眨眼间,两三年过去了,终于理解了“黑客”的真意,决心来看雪好
  好学学。无奈高手太多,使我无地自容,近来偶有感想,便拿出来显摆显摆……
  
  Poison Ivy,知道吧?很有名气的木马,可就不知道为啥在国内火不起来,但我挺爱用。(受不了一些哥们,这么小的木
  马不用,成天背着几百KB的鸽子满天飞……)好东西总有限制,Poison Ivy 2.2.0也不例外,限制最大连接数为200。
  于是我抄起了家伙,上路了……
  
  首先,阐述一下这回的破解目标:
  
  对Poison Ivy 2.2.0进行逆向工程,增加自定义最大连接数的功能,以方便我们使用。让更多的人成为养“鸡”专业户,
  从而脱贫、致富、奔小康!!!!!!
  
  用PEiD查不出来壳,无奈。直接用OllyICE上,停在入口点:
  
  005A3060 >  60              pushad
  005A3061    E8 00000000     call    005A3066
  005A3066    5D              pop     ebp
  005A3067    81ED 725B4000   sub     ebp, 00405B72
  005A306D    64:A1 30000000  mov     eax, dword ptr fs:[30]
  005A3073    0FB640 02       movzx   eax, byte ptr [eax+2]
  005A3077    0AC0            or      al, al
  005A3079    74 04           je      short 005A307F
  005A307B    33C0            xor     eax, eax
  
  经验太少,看不出是什么壳:-(直接上。走过005A3060,直接用ESP定律“HE 0012FFA4”,F9运行,卡到这里:
  
  005A3711    50              push    eax                              ; PI.005A36C0
  005A3712    33C0            xor     eax, eax
  005A3714    64:FF30         push    dword ptr fs:[eax]
  005A3717    64:8920         mov     dword ptr fs:[eax], esp
  005A371A    EB 01           jmp     short 005A371D
  005A371C    8700            xchg    dword ptr [eax], eax
  005A371E    0000            add     byte ptr [eax], al
  005A3720    0000            add     byte ptr [eax], al
  005A3722    0000            add     byte ptr [eax], al
  005A3724    0000            add     byte ptr [eax], al
  
  F8一路向前
  
  005A371D    0000            add     byte ptr [eax], al               ; 访问违规:正在写入到[00000000]
  
  Shift+F8,来到:
  
  7C92EAF0    8B1C24          mov     ebx, dword ptr [esp]
  7C92EAF3    51              push    ecx
  7C92EAF4    53              push    ebx
  7C92EAF5    E8 C78C0200     call    7C9577C1
  7C92EAFA    0AC0            or      al, al
  7C92EAFC    74 0C           je      short 7C92EB0A
  7C92EAFE    5B              pop     ebx
  7C92EAFF    59              pop     ecx
  7C92EB00    6A 00           push    0
  7C92EB02    51              push    ecx
  7C92EB03    E8 11EBFFFF     call    ZwContinue
  7C92EB08    EB 0B           jmp     short 7C92EB15
  7C92EB0A    5B              pop     ebx
  7C92EB0B    59              pop     ecx
  7C92EB0C    6A 00           push    0
  7C92EB0E    51              push    ecx
  7C92EB0F    53              push    ebx
  7C92EB10    E8 3DF7FFFF     call    ZwRaiseException
  
  Alt+F9返回:
  
  00519B33    00B0 97510055   add     byte ptr [eax+55005197], dh
  00519B39    8BEC            mov     ebp, esp                         ; 来到这里  
  00519B3B    83C4 F0         add     esp, -10
  00519B3E    B8 D8975100     mov     eax, 005197D8
  00519B43    E8 1CD0EEFF     call    00406B64
  00519B48    A1 ACCF5100     mov     eax, dword ptr [51CFAC]
  00519B4D    8B00            mov     eax, dword ptr [eax]
  00519B4F    E8 1822F7FF     call    0048BD6C
  00519B54    A1 ACCF5100     mov     eax, dword ptr [51CFAC]
  00519B59    8B00            mov     eax, dword ptr [eax]
  00519B5B    BA 989B5100     mov     edx, 00519B98                    ; ASCII "Poison Ivy"
  00519B60    E8 FF1DF7FF     call    0048B964
  00519B65    8B0D 90CE5100   mov     ecx, dword ptr [51CE90]          ; PI.0051F368
  00519B6B    A1 ACCF5100     mov     eax, dword ptr [51CFAC]
  00519B70    8B00            mov     eax, dword ptr [eax]
  00519B72    8B15 E8FB5000   mov     edx, dword ptr [50FBE8]          ; PI.0050FC34
  00519B78    E8 0722F7FF     call    0048BD84
  
  哈哈,来到OEP,很熟悉的Delphi开头。用LoadPE修正镜像大小,完全Dump。再打开ImportREC,OEP填上00119B38,自动查
  找INT -> 获取输入表 -> Fix Dump,脱壳OK~~~~~
  
  为了保险起见,再用PEiD查一下脱壳后的文件――“Borland Delphi 6.0 - 7.0”,呵呵,没错,就是你!!
  
  用Dede打开脱壳后的Poison Ivy,Dede卡住了,看来作者不是吃素的。
  
  只好用OllyICE载入脱壳后的Poison Ivy -> Ultra String Reference -> Find ASCII。看了半天,终于找到了一句有用的
  String:
  
  Ultra String Reference, 条目 1813
   Address=0051170A
   Disassembly=mov     edx, 00511844
   Text String=please assign a password for the connection:
  
  Ultra String Reference, 条目 1814
   Address=0051170F
   Disassembly=mov     eax, 0051187C
   Text String=new connection
  
  直接双击来到这里
  
  005116CD  |.  50            push    eax                              ; /Parm
  005116CE  |.  68 7E660480   push    8004667E                         ; |Cmd = FIONBIO
  005116D3  |.  56            push    esi                              ; |Socket
  005116D4  |.  E8 D7BDF7FF   call    <jmp.&wsock32.#12>               ; \ioctlsocket
  005116D9  |.  81BB 3C070000>cmp     dword ptr [ebx+73C], 0C8
  005116E3  |.  7C 0B         jl      short 005116F0
  005116E5  |.  56            push    esi                              ; /Socket
  005116E6  |.  E8 8DBDF7FF   call    <jmp.&wsock32.#3>                ; \closesocket
  005116EB  |.  E9 F7000000   jmp     005117E7
  005116F0  |>  8D45 F4       lea     eax, dword ptr [ebp-C]
  005116F3  |.  8B15 ACF35100 mov     edx, dword ptr [51F3AC]
  005116F9  |.  E8 0632EFFF   call    00404904
  005116FE  |.  803D 9DF35100>cmp     byte ptr [51F39D], 0
  00511705  |.  74 12         je      short 00511719
  00511707  |.  8D4D F4       lea     ecx, dword ptr [ebp-C]
  0051170A  |.  BA 44185100   mov     edx, 00511844                    ;  please assign a password for the connection:
  0051170F  |.  B8 7C185100   mov     eax, 0051187C                    ;  new connection
  00511714  |.  E8 AB41F2FF   call    004358C4
  00511719  |>  8D4D C8       lea     ecx, dword ptr [ebp-38]
  
  哈哈,众里寻他千百度,蓦然回首――小样,你在这啊:
  
  005116D9  |.  81BB 3C070000 C8000000   cmp     dword ptr [ebx+73C], 0C8         ; 比较当前连接数和0C8(就是200嘛)
  005116E3  |.  7C 0B                    jl      short 005116F0                   ; 小于200则跳
  005116E5  |.  56                       push    esi                              ; /Socket
  005116E6  |.  E8 8DBDF7FF              call    <jmp.&wsock32.#3>                ; \closesocket 断开连接
  
  可见在005116DF处的C8000000就是最大连接数,记住这个地址,后面有用的哦。
  
  找到了判断最大连接数的地方,可以直接把005116E3改成JMP,但有一点,假如你肉鸡太多,岂不被DDos了?看来这点还不
  够,我们还得控制最大连接数,也就是让程序随我们的意愿来自动修改005116DF处的最大连接数。考虑了半天,我决定用
  Poison Ivy的配置文件Poison Ivy.ini来保存欲设的最大连接数,以便我们在具体应用时方便地修改。
  
  先看看Poison Ivy.ini的内容吧!
  
  [Disclaimer]      ; 软件的启动模式(是否显示使用协议)
  Show=1
  [Placement]       ; 软件的窗口及控件的大小设置
  MaximizedState=0
  Top=491
  Left=330
  Width=744
  Height=231
  ConTop=145
  ConLeft=110
  ConWidth=650
  ConHeight=380
  Column0=50
  Column1=90
  Column2=90
  Column3=80
  Column4=80
  Column5=60
  Column6=45
  Column7=63
  Column8=67
  Column9=50
  Column10=57
  DataTransfers=0
  [Settings]         ; 很明显是有关控制端的配置信息,就把最大连接数存这吧
  ScrSize=75
  ScrBits=24
  ShareTo=
  ShareToSocks=
  ShareSocks=0
  Port=3460
  Password=admin
  BalloonTip=1
  MinimizeTray=1
  CloseTray=0
  Prompt=0
  PromptExit=0
  SimTransfers=2
  SDrounds=3
  Cache=1
  WindowColor=1
  TimestampColor=1
  KeynameColor=1
  WindowName=008000
  Timestamp=0000FF
  Keyname=808080
  PromptDelete=1
  AutoRefresh=0
  TreeLayout=1
  AutoLookUpdates=1
  AutoRemove=1
  HidePW=0
  [Connection]      ; 配置被控端的信息1
  DNS=127.0.0.1:3460,
  ID=
  Password=admin
  Socks4=0
  S4DNS=
  [Startup]         ; 配置被控端的信息2
  Startup=0
  ActiveXKey={1B4B734A-CC89-9B4A-0705-060108040104}
  [Installation]
  Filename=
  Copy=0
  CopySystem=1
  CopyWindows=0
  Melt=0
  Keylogger=0
  Persistence=0
  [Advanced]        ; 配置被控端的信息3
  ProcessMutex=)!VoqA.I4
  KeyLoggerMutex=VLC9032Ca
  CustomInject=0
  CustomInjectProc=msnmsgr.exe
  
  我就决定在[Settings]里添加一个子项“Crack”,用它来控制最大连接数,OK,开工!!!!
  
  要在配置文件中添加最大连接数的信息,最重要的就是读出最大连接数,那我没就必须找到程序是如何读配置文件的。重
  新回到OllyICE中看String:
  
  Ultra String Reference, 条目 1931
   Address=00514609
   Disassembly=mov     edx, 00514C28
   Text String=settings
  
  Ultra String Reference, 条目 2070
   Address=0051591E
   Disassembly=mov     edx, 00516828
   Text String=settings
  
  其中有很多的Settings,我只选了两处,因为其他的Settings都分布在这两处附近:
  
  00514609处:
  
  005145EB  |.  50            push    eax
  005145EC  |.  B9 5C4C5100   mov     ecx, 00514C5C                    ;  sharetosocks
  005145F1  |.  BA 284C5100   mov     edx, 00514C28                    ;  settings
  005145F6  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  005145F9  |.  8B30          mov     esi, dword ptr [eax]
  005145FB  |.  FF56 04       call    dword ptr [esi+4]
  005145FE  |.  A0 A7F35100   mov     al, byte ptr [51F3A7]
  00514603  |.  50            push    eax
  00514604  |.  B9 744C5100   mov     ecx, 00514C74                    ;  sharesocks
  00514609  |.  BA 284C5100   mov     edx, 00514C28                    ;  settings
  0051460E  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  00514611  |.  8B30          mov     esi, dword ptr [eax]
  00514613  |.  FF56 14       call    dword ptr [esi+14]
  00514616  |.  A1 7CF35100   mov     eax, dword ptr [51F37C]
  0051461B  |.  50            push    eax
  0051461C  |.  B9 884C5100   mov     ecx, 00514C88                    ;  port
  00514621  |.  BA 284C5100   mov     edx, 00514C28                    ;  settings
  00514626  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  00514629  |.  8B30          mov     esi, dword ptr [eax]
  0051462B  |.  FF56 0C       call    dword ptr [esi+C]
  0051462E  |.  A1 ACF35100   mov     eax, dword ptr [51F3AC]
  00514633  |.  50            push    eax
  00514634  |.  B9 984C5100   mov     ecx, 00514C98                    ;  password
  00514639  |.  BA 284C5100   mov     edx, 00514C28                    ;  settings
  0051463E  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  00514641  |.  8B30          mov     esi, dword ptr [eax]
  00514643  |.  FF56 04       call    dword ptr [esi+4]
  00514646  |.  A0 9AF35100   mov     al, byte ptr [51F39A]
  
  0051591E处:
  
  005158F8   .  50            push    eax
  005158F9   .  B9 5C685100   mov     ecx, 0051685C                    ;  sharetosocks
  005158FE   .  BA 28685100   mov     edx, 00516828                    ;  settings
  00515903   .  8B45 F8       mov     eax, dword ptr [ebp-8]
  00515906   .  8B18          mov     ebx, dword ptr [eax]
  00515908   .  FF13          call    dword ptr [ebx]
  0051590A   .  8B55 A4       mov     edx, dword ptr [ebp-5C]
  0051590D   .  B8 B4F35100   mov     eax, 0051F3B4
  00515912   .  E8 A9EFEEFF   call    004048C0
  00515917   .  6A 00         push    0
  00515919   .  B9 74685100   mov     ecx, 00516874                    ;  sharesocks
  0051591E   .  BA 28685100   mov     edx, 00516828                    ;  settings
  00515923   .  8B45 F8       mov     eax, dword ptr [ebp-8]
  00515926   .  8B18          mov     ebx, dword ptr [eax]
  00515928   .  FF53 10       call    dword ptr [ebx+10]
  0051592B   .  A2 A7F35100   mov     byte ptr [51F3A7], al
  00515930   .  68 840D0000   push    0D84
  00515935   .  B9 88685100   mov     ecx, 00516888                    ;  port
  0051593A   .  BA 28685100   mov     edx, 00516828                    ;  settings
  0051593F   .  8B45 F8       mov     eax, dword ptr [ebp-8]
  00515942   .  8B18          mov     ebx, dword ptr [eax]
  00515944   .  FF53 08       call    dword ptr [ebx+8]
  00515947   .  A3 7CF35100   mov     dword ptr [51F37C], eax
  0051594C   .  68 98685100   push    00516898
  00515951   .  8D45 A0       lea     eax, dword ptr [ebp-60]
  00515954   .  50            push    eax
  00515955   .  B9 A8685100   mov     ecx, 005168A8                    ;  password
  0051595A   .  BA 28685100   mov     edx, 00516828                    ;  settings
  0051595F   .  8B45 F8       mov     eax, dword ptr [ebp-8]
  00515962   .  8B18          mov     ebx, dword ptr [eax]
  00515964   .  FF13          call    dword ptr [ebx]
  00515966   .  8B55 A0       mov     edx, dword ptr [ebp-60]
  
  具体谁是程序开始运行时读取Poison Ivy.ini的地方,不知道。分别下断点,0051591E在开始时断下来,00514609在结束
  时断下来,可见0051591E是读取Poison Ivy.ini,00514609是保存Poison Ivy.ini,知道了这些,继续!!
  
  分析一下,程序是如何读取Poison Ivy.ini里的内容的:
  
  00515930   .  68 840D0000   push    0D84                             ;  压入默认端口
  00515935   .  B9 88685100   mov     ecx, 00516888                    ;  port        INI中保存端口信息的子项名称
  0051593A   .  BA 28685100   mov     edx, 00516828                    ;  settings    INI中保存端口信息的项名称
  0051593F   .  8B45 F8       mov     eax, dword ptr [ebp-8]
  00515942   .  8B18          mov     ebx, dword ptr [eax]
  00515944   .  FF53 08       call    dword ptr [ebx+8]                ;  进行读取
  00515947   .  A3 7CF35100   mov     dword ptr [51F37C], eax          ;  把读取的值保存到51F37C
  
  00515930处之所以要把默认端口压入,是因为程序怕在读不出配置文件中port这一子项时,使用0来做端口导致出错,可
  见“push    0D84”的作用是让程序在00515944读不出配置文件该项时采用备用值0D84。
  
  好了,打开Topo差入100字节代码空间,(本人懒得去找了可用空间了,还是用工具吧,100字节肯定够用。)Topo中显示
  100字节加到了005A3A33,下面开始添加代码:
  
  首先,用OllyICE二进制编辑005A3A33,加入字符串“Crack”。(别忘了在“Crack”后加“00”。)
  
  接着,在005A3A39处添加我们的代码:
  
  005A3A39    68 840D0000     push    0C8                              ; 压入默认最大连接数,保存备用值200
  005A3A3E    B9 333A5A00     mov     ecx, 005A3A33                    ; ASCII "Crack"     INI中保存最大连接数的子项名称
  005A3A43    BA 28685100     mov     edx, 00516828                    ; ASCII "Settings"  INI中保存最大连接数的项名称
  005A3A48    8B45 F8         mov     eax, dword ptr [ebp-8]
  005A3A4B    8B18            mov     ebx, dword ptr [eax]
  005A3A4D    FF53 08         call    dword ptr [ebx+8]                ; 进行读取
  005A3A50    A3 DF165100     mov     dword ptr [5116DF], eax          ; 把读取的最大连接数保存到上文提到的005116DF处,替换原来的最大连接数
  
  方便起见,就让程序从00515930处跳到我们这里吧,即:
  
  00515930   .  68 840D0000   push    0D84
  
  改为:
  
  00515930   .- E9 04E10800   jmp     005A3A39
  
  为了使程序正常运行我们还要在005A3A50的下面加入如下代码:
  
  005A3A55    68 840D0000     push    0D84                             ; 把00515930原有功能修改了,最后还是要加上的,所谓“有借有还,再借不难”
  005A3A5A  - E9 D61EF7FF     jmp     00515935                         ; 回归原位,这就相当于台湾再咋拗,到头还是得回归咱中国,呵呵:-)
  
  OK,用OllyICE保存EXE文件,让我来测试一下……
  
  打开Poison Ivy.ini在[Settings]下加入Crack=0,呵呵一个也连接不上了。把Crack=0改为10000,哈哈,肉鸡出现了!!
  再把Crack=0删除,哦~~~~,肉鸡又出现了!!!!!成功!!!!!
  
  最后,给有对本文兴趣的朋友留个小作业:继续对00514609处进行逆向工程,使程序可以在关闭时自动保存当前的最大连
  接数……OK,就到这把!!!
  
--------------------------------------------------------------------------------
【经验总结】
  
  写文章好累,尤其本人打字慢,真是累煞我也……因此,在下恳请版主不看僧面看佛面,不看功劳看苦劳――给加个精吧!
  小弟初次发帖,还望各位支持!!最后还是非常非常的感谢您看完本文!缘分哪!谢谢啊!
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛,转载请注明作者并保持文章的完整,谢谢!

                                                       2007年02月06日 12:14:15

PoisonIvy-Crack.rar(原版文件及最终成品)下载地址:
http://www.live-share.com/files/153281/PoisonIvy-Crack.rar.html

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2


支持
2007-2-6 19:00
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
3
挂那么多干嘛

带宽不要钱是不!

是的
你钱多
2007-2-6 19:35
0
雪    币: 146
活跃值: (33)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
听说不稳定.鸽子虽然大,但是稳定.
2007-2-6 19:52
0
雪    币: 250
活跃值: (30)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
够详细,恩,我去看看。
2007-2-6 19:59
0
雪    币: 207
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
这个毒葛,早就知道了.
最大的优点是体积小,但是有个致命的问题:在开启金山网镖的情况下,会有严重冲突,具体表现是不能用鼠标右键,系统变的速度变的奇慢!
除了这之外,稳定性也差,操作不好鸡就丢了.
2007-2-7 02:04
0
雪    币: 192
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
呵呵。总算看完了。没怎么懂……还得继续学习
2007-2-7 02:23
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
还算不错了,和中文WINDOWS好像有点不太兼容。。

不过2.3版 好多了,用楼主的方法测试2.3回头汇报。。
2007-6-20 09:08
0
雪    币: 1919
活跃值: (901)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
9
支持一下~~
2007-6-20 09:19
0
雪    币: 375
活跃值: (12)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
10
支持下楼主,不过早对木马米兴趣了。
从同学讨论中,说上兴功能貌多的。
2007-6-20 15:50
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
应该是个不错的工具.......
2007-6-21 18:40
0
雪    币: 144
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
好文 :) :)
2007-6-22 12:13
0
雪    币: 167
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
本人修改的2.3:
http://www.live-share.com/files/237104/Poison_Ivy_2.3.0_fixed_by_kook1991.rar.html

注:由于使个人版本因此最大连接数的子项名称为kook1991,免杀已作,但不深入,有兴趣的朋友可以接着改改。
2007-7-2 18:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
上兴应该是鸽子的变种吧。无聊给朋友玩了下。。。注入ie进程。一旦被杀。系统崩溃。这不是逼人家重做系统嘛
2007-7-3 22:14
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
写得不错,楼主再接再厉呀
2007-7-6 17:56
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
支持,再学习!
2007-7-7 19:01
0
游客
登录 | 注册 方可回帖
返回
//