基于zmap 的应用层扫描器 zgrab (一)

介绍

zgrab 是基于zmap无状态扫描的应用层扫描器,可以自定义数据包,以及ip,domain之间的关联。可用于快速指纹识别爆破等场景。

安装

  • go环境

  • zgrab

go get github.com/zmap/zgrab
cd $GOPATH/src/github.com/zmap/zgrab
go build

使用

参数

zgrab -help

参数 注释 示范
port 端口 --port 80
data 发送数据包并且返回响应 --data http-req-domain

输入

zmap 扫描结果

输入流可以使用zmap 的扫描结果,例如项目主页的例子

zmap -p 443 --output-fields=* | ztee results.csv | zgrab --port 443 --tls --data=./http-req --output-file=banners.json

其中 http-req 为自定义的数据包

[root@pw_node_1 zgrab]# cat  http-req
GET / HTTP/1.1
Host: %s

域名列表

ip,domain 的文件,例如

[root@pw_node_1 zgrab]# cat  2.csv
36.51.255.148,tinyjun.com
36.51.255.148,i6618.com
36.51.255.148,www.linwen.com
36.51.255.148,lujunda.cn
36.51.255.148,haohaomai.com
36.51.255.148,it1208.com
36.51.255.148,www.lijinmao.com
36.51.255.148,lushao.cn
36.51.255.148,i6618.com
36.51.255.148,www.it-case.com
36.51.255.148,zhihub.com
36.51.255.148,wwww.yaseng.org

cat 2.csv | ./zgrab –port 80 --data http-req-domain

输出

默认输出为json ,可以使用jq 工具解析

示范

扫描 127.0.0.1,localhost

效果如图

命令行

[root@pw_node_1 zgrab]# cat  3.csv
127.0.0.1,localhost
[root@pw_node_1 zgrab]# cat /tmp/3.csv | ./zgrab --port 80 --data http-req-domain | jq "."
{
"data": {
"write": "GET / HTTP/1.1\r\nHost: localhost\r\n\r\n",
"read": "HTTP/1.1 200 OK\r\nDate: Sun, 27 Dec 2015 17:33:43 GMT\r\nServer: Apache/2.2.15 (CentOS)\r\nLast-Modified: Fri, 11 Dec 2015 14:51:21 GMT\r\nETag: \"82db1-e-526a074ea5571\"\r\nAccept-Ranges: bytes\r\nContent-Length: 14\r\nConnection: close\r\nContent-Type: text/html; charset=UTF-8\r\n\r\nhello yaseng\n"
},
"timestamp": "2015-12-28T01:33:43+08:00",
"domain": "localhost",
"ip": "127.0.0.1"
}
{
"sni_support": true,
"ca_file_name": null,
"mail_type": null,
"tls_version": null,
"timeout": 10,
"port": 80,
"success_count": 1,
"failure_count": 0,
"total": 1,
"start_time": "2015-12-28T01:33:43+08:00",
"end_time": "2015-12-28T01:33:43+08:00",
"duration": 0,
"senders": 1000
}
[root@pw_node_1 zgrab]# curl localhost
hello yaseng
[root@pw_node_1 zgrab]#

自定义数据包

可以自定义http 数据包,例如

[root@pw_node_1 zgrab]# cat   http-req-domain
GET /1.php HTTP/1.1
Host: %d

实例:快速指纹识别

例如需要在一大批域名列表里面快速识别wordpress,并且输出域名。

首先从header 里面找出wp 的指纹以

[root@pw_node_1 zgrab]# curl  -I  yaseng.org
HTTP/1.1 200 OK
Server: nginx/1.2.6
Date: Sun, 27 Dec 2015 17:59:25 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
X-Pingback: http://yaseng.org/xmlrpc.php
Via: 10.17.21.22
Set-Cookie: saeut=11111151239164757346; path=/; max-age=311040000
Set-Cookie: PHPSESSID=86483bb31b614b6f5a9513854a27e321; path=/; HttpOnly

使用 字符串 X-Pingback 来做识别指纹

识别命令为

cat domain.log     |  ./zgrab  --port  80  --data  http-req-domain   | grep   'X-Pingback'  |   jq  '.domain' |    awk -F '"'  '{print $2}'

其中 domain.log 为 1w ip 到域名 ip,domain 映射

分分钟即可识别完,示范如图

参考

1: https://github.com/zmap/zgrab

