FOFA 搜索语法使用指南

FOFA 是一个强大的网络空间搜索引擎,可以帮助用户查找互联网上的各种资产和服务。以下是详细的 FOFA 搜索语法说明及示例,帮助你更好地利用这一工具。

基本搜索操作符

字符/操作符作用描述示例
ip=限定目标 IP 地址。ip="8.8.8.8" 查找特定 IP 地址
host=限定目标主机名或域名。host="example.com" 查找特定域名
port=限定目标端口号。port="80" 查找开放 80 端口的服务
title=限定网页标题中包含的关键词。title="登录" 查找标题中包含 "登录" 的网页
banner=限定服务横幅(Banner)中包含的关键词。banner="Apache" 查找服务横幅中包含 "Apache" 的服务
header=限定 HTTP 响应头中包含的关键词。header="Server: nginx" 查找响应头中包含 "Server: nginx" 的服务
body=限定网页内容中包含的关键词。body="欢迎使用" 查找网页内容中包含 "欢迎使用" 的网页
cert=限定 SSL/TLS 证书中包含的关键词。cert="*.example.com" 查找证书中包含 "*.example.com" 的服务
country=限定目标所在的国家。country="CN" 查找位于中国的资产
region=限定目标所在的地区。region="北京市" 查找位于北京市的资产
city=限定目标所在的城市。city="北京" 查找位于北京的资产
isp=限定目标的互联网服务提供商。isp="中国电信" 查找由中国电信提供的服务
protocol=限定目标使用的协议类型(如 http, https, ssh, ftp 等)。protocol="https" 查找使用 HTTPS 协议的服务
app=限定目标应用名称。app="WordPress" 查找运行 WordPress 的服务
component=限定目标组件名称。component="Tomcat" 查找使用 Tomcat 组件的服务
os=限定目标操作系统。os="Windows" 查找运行 Windows 操作系统的资产
device=限定目标设备类型(如 web, iot, server 等)。device="web" 查找 Web 服务器
after=限定结果的时间范围(创建时间在指定日期之后)。after="2024-01-01" 查找 2024 年 1 月 1 日之后的资产
before=限定结果的时间范围(创建时间在指定日期之前)。before="2023-12-31" 查找 2023 年 12 月 31 日之前的资产

高级搜索技巧

使用布尔逻辑

  • AND
    限定多个条件必须同时满足。

    • 示例: ip="8.8.8.8" AND port="80" 查找 IP 为 8.8.8.8 且开放 80 端口的服务
  • OR
    限定多个条件中的任意一个满足即可。

    • 示例: port="80" OR port="443" 查找开放 80 或 443 端口的服务
  • NOT-
    排除特定条件。

    • 示例: port="80" NOT banner="Apache"port="80" -banner="Apache" 查找开放 80 端口但服务横幅不包含 "Apache" 的服务

使用通配符

  • *
    代表任意数量的字符。

    • 示例: title="*登录*" 查找标题中包含 "登录" 的所有变体

使用正则表达式

  • ~
    使用波浪线 ~ 来表示正则表达式匹配。

    • 示例: title=~"登录.*页面" 查找标题中包含 "登录" 后跟任意字符再跟 "页面" 的网页

使用数值范围

  • ..
    使用两个点号 .. 来表示数值范围。

    • 示例: port=80..90 查找开放 80 到 90 端口的服务

使用时间范围

  • after=before=
    限定结果的时间范围。

    • 示例: after="2024-01-01" before="2024-12-31" 查找 2024 年内的资产

组合使用

你可以将多个操作符组合起来使用,以进一步缩小搜索范围。例如,如果你想要查找位于中国的、使用 Apache 作为 Web 服务器且开放 80 端口的 Web 服务器,可以这样写:

  • 示例: country="CN" AND port="80" AND banner="Apache"

实用提示

  • 引号 ""
    使用引号来精确匹配短语。

    • 示例: "全球气候变化"
  • ()
    使用括号来分组复杂的查询条件。

    • 示例: `(port="80" OR port="443")