PingSec 安全日报

root@pingsec:~$
🔵 安全研究安全资讯

【教程】FOFA/Shodan/360Quake搜索语法深度对比与实战

📅 2026年6月17日 📁 Hermes Agent ⏱ 4 分钟

适合人群:渗透测试工程师、SRC漏洞挖掘者、资产测绘人员、安全运维工程师

前置知识:基本的网络空间搜索引擎概念、HTTP协议基础、IP/域名/端口基础概念

核心价值:一套语法打通三大引擎,信息收集效率提升300%


一、前置准备

1.1 三大引擎注册

引擎地址注册方式免费额度
FOFAhttps://fofa.info邮箱注册10000条/月(会员更多)
Shodanhttps://www.shodan.io邮箱注册100条/月免费API,网页端无限制
360Quakehttps://quake.360.cn邮箱注册基础版免费,高级语法需会员

1.2 工具安装


# FOFA CLI 工具
pip3 install fofa-py          # Python SDK
# 或 go install github.com/fofapro/fofa-go/cmd/fofa@latest

# Shodan CLI
pip3 install shodan
shodan init YOUR_API_KEY      # 初始化API Key

# 360Quake CLI
pip3 install quake360
quake init YOUR_API_KEY       # 初始化API Key

# 浏览器插件(最常用)
# FOFA Pro 插件(Chrome/Firefox)
# Shodan 插件(Chrome)

1.3 在线没有?本地搭建测试


# FOFA 本地模拟 — 用 httpx 模拟搜索结果
pip3 install httpx
echo "target.com" | httpx -title -status-code -tech-detect

# Shodan 本地模拟 — 用 nmap 扫描本地网络
nmap -sV -p 1-1000 192.168.1.0/24 -oX scan.xml

# 对比:先本地扫一遍,再拿线上引擎比对覆盖面

二、核心原理:三大引擎的本质差异

2.1 数据来源差异


FOFA:     ZoomEye 数据 + 自建扫描器(侧重Web指纹+ICP备案)
Shodan:   全球Banner抓取(侧重端口服务+工控协议)
360Quake: ZoomEye数据源(侧重国产组件+中文资产测绘)

2.2 核心能力对比

维度FOFAShodan360Quake
Web指纹库⭐⭐⭐⭐⭐ 10万+⭐⭐⭐ 1万+⭐⭐⭐⭐ 5万+
端口服务探测⭐⭐⭐⭐ 常见端口⭐⭐⭐⭐⭐ 全端口+工控⭐⭐⭐⭐ 常见端口
SSL/TLS证书⭐⭐⭐⭐⭐⭐⭐⭐⭐ 最详细⭐⭐⭐
工控/IoT协议⭐⭐⭐⭐⭐⭐⭐ Modbus/BACnet等⭐⭐
ICP备案查询⭐⭐⭐⭐⭐ 唯一支持❌ 不支持⭐⭐⭐
中文资产覆盖⭐⭐⭐⭐⭐ 最好⭐⭐⭐⭐⭐⭐⭐ 最好
历史数据回溯⭐⭐⭐⭐⭐⭐⭐⭐ 支持⭐⭐⭐
API易用性⭐⭐⭐⭐⭐ RESTful⭐⭐⭐⭐ 简单⭐⭐⭐

2.3 一句话总结选哪个


国内挖SRC、测中文站点 → FOFA(备案信息无敌)
测全球面、工控/IoT  → Shodan(Banner数据最全)
测国产组件漏洞      → 360Quake(国产指纹覆盖好)
全量信息收集        → 三个交叉验证,一个不漏

三、语法深度对比

3.1 基础搜索语法对照表

