ZMap 是一款由密歇根大学开发并开源的快速网络扫描器,其核心设计目标是实现对整个 IPv4 地址空间进行高效、大规模的网络调查。与传统扫描器不同,ZMap 专注于以极高的速度发送单包探测,从而在短时间内完成对全球互联网的“快照”式扫描,为网络安全研究、威胁情报分析和学术测量提供了前所未有的能力。
核心特性与设计哲学
ZMap 的独特之处在于其对速度和规模的极致追求,这得益于其创新的设计哲学和技术实现。
1. 无与伦比的扫描速度
ZMap 最引人注目的特点是其惊人的扫描速度。官方和用户反馈均证实,在配备 10Gbps 网络连接的单台机器上,ZMap 能够在不到 45 分钟内扫描整个公共 IPv4 地址空间的一个端口。这种速度使其成为进行互联网规模研究的唯一可行工具。
2. 无状态扫描架构
实现高速扫描的关键在于 ZMap 的无状态 (Stateless) 扫描架构。与 Nmap 等传统扫描器为每个连接维护一个状态表不同,ZMap 发送探测包后便“忘记”了它,仅通过解析返回的数据包来识别响应。它直接在数据链路层或网络层构建和发送原始以太网帧,绕过了操作系统内核中相对缓慢的 TCP/IP 协议栈,极大地降低了内存和 CPU 开销。为了在无状态下验证响应,ZMap 会在发出的探测包字段中编码唯一的主机标识信息,收到响应时快速解码验证。
3. 资源效率高
由于其无状态设计,ZMap 的内存占用极低且基本保持不变,不会随着扫描目标数量的增加而增长。CPU 主要消耗在数据包的生成和接收处理上,但由于其高效实现,通常不会成为瓶颈。ZMap 的性能瓶颈几乎总是网络 I/O。这使得它可以在配置相对普通的服务器上运行,而无需为维护海量连接状态而配备昂贵的硬件。
4. 高度专注与模块化
ZMap 的设计哲学是“做一件事并做到极致”。它只负责快速发送探测包和接收响应。这种专注性使其不会变得臃肿。进阶用户经常将 ZMap 与其生态系统中的其他工具结合使用,例如 ZGrab/ZGrab2。ZMap 快速找到开放端口的主机,然后将这些主机列表传递给 ZGrab2,以进行更深入的应用层握手和数据抓取(如获取 Banner 信息、TLS 证书等)。这种模块化组合被认为是进行大规模互联网测绘的黄金标准。
安装与快速入门
ZMap 主要为 Linux 环境设计和优化。
安装依赖 (以 Debian/Ubuntu 为例)
sudo apt update
sudo apt install build-essential cmake libgmp-dev gengetopt libpcap-dev flex byacc
从源代码编译安装
git clone https://github.com/zmap/zmap.git
cd zmap
cmake .
make
sudo make install
快速入门示例
扫描整个 IPv4 地址空间的 80 端口,并将结果输出到 results.csv 文件:
sudo zmap -p 80 -o results.csv
注意: ZMap 需要 root 权限才能发送原始网络数据包。在运行前,请确保您已指定正确的网络接口 (-i eth0) 和网关 MAC 地址 (-G 00:11:22:33:44:55),尤其是在某些虚拟化或云环境中。
典型应用场景
ZMap 的高速和大规模扫描能力使其在多个领域发挥着关键作用。
1. 互联网规模的资产普查与暴露面分析
- Censys 项目: 由 ZMap 的原班作者创立的 Censys 项目,持续使用 ZMap 及其后续工具扫描互联网,构建了一个可搜索的全球互联网设备和服务的数据库。这使得企业和研究人员能够查询特定设备、软件版本或配置在全球的分布情况。
- 宏观网络空间测绘: 绘制互联网尺度的拓扑结构或服务分布图,例如追踪 HTTPS、IPv6 或特定加密协议的全球采用率。
2. 重大安全漏洞的全球影响快速评估
- Heartbleed 漏洞 (2014): 在 Heartbleed 漏洞披露后数小时内,研究团队立即使用 ZMap 扫描全网 443 端口,识别易受攻击的 OpenSSL 版本,提供了漏洞影响范围的第一份量化数据。
- Mirai 僵尸网络溯源: 研究人员利用 ZMap 扫描全球 23 (Telnet) 和 2323 端口,识别并定位构成 Mirai 僵尸网络的易受攻击物联网设备。
- Log4Shell 漏洞 (2021): 类似地,ZMap 及其生态工具被用于扫描暴露在公网上的、可能运行脆弱 Log4j 组件的服务,帮助组织快速评估风险。
3. 学术研究与网络生态测量
- HTTPS 和加密生态系统研究: 通过扫描 443 端口收集 TLS 证书,研究人员得以量化 Let’s Encrypt 的普及率、追踪弱加密算法的淘汰进程等。
- 错误配置的数据库和服务发现: 扫描常见的数据库端口(如 MongoDB 的 27017, Elasticsearch 的 9200),发现大量未经身份验证或配置错误的数据库暴露在公网上。
4. 非典型及创新性应用
- 测量互联网审查和网络中断: 通过从不同地理位置发起 ZMap 扫描并对比结果,可以推断出国家级防火墙的封锁策略,或量化网络中断的范围和程度。
- 识别网络地址转换 (NAT) 设备: 发送定制探测包,通过分析响应包中的特定字段模式,识别和统计位于单个公共 IP 地址后面的 NAT 设备数量。
- 跟踪新协议的采纳率: 衡量和跟踪 QUIC 等新协议在全球范围内的部署和采纳速度。
ZMap 与类似工具对比:Nmap 与 Masscan
在网络扫描领域,ZMap 并非孤军奋战,但其定位独特。以下是它与 Nmap 和 Masscan 的简要对比:
| 特性 | Nmap | ZMap | Masscan |
|---|---|---|---|
| 设计哲学 | 深度、准确性、功能全面性。有状态扫描,依赖操作系统协议栈。 | 极致速度、互联网规模横向扫描。无状态扫描,绕过操作系统协议栈。 | 速度与兼容性。无状态扫描,自定义轻量级协议栈。 |
| 扫描速度 | 慢(千包/秒),扫描大型网络需数小时/天。 | 极快(百万包/秒),全 IPv4 约 45 分钟。 | 极快(百万包/秒),全 IPv4 约 6 分钟。 |
| 功能 | 功能丰富:服务版本探测、OS 指纹识别、NSE 脚本、漏洞扫描。 | 极度专一:快速发现单个端口开放的主机。可扩展自定义探测。 | 功能适中:可扫描多端口,支持基本 Banner 抓取。 |
| 适用场景 | 精准渗透测试、网络审计、故障排查。对少量目标进行深入“垂直扫描”。 | 学术研究、互联网普查、威胁情报。快速评估全球暴露面。 | 大规模资产发现、漏洞赏金。快速盘点公网暴露资产。 |
| 资源消耗 | 随目标数量增加而显著增长。 | 极低且恒定,瓶颈通常是网络 I/O。 | 极低且恒定。 |
| 协同工作 | 可作为 ZMap/Masscan 发现目标后的深度分析工具。 | 作为“广域雷达”,快速发现目标,将结果传递给 Nmap 或 ZGrab2。 | 作为“高速无人机”,快速发现目标,将结果传递给 Nmap。 |
总结: ZMap 不应被视为 Nmap 的“更快版本”,而是一个完全不同类别的工具。它的价值在于赋能了以往无法想象的互联网规模的数据驱动研究。
用户反馈与局限性
核心优势
用户普遍赞赏 ZMap 的无与伦比的速度和资源效率,使其成为进行大规模互联网测量的首选工具。它在学术界和工业界(如威胁情报团队)被广泛采纳为标准工具。
局限性与注意事项
- 不适用于深度、多端口扫描: ZMap 的无状态设计使其不适合扫描单个主机的多个端口,也不提供服务版本探测、操作系统指纹识别等高级功能。对于这些任务,Nmap 仍是首选。
- 对网络环境要求苛刻: 要达到 ZMap 的理论峰值速度,必须拥有不受限制的高速网络连接(1Gbps,最好是 10Gbps)。在普通网络或受限环境中,性能会大打折扣,且大规模扫描常被 ISP 限制速率或封禁 IP。
- 潜在的准确性问题: 由于其无状态和高速特性,ZMap 对网络丢包更敏感,可能导致假阴性(端口开放但未检测到)。其结果通常被视为对网络状态的“快照”或“最佳估计”,而非 100% 精确的清单。
- 显著的法律与道德风险: 未经授权对不属于自己的网络空间进行扫描,在许多国家和地区都是非法的。 用户必须充分理解并遵守当地法律法规,否则可能面临 IP 被列入黑名单、服务提供商投诉甚至法律诉讼的风险。强烈建议仅在授权范围内或对自有网络进行扫描。
常见问题与解决方案
用户在使用 ZMap 时可能会遇到一些常见问题,主要集中在安装、权限和网络配置上。
- 依赖库缺失: 编译失败通常是缺少
libgmp-dev,libpcap-dev等开发库。请参照官方文档或上述安装指引安装所有必要依赖。 - 权限不足: 运行 ZMap 需要 root 权限 (
sudo),因为它需要发送原始网络数据包。 - “0 packets sent”: 这通常是由于未指定正确的网络接口 (
-i) 或 ZMap 无法自动检测到网关 MAC 地址。请使用ifconfig或ip a查看接口,并手动使用-G或--gateway-mac参数指定网关 MAC 地址。 - “0 results received”: 即使数据包已发送,如果未收到响应,可能是本地防火墙、网络设备或上游 ISP 拦截了入站响应包。此外,如果使用欺骗性源 IP 且该 IP 无法路由回扫描主机,响应包也将无法到达。
总结
ZMap 是一款革命性的开源网络扫描器,它重新定义了互联网规模数据收集的可能性。凭借其无与伦比的速度和高效的无状态架构,ZMap 已成为网络安全研究人员、威胁情报分析师和学术界进行大规模互联网普查和漏洞评估的不可或缺的工具。然而,其强大的能力也伴随着巨大的责任。我们鼓励用户在充分理解其工作原理、局限性以及潜在法律和道德风险的前提下,负责任地使用 ZMap,共同推动更安全、更透明的互联网生态系统。
项目地址: https://github.com/zmap/zmap

评论(0)