BBOT - 一个面向黑客的开源 OSINT 自动化框架
2022-8-23 12:58:43 Author: mp.weixin.qq.com(查看原文) 阅读量:163 收藏

开卷有益 · 不求甚解


前言

BBOT 是您一直在等待的 OSINT 工具。在单个命令中,它可以执行子域枚举、端口扫描、网页截图、漏洞扫描等。

安装 BBOT

子域演示

运行BBOT

Black Lantern Security,我们做了很多 OSINT。在某种程度上,OSINT 是我们所做的一切的基础。它是每种参与类型之间的共同点,无论是红队、攻击面评估还是通常的渗透测试。如果你想破解一些东西,你首先必须找到它。

从历史上看,当谈到 OSINT 时,我们每个人都有自己最喜欢的工具和流程。很长一段时间以来,我们都坚持自己的方法,因为我们都无法就哪种工具最好达成一致,而且旧习惯很难改掉。

但最终,我们开始看到我们的 OSINT 由于这种分散的方法而受到影响。有些工具擅长某些事情,有些工具擅长其他事情,但没有一种工具或工具能擅长一切,也没有一种工具能够以一种有凝聚力的方式组合在一起。

因此,我们开始设想一种提高我们能力的方法,将我们的努力集中到一个我们都可以使用和信任的工具中——一个可以取代其他一切的工具。这就是我们打算用 BBOT 创造的东西。

但是已经有很多可用的 OSINT 框架。为什么选择BBOT?

BBOT 是多年手动 OSINT 收集经验的结晶。简而言之,它解决了很多问题。但在这里,我将尽量保持简短,指出将 BBOT 与其他工具区分开来的要点。

伟大的。让我们开始吧。

大多数工具对 OSINT采取分阶段的方法。结合一堆杂项命令行工具的输出,对其进行排序、清理和唯一化,然后将其输入下一组工具,对其进行排序、清理和唯一化,然后重复。

传统工作流程

传统 OSINT 工作流程

这样做有什么问题?

问题是分阶段的方法有****遗漏事情的倾向。

想象一下,您正在枚举 evilcorp.com 的子域。您的阶段可能如下所示:

  1. 查询一堆子域 API 并进行大型 DNS 暴力破解
  2. 合并前两个步骤中的子域,将它们解析为 IP 地址,然后再次将 IP 地址解析回域
  3. 在每个主机上执行端口扫描
  4. 访问 HTTP/HTTPS 上的开放端口并解析更多子域的结果
  5. 访问 SSL 证书的开放端口并解析更多子域的结果
  6. 最后,清理和重复数据删除到最终列表中,确保过滤掉诸如通配符 DNS 条目之类的麻烦垃圾。

如果你自己做过任何 OSINT,你可能已经看到了问题。如果第 5 步产生了一个您在第 3 步中没有的唯一子域怎么办?子域可能还有其他好处,例如 PTR 记录、开放端口和网页。您是否应该返回第 3 步并再次运行端口扫描?您是否应该返回第 2 步并再次解决它?还是应该一直回到第 1 步并再次运行蛮力?

问题是这些步骤中的每一个都依赖于前一步的输出,这意味着如果您的目标是尽可能多地找到,那么仅执行一次是不够的。您必须一次又一次地重复这些步骤,每次都将它们的输出反馈到开头。

关键是 OSINT 根本不适合线性工作流程。BBOT 使用Recursion解决了这个问题,这是它的特征。

递归模块

BBOT 改进的 OSINT 工作流程

BBOT 的模块不是分阶段工作,而是在发现结果时不断地实时相互提供结果。不使用阶段,因为每条新发现的信息都会立即采取行动,反馈到机器中并用于继续发现过程。这允许发现分阶段方法无法发现的遥远且隐藏良好的金块。

您可能会从Spiderfoot认出这个递归模型。值得一提的是,在 BBOT 之前,Spiderfoot 是我选择的工具,我在这里了解到递归方法对 OSINT 的价值。Spiderfoot 是一款出色的工具,我希望它成为 Black Lantern Security 的一站式 OSINT 工具。但是,最终,它无法满足我们的要求,而我的努力反而导致了全新事物的发展。

