ZMap是一款扫描软件,由Durumeric领导密歇根大学研究团队开发。这一工具能在一个小时内扫描整个公共互联网,显示近40亿在线设备的信息。扫描结果能显示哪些网站无法防御特定漏洞。而在FREAK的例子中,扫描是为了在漏洞公开宣布前评估漏洞的威胁程度。
1.kali安装
(1)kali安装zmap依赖
sudo apt-get install build-essential cmake libgmp3-dev gengetopt libpcap-dev flex byacc libjson-c-dev pkg-config libunistring-dev -y
(2)下载zmap源码并安装
git clone https://github.com/zmap/zmap.git
cd zmap
sudo make install
sudo cmake -DCMAKE_INSTALL_PREFIX=$HOME/tools/zmap-install .
sudo make -j4
sudo make install
sudo zmap -V
2.centos安装
yum install zmap
3.用户及参数
用法:zmap [选项]... [子网]...
(1)基本参数
-p, --target-ports=ports 以逗号分隔的端口和端口范围列表,用于扫描(针对TCP和UDP扫描)
-o, --output-file=name 输出文件名
-b, --blocklist-file=path 要排除的子网文件,以CIDR表示法,例如192.168.0.0/16
-w, --allowlist-file=path 扫描限制到的子网文件,以CIDR表示法,例如192.168.0.0/16
-I, --list-of-ips-file=path 随机顺序扫描的单个地址列表。如果超过百万个IP,请使用--allowlist-file。
(2)扫描选项
-r, --rate=pps 设置每秒发送数据包的速度
-B, --bandwidth=bps 以每秒位数设置发送速率(支持G、M和K后缀)
--batch=pps 设置单个syscall中发送的数据包数量。在Linux上或使用netmap时有利(默认=64)
-n, --max-targets=n 限制要探测的目标数量(作为数字或地址空间的百分比)。目标是一个IP/端口对,如果扫描多个端口,则为IP。
-t, --max-runtime=secs 限制发送数据包的时间长度
-N, --max-results=n 限制返回的结果数量
-P, --probes=n 每个IP/端口对发送的数据包探针数量(默认=1') -c, --cooldown-time=secs 发送最后一个探针后继续接收的时间(默认=8')
-e, --seed=n 选择地址排列的种子
--retries=n 如果发送失败,尝试发送数据包的最大次数(默认=`10')
-d, --dryrun 不实际发送数据包
(3)扫描分片
--shards=N 设置总分片数(默认=1') --shard=n 设置此扫描是哪个分片(从0开始计数)(默认=0')
(4)网络选项
-s, --source-port=port|range 扫描数据包的源端口
-S, --source-ip=ip|range 扫描数据包的源地址
-G, --gateway-mac=addr 指定网关MAC地址
--source-mac=addr 源MAC地址
-i, --interface=name 指定使用的网络接口
-X, --iplayer 发送IP数据包而不是以太网(适用于VPN)
--netmap-wait-ping=ip 等待IP响应ping后再开始扫描(仅限netmap)
(5)探测模块
-M, --probe-module=name 选择探测模块(默认=tcp_synscan') --probe-args=args 传递给探测模块的参数 --probe-ttl=n 设置探测IP数据包的TTL值(默认=64')
--list-probe-modules 列出可用的探测模块
(6)结果输出
-f, --output-fields=fields 结果集中应输出的字段
-O, --output-module=name 选择输出模块
--output-args=args 传递给输出模块的参数
--output-filter=filter 指定响应字段上的过滤器,以限制发送到输出模块的响应
--list-output-modules 列出可用的输出模块
--list-output-fields 列出所选探测模块可以输出的所有字段
--no-header-row 阻止输出任何数据头行(例如CSV头)
(7)响应去重
--dedup-method=method 指定应如何执行响应去重。选项:默认、无、全、窗口
--dedup-window-size=targets
指定用于去重的内存中最近响应的数量窗口大小(默认=`1000000')
(8)日志和元数据
-v, --verbosity=n 日志详细级别(0-5)(默认=`3')
-l, --log-file=name 将日志条目写入文件
-L, --log-directory=directory 将日志条目写入此目录中的时间戳文件
-m, --metadata-file=name 扫描元数据的输出文件(JSON格式)
-u, --status-updates-file=name
(9)将扫描进度更新写入CSV文件
-q, --quiet 不打印状态更新
--disable-syslog 禁用向syslog记录消息
--notes=notes 将用户指定的注释注入扫描元数据
--user-metadata=json 将用户指定的JSON元数据注入扫描元数据
(10)其他选项:
-C, --config=filename 读取配置文件,可指定任何这些选项(默认=/etc/zmap/zmap.conf') --max-sendto-failures=n 最大NIC sendto失败次数,超过此次数扫描将中止(默认=-1')
--min-hitrate=n 扫描可以达到的最低命中率,低于此值扫描将中止(默认=0.0') -T, --sender-threads=n 用于发送数据包的线程数(默认=4')
--cores=STRING 以逗号分隔的要固定的CPU核心列表
--ignore-blocklist-errors 忽略允许/阻止列表文件中的无效条目。
-h, --help 打印帮助信息并退出
-V, --version 打印版本信息并退出
4.示例
zmap -p 80 (扫描整个IPv4地址空间中TCP/80端口上的主机)
zmap -N 5 -B 10M -p 80 (以10Mb/s速度找到5个HTTP服务器)
zmap -p 80 10.0.0.0/8 192.168.0.0/16 (在TCP/80上扫描两个子网)
zmap -p 80 1.2.3.4 10.0.0.3 (在TCP/80上扫描1.2.3.4,10.0.0.3)
zmap -p 80,100-102 (在端口80、100、101、102上扫描整个IPv4)
zmap -B 1M -p 3306 -N 20 -o 3306.txt (1M带宽获取3306端口的服务器20个并保存为3306.txt)
扫描tg.txt 中的IP地址,并保存为results.csv
sudo zmap -p 4899 -o results.csv -f saddr < tg.txt
zmap -p 4899 -o scan_results.txt -N 1000000 -w ips.txt
后记小事
1.亲自动手得出的才是硬道理
在centos上实际测试时,碰到一个问题,提示一个模块安装不上,按照网上说的折腾了半天,结果发现直接yum install zmap即可。书上得来总觉浅,需要实际动手才会体会更加深刻,现在很多公众号文章copy比较多,实际测试命令都执行不了。
原文始发于微信公众号(小兵搞安全):Zmap
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论