Apache License 2.0

技术解读

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

FofaMap v2.0:AI 驱动的红队资产测绘智能体

项目背景与痛点

FofaMap 作为一款红队资产测绘工具,主打智能化、自动化,解决了以往工具对于网络资产测绘效率低下、手动操作繁琐的问题。随着网络规模的扩张,各类网络资产数据的积累,优质的资产测绘工具成为了安全团队亟需的关键工具。FofaMap 通过整合 FOFA 数据源和智能 AI 辅助决策,提供了一站式的解决方案,不仅实现高效、精准的资产测绘,更助力红队在有限的时间内挖掘出有价值的攻击面。

核心技术揭秘

架构与技术栈

FofaMap 深植于 Python3,借助 FOFA 数据集合,同时集成 MCP 协议以接入诸如 Cursor 和 Claude 这样的 AI 平台,内部辅以 AI 反思机制,可以动态调整查询策略以获得更优结果,并联动 Nuclei 进行精准扫描策略推荐。通过这一整套技术架构,FofaMap 实现了从数据采集到决策输出的全自动化、智能化过程。

系统架构图
graph TD A[用户请求] --> B("FOFA 数据源") B --> C{"参数校验"} C -->|"通过"| D("FOFA 数据采集") C -->|"校验失败"| E[异常处理] D --> F{"数据存活检测"} F -->|"存活"| G("存活数据") F -->|"未存活"| H{"数据销毁"} G --> I{"统计聚合与图标Hash"} I --> J{"AI 反思机制"} J -->|"数据优化"| K{"AI 联动Nuclei推荐扫描策略"} K --> L{"Nuclei 执行策略"} L -->|"扫描结果反馈"| M{"策略再优化循环"} M --> N{"输出结果"}

数据处理流程详解

从用户发起请求开始,系统的运行过程主要包括以下步骤:

  1. 请求初始化:用户通过命令行或API发送请求。
  2. 参数校验:校验请求参数的完整性和合法性,确保后续的数据采集能顺利推进。
  3. 数据采集:FOFA 数据库是 FofaMap 的数据源,提供最核心的数据支持。
  4. 数据解析与存活检测:采集的数据通过分析后进行存活检测,过滤无效数据并进行存活数据标识。
  5. 分析聚合与图标Hash:聚合数据便于进一步分析,并生成对应的图标哈希值,作为后续判断挖掘依赖信息的一个具体指向。
  6. AI 反思机制与自我优化:基于AI模型的持续进化分析数据分析效果,智能决策最佳调查扫描策略。

功能亮点与差异

FofaMap 的核心亮点在于其AI驱动结果自优化机制。内置AI系统不仅能够执行初始查询,而且能够根据查询结果中的反馈输出智能调整,自动提升查询的精度与效率,这一特点在复杂网络环境中尤为适用。

相比竞品的优势

  • 智能化程度高:集成 AI 平台,实现自动调优与策略推荐。
  • 全自动化:内部流程从数据采集到结果输出完全自动化,减少人工干预。
  • 原有功能继承:保留了 FOFA 数据采集、统计聚合等多项核心功能。

应用场景与落地建议

使用 FofaMap 训练和运维时,应结合具体业务场景选择合适的部署方式。它适用于网络安全测试、漏洞探测等多项任务。但在投入生产环境前,需确保数据诚信并完善异常防护和数据处理流程,以防止潜在的数据泄露或存储问题。

综合评价

FofaMap v2.0 的发布标志着红队资产测绘进入了智能化和自动化的新阶段,可以说是现代网络安全工具箱中的重要一环。当然,机遇与挑战并存,使用 FofaMap 必须密切监控其数据安全性能,优化内部AI元件性能,并保持其依赖的 FOFA 数据源的更新。总体而言,FofaMap 带来了极高的工作效率及价值挖掘潜力,适合快速效能考查和决策依赖强的业务场景。

简要分析

热度分
863
价值分
437
活跃状态
活跃

语言占比

Python

Release

README

FofaMap_V1.0.1

uugai com_1640828840556

