前言

zmap,一个网络端口开放性的快速扫描工具。传言:一小时之内扫描完整过互联网。
这段时间有需要扫描一些 IP 段开放 443,80 等端口的主机,网络较大,一般需要扫一个 b 段,nmap 等扫描工具就显得太慢了。

安装

本次演示为 Ubuntu 系统

一、编译安装

1、安装 cmake make gcc 等编译工具

1
2
sudo apt-get -y install cmake make gcc
sudo apt-get -y install build-essential cmake libgmp3-dev gengetopt libpcap-dev flex byacc libjson-c-dev pkg-config

2、下载源码包并解压

1
2
3
wget https://github.com/zmap/zmap/archive/refs/tags/v3.0.0-beta1.zip
apt install -y unzip
unzip v3.0.0-beta1.zip

3、编译并安装

1
2
3
4
cd zmap-3.0.0-beta1
cmake [-DWITH_REDIS=ON] [-DWITH_JSON=ON] [-DENABLE_DEVELOPMENT=ON] ./
make -C ./src
sudo make -C ./src install

4、检查是否安装成功

1
zmap -V

Snipaste_2023_01_16_107.jpg

二、使用包管理器安装(推荐)

Debian / Ubuntu / kali

1
2
apt install -y zmap
zmap -V

Centos / Rocky

1
2
apt install -y zmap
zmap -V

使用命令

基本参数

参数 (注意区分大小写) 说明
-p –target-port=port 指定扫描端口
-o –output-file=name 指定输出的文件
-b –blacklist-file=path 黑名单文件,即排除在扫描范围外的地址
-B 是指的是带宽
-n 扫描多少个目标
-G 指定网关的 mac 地址
-t 扫描时间
-T 扫描线程数

扫描选项

参数(注意区分大小写) 说明
-n –max-targets=n 检测的上限范围,可以是一个数字如-n 10000,也可以是扫描地址空间中的百比
-N –max-results=n 接收到一定数量的结果后退出扫描
-t –max-runtime=secs 最大扫描(发包)时间
-r –rate=pps 设置发包速率(packets/sec)
-B –bandwidth=bps 设置发包带宽(bits/second
-c –cooldown-time=secs 接受返回的时间 (default=8)
-e –seed=n 选择地址的排列序号
-T –sender-threads=n 发包的线程数 (默认为1)
-P –probes=n 送达每个IP的探测器数量(默认为1)
-S –source-ip=ip
-G –gateway-mac=addr 设置网关的mac地址,可伪造。(DDOS的参数之一)

网络端口

参数 (注意区分大小写) 说明
ZMap允许用户定义和编写自己的探测器模块
–list-probe-modules 列出可用的探测器模块
-M, –probe-module=name 选择探测器模块 (默认为 tcp_synscan )
–probe-args=args 设置探测器模块的参数
–list-output-fields 列出所选择的探测器模块

附加选项

参数 (注意区分大小写) 说明
-C –config=filename 读一个配置文件,其中可以包含特殊的选项
-q –quiet 安静模式
-g –summary 在扫描结束后,打印配置和结果汇总
-v –verbosity=n log的等级 (0-5, 默认为3)
-h –help 显示帮助
-V –version 打印版本

其他问题

  • 默认情况下 Zamp 扫描整个互联网 IP 段,不扫描私有网段
    因此扫描私网网段时需要从黑名单中把私网地址去掉,配置文件地址:
    /etc/zmap/zmap.conf /etc/zmap/blacklist.conf

  • zmap 设置了带宽限制之后,实际对于出口带宽的利用率为 70% 左右。例如 zmap --bandwidth=100Mbps,此时实际出口带宽的使用量在 70Mbps左右。

  • 配置参数中的数据包速率与带宽限定。在使用的2.1.1版本zmap,配置参数中的 –rate(-r) 与 –bandwidth(-B) 两项,当配置了后者,也就是带宽限制之后,数据包发送项会被覆盖。例如:zmap -B 10Mbps -r 2000 -p 8080 这样的参数,实际上发送数据的速率是 15000p/s,而非 2000p/s

  • 根据测试如果设置的的发包速率太大,目标网段又太小,可能无法正确完成扫描甚至结果为空,请根据实际情况调整速度和目标网络大小。

    实测-r 2000扫描b段的一个端口大约1-2分钟完成,速度很快了,准确性还是可以的,扫描速度和范围、网络带宽、设备性能要结合,可以从较低的发包速率开始调整,直到结果准确时间又快最合适。结果最好手工验证几个,确认是否有偏差。