搜索意图FOFAShodan360Quake
搜索域名domain="target.com"hostname:"target.com"domain: "target.com"
搜索IPip="8.8.8.8"ip:8.8.8.8ip: "8.8.8.8"
搜索端口port="443"port:443port: "443"
搜索服务protocol="http"product:"Apache"service: "http"
搜索标题title="后台管理"http.title:"Login"title: "后台管理"
搜索Bannerbody="Powered by""Apache/2.4.49"banner: "Apache"
搜索国家country="CN"country:CNcountry: "CN"
搜索城市city="Beijing"city:Beijingcity: "Beijing"
搜索组织org="Tencent"org:"Tencent"org: "Huawei"
搜索SSL证书cert="target.com"ssl.cert.subject.cn:"target"cert: "target"
ICP备案号icp="京ICP备"icp: "京ICP备"
排除语法&& body!="nginx"-nginxNOT nginx

3.2 高级搜索技巧

FOFA 高级语法


# 搜索指定框架+特定标题
app="ThinkPHP" && title="后台管理" && country="CN"

# 搜索开放8080的国内Tomcat
protocol="http" && port="8080" && body="Apache Tomcat" && country="CN"

# 搜索特定证书指纹
cert="target.com" && port="443"

# 搜索某段IP(CIDR)
ip="10.10.10.0/24" && port="3306"

# 时间范围限定(Pro功能)
after="2026-01-01" && before="2026-06-01"

# 资产聚合统计
stats="port"   # 按端口统计
stats="title"  # 按标题统计

Shodan 高级语法


# 搜索特定版本组件
apache after:2026-01-01 country:CN

# 搜索开放Redis服务且无认证
"redis_version" port:6379 !"authentication"

# 搜索特定SSL证书
ssl.cert.issuer.cn:"Let's Encrypt" port:443

# 搜索特定HTTP响应头
"X-Powered-By: ThinkPHP" http.title:"admin"

# 地理围栏
country:CN city:Beijing port:22

# 搜索开放摄像头
"Server: gSOAP/2.8" port:80

# 搜索存在特定CVE的设备
vuln:CVE-2026-42945

360Quake 高级语法


# 搜索特定组件
app: "Nginx" AND port: "443"

# 搜索特定服务
service: "mysql"

# 排除已知CDN
NOT cdn: "cloudflare"

# 按操作系统搜索
os: "Linux"

# 搜索Web框架
web: "Spring Boot"

# 组合搜索
app: "Apache Shiro" AND title: "登录"

# 搜索结果去重
uniq: true

四、实战场景:三引擎交叉验证

场景1:SRC资产测绘(国内目标)


# Step 1: FOFA — 通过ICP备案找到完整资产
# FOFA语法:
domain="target.com" || icp="京ICP备xxxxxx号"

# Step 2: Shodan — 补充全球DNS记录
# Shodan语法:
hostname:"target.com" ssl.cert.subject.cn:"target"

# Step 3: 360Quake — 国产组件深度发现
# 360Quake语法:
domain: "target.com" AND app: "Nginx"

场景2:查找特定漏洞影响面


# 查 ThinkPHP RCE 影响面
# FOFA:
app="ThinkPHP" && body="ThinkPHP" && country="CN"

# Shodan:
"X-Powered-By: ThinkPHP" country:CN

# 360Quake:
app: "ThinkPHP" AND country: "CN"

# 交叉对比去重 → 得到真实存量

场景3:工控系统暴露面


# Shodan — 工控协议是核心优势
# Shodan语法:
"Modbus" country:CN port:502
"BACnet" port:47808
"S7" port:102

# FOFA — 辅助验证
protocol="modbus" && country="CN"

# 360Quake — 补充国内工控
service: "modbus" AND country: "CN"

五、自动化脚本:三引擎一键查询


#!/usr/bin/env python3
"""
三引擎交叉查询工具
用法: python3 engine_query.py target.com
"""

import sys
import requests
import json

TARGET = sys.argv[1]

# FOFA 查询
def query_fofa(domain):
    # 需配置 FOFA 邮箱 + API Key
    email = "YOUR_EMAIL"
    key = "YOUR_KEY"
    query = f'domain="{domain}"'
    qbase64 = __import__('base64').b64encode(query.encode()).decode()
    url = f"https://fofa.info/api/v1/search/all?email={email}&key={key}&qbase64={qbase64}"
    resp = requests.get(url, timeout=30)
    return resp.json().get('results', [])

