收集 收集 收集

Jackdaw 旨在收集你域中的所有信息,将其存储到 SQL 数据库中,并以精美的图形展示域对象之间的交互关系,以及潜在攻击者可能如何利用这些交互。 它还附带一个便利的功能,可帮你处理密码破解项目:存储/查找/报告哈希/密码/用户。
dbinit 创建一个初始空数据库enum。在 Windows 上可以双击可执行文件或输入 jackdaw.exe auto 自动完成。nest 来启动 Web 界面。默认情况下,它提供在 http://127.0.0.1:5000/nest,还有一个 SWAGGER 文档化的 API 在 http://127.0.0.1:5000/ui。本部分将根据用户反馈定期更新。
这里没有建议,虽然代码层面可以做一些改进,但通用方法无法提供更多帮助。
每个图形都必须(且仅需一次)生成图形数据缓存文件。使用默认的 SQLAlchemy 工具可能需要较长时间。
如果你使用 SQLite 后端,并将 sqlite3 命令行工具放在 PATH 环境变量中,性能将显著提升(速度提高 50 倍以上,内存减少 20 倍)。我向所有用户推荐此做法。
这里存在一个重大的权衡。Jackdaw 的早期实现使用 networkx 模块作为图形后端,因为它完全用 Python 编写。但这带来了非常显著的内存和速度开销。为了让 Jackdaw 保持纯 Python,该选项仍然保留,但默认使用 igraph 后端。
注意:igraph 是一个带有 Python 绑定的 C++ 库。它提供了 Windows 和主流 Linux 发行版的预编译 wheel 包,但如果你在其他平台(嵌入式系统/移动设备/Web 浏览器)上使用 Jackdaw,你需要切换回 networkx,或者忍受长达数小时的编译时间。
无需预先初始化数据库,它会自动完成。
使用已分发的二进制文件,只需双击 jackdaw.exe
作为 Python 脚本运行:jackdaw auto
jackdaw --sql sqlite:///<完整路径>/test.db dbinit
在 Linux 系统中,<完整路径> 包含开头的 /,因此文件名前会有四个 //// 斜杠。别被吓到。
jackdaw --sql sqlite:///test.db enum 'ldap+sspi-ntlm://<域>\<占位符>@10.10.10.2' 'smb+sspi-ntlm://<域>\<占位符>@10.10.10.2'
密码为 Passw0rd!
jackdaw --sql sqlite:///test.db enum 'ldap+ntlm-password://TEST\victim:[email protected]' 'smb+ntlm-password://TEST\victim:[email protected]'
密码为 Passw0rd!
jackdaw --sql sqlite:///test.db ldap 'ldap+ntlm-password://TEST\victim:[email protected]'
jackdaw --sql sqlite:///<数据库完整路径> nest
打开 http://127.0.0.1:5000/ui 访问 API
请参阅下面的“构建 UI”部分,了解如何构建 UI。构建完成后:
打开 http://127.0.0.1:5000/nest 访问图形界面(显示图形,但远非完全可用)
LDAP 枚举阶段获取 AD 信息、用户、计算机、OU、组对象的数据,这些对象将在图中表示为节点,在数据库中表示为单独的表。此外,所有上述对象的安全描述符将被解析,DACL 的 ACL 信息将添加到数据库。这些信息连同成员资格信息将在图中表示为边。此外,必要时可以对任何上述数据类型执行自定义 SQL 查询。
SMB 枚举阶段通过连接到域中的每台计算机(通过 LDAP 获取)来获取共享、本地组、会话和 NTLM 数据。
Kerberos 模块自动执行 Kerberoasting 和 AS-REP Roasting。
该框架允许用户上传 LSASS 内存转储,以存储凭据并扩展会话信息表。两者都将作为图中的附加边使用(分别为共享密码和会话)。框架还利用这些信息生成关于弱/共享/已破解凭据的密码报告。
该框架允许用户上传 Impacket 的 DCSYNC 文件以存储凭据。这些凭据将作为图中的附加边使用(共享密码)。框架还利用这些信息生成关于弱/共享/已破解凭据的密码报告。
该框架允许在各个方面手动扩展可用的数据库。例如:当发现某台计算机上的用户会话信息(不在自动枚举范围内)时,可以手动上传这些会话,这将填充数据库并更新结果图。
该框架可以根据数据库中的可用信息生成图形,并通过 Web UI(nest)绘制。此外,图形的生成和路径计算可以通过编程方式调用,既可以使用 Web API(/ui 端点),也可以使用图形对象的函数。
该框架无需生成图形即可识别常见的 AD 配置错误。目前仅通过 Web API 实现。
用户异常检测包括检测不安全的 UAC 权限和过多的用户描述值。未来随着新功能的实现,此功能集预计将扩展。
计算机异常检测包括检测不安全的 UAC 权限、非强制 SMB 签名、过时的操作系统版本、脱离域的计算机。未来随着新功能的实现,此功能集预计将扩展。
该框架不进行任何破解,仅负责整理哈希值和破解结果
目前主要关注 Impacket 和 aiosmb 的 DCSYNC 结果!仅支持 NT 和 LM 哈希!
大致流程如下:
作者注:此功能既为攻击者也为了防御者实现。就个人而言,我认为双方都没有太多附加值,因为一旦获得了用户的 NT 哈希,它和密码本身的价值差不多……尽管如此,越来越多的公司正在进行密码强度评估,此功能将对他们有所帮助。对于攻击者来说:这只是在炫耀,但请自便。也许可以吓唬管理层以获得额外分数。
该项目处于实验阶段!这意味着:
Jackdaw 使用 SQLAlchemy ORM 模块,这允许你使用任何喜欢的 SQL 数据库后端。测试主要基于 SQLite,原因显而易见。本项目不会使用任何特定后端的命令来限制你。
仅当你通过 Git 安装和/或更改了 UI 代码时才需要执行此操作
UI 使用 React 编写。在首次使用/安装前,你需要构建它。为此,你需要安装 nodejs 和 npm。然后:
jackdaw/nest/site/nuinpm installnpm run build完成上述步骤后,UI 即可使用。
“如果说我看得比别人远些,那是因为我站在巨人的肩膀上。”
BloodHound 团队
@dirkjanm (https://github.com/dirkjanm/)
Zsolt Imre (https://github.com/keymandll)