什么是Zmap?

ZMap是一款扫描软件,由Durumeric领导密歇根大学研究团队开发。这一工具能在一个小时内扫描整个公共互联网,显示近40亿在线设备的信息。扫描结果能显示哪些网站无法防御特定漏洞。而在FREAK的例子中,扫描是为了在漏洞公开宣布前评估漏洞的威胁程度。

扫描网络

现在,越来越多的网站正在使用网络基本协议的加密HTTPS版本。在以前,哪怕只是对这个问题作出一种简单的估测也会是个缓慢而代价高昂的过程;但在今天,ZMap不仅能在一个小时以内就对这个问题作出回答,而且还能通过定期扫描的方式来追踪HTTPS人气度随时间推移而上升的程度。密歇根大学的研究人员利用ZMap工具进行追踪研究后发现,在2014年的一年时间里,排名前100万名的网站对于HTTPS的使用量已经增长了23%左右,而HTTPS的整体数量则已经增长了将近20%

扫描灾害

当重大的自然灾害来袭时,电脑可能会被迫断开网络连接,而使用ZMap工具则可对自然灾害令互联网受损的程度作出测量。桑迪飓风(HurricaneSandy)横扫美国东海岸的那段时间里,密歇根大学的研究团队每隔两个小时就会对整个互联网进行一次扫描。通过将IP地址与地理位置联系起来的方式,研究人员能对哪些地区的网络服务中断情况最为严重进行观察。

扫描时段

从密歇根大学的研究报告来看,在任何情况之下,对整个互联网进行扫描的最好时段都是凌晨,而最坏的时段则是傍晚。

查找漏洞

安全研究人员总是能在现有的软件里找到安全漏洞,从而迫使厂商迅速发布补丁来加以修复。但是,用户在实际生活中要花多长时间才会真正使用补丁来修复安全漏洞呢?ZMap提供了一种迅速而有效的方法来对此作出测量。ZMap迅速找到电脑安全漏洞的能力可能是件好事,前提是这个工具能让富有道德责任感的安全研究人员和软件厂商找到漏洞,并在信息传递给普通大众以前就提前向系统管理员发出通知。
ZMap也能被用来干坏事。一名心怀恶意的黑客可以利用这种工具来迅速发现有漏洞尚未修复的电脑,并迅速地入侵这些电脑,从而在短短几个小时时间里创造数以百万计的所谓“僵尸网络”。

安装

  1. 安装Zmap
yum install zmap git wget

Ps:如果提示找不到zmap请自行添加最新的源

CentOS6:
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
CentOS7:
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
  1. 安装Go

因为yum install不一定能下到最新的go,所以建议手动安装。

wget https://storage.googleapis.com/golang/go1.10.4.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.10.4.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
export GOPATH=/usr/local/go/bin/
  1. 安装Zgrab
go get github.com/zmap/zgrab
cd $GOPATH/src/github.com/zmap/zgrab
go build
  1. Zgrab使用
    Zgrab配和Zmap在200M带宽的机器上扫遍国区所有80端口大概是4小时以内(I7+16G+240G SSD RAID 0),网速和硬盘性能比较影响最终速度。至于扫全球的请准备好1T以上的SSD
./zgrab --help

以下扫描操作一般不为一般VPS运营商所允许,你可能会受到警告,可能会被封机器,甚至注销账户,本教程仅提供操作方法的学习,由此引起一切后果概不负责。

使用

1.以抓取www.abc.com为例子:

cd /usr/local/go/bin/src/github.com/zmap/zgrab

2.修改http请求头

vi http-req

3.Http请求头的格式一般为:

GET / HTTP/1.1
Host: www.abc.com
(空行)

(此处记得留着一个空行,后面Zgrab还有useragent,keep-alive等可以自己填,如有疑惑可参考 RFC 2616)

如果要抓取具体页面,比如www.abc.com/abc/
那么:

GET /abc/ HTTP/1.1
Host: www.abc.com
(空行)

下载目标地区的ip地址列表:

wget http://www.ipdeny.com/ipblocks/data/countries/cn.zone

zmap批量扫描目标地区80端口

zmap -w cn.zone -p 80 -B 200M -o cn.80

其中-B限制速度,防止ssh连接丢失。当然也可以nohub &,不赘述。 如果提示找不到网卡 -i interface

如果你要扫全球

wget http://www.ipdeny.com/ipblocks/data/countries/all-zones.tar.gz
tar zxvf all-zones.tar.gz
cat *.zone | zmap -p 80 -B 200M -o world.80

扫完的80端口保留在-o的输出文件中,然后我们用Zgrab批量抓取网站

cat cn.80 | ./zgrab --port 80 -http-user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36" -timeout=30 -senders=2000 -data="./http-req" --output-file=cnresult.txt

timeout应该不用解释了 senders作为参考 一般设置500-3000

你也可以模拟手机用户

cat cn.80 | ./zgrab --port 80 -http-user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 9_3 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13E233 MicroMessenger/6.3.15 NetType/WIFI Language/zh_CN" -timeout=30 -senders=2000 -data="./http-req" --output-file=cnresult.txt

如果目标是443端口的https (zmap里-p也请设置443)

cat cn.443 | ./zgrab --port 443 --tls -http-user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36" -timeout=30 -senders=100 -data="./http-req" --output-file=cnresult.txt

扫完以后筛选(目标网页chrome下F12查看源代码,挑个只有这个网站有的关键词)

cat cnresult.txt |grep -E "关键词" > cnpr.txt

去掉阿里云高防ip,CF代理ip

sed -e '/aliyungf/d' cnpr.txt > cn.target
sed -e '/cfduid/d' cnpr.txt > cn.target

一体式:

wget http://www.ipdeny.com/ipblocks/data/countries/hk.zone
zmap -w hk.zone -p 80 -B 100M -o hk.res
./zgrab -input-file=hk.res -senders=2000 -data="./http-req" |grep -E 'memberlogin' >> x.txt
最后修改:2021 年 04 月 03 日 12 : 17 AM
如果觉得我的文章对你有用,请随意赞赏