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:企业网络评估#
任务:快速评估企业网络的开放端口
执行步骤:
准备排除列表
echo "192.168.1.1" > exclude.txt # 排除网关执行快速扫描
masscan 192.168.0.0/16 -p 1-65535 --rate 100000 --excludefile exclude.txt -oG scan.txt分析结果
# 统计开放端口 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详细扫描
# 对发现的HTTP服务器进行详细扫描 cat http_servers.txt | xargs -I {} nmap -A -p 80,443 {}
案例2:互联网服务调查#
任务:调查互联网上特定服务的分布情况
执行步骤:
配置扫描参数
# 准备排除文件(包含保留地址和自己的网络) 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执行大规模扫描
# 扫描互联网上的Redis服务 masscan 0.0.0.0/0 -p 6379 --rate 1000000 --excludefile exclude.txt -oG redis_scan.txt结果分析
# 统计Redis服务器数量 grep open redis_scan.txt | wc -l # 按国家/地区分析 # 需要结合IP地理位置数据库
总结#
Masscan是一款专为速度设计的端口扫描器,特别适合大规模网络扫描。通过本教程的学习,您应该能够:
- 入门级:掌握基本的端口扫描和结果输出
- 初级:了解速度控制和端口范围设置
- 中级:使用高级选项和排除目标
- 中上级:掌握防火墙绕过和自定义数据包
- 高级:进行大规模扫描和结果处理
- 大师级:实现分布式扫描和性能优化
Masscan的优势在于其极高的扫描速度,而其劣势在于功能相对简单。在实际使用中,常常需要与Nmap等工具结合使用,以获得更全面的信息。