Zmap使用教程#

软件介绍#

Zmap是一款高性能的网络扫描器,专为互联网级别的扫描设计,能够在几分钟内扫描整个IPv4地址空间。它的特点是速度极快,同时保持资源占用低。

入门级使用#

基本扫描#

功能说明:扫描目标网络的指定端口

使用示例

# 扫描单个IP的80端口
zmap -p 80 192.168.1.1

# 扫描IP范围
zmap -p 80 192.168.1.1-192.168.1.100

# 扫描网段
zmap -p 80 192.168.1.0/24

# 扫描多个端口
zmap -p 80,443 192.168.1.0/24

参数说明

  • -p:指定端口,可使用逗号分隔多个端口

结果输出#

功能说明:将扫描结果输出到文件

使用示例

# 输出到文本文件
zmap -p 80 192.168.1.0/24 -o scan.txt

# 输出到CSV文件
zmap -p 80 192.168.1.0/24 -o csv:scan.csv

# 输出到JSON文件
zmap -p 80 192.168.1.0/24 -o json:scan.json

# 输出统计信息
zmap -p 80 192.168.1.0/24 -v

参数说明

  • -o:指定输出文件和格式
  • -v:启用详细输出

初级使用#

速度控制#

功能说明:控制扫描速度

使用示例

# 设置扫描速率(每秒数据包数)
zmap -p 80 192.168.1.0/24 --rate 1000

# 设置更高速率
zmap -p 80 192.168.1.0/24 --rate 100000

# 设置最大带宽(Mbps)
zmap -p 80 192.168.1.0/24 --bandwidth=10M

# 设置发包间隔
zmap -p 80 192.168.1.0/24 --interval=10ms

参数说明

  • --rate:设置扫描速率
  • --bandwidth:设置最大带宽
  • --interval:设置发包间隔

扫描控制#

功能说明:控制扫描行为

使用示例

# 设置扫描的主机数量
zmap -p 80 192.168.1.0/24 --max-targets=100

# 设置扫描时间
zmap -p 80 192.168.1.0/24 --duration=60s

# 设置并发数
zmap -p 80 192.168.1.0/24 --probes=1000

# 设置超时时间
zmap -p 80 192.168.1.0/24 --timeout=5

参数说明

  • --max-targets:设置扫描的最大目标数
  • --duration:设置扫描持续时间
  • --probes:设置并发探测数
  • --timeout:设置超时时间(秒)

中级使用#

高级选项#

功能说明:使用高级选项进行更灵活的扫描

使用示例

# 设置源IP地址
zmap -p 80 192.168.1.0/24 --source-ip 192.168.1.100

# 设置源端口
zmap -p 80 192.168.1.0/24 --source-port 53

# 设置网卡接口
zmap -p 80 192.168.1.0/24 -i eth0

# 设置发包大小
zmap -p 80 192.168.1.0/24 --packet-size=64

# 设置TTL值
zmap -p 80 192.168.1.0/24 --ttl=64

参数说明

  • --source-ip:设置源IP地址
  • --source-port:设置源端口
  • -i:设置网卡接口
  • --packet-size:设置发包大小
  • --ttl:设置TTL值

排除目标#

功能说明:排除特定的IP或IP范围

使用示例

# 排除单个IP
zmap -p 80 192.168.1.0/24 --exclude=192.168.1.5

# 排除多个IP
zmap -p 80 192.168.1.0/24 --exclude=192.168.1.5,192.168.1.10

# 排除IP范围
zmap -p 80 192.168.1.0/24 --exclude=192.168.1.5-192.168.1.10

# 从文件中读取排除列表
zmap -p 80 192.168.1.0/24 --excludefile=exclude.txt

参数说明

  • --exclude:排除指定的IP或IP范围
  • --excludefile:从文件中读取排除列表

中上级使用#

防火墙绕过#

功能说明:使用各种技术绕过防火墙

使用示例

# 设置TCP SYN标志
zmap -p 80 192.168.1.0/24 --probe-module=tcpsyn

# 设置TCP ACK标志
zmap -p 80 192.168.1.0/24 --probe-module=tcpack

# 设置UDP探测
zmap -p 53 192.168.1.0/24 --probe-module=udp

# 设置自定义TCP选项
zmap -p 80 192.168.1.0/24 --probe-module=tcpsyn --probe-args="SYN,ACK,FIN,RST,PSH,URG:U 1024:U 1460"

参数说明

  • --probe-module:设置探测模块
  • --probe-args:设置探测参数

自定义探测#

功能说明:自定义探测数据包

使用示例

# 使用HTTP探测模块
zmap -p 80 192.168.1.0/24 --probe-module=http --probe-args="GET / HTTP/1.1\r\nHost: example.com\r\n\r\n"

# 使用HTTPS探测模块
zmap -p 443 192.168.1.0/24 --probe-module=ssl

# 使用DNS探测模块
zmap -p 53 192.168.1.0/24 --probe-module=dns --probe-args="example.com"

# 使用ICMP探测模块
zmap 192.168.1.0/24 --probe-module=icmp_echos

参数说明

  • --probe-module:设置探测模块
  • --probe-args:设置探测参数

高级使用#

大规模扫描#

功能说明:扫描大型网络或整个互联网

使用示例

# 扫描B类网络
zmap -p 80 192.168.0.0/16 --rate=100000

# 扫描C类网络
zmap -p 443 10.0.0.0/8 --rate=1000000

# 扫描整个互联网
zmap -p 80 0.0.0.0/0 --rate=1000000 --excludefile=exclude.txt