基于zmap 的应用层扫描器 zgrab (一)的更多相关文章

  1. 基于docker搭建开源扫描器——伏羲

    基于docker搭建开源扫描器——伏羲 1.简介 项目地址 伏羲是一款开源的安全检测工具,适用于中小型企业对企业内部进行安全检测和资产统计. 功能一览: 基于插件的漏洞扫描功能(类似于巡风) 漏洞管理 ...

  2. 基于tcp的应用层消息边界如何定义

    聊聊基于tcp的应用层消息边界如何定义 背景 2018年笔者有幸接触一个项目要用到长连接实现云端到设备端消息推送,所以借机了解过相关的内容,最终是通过rabbitmq+mqtt实现了相关功能,同时在心 ...

  3. 基于VC++的网络扫描器设计与实现

    本文正文其实是自己的毕业论文,现在搬上来有两个原因. 一是之前大学的文档都放在百度网盘上,大概去年的时候百度网盘改版搞得不太稳定,文件夹移动次数一多里边就会有一些文件丢失了,也没有很在意.但前几天看申 ...

  4. 构建基于TCP的应用层通信模型

    各层的关系如下图,表述的是两个应用或CS间通信的过程:   通常使用TCP构建应用时,需要考虑传输层的通信协议,以便应用层能够正确识别消息请求.比如,一个请求的内容很长(如传文件),那肯定要分多次发送 ...

  5. WAF实现扫描器识别

    目前安全测试的软件越来越多,也越来越强大,越来越多的人成为[黑客],今天在网上看到一个文章说拦截wvs的扫描,勾起了我写这篇文章的欲望.   因为公司的三大业务之一就有一个云waf,每天拦截的日志里面 ...

  6. 基于SIP协议的性能测试——奇林软件kylinPET

    一.Sip协议简介: SIP(Session Initiation Protocol,会话初始协议)是由IETF(Internet Engineering Task Force,因特网工程任务组)制定 ...

  7. 绕过CDN方法整理

    来自文章链接:https://zhuanlan.zhihu.com/p/33440472 0x01 判断ip是否为网站真实ip 1. Nslookup: Win下使用nslookup命令进行查询,若返 ...

  8. 渗透系统虚拟机----win7(渗透工具包)

    今天把自己用的win7渗透虚拟机和渗透工具脚本整合到一起备份传网盘了: D:\渗透工具包>dir 驱动器 D 中的卷是 DATA 卷的序列号是 0D74-084B D:\渗透工具包 的目录 // ...

  9. BlackArch-Tools

    BlackArch-Tools 简介 安装在ArchLinux之上添加存储库从blackarch存储库安装工具替代安装方法BlackArch Linux Complete Tools List 简介 ...

随机推荐

  1. C++primer 练习13.44

    13.44:编写标准库string类的简化版本,命名为String.你的类应该至少有一个默认构造函数和一个接受C 风格字符串指针参数的构造函数.使用allocator为你的String类分配所需内存 ...

  2. Ext中 get、getDom、getCmp的区别

    getDom方法能够得到文档中的DOM节点,该方法中包含一个参数,该参数可以是DOM节点的id.DOM节点对象或DOM节点对应的Ext元素(Element)等. (与getElementById是一个 ...

  3. JDK错误

    WARN org.mortbay.log: Failed to read file: /usr/lib/jvm/jdk1.8.0_66/jre/lib/ext/._cldrdata.jar 删除._c ...

  4. php mysql 中文乱码解决方法

    本文章向码农们介绍php mysql 中文乱码解决方法,对码农们非常实用,需要的码农可以参考一下. 从MySQL 4.1开始引入多语言的支持,但是用PHP插入的中文会出现乱码.无论用什么编码也不行 解 ...

  5. java——操作文件

    Java文件操作,共实现了文件复制(单个文件和多层目录文件),文件移动(单个文件和多层目录文件),文件删除(单个文件和多层目录文件),文件压缩 (单个文件),文件解压(单个文件),文件分割(将一个大文 ...

  6. Cocos2d-x 3.4版本 新建项目 IOS版

    打开终端 cd进入cocos2d-x-3.0/tools/cocos2d-console/bin 然后执行下面命令 ./cocos.py new testHuoFei -p com.huofei.ap ...

  7. vc 判断哪个按键 被按下 消息 按键 状态

    测试Numlock 是否是亮的 环境控制台程序: #include "stdafx.h" #include <stdio.h> #include <conio.h ...

  8. Cesium简介

    一.Cesium介绍 Cesium是国外一个基于JavaScript编写的使用WebGL的地图引擎.Cesium支持3D,2D,2.5D形式的地图展示,可以自行绘制图形,高亮区域,并提供良好的触摸支持 ...

  9. 慕课网-安卓工程师初养成-4-9 Java循环语句之 for

    来源:http://www.imooc.com/code/1425 Java 的循环结构中除了 while 和 do...while 外,还有 for 循环,三种循环可以相互替换. 语法: 执行过程: ...

  10. AD转换精度的计算

    声明原文来源于:http://wenku.baidu.com/view/1e6d8f3083c4bb4cf7ecd1c2.html 讨论AD转换分辨率的算法(zt) (1)在总长度为5米的范围里,平均 ...