MIT License

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

项目背景与痛点

红队测试中,资产测绘往往是攻击链构建的第一步。很多人面临的情况是:FOFA 上搜出一批资产,然后手动拉下来,再用各种工具挨个探测——探活、指纹识别、漏洞扫描、反查域名,每一步都要切换工具、转格式、写脚本拼接。这种"手工作坊式"流程不仅效率低,还容易在数据转换中丢失信息。

fofaEX 正是针对这一痛点设计的。它把 FOFA 的 API 查询作为入口,同时兼容鹰图与夸克的文件导入,将资产探测的完整链路——探活、Nuclei 模板扫描、IP 反查域名、域名反查备案、Dismap 指纹扫描——整合到一条流水线上。更关键的是,它通过模板机制将自己改造成一个可扩展的插件平台,而不是一个封闭的"一键扫描器"。这种设计思路,本质上是在红队工具链中引入"标准化管道 + 策略可插拔"的工程化理念,与早期单体工具相比,是一个明显的范式升级。

核心技术揭秘

fofaEX 的核心架构可以抽象为"数据源适配层 → 标准化资产模型 → 插件触发引擎 → 结果汇聚层"的四层结构。

数据源适配层解决的是异构数据的统一问题。FOFA API 返回的 JSON 结构与鹰图、夸克导出的格式各有差异,包含的字段也各不相同(IP、端口、域名、ICP 备案、标题等)。fofaEX 并不试图建立一个大而全的数据库模型,而是抽取核心资产字段,形成一个精简的标准化资产对象,屏蔽不同数据源的差异。这一点从设计上大大降低了后续插件开发的复杂度——你只需面对一种数据结构。

插件触发引擎是 fofaEX 的灵魂。它通过模板定义"在什么条件下调用什么工具",把外部 CLI 工具(如 Nuclei、Dismap)抽象成可编排的插件。其底层逻辑类似于一个简易的"任务管道 + 策略分发器":资产对象进入管道后,根据模板规则匹配对应的插件,执行结果再结构化输出,进入下一阶段或直接落盘。这种设计巧妙地将"工具调用"转化为"数据处理节点",让用户可以通过组合模板,自定义属于自己的扫描流水线,而不需要修改主程序代码。

下面是 fofaEX 的完整数据流架构图:

graph TD A[FOFA API 查询] --> D[数据源适配层] B[鹰图文件导入] --> D C[夸克文件导入] --> D D --> E[标准化资产对象] E --> F{"插件匹配引擎"} F -->|"探活模板"| G[Ping / Port Probe] F -->|"指纹模板"| H[Dismap 指纹识别] F -->|"漏洞模板"| I[Nuclei 扫描] F -->|"反查模板"| J[IP 反查域名] G --> K[结果汇聚与输出] H --> K I --> K J --> L[ICP 备案查询] L --> K K --> M[多格式报告]

另外一个值得注意的技术细节是并发与任务编排。fofaEX 在插件调用时显然考虑了异步任务的调度问题——尤其是在反查域名和 Nuclei 扫描这类耗时操作中,简单串行执行会导致整体效率断崖式下跌。合理的并发控制、任务超时处理和结果收集机制,是这类工具能否从"能跑"走向"好用"的关键分水岭。

功能亮点与差异

相比同类资产枚举工具,fofaEX 有几个明显的差异化竞争力:

  • 双料数据源打通:支持 FOFA、鹰图、夸克三大平台的数据入口。实际操作中,很多团队同时订阅多个平台,但数据割裂是常态。fofaEX 把这三者统一到一个分析管道里,等于替用户省掉了一个资产数据聚合中台。
  • **模板驱动的插件化:**这是 fofaEX 最接近"框架"层面的创新。它没有把功能写死,而是将工具调用抽象为模板配置,用户可以将任意满足协议要求的工具作为插件接入。这种"平台 + 插件"的架构在红队工具中并不常见,它赋予了工具极大的延展性——想要新功能,不必等待原作者更新,自己写一个模板即可。
  • 业务流程的完整闭环:从资产查询到指纹识别、漏洞探测再到备案反查,fofaEX 覆盖了资产分析的大多数高频动作,且数据可以在各环节间流转,形成一条完整的侦察链路。

应用场景与落地建议

fofaEX 最适合的场景是红队前期的资产盘点与攻击面梳理。对于授权测试项目,它可以快速将一个企业的一级域名、IP 段、指纹信息、暴露服务梳理干净,为后续漏洞利用提供完整的地图。

在实际使用中需要注意几个问题:

API 配额控制:FOFA 的 API 有严格的速率限制,如果输入的查询语句数量较大,需要自己把控节奏,否则容易触发封禁。建议在使用时对输入资产列表做分组分批处理。

