Kali Linux 教程:端口扫描工具-Masscan

介绍

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

常用核心参数

  1. -p 端口(必写)
    • -p80 单个端口
    • -p22,80,443 多个端口
    • -p1-1000 端口范围
    • -p0-65535 全端口扫描
    • UDP端口:-pU:161
  2. --rate 发包速率(单位:包/秒),默认100
    • --rate=1000 每秒1000包(内网推荐)
    • 公网不要开极高速率,容易触发防火墙封禁、网络拥塞
  3. --banners 获取端口banner(HTTP标题、服务标识,支持协议有限,会增加扫描时间)
  4. -e 指定网卡
    -e eth0 指定使用eth0网卡发包
  5. --exclude 排除IP,不扫描
    --exclude=192.168.1.1
  6. --excludefile 从文件读取排除IP列表
  7. --retries 丢包重传次数,默认0;内网可设--retries=2提高准确率
  8. --wait 发包完成后等待多久接收应答包(秒),网段大建议--wait=10
  9. 输出保存
    • --output-format list --output-filename result.txt 简单列表
    • --output-format xml --output-filename result.xml xml(可导入nmap解析工具)
    • --output-format json --output-filename result.json json

实战常用命令示例

示例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复核。

常见坑与注意事项

  1. 不加 -p 直接运行,不会扫描任何端口,这是新手最常踩坑
  2. 不加sudo会报错,必须root
  3. 速率太高:丢包严重,漏报大量端口;内网建议1000~5000包/s,公网尽量更低
  4. Masscan不识别主机存活,不管主机是否在线,都会发包;所以会输出很多目标,但只有收到SYN+ACK的才会显示open
  5. 防火墙/IDS很容易识别Masscan高速SYN扫描,直接封禁源IP
  6. banner抓取支持协议有限,不像nmap -sV 识别版本那么全面

推荐实战工作流

  1. Masscan快速扫网段,批量找出所有开放IP+端口
    sudo masscan -p22,80,443,3389 192.168.1.0/24 --rate=1000 --output-format list -o mass.txt
    
  2. 提取出存活IP,交给nmap做精准扫描+服务版本识别
    sudo nmap -sV -T4 -p 22,80,443,3389 192.168.1.x