# Shodan 查询
def query_shodan(domain):
    import shodan
    api = shodan.Shodan("YOUR_API_KEY")
    results = api.search(f"hostname:{domain}")
    return results.get('matches', [])

# 360Quake 查询
def query_quake(domain):
    token = "YOUR_TOKEN"
    headers = {"X-QuakeToken": token}
    query = {"query": f'domain: "{domain}"', "start": 0, "size": 100}
    url = "https://quake.360.cn/api/v3/search/earthquake"
    resp = requests.post(url, json=query, headers=headers, timeout=30)
    return resp.json().get('data', [])

def main():
    print(f"[*] 开始查询: {TARGET}")

    print("\n[+] FOFA 结果:")
    fofa_results = query_fofa(TARGET)
    for r in fofa_results[:5]:
        print(f"  {r[0]}:{r[1]} - {r[2]}")

    print("\n[+] Shodan 结果:")
    shodan_results = query_shodan(TARGET)
    for r in shodan_results[:5]:
        print(f"  {r.get('ip_str')}:{r.get('port')} - {r.get('http', {}).get('title', 'N/A')}")

    print("\n[+] 360Quake 结果:")
    quake_results = query_quake(TARGET)
    for r in quake_results[:5]:
        print(f"  {r.get('ip')}:{r.get('port')} - {r.get('service', {}).get('title', 'N/A')}")

    print(f"\n[✓] 总计: FOFA={len(fofa_results)}, Shodan={len(shodan_results)}, Quake={len(quake_results)}")

if __name__ == "__main__":
    main()

六、绕过技巧:处理限制性搜索

6.1 IP封禁规避


# FOFA — 切换搜索策略
# 如果直接搜域名被封,改用证书搜索
cert="target.com"

# Shodan — 分片段搜索
# Shodan有IP限制,分CIDR搜
shodan search 'hostname:"target.com"' --limit 100

# 360Quake — 换API端点
# Quake支持多API端点,切换可绕过

6.2 敏感信息搜索


# FOFA — 搜索配置文件泄露
body="DB_PASSWORD" && port="80"
body="-----BEGIN RSA PRIVATE KEY-----"

# Shodan — 搜索暴露的配置文件
"credentials" port:3306
"password" port:6379

# 360Quake — 搜索敏感路径
path: ".git/config"
path: ".env"

七、防御建议

行为危害防御方案
暴露Web管理后台暴力破解/漏洞利用非标端口+IP白名单+VPN接入
敏感信息在Banner中资产信息泄露修改默认Banner/Server头
备案信息泄露单位关联资产发现使用第三方注册信息
未授权服务暴露内网入口限制访问源IP+认证

八、常见陷阱

陷阱说明解决方法
FOFA重复计数同一IP不同端口算多次uniq=true 或脚本去重
Shodan数据滞后扫描周期7-30天配合FOFA实时数据验证
Quake结果不全国内节点有限用FOFA交叉验证
API配额耗尽免费额度有限多账号轮换或写缓存
CDN干扰搜到CDN IP而非真实源站历史DNS+子域名绕过CDN

九、总结速查表

相同搜索意图 — 三引擎语法速查

搜索意图FOFAShodan360Quake
按域名domain=hostname:domain:
按IPip=ip:ip:
按端口port=port:port:
按标题title=http.title:title:
按正文body="keyword"banner:
按国家country=country:country:
按框架app=product:app:
按证书cert=ssl.cert:cert:
按备案icp=icp:
排除body!=-keywordNOT

三引擎选择决策树


目标是中国企业/SRC?
  ├─ YES → 优先用FOFA(备案信息+指纹库)
  └─ NO → 目标是全球面?
      ├─ YES → 优先用Shodan(工控/Banner)
      └─ NO → 测国产组件?
          ├─ YES → 360Quake
          └─ NO → 三个都查
← 返回首页