Masscan 高速端口扫描教程
Masscan 是目前最快的端口扫描工具,由 Robert Graham 开发。它采用自定义的 TCP/IP 协议栈,理论上可以在 6 分钟内扫描整个互联网的单个端口。与 Nmap 注重深度检测不同,Masscan 专注于高速的端口发现,非常适合大规模网络资产探测。本文将介绍如何在搬瓦工 VPS 上安装和使用 Masscan。
一、Masscan 与 Nmap 的区别
- 速度:Masscan 采用异步传输,速度远超 Nmap,可达每秒数百万个包。
- 协议栈:Masscan 使用自定义 TCP/IP 栈,不依赖操作系统的网络栈。
- 功能:Masscan 只做端口发现和简单的 Banner 抓取,不支持服务版本检测和脚本扫描。
- 互补使用:通常先用 Masscan 快速发现开放端口,再用 Nmap 对发现的端口进行深入检测。
二、安装 Masscan
2.1 包管理器安装
# Ubuntu/Debian
apt update
apt install masscan -y
# CentOS
yum install epel-release -y
yum install masscan -y
2.2 从源码编译(获取最新版本)
apt install git gcc make libpcap-dev -y
git clone https://github.com/robertdavidgraham/masscan
cd masscan
make -j$(nproc)
cp bin/masscan /usr/local/bin/
2.3 验证安装
masscan --version
三、基础扫描
3.1 扫描单个端口
masscan 192.168.1.0/24 -p80 --rate=1000
3.2 扫描多个端口
masscan 192.168.1.0/24 -p80,443,8080,22 --rate=1000
3.3 扫描端口范围
masscan 192.168.1.0/24 -p1-65535 --rate=10000
3.4 扫描 UDP 端口
masscan 192.168.1.0/24 -pU:53,161,500 --rate=1000
3.5 混合扫描 TCP 和 UDP
masscan 192.168.1.0/24 -p80,443 -pU:53,161 --rate=1000
四、速率控制
速率是 Masscan 最重要的参数,决定了每秒发送的数据包数量:
# 低速扫描(适合普通 VPS)
masscan 10.0.0.0/8 -p80 --rate=1000
# 中速扫描
masscan 10.0.0.0/8 -p80 --rate=10000
# 高速扫描(需要高带宽)
masscan 10.0.0.0/8 -p80 --rate=100000
在搬瓦工 VPS 上,建议将速率控制在 1000-10000 之间。过高的速率可能导致网络拥塞或触发搬瓦工的流量限制。可以根据 VPS 带宽逐步调整速率。
五、输出格式
# 默认文本输出
masscan 192.168.1.0/24 -p80 --rate=1000 -oL results.txt
# JSON 格式输出
masscan 192.168.1.0/24 -p80 --rate=1000 -oJ results.json
# XML 格式输出(兼容 Nmap)
masscan 192.168.1.0/24 -p80 --rate=1000 -oX results.xml
# Grepable 格式输出
masscan 192.168.1.0/24 -p80 --rate=1000 -oG results.gnmap
# 二进制格式(最紧凑,可用于恢复扫描)
masscan 192.168.1.0/24 -p80 --rate=1000 -oB results.bin
六、Banner 抓取
Masscan 支持简单的 Banner 抓取,可以获取服务的基本信息:
# 抓取 HTTP Banner
masscan 192.168.1.0/24 -p80 --banners --rate=1000
# 抓取多种服务 Banner
masscan 192.168.1.0/24 -p22,80,443,3306 --banners --rate=1000
# 指定 Banner 抓取的源端口范围
masscan 192.168.1.0/24 -p80 --banners --source-port 40000-41000 --rate=1000
七、高级用法
7.1 使用配置文件
cat > /opt/masscan.conf << 'EOF'
# Masscan 配置文件
rate = 5000
output-format = json
output-filename = /opt/scan-results.json
# 扫描目标
range = 192.168.1.0/24
ports = 80,443,22,8080,3306,6379,27017
# 排除地址
exclude = 192.168.1.1
EOF
masscan -c /opt/masscan.conf
7.2 排除地址
# 排除单个地址
masscan 10.0.0.0/8 -p80 --exclude 10.0.0.1
# 使用排除文件
cat > exclude.txt << 'EOF'
10.0.0.1
10.0.1.0/24
192.168.0.0/16
EOF
masscan 10.0.0.0/8 -p80 --excludefile exclude.txt --rate=5000
7.3 恢复中断的扫描
# 扫描时会自动创建 paused.conf 文件
# 如果扫描中断,可以恢复
masscan --resume paused.conf
7.4 随机化扫描顺序
# Masscan 默认会随机化扫描顺序
# 可以指定随机种子以获得可重复的结果
masscan 192.168.1.0/24 -p80 --seed 12345 --rate=1000
八、Masscan + Nmap 联合使用
最佳实践是先用 Masscan 快速发现开放端口,再用 Nmap 进行深入检测:
# 第一步:Masscan 快速扫描发现开放端口
masscan 192.168.1.0/24 -p1-65535 --rate=10000 -oL masscan_results.txt
# 第二步:提取 IP 和端口
cat masscan_results.txt | grep "open" | awk '{print $4":"$3}' | sed 's/:/ -p/' > nmap_targets.txt
# 第三步:Nmap 深入检测
while read line; do
IP=$(echo $line | awk '{print $1}')
PORT=$(echo $line | awk '{print $2}')
nmap -sV -sC $IP $PORT -oN "nmap_${IP}.txt"
done < nmap_targets.txt
九、注意事项
- 合法授权:只扫描自己拥有或已获授权的网络,未经授权的大规模扫描可能触犯法律。
- 速率控制:在 VPS 上注意控制扫描速率,避免消耗过多带宽或触发服务商限制。
- 排除敏感地址:确保排除政府、军事和关键基础设施的 IP 段。
- 网络接口:Masscan 需要知道正确的网络接口,通常会自动检测,必要时通过
-e参数指定。
十、常见问题
扫描结果不完整
适当降低扫描速率并增加等待时间:
masscan 192.168.1.0/24 -p1-65535 --rate=5000 --wait=10
提示 libpcap 错误
apt install libpcap-dev -y
总结
Masscan 是大规模网络端口发现的利器,其极高的扫描速度使得全网段扫描变得可行。结合 Nmap 的深度检测能力,可以建立高效的安全资产发现流程。选购搬瓦工 VPS 请查看全部方案,使用优惠码 NODESEEK2026 可享受折扣。相关问题可通过搬瓦工官网提交工单咨询。