# 分块扫描
zmap -p 80 0.0.0.0/0 --range=1.0.0.0-127.255.255.255 --rate=1000000 --excludefile=exclude.txt
zmap -p 80 0.0.0.0/0 --range=128.0.0.0-255.255.255.255 --rate=1000000 --excludefile=exclude.txt

参数说明

  • --rate:对于大规模扫描,建议设置较高的速率
  • --range:分块扫描时使用

结果处理#

功能说明:处理和分析扫描结果

使用示例

# 使用grep过滤结果
zmap -p 80 192.168.1.0/24 -o scan.txt | grep -E "^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"

# 使用awk处理结果
zmap -p 80 192.168.1.0/24 -o scan.txt | awk '{print $1}' > ip_list.txt

# 与Nmap结合使用
zmap -p 80 192.168.1.0/24 -o scan.txt
cat scan.txt | xargs -I {} nmap -sV {}

# 实时处理结果
zmap -p 80 192.168.1.0/24 | while read ip; do echo "Found HTTP server at $ip"; done

参数说明

  • -o:指定输出文件

大师级使用#

分布式扫描#

功能说明:使用多台机器进行分布式扫描

使用示例

# 机器1:扫描1.0.0.0-127.255.255.255
zmap -p 80 0.0.0.0/0 --range=1.0.0.0-127.255.255.255 --rate=1000000 --excludefile=exclude.txt -o scan1.txt

# 机器2:扫描128.0.0.0-255.255.255.255
zmap -p 80 0.0.0.0/0 --range=128.0.0.0-255.255.255.255 --rate=1000000 --excludefile=exclude.txt -o scan2.txt

# 合并结果
cat scan1.txt scan2.txt > combined_scan.txt

性能优化#

功能说明:优化Zmap的扫描性能

使用示例

# 设置线程数
zmap -p 80 192.168.1.0/24 --threads=16

# 设置内存使用
zmap -p 80 192.168.1.0/24 --max-mem=1G

# 设置发包队列大小
zmap -p 80 192.168.1.0/24 --send-queue=10000

# 设置接收队列大小
zmap -p 80 192.168.1.0/24 --recv-queue=10000

# 调整内核参数
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
zmap -p 80 192.168.1.0/24 --rate=1000000

参数说明

  • --threads:设置线程数
  • --max-mem:设置最大内存使用
  • --send-queue:设置发包队列大小
  • --recv-queue:设置接收队列大小

高级防火墙绕过#

功能说明:使用高级技术绕过复杂的防火墙

使用示例

# 使用随机源端口
zmap -p 80 192.168.1.0/24 --source-port=1024-65535

# 使用特定的TCP选项
zmap -p 80 192.168.1.0/24 --probe-module=tcpsyn --probe-args="SYN,ACK,FIN,RST,PSH,URG:U 1024:U 1460"

# 使用分片数据包
zmap -p 80 192.168.1.0/24 --probe-module=tcpsyn --probe-args="SYN:M 0:1439"

# 使用欺骗MAC地址
zmap -p 80 192.168.1.0/24 --spoof-mac=00:11:22:33:44:55

参数说明

  • --source-port:设置源端口范围
  • --probe-args:设置探测参数
  • --spoof-mac:欺骗MAC地址

实战案例#

案例1:企业网络评估#

任务:快速评估企业网络的开放端口

执行步骤

  1. 准备排除列表

    echo "192.168.1.1" > exclude.txt  # 排除网关
  2. 执行快速扫描

    zmap -p 1-10000 192.168.0.0/16 --rate=100000 --excludefile=exclude.txt -o scan.txt
  3. 分析结果

    # 统计开放端口
    wc -l scan.txt
    
    # 按端口分组
    cat scan.txt | cut -d':' -f2 | sort | uniq -c | sort -rn
    
    # 提取开放80端口的IP
    grep ':80' scan.txt | cut -d':' -f1 > http_servers.txt
  4. 详细扫描

    # 对发现的HTTP服务器进行详细扫描
    cat http_servers.txt | xargs -I {} nmap -A -p 80,443 {}

案例2:互联网服务调查#

任务:调查互联网上特定服务的分布情况

执行步骤

  1. 配置扫描参数

    # 准备排除文件
    curl https://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.csv | grep -E "RESERVED" | cut -d',' -f1 >> exclude.txt
    echo "192.168.0.0/16" >> exclude.txt
    echo "10.0.0.0/8" >> exclude.txt
    echo "172.16.0.0/12" >> exclude.txt
  2. 执行大规模扫描

    # 扫描互联网上的MongoDB服务
    zmap -p 27017 0.0.0.0/0 --rate=1000000 --excludefile=exclude.txt -o mongodb_scan.txt
  3. 结果分析

    # 统计MongoDB服务器数量
    wc -l mongodb_scan.txt
    
    # 按国家/地区分析
    # 需要结合IP地理位置数据库

总结#

Zmap是一款专为速度设计的网络扫描器,特别适合大规模网络扫描。通过本教程的学习,您应该能够:

  1. 入门级:掌握基本的端口扫描和结果输出
  2. 初级:了解速度控制和扫描控制
  3. 中级:使用高级选项和排除目标
  4. 中上级:掌握防火墙绕过和自定义探测
  5. 高级:进行大规模扫描和结果处理
  6. 大师级:实现分布式扫描和性能优化

Zmap的优势在于其极高的扫描速度,而其劣势在于功能相对简单。在实际使用中,常常需要与其他工具结合使用,以获得更全面的信息。