Masscan 是什么?
Masscan 是一款超高速的互联网规模端口扫描器。由 Robert Graham 开发,其核心设计目标是"尽可能快地扫描整个互联网"。
二、 核心特性与惊人速度的原理
Masscan 的速度是其最引人注目的特点,它能在几分钟内扫描整个互联网的所有 IP 地址。其高速原理基于以下几点:
自定义 TCP/IP 堆栈:
它不使用操作系统的标准网络堆栈(如 Linux 的 connect()系统调用)。
它实现了自己的、高度优化的 TCP/IP 堆栈,通过 PF_RING或 RAWPACKET接口直接与网卡驱动交互,绕过了内核的协议处理,极大地减少了开销。
异步和无状态扫描:
扫描是无状态的。这意味着 Masscan 发送 SYN 包后,并不在内存中维护每个连接的状态(如操作系统内核为每个 Socket 所做的那样)。
它只是简单地记录"在时间 T,向 IP:Port 发送了一个 SYN 包"。
当收到一个 SYN/ACK 或 RST 响应时,它会检查这个响应是否与之前发送的某个 SYN 包匹配。这种设计使其内存占用极低,可以同时发起数百万个连接。
可配置的极高数据包速率:
通过 --rate参数,你可以直接指定每秒发送的数据包数量(例如 --rate 100000表示每秒10万个包)。这是其速度的直接控制开关。
三、 基本用法
基本命令语法
bash
masscan <目标IP范围> -p <端口范围> [选项]
最简单的例子:扫描一个IP的80端口
masscan 192.168.1.1 -p80
常见扫描示例:
bash
扫描一个网段的常用端口
masscan 10.0.0.0/8 -p80,443,22,21,3389
扫描所有端口(1-65535)
masscan 192.168.1.1-192.168.1.100 -p1-65535
从文件读取目标列表
masscan -iL targets.txt -p80
排除特定IP
masscan 10.0.0.0/8 -p80 --exclude 10.0.0.1
将结果保存到文件(重要!)
# 标准文本格式
masscan 192.168.1.0/24 -p80 -oR results.txt
# XML格式(兼容Nmap)
masscan 192.168.1.0/24 -p80 -oX results.xml
# 二进制格式(用于后续再次格式化输出)
masscan 192.168.1.0/24 -p80 -oB results.bin
masscan --readscan results.bin -oX results.xml # 将二进制转换为XML
四、 核心选项详解

五、典型工作流示例:外部渗透测试的信息收集阶段
bash
# 1. 使用 Masscan 快速发现目标网络(example.com)的开放端口
sudo masscan 93.184.216.0/24 -p1-65535 --rate 10000 -e eth0 -oX masscan_results.xml
# 2. 从 Masscan 结果中提取IP和端口,生成给 Nmap 使用的列表
# (这里可以用脚本处理,或者手动整理)
# 假设我们发现了 93.184.216.34 开放了 80, 443, 8000
# 3. 使用 Nmap 进行精细化的服务和版本探测
nmap -sV -sC -O -p80,443,8000 93.184.216.34 -oA nmap_detailed_scan