FofaMap是一款基于Python3开发的跨平台FOFA数据采集器。用户可以通过修改配置文件,定制化的采集FOFA数据,并导出生成对应的Excel表格。

一.安装说明

1.工具使用Python3开发,请确保您的电脑上已经安装了Python3环境。

2.首次使用请使用 python3 -m pip install -r requirements.txt 命令,来安装必要的外部依赖包。

3.fofa.ini为Fofamap的配置文件,可以通过修改配置文件内容来定制化采集FOFA数据。

4.在使用该工具前,请先填写用户信息**[userinfo]中的email和key**,fofa.ini配置文件说明如下:

[userinfo]#用户信息
#注册和登录时填写的email
email = [email protected]
#会员到个人资料可得到key,为32位的hash值
key = 001xxxxxxxxxxxxxxxxxxxxx8b2dc5

[fields]#查询内容选项
#默认查询内容为:ip、端口、网站标题、国家和城市
fields = ip,port,title,country,city

#fields可选项有:['host', 'title', 'ip', 'domain', 'port', 'country', 'province', 'city', 'country_name', 'header', 'server', 'protocol', 'banner', 'cert', 'isp', 'as_number', 'as_organization', 'latitude', 'longitude', 'structinfo','icp', 'fid', 'cname']


[page]#查询页数
#查询启始页数
start_page = 1
#查询结束页数
end_page = 2

5.不同用户使用Fofamap调用FOFA全网资产收集与检索系统API查询次数如下:

企业会员 免费前100,000条/次

高级会员 免费前10000条/次

普通会员 免费前100条/次

注册用户 1F币(最多10,000条)/次

用户可以根据自己的账号类型设置对应的查询页数。

6.项目文件结构:

├── README.md ##使用说明
├── fofa.ini ##fofa配置文件
├── fofa.py  ##fofa api调用类
├── fofamap.py  ##fofamap主程序
└── requirements.txt  ##依赖包要求

二.使用方法

1.-q 使用FOFA查询语句查询数据

关于命令说明:

如果用户想要使用fofa联合查询语句,例如:app=“grafana” && country=“US”。

Linux和macOS用户直接使用python3 fofamap.py -q 'app=“grafana” && country=“US”'即可成功查询。

Windows用户因为系统原因,需要使用python3 fofamap.py -q "app=\“grafana\” && country=\“US\”"系统才可成功识别,即Windows用户需要对查询命令内部的"使用\进行转义,否则系统识别错误。

$ python3 fofamap.py -q 'title="Apache APISIX Dashboard"'
image

2.-o 自定义输出文件名[默认为fofa.xlsx]

$ python3 fofamap.py -q 'title="Apache APISIX Dashboard"' -o 结果.xlsx
image

输出的结果.xlsx内容如下:

image

3.-s 输出扫描格式

使用输出扫描格式功能时,系统只会获取目标ip地址和端口号两个字段,并自动做去重处理,输出结果同时会自动保存为txt文件,方便大家导出到扫描器进行扫描。

$ python3 fofamap.py -q 'title="Apache APISIX Dashboard"' -s  
image

4.通过修改配置文件,控制输出内容

我们可以通过修改fofa.ini配置文件中的fields值来控制工具输出的顺序与字段。 例如:我们将fields = ip,port,title,country,city改为fields = protocol,ip,port,title,icp。 image

接着执行以下命令

$ python3 fofamap.py -q 'app="discuz"'   

输出内容就会变为协议、IP地址、端口、网站标题、ICP备案号。 image


本工具仅提供给安全测试人员进行安全自查使用 用户滥用造成的一切后果与作者无关 使用者请务必遵守当地法律 本程序不得用于商业用途,仅限学习交流


FofaMap由Hx0战队开发维护

image

更新日志 1.0.1

[+] 优化代码逻辑,修复已经BUG。

[+] 优化输出样式,命令行输出结果将以表格形式展示。

[+] 扫描模式输出结果将自动进行去重处理,并会自动将结果保存为txt文档。

评论

暂无评论