高效的数据查询和处理工具-GoFOFA

Newbee123  5天前

fofa技术分享封面.png

序章

GoFOFA是一款使用Go语言编写的命令行FOFA查询工具,它除了具备基础的FOFA API接口调用能力之外,还可以直接对数据进行下一步的处理,通过模块化的调取方式,让数据自动化从元数据到业务数据的转变。

GoFOFA融合了多种 FOFA API 调取方式,集成了丰富的实用功能点如批量搜索和下载,并针对共性需求设计了如探活检测、页面渲染、资产分类等数据处理模块。不仅如此,GoFOFA 未来也会作为FOFA一些预上线功能的试验场。

今天会针对于不同场景下使用不同功能模块做一个简单的介绍,更详细的使用方式可以通过链接https://github.com/FofaInfo/GoFOFA下载或直接用微信联系FofaBot获取。

如果您觉得这个工具还不错的话,给我们点上一个Star吧~

查询-批量查询和大数据量下载

在查询模块,除了有最基本的所有API接口的调用之外,还添加了很多实用的功能,比如批量搜索、URL拼接、证书拓线获取域名、图标多样查询和大数据量下载。

批量搜索可以解决大批量、同质化内容查询的问题,目前支持IP或者domain的批量查询。

程序可以通过调取文件中的IP,自动完成语句的拼接进行批量查询,比如查询任务为1000个IP,那么程序会自动拼接成100为1组的查询语句,共10组进行查询并自动化完成数据下载,可以大大的缩短数据调取的时间。

演示视频场景:

1000个ip的ip.txt任务文件中;

返回的1年内的所有结果都要;

获取字段包括:ip,port,host,link,title,domain;

并自动保存为一个data.csv格式文件。

fofa.exe dump -i ip.txt -bt ip -bs 50000 -f ip,port,host,protocol,lastupdatetime -o data.csv

演示视频链接

数据处理-去重

关于去重,不同的师傅有不同的去重要求,有些师傅需要通过URL进行去重、有些则需要针对于IP去重、还有需要进行泛解析去重的需求。

所以我们一次就全做出来了,既可以边查询边去重,最终结果是去重后的,也可以文件上传后进行去重。大家可以根据自己的需求进行去重操作。

URL去重

通过host字段对数据进行去重唯一值操作,因为fofa存在subdomain和service的概念,如果host相同,优先保留subdomain数据。命令参数:--dedupHost

$ fofa search -s 3 -f host,type "ip=106.xx.95.206"2024/08/28 19:49:23 query fofa of: ip=106.xx.95.206106.xx.95.206,subdomain106.xx.95.206:443,service106.xx.95.206,service$ fofa search -s 3 -f host,type --dedupHost "ip=106.xx.95.206"2024/08/28 19:52:30 query fofa of: ip=106.75.95.206https://106.xx.95.206,subdomain106.xx.95.206:443,service106.xx.95.206,subdomain

IP去重

顾名思义,输出结果中,相同IP的数据仅保留一条。命令参数-uniqByIP

fofa --uniqByIP -s 5 domain=fofa.info
2024/11/27 18:34:40 query fofa of: domain=fofa.info
163.xx.116.1,80
118.xx.38.182,443
60.xx.172.10,443
117.xx.16.112,443
120.xx.152.23,2181
106.xx.3.75,443

泛解析去重

对于相同的主域名,可以设置保留泛域名的数量,如--deWildcard 1 只保留1条数据。需要注意的是,这里的判断标准是ip,port,domain,title,fid都相同的数据为泛解析进行排除。

$ fofa search -s 3 -f link domain=huashunxinan.net
2024/08/27 17:19:04 query fofa of: domain=huashunxinan.net
http://h8huumr2zdmwgy5.huashunxinan.net
http://keygatjexlvsznh.huashunxinan.net
http://jobs.huashunxinan.net$ fofa search -s 3 -f link --deWildcard 1 domain=huashunxinan.net
2024/08/27 17:26:42 query fofa of: domain=huashunxinan.net
http://h8huumr2zdmwgy5.huashunxinan.net
https://fwtn2k7oigaiyla.huashunxinan.net
http://huashunxinan.net

