基于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. android studio 更新 Gradle错误解决方法

    Android Studio每次更新版本都会更新Gradle这个插件,但由于长城的问题每次更新都是失败,又是停止在Refreshing Gradle Project ,有时新建项目的时候报 Gradl ...

  2. [转载]python中将普通对象作为 字典类(dict) 使用

    目前我知道的有两种方法: 1 定义的类继承dict类 例如 class A(dict): pass a = A() a['name'] = 12 2 给自定义的类添加 __setitem__() __ ...

  3. android依赖工程,子工程覆盖父工程的相同属性

    当业务复杂,开始拆分工程后,就会遇到如下问题: 工程A为lib父工程, 工程B为子工程.  两个工程中均有资源文件(比如strings.xml),且资源文件中有相同的key, 那么值到底使用谁的? 实 ...

  4. 动手学servlet(一) 第一个servlet程序

    1.文件>新建>动态WEB项目 "javaeedemo">在Java Resource的src下新建包“servletdemo”,包下新建一个类“MyServet ...

  5. 命令行重新安装.net framework

    ①运行cmd ②运行命令: cd c:\\windows\\microsoft.net\\framework\v4.0.30319 ③在上述目录下执行如下命令 aspnet_regiis.exe -i ...

  6. 百度面试题:从输入url到显示网页,后台发生了什么?

    参考http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ http://www.cnblogs.com/we ...

  7. 洛谷P2734 游戏 A Game

    P2734 游戏 A Game 27通过 60提交 题目提供者该用户不存在 标签USACO 难度普及+/提高 提交  讨论  题解 最新讨论 暂时没有讨论 题目背景 有如下一个双人游戏:N(2 < ...

  8. Android四大组件小结

    Android四大组件分别为activity.service.content provider.broadcast receiver. 一.android四大组件详解 1.activity (1)一个 ...

  9. linux Apache和php配置

    今天安装Apache httpd web服务器,安装过程分为三部分: (1)./configure (2)make (3)make install (需要root权限) 我的apache 安装在/ho ...

  10. asp.net(c#)修改时的赋值操作

    赋值操作方法(将信息显示至文本框中): public void Show_Infobase(int _peoid) { DataSet ds = new DataSet(); ds = platbll ...