基于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. Webservice测试从头来

    一.写WebService 建立java project 建立数据类包 com.parameters.zz 新建Person类 package com.parameters.zz; public cl ...

  2. 查看用户的SQL执行历史

    程序开发少不来SQL,基本都是基于SQL开发,程序仅仅起一个流程控制的作用.但是数据库本身存在许多内置的视图或者内置的表,如果打算研究SQL执行的效率已经SQL执行的历史记录,通过这些视图可以知道. ...

  3. 转载:LoadRunner11-遇到问题及解决办法

    转自:http://4951507.blog.51cto.com/4941507/1108733 1.LoadRunner超时错误:在录制Web服务器端,如果超过120秒服务器协议脚本回放时超时情况经 ...

  4. 如何用C代码生成二维码

    如何用C代码生成二维码 当下因微信和支付宝等手机应用广泛使用,而基于二维码/一维条码的移动支付,也借助手机移动端席卷全国,使得越来越多的人知道有"二维码"这么一种东西. 对于普通用 ...

  5. 慕课网-安卓工程师初养成-2-9 Java中的自动类型转换

    来源:http://www.imooc.com/code/1236 在 Java 程序中,不同的基本数据类型的数据之间经常需要进行相互转换.例如: , 代码中 int 型变量 score1 可以直接为 ...

  6. python分析log

    最近做的一个项目,系统log下会生成如下的log(部分): [-- ::] Processing File transfer configured from ship to shore.... [-- ...

  7. RC振荡器与有源滤波器1

    自我总结,有错误欢迎指出! 一.振荡器原理: 对于正反馈,有如下公式: 讨论: 1.当A*F(jw)=1时 Af→∞(物理意义:自激振荡): 2.在f0上,F(jw)相移为0或2n∏:(因此,在f0处 ...

  8. 洛谷P1466 集合 Subset Sums

    P1466 集合 Subset Sums 162通过 308提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交  讨论  题解 最新讨论 暂时没有讨论 题目描述 对于从1到N (1 ...

  9. 洛谷P1215 [USACO1.4]母亲的牛奶 Mother's Milk

    P1215 [USACO1.4]母亲的牛奶 Mother's Milk 217通过 348提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交  讨论  题解 最新讨论 暂时没有讨论 ...

  10. Android基础总结(6)——内容提供器

    前面学习的数据持久化技术包括文件存储.SharedPreferences存储以及数据库存储技术保存的数据都只能被当前应用程序所访问.虽然文件存储和SharedPreferences存储中提供了MODE ...