被动扫描原则:Nuclei 模板扫描属于主动探测行为,在真实渗透测试中可能触发目标 IDS/IPS 告警。建议根据测试授权范围,谨慎选择高危模板,或改用被动指纹采集模式。

插件模板的兼容性:依赖动态扩展的同时,也需要关注外部工具(如 Nuclei、Dismap)的版本升级带来的结果格式变化,必要时需要同步更新模板适配。

fofaEX 的核心定位决定了它更适合个人主力工具或小团队协作工具,对于大型企业级资产测绘平台来说,它目前的功能深度可能偏向"轻量级侦察"而非"持续监控运营"。

综合评价

优势:

  • 架构清晰,插件化设计极具前瞻性,工具扩展成本低
  • 数据源聚合度高,一次导入即可完成多维度分析
  • 操作链路完整,从资产发现到指纹确认、漏洞筛查一气呵成
  • 代码风格简洁,文档清晰,对二次开发者友好

不足:

  • 插件模板的编写仍需要一定的技术门槛,对于完全不懂脚本编写的用户学习成本偏高
  • 深度依赖外部工具质量,Nuclei/Dismap 的模板库更新速度决定工具上限
  • 报告输出粒度较粗,对于大型项目的资产分组审计能力稍显不足
  • 目前生态仍以作者个人维护为主,社区共建程度有限

总体而言,fofaEX 不是一个"装了就能打"的傻瓜工具,而是一个需要你理解其设计哲学、花时间去配置的"半自动侦察框架"。但它所体现的"聚合数据源 + 插件化流水线"的工程思路,恰恰代表了红队工具从脚本集合走向平台化发展的方向,值得所有对资产测绘工具有深度需求的人认真研究。

简要分析

热度分
271
价值分
148
活跃状态
活跃

语言占比

Java

Release

README

image

简介

FOFA EX 是一款基于fofa api实现的红队综合利用工具(也可导入鹰图、夸克文件及其他扫描结果的excel文件),可基于模板把工具作为插件进行集成,自动化进行资产探测,目前提供的插件功能如下,需要去插件仓库进行下载,插件下载地址:

  1. fofa(或自定义打开文件)探活
  2. nuclei 模板扫描
  3. IP反查域名
  4. 域名反查 ICP 备案
  5. dismap 指纹扫描

默认集成了 fofa 官方的四十个 api 接口,增加搜索数量调整、翻页、iconHash生成、搜索耗时统计、当前用户个人账户信息查询等功能,查询结果可实施编辑与表内搜索,可进行导出; 增加快捷语法编辑记录功能,可将收录的语法进行保存与快捷输入;右键支持当前搜索结果一键打开链接等功能。点击加入 内测群 学习交流与问题反馈。

本项目长期免费维护,您的star是对我最大的支持。

启动方式

[+] 支持 java 版本:java8、java11

该程序使用 Java11 编写,请尽可能使用java11(界面及功能优化得最好),使用插件模式可进行一键探活:

java11:最新发布版本点击下载 [V3.2]

java 8:最新发布版本点击下载 [V2.2]

最新测试版本点击下载 [V2.1]

手动运行请使用编码启动:

java "-Dfile.encoding=UTF-8" -jar .\fofaEX.jar

更新日志 问题修复 第三方插件

程序主界面:

image

自动化资产探测:httpx 探活 -> ip反查域名 -> 域名反查ICP -> dismap 指纹采集

mnggiflab-compressed-mnggiflab-from-video-to-gif-2024_01_25_11_19_08

优势

  1. 更多的默认数据查询:默认查询全部数据

image

  1. 快捷保存查询语法,便于HW或SRC挖掘
  2. 全部 API 接口的支持,界面可选择接口显示范围
  3. 查询结果在线编辑导出,后续会为右键添加更多新功能
  4. 可自动化调用第三方插件,目前持续开发中:当前展示为 httpX 一键探活 fofa 搜索结果,可通过设置plugins/httpxSetting.json来设置导出选项:

image

运行 httpX 会自动弹出单独的运行结果面板:

image

登录模式:账户设置

客户端需输入邮箱与key,第一次登录后保存账户会将配置文件生成在本地 accounts.txt 文件中(当前fofa输入key就可以调用API,无需设置邮箱):

image

检查账户功能可查看当前账户信息(会员显示点数为"-1"是正常现象):

image

API 搜索功能

当前已提供以下 api 搜索功能(部分功能取决与当前账户权限):