数据处理-探活

探活,也是获取数据之后非常常见且共性的一个需求,该功能模块支持一边获取数据并同时进行探活输出,最终返回的数据会默认加上isActive字段,并会更新status_code的字段。

命令参数:--checkActive,加上数值则代表超时情况下的重复次数。

演示视频场景:

请求结果100条;

格式选择为json格式输出;

超时重复设置为3次。

-s 100 --checkActive 3 --format=json port=80 && type=subdomain

演示视频链接

数据处理-JS渲染识别

JS渲染模块顾名思义可以针对获取的数据中的URL字段进行JS渲染处理,处理后支持选择获取渲染后的html标签,目前支持同步获取渲染后的title、body字段。

命令参数:jsRender 选择渲染模块;-url,用来选择单个目标;-tags选择获取渲染后的标签。

注意:jsRender模块对性能要求过高,不建议随意更改workers参数

演示视频场景:

请求结果10条;

从管道中获取到的url进行渲染识别;

并标记上新获取的title字段。

jsRender -tags title --format=json -i link.txt -o data.txt

演示视频链接

数据处理-资产分类

在结果输出环节,GoFOFA支持通过关键特征对CSV文件进行分类。这一操作可以通过config.yaml配置文件来完成。

我们可以提前在config.yaml文件中设置过滤规则filter,通过内置一个contain的方法对数据进行处理并分类。

案例配置规则:

分类一名字:标题包含后台特征的可访问资产

分类二名字:标题为不为空的可访问资产

分类三名字:其他

categories:  - name: "标题包含后台特征的可访问资产"    filters:      - "CONTAIN(title, '后台') && CONTAIN(title, '登录') && status_code == '200'"      - "CONTAIN(title, '管理') && CONTAIN(title, '系统') && status_code == '200'"  - name: "标题为不为空的可访问资产"    filters:      - "title != '' && status_code == '200'"  - name: "其他"

组合演示

通过刚才上述介绍的功能模块,我们能自动化对数据做怎样的处理呢?

我们假定以下规则:

需要对一个数量为100个IP的txt文件进行批量搜索;

对数据进行host去重,且仅获取subdomain数据;

对去重后的数据进行探活处理;

存活的资产进行JS渲染识别;

对资产按照上述配置规则进行分类;

fofa.exe -f ip,port,host,link,title,protocol,status_code,lastupdatetime --headline -s 10000 --dedupHost --checkActive 3 -i ip.txt -o data.csv

演示视频链接

写在最后

在决定开源 GoFOFA 之前,我们深知社区中已经有许多优秀的 FOFA API 调取工具。比如由 WgpSec 狼组的 fofa_viewer、Xiecat的fofax、以及HxO 战队的FofaMap等。

这些工具功能强大,且深受白帽子们的喜爱。起初我们也曾认为,既然已经有这么多出色的 FOFA API 工具,似乎作为官方再开发一个类似的工具显得多余。然而,随着我们对用户需求的深入了解,发现仅仅停留在 API 数据调取远远不够。

在将数据拉取下来后,如何进行高效的二次处理,从而满足各种实际场景需求,是一个巨大的痛点。我们深知,“只有想不到,没有师傅们做不到”,各种数据处理需求层出不穷,包括我们内部在进行数据处理过程中,也实际在做各种各样的开发。

因此,我们萌生了一个想法:为什么不整合共性需求开源出来一款工具,既能高效调取数据,又能直接提供数据的二次处理能力,同时成为一个社区共创的平台?用户不仅可以体验 FOFA 的功能,还可以提出更多需求,甚至与我们一同共创未来的工具功能。我们希望通过开源 GoFOFA,让更多用户体验这款功能强大且灵活的工具,同时期待与师傅们一起将 FOFA 社区的技术创新与共创共同发展。

工具下载地址:https://github.com/FofaInfo/GoFOFA 或直接用微信联系Fofabot进行获取。如果您觉得这个工具还不错的话,求Star~

最新评论

昵称
邮箱
提交评论