type
status
date
slug
summary
tags
category
icon
password
0×01 前言
什么是网络探测
网络探测指对计算机网络或DNS服务器进行扫描,获取有效的地址、活动端口号、主机操作系统类型和安全弱点的攻击方式。
0×02 网络探测技术分类
网络环境信息包括网络拓扑结构、主机、主机开放的网络服务以及存在的漏洞等,对网络环境信息的获取工具可以按照其是否对目标发起主动的探测分为两大类:主动探测与被动探测。
主动探测是传统的扫描方式,它是通过给目标主机发送特定的包并收集回应包来取得相关信息的,从而确定其操作系统、开启的端口以及存在的漏洞等信息(无响应本身也是信息,表明可能存在过滤设备将探测包或探测回应包过滤了)。属于此类的开源工具有nmap和nessus。主动扫描的优势在于通常能较快获取信息,准确性也比较高。缺点在于一方面易于被发现,很难掩盖扫描痕迹;另一方面要成功实施主动扫描通常需要突破防火墙,但突破防火墙是很困难的。
被动探测是通过监听网络包来取得信息。根据数据包中包含的指纹提取对应的一些网络环境信息,属于此类的开源工具有p0f(被动操作系统辨识工具)和pads(被动网络服务发现工具)。被动扫描一般只需要监听网络流量而不需要主动发送网络包,也不易受防火墙影响。该探测技术的主要优点是对它的检测几乎是不可能的。而其主要缺点在于速度较慢而且准确性较差,当目标不产生网络流量时,就无法得知目标的任何信息。
0×03 FOFA网络空间探测引擎
1 概述
FOFA是白帽汇推出的一款网络空间资产搜索引擎。 它能够帮助企业客户迅速进行网络资产匹配、加快后续工作进程。 例如进行漏洞影响范围分析、应用分布统计、应用流行度排名统计等。
2 查询语法
直接输入查询语句,将从标题,html内容,http头信息,url字段中搜索
- title="abc" 从标题中搜索abc。例:标题中有北京的网站
- header="abc" 从http头中搜索abc。例:jboss服务器
- body="abc" 从html正文中搜索abc。例:正文包含Hacked by
- domain="qq.com" 搜索根域名带有qq.com的网站。例: 根域名是qq.com的网站
- host=".gov.cn" 从url中搜索.gov.cn,注意搜索要用host作为名称。例: 政府网站, 教育网站
- port="443" 查找对应443端口的资产。例: 查找对应443端口的资产
- ip="1.1.1.1" 从ip中搜索包含1.1.1.1的网站,注意搜索要用ip作为名称。例: 查询IP为220.181.111.1的网站; 如果想要查询网段,可以是:ip="220.181.111.1/24",例如查询IP为220.181.111.1的C网段资产
- protocol="https" 搜索指定协议类型(在开启端口扫描的情况下有效)。例: 查询https协议资产
- city="Hangzhou" 搜索指定城市的资产。例: 搜索指定城市的资产
- region="Zhejiang" 搜索指定行政区的资产。例: 搜索指定行政区的资产
- country="CN" 搜索指定国家(编码)的资产。例: 搜索指定国家(编码)的资产
- cert="google" 搜索证书(https或者imaps等)中带有google的资产。例: 搜索证书(https或者imaps等)中带有google的资产
- banner=users && protocol=ftp 搜索FTP协议中带有users文本的资产。例: 搜索FTP协议中带有users文本的资产
- type=service 搜索所有协议资产,支持subdomain和service两种。例: 搜索所有协议资产
- os=windows 搜索Windows资产。例: 搜索Windows资产
- server=="Microsoft-IIS/7.5" 搜索IIS 7.5服务器。例: 搜索IIS 7.5服务器
- app="海康威视-视频监控" 搜索海康威视设备,更多app规则。例: 搜索海康威视设备
- after="2017" && before="2017-10-01" 时间范围段搜索。例: 时间范围段搜索,注意: after是大于并且等于,before是小于,这里 after="2017" 就是日期大于并且等于 2017-01-01 的数据,而 before="2017-10-01" 则是小于 2017-10-01 的数据
- asn="19551" 搜索指定asn的资产。例: 搜索指定asn的资产
- org="Amazon.com, Inc." 搜索指定org(组织)的资产。例: 搜索指定org(组织)的资产
- base_protocol="udp" 搜索指定udp协议的资产。例: 搜索指定udp协议的资产
- is_ipv6=true 搜索ipv6的资产,只接受true和false。例: 搜索ipv6的资产
- is_domain=true 搜索域名的资产,只接受true和false。例: 搜索域名的资产
- ip_ports="80,443" 或者 ports="80,443" 搜索同时开放80和443端口的ip资产(以ip为单位的资产数据)。例: 搜索同时开放80和443端口的ip
- ip_ports=="80,443" 或者 ports=="80,443" 搜索同时开放80和443端口的ip资产(以ip为单位的资产数据)。例: 搜索只开放80和443端口的ip
- ip_country="CN" 搜索中国的ip资产(以ip为单位的资产数据)。例: 搜索中国的ip资产
- ip_region="Zhejiang" 搜索指定行政区的ip资产(以ip为单位的资产数据)。例: 搜索指定行政区的资产
- ip_city="Hangzhou" 搜索指定城市的ip资产(以ip为单位的资产数据)。例: 搜索指定城市的资产
- ip_after="2019-01-01" 搜索2019-01-01以后的ip资产(以ip为单位的资产数据)。例: 搜索2019-01-01以后的ip资产
- ip_before="2019-01-01" 搜索2019-01-01以前的ip资产(以ip为单位的资产数据)。例: 搜索2019-01-01以前的ip资产
高级搜索:可以使用括号 和 && || !=等符号,如title="powered by" && title!=discuztitle!="powered by" && body=discuz( body="content="WordPress" || (header="X-Pingback" && header="/xmlrpc.php" && body="/wp-includes/") ) && host="gov.cn"新增完全匹配的符号,可以加快搜索速度,比如查找qq.com所有host,可以是domain"qq.com"
3 API调用
查询接口
输入下列请求所需的qbase64,返回json数据格式
字段名 | 类型 | 内容 |
qbase64 | string | 经过base64编码后的查询语法,支持domain,host,ip,header,body,title,运算符支持== = != =~ |
page | integer | 每页返回记录数,普通用户默认为10000条,vip用户默认为100条,最大可设置为10000条 |
size | integer | 每页返回记录数,普通用户默认为10000条,vip用户默认为100条,最大可设置为10000条 |
fields | string | 【可选参数】字段列表,默认为host,用逗号分隔多个参数,如(fields=ip,title),可选的列表有:host title ip domain port country province city country_name header server protocol banner cert isp as_number as_organization latitude longitude lastupdatetime注意:country是国家代码,例如CN, country_name是国家名称 |
full | boolean | 默认为false,是否搜索全部数据,默认和页面搜索一样,只能搜索一年内的数据,指定为true搜索全部数据 |
接口返回
字段名 | 类型 | 内容 |
mode | string | 查询模式:mode返回为"normal"代表普通查询(q=words),mode返回为"extended"代表高级查询(如q=domain=fofa.so,q=title=fofa,采用高级条件搜索) |
page | integer | 当前请求页的页数 |
size | integer | 请求返回结果的个数 |
results | array | 请求返回结果的详情数组 |
返回示例
4 代码实现


0×04 SHODAN搜索引擎
1 概述
Shodan是一个搜索互联网连接设备的搜索引擎,不同于谷歌、必应、百度这些搜索引擎。用户可以在Shodan上使用Shodan搜索语法查找连接到互联网的摄像头、路由器、服务器等设备信息。在渗透测试中,是个很不错的神器。
2 查询语法
字段 | 解释 | 例子 |
hostname | 搜索指定的主机或域名 | hostname:"sina.com" |
port | 搜索指定的端口 | port:"80" |
country | 搜索指定的国家 | country:"China" |
city | 搜索指定的城市 | city:"Beijing" |
product | 搜索指定的操作系统/软件 | product:"apache" |
version | 搜索指定的软件版本 | version:"7.1.4" |
net | 搜索指定的IP地址或子网 | net:"117.44.67.0/24" |
3 API调用
key
注册账号,获得API Key
query
Shodan搜索查询。所提供的字符串用于搜索Shodan中的标语数据库,并带有附加选项以使用“ filter:value”格式在搜索查询中提供过滤器。例如,以下搜索查询将找到位于德国的Apache Web服务器:"apache country:DE"。当前支持以下过滤器:



facets

用逗号分隔的属性列表,以获取摘要信息。属性名称也可以采用"property:count"的格式,其中"count"是将为属性返回的构面数(即"country:100"将获得搜索查询的前100个国家/地区)。当前支持以下方面:



返回例子
4 代码调用
常用 Shodan 库函数
- shodan.Shodan(key) :初始化连接API
- Shodan.count(query, facets=None):返回查询结果数量
- Shodan.host(ip, history=False):返回一个IP的详细信息
- Shodan.ports():返回Shodan可查询的端口号
- Shodan.protocols():返回Shodan可查询的协议
- Shodan.services():返回Shodan可查询的服务
- Shodan.queries(page=1, sort='timestamp', order='desc'):查询其他用户分享的查询规则
- Shodan.scan(ips, force=False):使用Shodan进行扫描,ips可以为字符或字典类型
- Shodan.search(query, page=1, limit=None, offset=None, ufacets=None, minify=True):查询Shodan数据
0×05 ZOOMEYE搜索引擎
1 概述
ZoomEye 平台为广大网络研究爱好者和极客们提供了强大的 Restful API,通过它能够更好的与平台相连接,使用ZoomEye 平台提供的资源, 构建有意思的应用。 所以尽情发挥你的想象力吧,精彩的网络空间,等待你去探索。
2 查询语法
名称 | 类型 | 说明 | 是否必须 | 示例 |
query | string | 查询关键词 | 必须 | port:80 nginx |
page | integer | 翻页参数(默认为1) | 可选 | 7 |
facets | string | 统计项目。如果为多个,使用逗号分隔各个统计项 | 可选 | app,device |
3 API调用
主机设备搜索过滤器
名称 | 类型 | 说明 | 示例 |
app | string | 应用,产品 | app: ProFTD |
ver | string | 版本 | ver:2.1 |
device | string | 设备类型 | device:router |
os | string | 操作系统 | os:windows |
service | string | 服务类型 | service:http |
ip | string | IP 地址 | ip:192.168.1.1 |
cidr | string | CIDR 格式地址 | cidr:192.168.1.1/24 |
hostname | string | 主机名称 | hostname:google.com |
port | string | 端口号 | port:80 |
city | string | 城市名称 | city:beijing |
country | string | 国家名称 | country:china |
asn | string | ASN 号码 | asn:8978 |
Web 应用搜索过滤器
名称 | 类型 | 说明 | 示例 |
app | string | Web 应用信息 | webapp:wordpres |
header | string | HTTP headers | header:server |
keywords | string | meta 属性关键词 | keywords:baidu.com |
desc | string | HTTP description 属性 | desc:hello |
title | string | HTTP Title 标题信息 | title: baidu |
ip | string | IP 地址 | ip:192.168.1.1 |
site | string | site 搜索 | site:baidu.com |
city | string | 城市名称 | city:beijing |
country | string | 国家名称 | country:china |
返回值
名称 | 类型 | 说明 |
matches | string | 结果集 |
facets | string | 统计结果 |
total | string | 结果总数 |
响应示例
HOST固定属性

WEB固定属性


4 代码调用

0×06 探测资产对比
字段 | 说明 | zoomeye | fofa | shodan |
ip | IP 地址 | ip | ip | ip_str |
asn | ASN 号 | geoinfo.asn | as_number | asn |
city | 城市 | geoinfo.city | city | location.city |
province | 省 | ㅤ | province | ㅤ |
country_code | 国家码 | geoinfo.country.code | country | location.country_code |
country | 国家名 | geoinfo.country.name | country_name | location.country_name |
continent_code | 洲际码 | geoinfo.continent.code | ㅤ | ㅤ |
continent_name | 洲际名 | geoinfo.continent.name | ㅤ | ㅤ |
latitude | 纬度 | geoinfo.location.latitude | latitude | location.latitude |
longitude | 经度 | geoinfo.location.longitude | longitude | location.longitude |
port | 端口号 | port | port | port |
banner | 端口指纹信息 | banner | banner | data |
server | 产品名称 | portinfo.app | server | product |
hostname | 主机名 | portinfo.hostname | host | hostnames |
os | 操作系统名称 | portinfo.os | ㅤ | os |
version | 产品,应用版本信息 | portinfo.version | ㅤ | ㅤ |
info | 额外信息 | portinfo.info | ㅤ | ㅤ |
device | 设备类型 | portinfo.device | ㅤ | tags |
title | 标题 | ㅤ | title | ㅤ |
domain | 域名 | ㅤ | domain | domains |
header | http头 | ㅤ | header | ㅤ |
protocol | 协议 | ㅤ | protocol | transport |
cert | 证书 | ㅤ | cert | ㅤ |
isp | 互联网供应商 | ㅤ | isp | isp |
lastupdatetime | 最后更新时间 | ㅤ | lastupdatetime | timestamp |
org | 组织 | ㅤ | as_organization | org |
ㅤ | 组织代码 | ㅤ | as_number | ㅤ |