• 端口扫描之僵尸扫描


     僵尸扫描是一种极其隐蔽的端口扫描,被扫描的主机基本上察觉不到扫描者。

    但是实现条件比较苛刻。

      条件1:可伪造源地址(Scanner 发的IP包里的源地址要伪造成Zombie的)

      条件2:Zombie机的系统足够闲置,基本上没有和外界进行IP通信

      条件3:Zombie机发的IP包中的IPID是递增的(这是判断端口是否开放的依据)

      PS:有些系统IPID是随机的,或者为0.像WIN7 ,WIN XP ,WIN 2000为递增。

    目标主机端口开放状态下 扫描者从Zombie机得到的两个RST包中的 IPID相差2:

     

     目标主机端口关闭状态下 扫描者从Zombie机得到的两个RST包中的 IPID相差1:

       脚本:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    #History:
    #2019/4/13                   MWQ            First  
    import logging
    logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
    from scapy.all import *
    def ipid(zombie):
        reply1=sr1(IP(dst=zombie)/TCP(flags="SA"),timeout=2,verbose=0)
        send(IP(dst=zombie)/TCP(flags="SA"),verbose=0)
        reply2=sr1(IP(dst=zombie)/TCP(flags="SA"),timeout=2,verbose=0)
        try:
            if reply2[IP].id==(reply1[IP].id+2):
                print("IPID sequence is incremental and target to be idle.ZOMBIE LOCATED")
                response = raw_input("Do you want to use this zombie to perfoem a scan? (Y  or  N):")
                if response == "Y":
                    target=raw_input("Enter IP address of the target system:")
                    zombiescan(target,zombie)
            else:
                print("Either the IPID sequence is not incremental or the target is not idle.NOT A GOOD ZIMBIE")
        except:
    		print("zombie may not turndwon firewall!")        
    def zombiescan(target,zombie):
        print("
     Scanning target "+target+" with zombie "+zombie)
        print("
     -----------------Open Ports On Target -----------------
    ")
        for port in range(1,200):
            try:
                start_val = sr1(IP(dst=zombie)/TCP(flags="SA",dport=port),timeout=2,verbose=0)
                send(IP(src=zombie,dst=target)/TCP(flags="S",dport=port),verbose=0)
                end_val=sr1(IP(dst=zombie)/TCP(flags="SA"),timeout=2,verbose=0)
                if end_val[IP].id==(start_val[IP].id+2):
                    print(port)
            except:
    			pass 
                   
    print("-----------------Zombie Scan Suite-----------------
    ")
    print("1           Identify Zombie Host 
    ")
    print("2           Perform   Zombie Host 
    ")
    ans=raw_input("select an Option (1  or 2 ):")
    if ans == "1":
        zombie=raw_input("Enter IP address to text IPID sequence:")
        ipid(zombie)
    else:
        if ans =="2":
            zombie =raw_input("Enter IP address for zombie system:")
            target=raw_input("Enter IP address for scan target:")
            zombiescan(target,zombie)
    

       演示:

      对比一下成功率还很高!

      

      

  • 相关阅读:
    MVVM教程[资源+分析]
    WPF 多点触摸开发[1]:Windows 7 安装多点触屏模拟器
    wpf 打印 之PirintVisual
    WPF:PrintVisual的问题
    几个漂亮的Button的CSS
    很不错的后台界面收集[提供下载]
    网页刷新方法集合
    JS各种各样的拖动效果
    CSS+DIV(盒子)
    网页刷新方法集合
  • 原文地址:https://www.cnblogs.com/mwq1024/p/10715595.html
Copyright © 2020-2023  润新知