蚊章汇 - ZMap
type: channel
link: https://linuxcn.bwsl.wang/tag/ZMap/
items: 互联网扫描器 ZMap 完全手册

互联网扫描器 ZMap 完全手册
type: item
date: 2015-07-21T15:30:00+08:00
description: 初识 ZMapZMap被设计用来针对整个IPv4地址空间或其中的大部分实施综合扫描的工具。ZMap是研究者手中的利器，但在运行ZMap时，请注意，您很有可能正在以每秒140万个包的速度扫描整个IPv4地址空间 。我们建议用户即使在实施小范围扫描之前，也联系一下本地网络的管理员并参考我们列举的最佳扫描体验。默认情况下，ZMap会对于指定端口实施尽可能大速率的TCP SYN扫描。较为保守的情况下，对10,000个随机的地址的80端口以10Mbps的速度扫描，如下所示：$ zmap --bandwidth=10M --target-port=80 --max-targets=10000 --output-file=results.csv 或者更加简洁地写成：$ zmap -B 10M -p 80 -n 10000 -o results.csv ZMap也可用于扫描特定子网或CIDR地址块。例如，仅扫描10.0.0.0/8和192.168.0.0/16的80端口，运行指令如下：zmap -p 80 -o results.csv 10.0.0.0/8 192.168.0.0/16 如果扫描进行的顺利，ZMap会每秒输出类似以下内容的状态更新：0% (1h51m left); send: 28777 562 Kp/s (560 Kp/s avg); recv: 1192 248 p/s (231 p/s avg); hits: 0.04% 0% (1h51m left); send: 34320 554 Kp/s (559 Kp/s avg); recv: 1442 249 p/s (234 p/s avg); hits: 0.04% 0% (1h50m left); send: 39676 535 Kp/s (555 Kp/s avg); recv: 1663 220 p/s (232 p/s avg); hits: 0.04% 0% (1h50m left); send: 45372 570 Kp/s (557 Kp/s avg); recv: 1890 226 p/s (232 p/s avg); hits: 0.04% 这些更新信息提供了扫描的即时状态并表示成：完成进度% (剩余时间); send: 发出包的数量 即时速率 (平均发送速率); recv: 接收包的数量 接收率 (平均接收率); hits: 命中率 如果您不知道您所在网络能支持的扫描速率，您可能要尝试不同的扫描速率和带宽限制直到扫描效果开始下降，借此找出当前网络能够支持的最快速度。默认情况下，ZMap会输出不同IP地址的列表（例如，根据SYN ACK数据包的情况），像下面这样。其输出结果还有几种附加的格式（如，JSON和Redis），可以用作生成程序可解析的扫描统计。 同样，可以指定附加的输出字段并使用输出过滤来过滤输出的结果。115.237.116.119 23.9.117.80 207.118.204.141 217.120.143.111 50.195.22.82 我们强烈建议您使用黑名单文件，以排除预留的/未分配的IP地址空间（如，RFC1918 规定的私有地址、组播地址），以及网络中需要排除在您扫描之外的地址。默认情况下，ZMap将采用位于 /etc/zmap/blacklist.conf的这个简单的黑名单文件中所包含的预留和未分配地址。如果您需要某些特定设置，比如每次运行ZMap时的最大带宽或黑名单文件，您可以在文件/etc/zmap/zmap.conf中指定或使用自定义配置文件。如果您正试图解决扫描的相关问题，有几个选项可以帮助您调试。首先，您可以通过添加--dryrun实施预扫，以此来分析包可能会发送到网络的何处。此外，还可以通过设置'--verbosity=n`来更改日志详细程度。最佳扫描体验我们为针对互联网进行扫描的研究者提供了一些建议，以此来引导养成良好的互联网合作氛围。密切协同本地的网络管理员，以减少风险和调查确认扫描不会使本地网络或上游供应商瘫痪在发起扫描的源地址的网页和DNS条目中申明你的扫描是善意的明确解释你的扫描中所有连接的目的和范围提供一个简单的退出扫描的方法并及时响应请求实施扫描时，不使用比研究对象需求更大的扫描范围或更快的扫描频率如果可以，将扫描流量分布到不同的时间或源地址上即使不声明，使用扫描的研究者也应该避免利用漏洞或访问受保护的资源，并遵守其辖区内任何特殊的法律规定。命令行参数通用选项这些选项是实施简单扫描时最常用的选项。我们注意到某些选项取决于所使用的探测模块或输出模块（如，在实施ICMP Echo扫描时是不需要使用目的端口的）。-p, --target-port=port要扫描的目标TCP端口号（例如，443）-o, …