ip,port,protocol,country,country_name,region,city,longitude,latitude,as_number,as_organization,host,domain,os,server,icp,
title,jarm,header,banner,base_protocol,link,certs_issuer_org,certs_issuer_cn,certs_subject_org,certs_subject_cn,tls_ja3s,
tls_version,product,product_category,version,lastupdatetime,cname,icon_hash,certs_valid,cname_domain,body,icon,fid,structinfo

默认使用常用的7个选项,可进行勾选或取消:

image

fofa api 官方链接:https://fofa.info/api

快捷输入功能

按钮单击为快速输入,输入后显示为红色高亮;再次点击则撤回输入,颜色恢复。 用户可实时新增、编辑、删除按钮,按钮配置文件保存在当前目录 rules.txt 文件中。

image

iconHash 计算

可通过直接输入: https://baidu.com/ 或者 https://baidu.com/favicon.ico 来计算图标哈希值:

image

表格操作

当前表格中,右键集成了部分功能,其他功能将后续更新。

image

翻页功能及搜索计时

右下角统计当前表格数据与全部数据占比,显示当前页面数及本次搜索耗时。

image

导出功能

导出excel表会以“全部数据sheet+各列去空sheet”的形式放在一个表中,方便第三方工具直接使用数据:

image

image

插件模式

当前集成了 httpX 插件(windows平台),目录结构为:

.
├── fofaEX.jar
├── plugins
│   ├── AllPlugins.json
│   └── httpx
│       ├── httpx.exe
│       └── httpxSetting.json
├── rules.txt
└── run.bat

AllPlugins.json 设置插件开关,false 关闭插件,true 打开插件:

{
    "dirsearch":false,
    "httpx":true
}

httpxSetting.json 设置 httpX 的运行配置:(配置文件名需要为:插件名 + Setting.json,插件名需要与 AllPlugins.json 中的一致)

{
    "Run":{
        "Path":"./plugins/httpx/httpx.exe",
        "Params":{
            "-duc":"",
            "-l":"./plugins/httpx/input.txt",
            "-status-code":"",
            "-o":"./plugins/httpx/HttpX.json",
            "-nc":"",
            "-j":""
        },
        "InputFile":"./coredata/FofaEX.json",
        "InputTarget":{
            "selectParam":"-l",
            "selectColumn":"link"
        },
        "OutputFile":"./plugins/httpx/HttpX.json",
        "OutputTarget":["url","port","title","status_code"]
    },
    "About":{
        "Project": "httpX",
        "Address": "https://github.com/projectdiscovery/httpx",
        "Author": "ProjectDiscovery",
        "Version": "v1.3.7",
        "Update": "2023.11.13"
    }
}
  1. “Path” 指定程序路径
  2. “Params” 指定程序运行默认参数
  3. “InputFile” 指定 fofaEX 使用 API 查到的数据
  4. “InputTarget”:从 FofaEX.json 中提取出link列保存到./plugins/httpx/input.txt中,作为httpX的输入
  5. “OutputFile” 指定 httpX 运行后产生文件保存的位置
  6. “OutputTarget” 指定 fofaEX 在插件页面所展示的列内容

image

mac 使用插件:

需要去https://github.com/projectdiscovery/httpx官网下载对应的mac包,替换plugins/httpx 文件夹下的 httpx.exe文件,接着修改httpxSetting.json文件中的Path参数为"./plugins/httpx/httpx"即可。
记得给 mac 的httpx 对应运行权限,
该功能已经过mac测试,可以正常使用。

关于项目

目前项目还在开发中,有很多 idea 还在逐步实现。后续打算该平台集成第三方工具来进行一键化操作,也欢迎各位师傅提出想法与建议。

FQA

是否支持 java8?

当前版本不支持,后续会增加java8版本支持

当前java8开发计划已废弃,作者精力有限,java8版本仅更新至2.2版本。后续请关注java11版本。

是否支持鹰图等多平台API?

作为红队工具,这个后续是一定会有的,会将更多的 API 功能以插件形式集成进 fofa EX 中。

关于免账号登录模式

适用于fofaEX的插件目前仅供内部使用。

学习交流

致谢

在开发中有很多师傅帮了我答疑解惑,加速了项目的开发,在此非常感谢下面的各位师傅的帮助:

Mechoy XinCaoZ ha1yu wavesky gh0stkey

除此之外,也感谢Fofaex安全开发小组的各位成员在开发中提供的建议与想法,以下排名不分先后:

start | 李趴菜 | lemon不酸 | A 一木之子 | 素风 | Z1t0

FOFA 共创者计划

FofaEX 已加入 FOFA 共创者计划,感谢 FOFA 提供的账号支持。

参考链接

https://github.com/fofapro/fofa_view

https://github.com/wgpsec/fofa_viewer

评论

暂无评论