Masscan使用教程#

软件介绍#

Masscan是一款高速的互联网级端口扫描器,能够在几分钟内扫描整个互联网。它的设计目标是在保持高速度的同时,提供与Nmap类似的功能。

入门级使用#

基本扫描#

功能说明:扫描单个IP或IP范围的指定端口

使用示例

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

# 扫描IP范围的多个端口
masscan 192.168.1.1-100 -p 80,443,22

# 扫描整个网段
masscan 192.168.1.0/24 -p 1-1000

# 扫描域名
masscan example.com -p 80,443

参数说明

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

结果输出#

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

使用示例

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

# 输出到XML文件
masscan 192.168.1.0/24 -p 80 -oX scan.xml

# 输出到JSON文件
masscan 192.168.1.0/24 -p 80 -oJ scan.json

# 输出到二进制文件
masscan 192.168.1.0/24 -p 80 -oB scan.bin

参数说明

  • -oG:输出到grepable格式文件
  • -oX:输出到XML格式文件
  • -oJ:输出到JSON格式文件
  • -oB:输出到二进制格式文件

初级使用#

速度控制#

功能说明:控制扫描速度和性能

使用示例

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

# 设置更高速率(适合局域网)
masscan 192.168.1.0/24 -p 80 --rate 100000

# 设置较低速率(适合公网)
masscan 1.1.1.0/24 -p 80 --rate 100

参数说明

  • --rate:设置扫描速率,默认为100 packets/sec

端口范围#

功能说明:指定端口范围进行扫描

使用示例

# 扫描单个端口
masscan 192.168.1.0/24 -p 80

# 扫描多个端口
masscan 192.168.1.0/24 -p 80,443,22,21

# 扫描端口范围
masscan 192.168.1.0/24 -p 1-1000

# 扫描所有端口
masscan 192.168.1.0/24 -p 1-65535

# 扫描常用端口
masscan 192.168.1.0/24 -p 21,22,23,25,53,80,443,3306,8080

中级使用#

高级选项#

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

使用示例

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

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

# 设置网卡接口
masscan 192.168.1.0/24 -p 80 --interface eth0

# 设置发包数据大小
masscan 192.168.1.0/24 -p 80 --packet-size 64

# 设置扫描超时
masscan 192.168.1.0/24 -p 80 --wait 10

参数说明

  • --source-ip:设置源IP地址
  • --source-port:设置源端口
  • --interface:设置网卡接口
  • --packet-size:设置发包数据大小
  • --wait:设置扫描超时时间(秒)

排除目标#

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

使用示例

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

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

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

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

参数说明

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

中上级使用#

防火墙绕过#

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

使用示例

# 设置TCP SYN标志
masscan 192.168.1.0/24 -p 80 --syn

# 设置TCP ACK标志
masscan 192.168.1.0/24 -p 80 --ack

# 设置TCP FIN标志
masscan 192.168.1.0/24 -p 80 --fin

# 设置TCP Xmas标志
masscan 192.168.1.0/24 -p 80 --xmas

# 设置TCP NULL标志
masscan 192.168.1.0/24 -p 80 --null

参数说明

  • --syn:使用TCP SYN标志(默认)
  • --ack:使用TCP ACK标志
  • --fin:使用TCP FIN标志
  • --xmas:使用TCP Xmas标志
  • --null:使用TCP NULL标志

自定义数据包#

功能说明:自定义发送的数据包内容

使用示例

# 设置自定义User-Agent
masscan 192.168.1.0/24 -p 80 --http-user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"

# 设置自定义HTTP请求头
masscan 192.168.1.0/24 -p 80 --http-header "Host: example.com"

# 设置自定义HTTP路径
masscan 192.168.1.0/24 -p 80 --http-path "/test"

参数说明

  • --http-user-agent:设置HTTP User-Agent
  • --http-header:设置HTTP请求头
  • --http-path:设置HTTP请求路径

高级使用#

大规模扫描#

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

使用示例

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

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

# 扫描整个互联网的常用端口
masscan 0.0.0.0/0 -p 80,443,22,21 --rate 1000000 --excludefile exclude.txt

# 分块扫描大型网络
masscan 10.0.0.0/8 -p 80 --rate 1000000 --range 10.0.0.0-10.63.255.255
masscan 10.0.0.0/8 -p 80 --rate 1000000 --range 10.64.0.0-10.127.255.255

参数说明

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

结果处理#

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

使用示例

# 使用grep过滤结果
masscan 192.168.1.0/24 -p 80 -oG scan.txt | grep open

# 使用awk处理结果
masscan 192.168.1.0/24 -p 80 -oG scan.txt | awk '/open/ {print $2}' > open_ports.txt

# 与Nmap结合使用
masscan 192.168.1.0/24 -p 80 --rate 100000 -oG scan.txt
cat scan.txt | grep open | awk '{print $2}' | xargs -I {} nmap -sV {}

# 转换结果格式
masscan --readscan scan.bin -oX scan.xml

参数说明

  • --readscan:读取之前的扫描结果

大师级使用#

分布式扫描#

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

使用示例

# 机器1:扫描10.0.0.0-10.63.255.255
masscan 10.0.0.0/8 -p 80 --rate 1000000 --range 10.0.0.0-10.63.255.255 -oB scan1.bin

# 机器2:扫描10.64.0.0-10.127.255.255
masscan 10.0.0.0/8 -p 80 --rate 1000000 --range 10.64.0.0-10.127.255.255 -oB scan2.bin

# 合并结果
cat scan1.bin scan2.bin > combined.bin
masscan --readscan combined.bin -oX combined.xml

性能优化#

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

使用示例

# 设置最大文件描述符
ulimit -n 1000000
masscan 192.168.1.0/24 -p 80 --rate 1000000

# 调整内存使用
masscan 192.168.1.0/24 -p 80 --rate 1000000 --max-retries 1

# 调整重试次数
masscan 192.168.1.0/24 -p 80 --rate 1000000 --max-retries 3

# 调整等待时间
masscan 192.168.1.0/24 -p 80 --rate 1000000 --wait 5

参数说明

  • --max-retries:设置最大重试次数
  • --wait:设置扫描完成后的等待时间

高级防火墙绕过#

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

使用示例

# 使用随机源端口
masscan 192.168.1.0/24 -p 80 --rate 100000 --source-port 1024-65535

# 使用特定的TCP选项
masscan 192.168.1.0/24 -p 80 --rate 100000 --tcp-options "MSS:1460,SACK_PERM:1,TS:1000,WS:8"

# 使用分片数据包
masscan 192.168.1.0/24 -p 80 --rate 100000 --fragment

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

参数说明

  • --source-port:设置源端口范围
  • --tcp-options:设置TCP选项
  • --fragment:使用分片数据包
  • --spoof-mac:欺骗MAC地址

实战案例#

案例1:企业网络评估#

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

执行步骤

  1. 准备排除列表

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

    masscan 192.168.0.0/16 -p 1-65535 --rate 100000 --excludefile exclude.txt -oG scan.txt
  3. 分析结果

    # 统计开放端口
    grep open scan.txt | wc -l
    
    # 按端口分组
    grep open scan.txt | awk '{print $4}' | sort | uniq -c | sort -rn
    
    # 提取开放80端口的IP
    grep "80/open" scan.txt | awk '{print $2}' > 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. 执行大规模扫描

    # 扫描互联网上的Redis服务
    masscan 0.0.0.0/0 -p 6379 --rate 1000000 --excludefile exclude.txt -oG redis_scan.txt
  3. 结果分析

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

总结#

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

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

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