介绍
Masscan 是一款异步高速SYN端口扫描器,作者 Robert Graham,号称可以在几分钟内扫描整个互联网,理论发包速度最高可达千万包/秒。
- Kali 默认自带;如缺失:
sudo apt install masscan - 必须root权限运行(需要原始套接字发包)
- 扫描原理:自定义TCP协议栈,SYN半开扫描,不完成三次握手;只发SYN包,收到SYN+ACK就判定端口开放,不回ACK,不建立完整TCP连接
- 核心特点:大范围资产测绘速度极快;缺点:精度不如Nmap,高速度下丢包、误报高;默认不扫描任何端口,必须手动指定
-p,不做DNS解析、不ping主机(相当于固定-sS -Pn -n)
Masscan vs Nmap
| 项目 | Masscan | Nmap |
|---|---|---|
| 定位 | 大范围快速端口普查 | 单点/小范围深度探测 |
| 扫描方式 | 异步发包,随机IP顺序 | 顺序扫描,可控探测 |
| 能力 | 仅端口扫描,少量banner抓取 | 端口、服务版本、OS识别、漏洞脚本 |
| 速度 | 极快 | 较慢 |
| 准确度 | 一般,高速容易丢包 | 高 |
| 适用场景 | 内网/资产段快速摸底 | 拿到开放端口后,深度验证、版本探测 |
实战流程:Masscan快速扫网段拿到开放IP+端口 → 用Nmap对这些IP做精准验证、版本探测。
基础语法
sudo masscan -p<端口> [参数] <目标IP/网段>
目标写法支持:
- 单个IP:
192.168.1.10 - CIDR网段:
192.168.1.0/24 - IP范围:
192.168.1.1-192.168.1.100 - 多目标逗号分隔:
10.0.0.0/24,192.168.1.0/24
常用核心参数
-p端口(必写)-p80单个端口-p22,80,443多个端口-p1-1000端口范围-p0-65535全端口扫描- UDP端口:
-pU:161
--rate发包速率(单位:包/秒),默认100--rate=1000每秒1000包(内网推荐)- 公网不要开极高速率,容易触发防火墙封禁、网络拥塞
--banners获取端口banner(HTTP标题、服务标识,支持协议有限,会增加扫描时间)-e指定网卡
-e eth0指定使用eth0网卡发包--exclude排除IP,不扫描
--exclude=192.168.1.1--excludefile从文件读取排除IP列表--retries丢包重传次数,默认0;内网可设--retries=2提高准确率--wait发包完成后等待多久接收应答包(秒),网段大建议--wait=10- 输出保存
--output-format list --output-filename result.txt简单列表--output-format xml --output-filename result.xmlxml(可导入nmap解析工具)--output-format json --output-filename result.jsonjson
实战常用命令示例
示例1:扫描C段80、443端口,速率1000包/秒
sudo masscan -p80,443 192.168.1.0/24 --rate=1000
示例2:单台主机全端口扫描
sudo masscan -p0-65535 192.168.1.10 --rate=5000
示例3:扫描并抓取banner,保存结果到txt
sudo masscan -p80,22,3389 192.168.1.0/24 --rate=1000 --banners --output-format list --output-filename mass_result.txt
示例4:排除网关,扫描网段
sudo masscan -p80 192.168.1.0/24 --exclude=192.168.1.1 --rate=1000
输出解读
Discovered open port 80/tcp on 192.168.1.10
含义:192.168.1.10 的TCP80端口开放。
注意:Masscan只报开放端口;不代表服务一定正常,高速扫描存在误报,必须Nmap复核。
常见坑与注意事项
- 不加
-p直接运行,不会扫描任何端口,这是新手最常踩坑 - 不加sudo会报错,必须root
- 速率太高:丢包严重,漏报大量端口;内网建议1000~5000包/s,公网尽量更低
- Masscan不识别主机存活,不管主机是否在线,都会发包;所以会输出很多目标,但只有收到SYN+ACK的才会显示open
- 防火墙/IDS很容易识别Masscan高速SYN扫描,直接封禁源IP
- banner抓取支持协议有限,不像nmap
-sV识别版本那么全面
推荐实战工作流
- Masscan快速扫网段,批量找出所有开放IP+端口
sudo masscan -p22,80,443,3389 192.168.1.0/24 --rate=1000 --output-format list -o mass.txt - 提取出存活IP,交给nmap做精准扫描+服务版本识别
sudo nmap -sV -T4 -p 22,80,443,3389 192.168.1.x