实践网络空间搜索引擎应用&信息收集
字数 1713 2025-08-05 11:39:30
网络空间搜索引擎应用与信息收集技术指南
0x0 前言
本文从白帽子角度系统分析主流网络空间搜索引擎的优劣比较,探讨多引擎整合的必要性,并提供一套完整的信息收集流程和自动化实现思路。通过实际案例分析,展示如何利用SSL证书、favicon哈希等特征进行资产关联发现。
0x1 主流搜索引擎比较
最常用的三大网络空间搜索引擎:
- FoFa:hostname数据最全,支持多种特征搜索
- Shodan:设备指纹识别能力强
- ZoomEye:国内资产覆盖较好
0x2 信息收集基础流程
横向资产挖掘(主域名扩展)
- 天眼查股权结构:获取关联子公司
- 备案信息查询:相同单位备案
- 域名whois反查
- IP反查(获取真实IP后)
- 移动端信息:
- 七麦数据/APP Store查找同开发商应用
- 微信公众号/小程序分析
纵向资产挖掘(深度特征提取)
- SSL证书信息提取
- 网站favicon哈希计算
- 网站标题/底部信息分析
- IP分布规律分析
0x3 关键归属特征提取技术
SSL证书信息
- 包含目标中文名称关键词
- 主域名匹配
- 组织名称匹配
代码实现(Python示例):
import ssl, socket
def get_ssl_info(host, port=443):
cert = ssl.get_server_certificate((host, port))
# 解析证书信息...
return cert_info
Favicon哈希计算
- 获取网站favicon.ico
- 计算MMH3哈希值
搜索语法对比:
- Shodan:
http.favicon.hash:214897281 - ZoomEye:
iconhash:"214897281" - FoFa:
icon_hash="214897281"
0x4 多引擎整合技术
搜索语法对照表
| 特征类型 | Shodan语法 | ZoomEye语法 | FoFa语法 |
|---|---|---|---|
| SSL证书 | ssl:"ximalaya.com" |
ssl:"ximalaya.com" |
cert="ximalaya.com" |
| Favicon哈希 | http.favicon.hash:214897281 |
iconhash:"214897281" |
icon_hash="214897281" |
自动化整合脚本框架
class SearchEngineAPI:
def __init__(self, api_key):
self.api_key = api_key
def search_ssl(self, query):
# 实现各引擎搜索
pass
def search_favicon(self, hash_value):
# 实现各引擎搜索
pass
# 使用示例
fofa = SearchEngineAPI("YOUR_FOFA_KEY")
results = fofa.search_ssl("douyu.com")
多引擎结果分析
以ximalaya.com SSL查询为例:
- Shodan结果:89个
- ZoomEye结果:45个
- FoFa结果:103个
- 三者合并去重:147个(显著高于单一引擎)
0x5 IP分布规律分析
IP来源分析技术
-
子域名解析:
- 注意CDN干扰(通过SSL证书识别)
- 多地ping测试判断是否真实CDN
-
C段聚合:
- 优先分析ASN信息
- 再细化到C段扫描
-
SSL+地域定位:
- 示例:
cert="douyu.com" && city="Wuhan" - 适用于总部所在地数据中心发现
- 示例:
ASN信息获取代码
import ipwhois
def get_asn_info(ip):
obj = ipwhois.IPWhois(ip)
results = obj.lookup_rdap()
return {
'asn': results.get('asn'),
'cidr': results.get('asn_cidr'),
'description': results.get('asn_description')
}
0x6 WEB服务发现技术
WEB服务分类
- 基于IP的服务:直接访问IP可见
- 基于IP+域名的服务:需指定Host头
扫描实现方案
-
Masscan快速端口扫描
masscan -p1-65535 58.19.41.0/24 --rate=1000 -oL ports.txt -
WEB服务识别
import requests def detect_web_service(ip, port, host=None): url = f"http://{ip}:{port}" headers = {'Host': host} if host else {} try: r = requests.get(url, headers=headers, timeout=5) return analyze_response(r) except: return None -
多进程加速
from multiprocessing import Pool def batch_scan(ip_port_list): with Pool(20) as p: results = p.map(detect_web_service, ip_port_list) return results
0x7 高级技巧与思考
搜索引擎局限性
- 数据滞后性(需配合实时扫描)
- 漏报不可避免(数据量太大)
- 关联分析能力有限
自动化优化方向
- 减少输入:智能生成搜索关键词
- 避免重复扫描:结果去重和缓存
- 资源分配:动态调整扫描强度
- 结果复用:建立知识库
0x8 开发架构建议
-
模块化设计:
- 每个功能步骤独立封装
- 统一输入输出接口
-
Filter引擎:
- 支持条件组合
- 可扩展的过滤规则
-
分布式扩展:
- 任务队列管理
- 结果聚合
0x9 总结
关键实践要点:
- 多引擎整合可显著提高资产发现率(测试案例提升30%+)
- SSL证书+地域定位是高精度发现技术
- 实时扫描弥补搜索引擎数据滞后
- ASN分析应优先于C段扫描
0xA 参考资源
- SRC漏洞挖掘 - 前期资产收集
- Python Requests技巧总结
- 七麦数据(移动应用分析)
- 天眼查(企业关联分析)
本技术文档基于实际测试数据编写,提供了从基础到进阶的网络空间资产发现方法。建议结合自身需求调整自动化脚本,并注意遵守相关法律法规。