当前位置: 首页 > 工具软件 > ZMap > 使用案例 >

Zmap安装教程

百里金林
2023-12-01

Zmap是美国密歇根大学研究者开发出一款工具。在第22届USENIX安全研讨会,以超过nmap 1300倍的扫描速度声名鹊起。相比大名鼎鼎的nmap全网扫描速度是他最大的亮点。在千兆网卡状态下,45分钟内扫描全网络IPv4地址。

安装64位版本Debian/Ubuntu系列的Zmap

安装过程是:

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
wget https://github.com/zmap/zmap/archive/v2.1.0.tar.gz
tar xvf v2.1.0.tar.gz
cd zmap-2.1.0
cmake [-DWITH_REDIS=ON] [-DWITH_JSON=ON] [-DENABLE_DEVELOPMENT=ON] ./
make -C ./src
sudo make -C ./src install

编译banner获取工具forge_socket

修改文件examples/forge-socket/Makefile的第18行。

forge-socket: forge-socket.o xalloc.o logger.o lockfd.o

编译过程:

# Install forge-socket to the ZMap root directory:
cd zmap-2.1.0
git clone https://github.com/ewust/forge_socket
cd forge_socket
make
sudo insmod forge_socket.ko

# Don't send RST packets (forge-socket will complete these connections instead)
sudo iptables -A OUTPUT -p tcp -m tcp --tcp-flags RST,RST RST,RST -j DROP

# Use ZMap + forge-socket simultaneously:
make
#echo -e -n "GET / HTTP/1.1\r\nHost: %s\r\n\r\n" > http-req
sudo su
ulimit -SHn 1000000 && ulimit -SSn 1000000
zmap -p 80 -B 50M -N 1000 --output-fields=classification,saddr,daddr,sport,dport,seqnum,acknum,cooldown,repeat  -o - | ./forge-socket -c 8000 -d http-req > http-banners.out

编译banner获取工具banner-grab

cd zmap/examples/banner-grab

下载必须组件libevent,否则无法编译,yum下载的是1.0的版本,无法使用.

wget https://github.com/libevent/libevent/archive/release-2.0.21-stable.tar.gz
tar -zxvf release-2.0.21-stable.tar.gz
cd release-2.0.21-stable
sh autogen.sh
./configure
make
make install

返回banner-grab目录,并编译

cd ../
make

运行下面命令测试是否编译成功,默认会报错,因为libevent路径不对

./banner-grab-tcp

抓取指纹,简言之抓取response 为识别类似SSH,http 401之类的信息做准备。 首先向http-req 文件写入要发送的数据 (也可以自定义SSH-req 之类), 如:

echo -e -n "GET / HTTP/1.1\r\nHost: %s\r\n\r\n" > http-req

(%s 保留,其他可任意构造HTTP请求,包括GET,POST)
这里扩展下 banner-grab-tcp下的参数
-c, --concurent   每次的连接数,最好低于1000,想要高于1000则必须设置ulimit -SSn 1000000` and `ulimit -SHn 1000000` 突破每个文件最大进程数1024
-p, --port      连接的端口
-t, --conn-timeout  连接超时时间
-r, --read-timeout  响应超时时间
-v, --verbosity     列取信息详细程度 ,与sqlmap 类似
-f, --format        输出文件格式hex,ascii,base64
-d, --data      发送的数据信息 就是前面设置http-req
zmap -p 80 -N 1000 -o - | ./banner-grab-tcp -p 80 -c 100 -d http-req > http-banners.out

zmap扫描1000个80端口开放的IP地址,banner-grab-tcp 来扫描这些IP地址,扫描请求内容通过http-req可自定义 ,最后返回的数据是base64编码。

具体应用实例

对公网的ip地址进行随即扫描,得到10个结果后,返回,并将返回结果显示在屏幕上。

zmap -p 80 -N 10 -B 1M -o -

随即扫描公网上的10个ip地址,扫描完成后,将开放80端口的ip地址显示在屏幕上。

zmap -p 80 -n 10 -B 1M -o -

随即扫描10000个ip地址,将返回结果写入到results.csv文件中。

zmap -B 10M -p 80 -n 10000 -o results.csv

指定CIDR块,扫描其中的所有ip地址,将结果写入到results.csv文件中。

zmap -p 80 -B 1M -o results.csv 192.168.0.0/16

通过文件指定CIDR块,扫描结束后将结果写入到results.csv文件中。

zmap -p 80 -B 1M -o results.csv -w whitelist.file
zmap -p 80 -N 1000 -B 10M -o - | ./banner-grab-tcp -p 80 -c 500 -d ./http-req > out

用的最多的指令,检测全网络SSL/STL使用状况,ZMAP几个研究项目都与此有关。

zmap -p 443 -G "00:00:00:00:00:00"

2.用的最多的指令

zmap -p 443 -G "00:00:00:00:00:00"

检测全网络SSL/STL使用状况,ZMAP几个研究项目都与此有关。 

-O, --output-module=name  设置结果输出模块,参数simple_file(默认),extended_file。
Simple_file 模式如下
115.237.116.119
23.9.117.80
207.118.204.141
217.120.143.111
Extended File模式如下
response, saddr, daddr, sport, dport, seq, ack, in_cooldown, is_repeat, timestamp
synack, 159.174.153.144, 10.0.0.9, 80, 40555, 3050964427, 3515084203, 0, 0,2013-08-15 18:55:47.681

扫描模块和输出模块都提供了API ,可自己根据需要添加功能。

 类似资料: