Masscan 是目前速度最快的端口扫描器,单机理论速率可达千万包/秒,常用于企业自有资产的暴露面排查与攻击面收敛。本篇以 Debian/Ubuntu 为例讲解 Masscan 的安装、限速配置、结果导出以及与 Nmap 配合的完整检测流程。
适用场景
- 定期盘点公网 IP 段的开放端口,发现未登记的”影子资产”
- 新服务器上线前验证只开放必要端口
- 配合态势感知平台做资产测绘与暴露面收敛
- 授权范围内的红蓝对抗快速侦察
前置条件
- Debian/Ubuntu 或 CentOS 服务器,root 或 sudo 权限
- 明确扫描授权范围:仅允许扫描自有或获得书面授权的 IP 段
- 建议使用独立带宽出口,避免高速发包影响生产业务
Masscan 工作原理
Masscan 采用异步无状态扫描:自行构造 SYN 包、自行解析响应,不依赖操作系统协议栈,因此速率远超传统扫描器。这也带来两个限制:高速发包下网络丢包会导致结果漏报或误报;超高速扫描极易触发运营商封禁或目标防护系统拦截。公网扫描务必用 –rate 限速。
操作步骤
第一步:安装 Masscan
# Debian/Ubuntu 直接安装
apt update && apt install -y masscan
masscan --version
# 或从源码编译最新版
apt install -y git gcc make libpcap-dev
git clone https://github.com/robertdavidgraham/masscan.git
cd masscan && make && make install
第二步:基础端口扫描
# 扫描单个 C 段的 Web 常用端口,限速 1000 pps
masscan 203.0.113.0/24 -p80,443,8080 --rate 1000 -oG scan_result.gnmap
# 关键参数说明:
# -p 指定端口,逗号分隔,支持范围写法 -p1-65535
# --rate 每秒发包数,公网扫描建议 500~2000
# -oG 输出 Grepable 格式,便于后续处理
# --exclude 排除敏感 IP,如 --exclude 203.0.113.1
扫描内网大网段时可提高速率,但需指定出口网卡与源 IP:
masscan 10.0.0.0/8 -p22,3389,6379 --rate 10000 \
--adapter-ip 10.0.1.50 --adapter-mac 00:0c:29:aa:bb:cc \
--router-mac 00:0c:29:dd:ee:ff -oG intranet.gnmap
第三步:结果导出与 Nmap 精扫
# JSON 格式导出,便于程序处理
masscan 203.0.113.0/24 -p80,443 --rate 1000 -oJ result.json --append
# 提取 6379(Redis)开放主机,交给 Nmap 做服务识别精扫
nmap -sV -p6379 -iL redis_hosts.txt -oN redis_detail.txt
Masscan 负责”快”发现端口,Nmap 负责”准”识别服务版本,两者配合是暴露面排查的标准组合。
第四步:暴露面收敛闭环
扫描只是手段,重点是处置。将结果与资产台账比对后,用防火墙收敛:
# 本机防火墙只放行业务端口(以 iptables 为例)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 10.0.1.0/24 -j ACCEPT # SSH 仅内网段可访问
iptables -A INPUT -p tcp -j DROP
iptables-save > /etc/iptables/rules.v4
- 发现未登记端口先确认为何开放,再决定关闭或登记
- 数据库、缓存、中间件端口一律不对公网暴露
- 整改一周后复扫,验证收敛效果
配置验证
# 本机回环自测:启动测试服务后扫描
python3 -m http.server 8080 &
masscan 127.0.0.1 -p8080 --rate 100
# 期望输出:Discovered open port 8080/tcp on 127.0.0.1
# 统计扫描结果
grep open scan_result.gnmap | wc -l
常见问题
FAQ1:扫描结果为什么有漏报或误报?
Masscan 为无状态扫描,–rate 过高时丢包会漏报,中间设备代答会误报。处理方法:关键资产用 nmap -sV 二次确认;对同一网段降低速率复扫两次取交集;检查 –adapter-ip 配置与回程路由是否正确。
FAQ2:扫描到一半被云厂商限流或封禁怎么办?
公网高速扫描会被云安全策略识别为攻击行为。建议:–rate 控制在 1000 以内;用 –exclude 排除云厂商自身网段;自有 VPC 内尽量直接内网扫描;若已被临时封禁,向云厂商提交工单说明属于授权安全检测即可申请解除。
总结
Masscan 以极高的扫描效率解决了大规模资产暴露面排查的效率问题,配合 –rate 限速与 Nmap 精扫验证,可构建”扫描发现、防火墙收敛、复扫验证”的闭环流程。务必只在授权范围内使用,未授权扫描本身就存在法律风险。