是一款开源的高速网络扫描器,其设计目标是在最短的时间内对整个 IPv4 地址空间进行扫描。Zmap 采用独特的无状态(stateless)扫描方式,能够以极高的速率发送探测数据包,非常适合进行大规模网络普查和安全研究。
核心特点与适用场景
-
速度惊人:Zmap 能够在 45 分钟内扫描完整个 IPv4 地址空间的单个端口。其高效率得益于它不维护状态连接,而是直接发送探测包并等待响应。
-
专注于单一端口扫描:Zmap 的设计使其最擅长快速确定特定端口的开放情况。它不如 Nmap 那样功能全面,但其速度是其他工具难以企及的。
-
网络带宽优先:Zmap 的性能瓶颈通常在于网络带宽。为了达到最高速度,需要有足够的上行带宽支持。
-
适用场景:
-
互联网资产普查:快速了解全球范围内某个端口(如 80、443、22)的开放情况。
-
安全威胁研究:追踪新出现的网络漏洞或恶意软件在互联网上的传播情况。
-
学术研究:用于大规模网络测量和数据分析。
-
基础使用方法
Zmap 是一个命令行工具,其基本语法非常简单。
-
扫描指定端口
zmap -p 80 192.168.1.0/24
此命令会扫描
192.168.1.0/24
网段内所有主机的 80 端口。 -
扫描整个 IPv4 地址空间
zmap -p 443 -o results.txt
这条命令会扫描全球所有主机的 443 端口,并将开放此端口的 IP 地址输出到
results.txt
文件中。
常用参数与命令组合
Zmap 的核心优势在于速度和大规模扫描。它的常用命令组合大多围绕着如何快速、高效地扫描大范围网络。
参数 | 描述 |
---|---|
-p |
指定端口,只能指定一个端口。 |
-o |
输出文件路径,将开放端口的 IP 地址写入该文件。 |
--rate |
控制发包速率,单位是数据包/秒。 |
--bandwidth |
指定网络带宽,单位是 Mbits/s,Zmap 会根据带宽自动调整发包速率。 |
--exclude-file |
排除 IP 地址列表,用于跳过不想扫描的目标。 |
--target-file |
指定目标 IP 地址列表,用于精准扫描特定 IP 段。 |
-
扫描整个 IPv4 地址空间的特定端口,并排除私有 IP 地址
zmap -p 80 -o results.txt --exclude-file=/etc/zmap/exclude.conf
这个命令非常重要,它能确保你不会扫描到内网地址,避免不必要的麻烦。
-
在指定带宽下,扫描特定国家的 IP 地址段
zmap -p 22 --bandwidth=10M --target-file=/root/ip_list_china.txt -o china_ssh_results.txt
通过结合
--bandwidth
和--target-file