图形

Neo4j 图形输出

BBOT 原生支持输出到 Neo4j。其他输出格式包括 JSON、CSV、TXT、HTTP、Websockets 等。您甚至可以一次输出到多个目的地。

输出到同时目的地

BBOT 有超过 50 个模块并且还在增加。模块是用 Python 编写的,每个模块都有自己的.py文件。模块很容易编写,并且它们有大量的辅助函数可供使用,以帮助它们做到最好:

  • 内置线程和并行化
  • 零努力的数据清理和重复数据删除
  • 自动依赖安装(稍后会详细介绍)
  • 用于查找 SSRF 和其他网络好东西的 Interact.sh 集成
  • 用于 DNS 枚举、bucket brute-forcing、dirbusting 等的智能目标特定词表(稍后会详细介绍)
  • 通过 CLI 或 BBOT 的 YAML 配置文件配置选项

示例模块:mymodule.py

BBOT 接受来自文件和直接通过命令行的无限目标。目标可以是不同的类型,例如 IP 地址、DNS 名称、子网等。

BBOT 目标命令

还支持白名单和黑名单,从而实现对渗透测试和漏洞赏金目标的精细范围控制。

BBOT 白名单和黑名单能力

BBOT 使用Ansible自动化模块依赖。当您安装 BBOT 时,您pipx install就可以了。无需摆弄第三方工具和依赖项。即使模块需要特殊的二进制文件或特定的操作系统包,BBOT 也会为您安装。

BBOT 依赖处理模块

词云

BBOT 目标特定词云

在每次扫描期间,BBOT 从 DNS 名称、网页等中收集特定于目标的关键字,并将它们编译成所有模块都可以访问的共享词表。该词表保存在每次扫描结束时,可用于密码破解等,或在后续扫描中重复使用。

BBOT 的massdns模块广泛使用词云进行子域暴力破解。但是这种类型的数据对于各种其他任务都很有用,例如 dirbuster 和存储桶枚举。

词云输出

Scope Distance 是 BBOT 的一项独特功能,可让您控制 BBOT 探索的距离。由于 BBOT 是递归的,它需要有一个“退出条件”(即一种告诉它何时停止搜索的机制)。这就是 Scope Distance 的用武之地。每条新发现的数据(BBOT 术语中的“事件”)都被分配了一个范围距离,表示它与主范围的距离。

默认情况下,BBOT 搜索距离您定义的目标最多一跳,虽然它的 DNS 解析爬出三跳,但它只会在找到范围内的内容时输出数据。当然,所有这些设置都可以通过bbot.yaml.

BBOT 的扫描仪和模块可通过单个 YAML 文件进行配置。这是您放置 API 密钥等内容的地方。

可自定义的 YAML 文件

最后

我们希望您和我们一样对 BBOT 感到兴奋。但是,你为什么还在阅读它?去试试吧!

https://github.com/blacklanternsecurity/bbot [2]

请务必继续关注更多 BBOT 内容,包括现场演示以及与其他 OSINT 工具的正面比较。

译文申明

  • 文章来源为近期阅读文章,质量尚可的,大部分较新,但也可能有老文章。
  • 开卷有益,不求甚解,不需面面俱到,能学到一个小技巧就赚了。
  • 译文仅供参考,具体内容表达以及含义, 以原文为准 (译文来自自动翻译)
  • 如英文不错的,尽量阅读原文。(点击原文跳转)
  • 每日早读基本自动化发布(不定期删除),这是一项测试

最新动态: Follow Me

微信/微博:red4blue

公众号/知乎:blueteams



文章来源: http://mp.weixin.qq.com/s?__biz=MzU0MDcyMTMxOQ==&mid=2247487055&idx=3&sn=1316f18b645710a825eb047663db7f20&chksm=fb35a787cc422e91ecd79ac238f3c57786a4a2f966008e5368f04357563fda088004e5cdecd4#rd
如有侵权请联系:admin#unsafe.sh