depthsecurity/RelayKing-Depth

GitHub: depthsecurity/RelayKing-Depth

一款针对 Active Directory 环境的综合 NTLM 中继检测与枚举工具,用于全面识别域内的中继攻击机会并生成可操作的目标列表和攻击路径报告。

Stars: 320 | Forks: 28

# RelayKing v1.10 ### 统御域。中继称王。 ![](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/23b3c895cc042716.png) **RelayKing** 是一款综合性的中继检测和枚举工具,旨在识别 Active Directory 环境中的中继攻击机会。提供实用的报告选项,全面覆盖攻击面。发现隐藏的中继向量,并以您最喜欢的输出格式生成报告。为 Impacket 的 ntlmrelayx.py 提供经过筛选的、可中继主机的检测目标列表。绝不再错过域中任何关键且可利用的 NTLM 中继路径。 ## 博客/推荐阅读: 有关更多详细信息,请参阅在 Depth Security 网站上发布的相关博客:https://www.depthsecurity.com/blog/introducing-relayking-relay-to-royalty/ ## 目录 - [博客/推荐阅读](#blogrecommended-reading) - [使用前必读](#read-before-using) - [OPSEC 注意事项](#opsec-considerations) - [功能特性](#features) - [协议检测](#protocol-detection) - [高级检测](#advanced-detection) - [中继路径分析](#relay-path-analysis) - [目标选项](#targeting-options) - [输出格式](#output-formats) - [杂项功能](#misc-features) - [安装](#installation) - [使用说明](#usage) - [命令行选项](#command-line-options) - [示例](#examples) - [功能说明](#functionality-notes) - [性能](#performance) - [分组](#grouping) - [功能行为说明](#feature-behavior-notes) - [待办事项](#to-do) - [当前已知错误/限制](#current-known-bugslimitations) - [提交 Issue/拉取请求](#submitting-issuespull-requests) - [Issues](#issues) - [Pull Requests](#pull-requests) - [致谢](#credits) - [免责声明](#disclaimer) - [许可证](#license) ## 使用前必读: ### OPSEC 注意事项: **RelayKing 在某些模式下(尤其是在 `--audit` 模式下)绝对不是一个对 OPSEC 友好的工具。 **RelayKing 按“原样”提供,不作任何保证。请参阅 readme 底部。 ## 安装 ``` # 使用 venv。省去不必要的麻烦。 # Clone repo: git clone https://github.com/depthsecurity/RelayKing-Depth.git #Navigate to cloned dir: cd RelayKing-Depth/ # 配置 Python venv: virtualenv --python=python3 . source bin/activate # 安装 deps: pip3 install -r requirements.txt # 验证 RelayKing 安装是否成功: python3 relayking.py -h ``` ### 协议检测 - **SMB/SMB2/SMB3**:签名要求,通道绑定,版本检测 *(无需身份验证)* - **HTTP/HTTPS**:EPA/CBT 强制执行 *(可靠的 HTTPS 检查需要身份验证)* - **LDAP/LDAPS**:签名要求,通道绑定 *(可靠的 LDAPS CBT 检查需要身份验证)* - **MSSQL**:EPA 强制执行 *(可靠检查需要身份验证)* - **RPC**:MS-RPC 端点枚举,身份验证要求 *(可靠检查需要身份验证)* - **WINRM/WINRMS**:WS-Management,EPA 强制执行,通道绑定 *(需认证检查)* (**开发中**) - **SMTP**:NTLM 身份验证检测,STARTTLS 支持 (**开发中**) - **IMAP/IMAPS**:NTLM 身份验证,加密邮件访问 (**开发中**) ### 高级检测 - **NTLM 反射**:识别易受 NTLM 反射攻击的主机 (CVE-2025-33073) - **CVE-2025-54918**:检测未打补丁的 Windows Server 2025 主机,这些主机易受通过 PrintSpooler RPC 强制调用至 LDAPS 的 NTLM 反射攻击。在任何未打补丁的 Server 2025 主机上报告为 MEDIUM;当主机是启用了 PrintSpooler 的 DC 时,升级为 CRITICAL。通过从注册表查询的 UBR (Update Build Revision) 进行检查。 - **CVE-2019-1040 (Drop the MIC)**:检测 UBR 低于 2019 年 6 月补丁阈值的主机,从而允许使用 ntlmrelayx 的 `--remove-mic` 剥离 MIC 字段进行跨协议中继 (SMB 到 LDAP/LDAPS)。报告为 HIGH。使用每台主机已查询的 UBR,无额外的网络请求。 - **Ghost SPN 检测**:在 `--audit` 模式下,查询 Active Directory 中主机名没有 DNS 记录的 Service Principal Names。攻击者可以注册缺失的 DNS 名称,以拦截发往该服务主体的 NTLM 身份验证。发现结果分为 *易受攻击* (根本没有 DNS 记录) 和 *可能易受攻击* (仅通过通配符 DNS 解析)。报告为 MEDIUM。完整的发现结果将写入 `possible-ghost-spns.txt`。使用 `--no-ghosts` 可抑制此检查。 - **WebDAV/WebClient**:检测运行了 WebDAV WebClient 服务的主机 - **NTLMv1 支持**:检查 NTLMv1 身份验证支持 (单独或 GPO 级别) - **强制漏洞**:检测未经身份验证的 (如果指定) PetitPotam、PrinterBug、DFSCoerce ### 中继路径分析 - 自动识别可行的中继攻击路径 (功能已实现,需进一步完善) - 按影响优先排序路径 (严重、高、中、低) - 跨协议中继检测 (需要 `--ntlmv1` 或 `--ntlmv1-all` - 仅在确认发现 Net-NTLMv1 使用时进行跨协议检测) - NTLM 反射路径 (包括部分 MIC 移除路径/跨协议中继) - CVE-2025-54918 路径:在任何未打补丁的 Server 2025 主机上为 MEDIUM,在启用了 PrintSpooler 且未打补丁的 DC 上为 CRITICAL - CVE-2019-1040 路径:HIGH,通过 MIC 剥离实现 SMB 到 LDAP 的跨协议中继 (`--remove-mic`) - Ghost SPN 路径:MEDIUM,报告中最多显示 5 个,完整输出位于 `possible-ghost-spns.txt` 中 - 严重性评级逻辑正在开发中,欢迎提交 PR 进行升级/改进!目前并未 100% 涵盖所有情况/场景 - 目标是覆盖所有可能的原语。 ### 目标选项 - **Active Directory 审计 `(--audit)`**:通过 LDAP 从 AD 枚举所有计算机。需要低权限 AD 凭据和环境中的 *可用 DNS*。可通过 `--dc-ip` 强制指定或编辑 `/etc/resolv.conf`。 - **文件输入**:从文本文件加载目标 - **CIDR 表示法**:扫描整个子网 (例如,`10.0.0.0/24`) - **IP 范围**:扫描 IP 范围 (例如,`10.0.0.1-254`) - **单个主机**:定位特定主机或 FQDN (`python3 relayking.py -u blah -p pass -d domain.local <你的目标IP或主机名>`) ### 输出格式 - **Plaintext**:包含详细发现结果的可读文本输出 - **JSON**:用于程序化分析的结构化数据 - **XML**:层次化数据格式 - **CSV**:与电子表格兼容的格式 - **Grep-able**:每行一个结果的格式,易于解析 - **Markdown**:文档就绪格式 ### 杂项功能 - **大规模强制调用**:结合 `--coerce-all`、`--audit` 和低权限凭据,强制调用域内的每一台计算机以进行大规模计算机账户中继。在启用了 Net-NTLMv1 的环境中极为有用。 - **Net-NTLMv1 发现**:使用 `--ntlmv1` 或 `--ntlmv1-all` 检测域级别的 LanMan GPO。`--ntlmv1-all` 使用 RemoteRegistry 检查来自 AD 的所有主机及其注册表值。**(需要本地管理员权限)**。 - **中继列表生成**:使用 `--gen-relay-list <文件>` 为 ntlmrelayx.py 的 `-tf` 开关生成可直接导入的目标文件。 - **Ghost SPN 检查**:在存在凭据的情况下,于 `--audit` 模式中自动运行。使用 `--no-ghosts` 可抑制此功能。完整的发现结果将与主报告一起写入 `possible-ghost-spns.txt`;报告本身仅显示前 5 个结果以避免杂乱。 - **灵活的 Kerberos 认证功能**:通过 `-k (以及用于 `--dc-ip` 的 FQDN) 进行的 Kerberos 认证应该工作得相当好。如果环境中的域控制器完全禁用了 NTLM,但在其他所有地方都允许使用,您可以使用 `--krb-dc-only`,这样它就不会干扰任何检查。此外,还提供了 `--dns-tcp` 和 `-ns`,用于通过 SOCKS/其他代理跳板进行的工作。在这种情况下,Kerberos 也能非常轻松地工作。 ## 使用说明 #### 如预期般使用 `-h` 打印命令行参数/用法: ``` python3 relayking.py -h ``` ### 示例 #### 用于全网覆盖的推荐使用参数 + 将扫描报告输出为 Plaintext 和 JSON: ``` python3 relayking.py -u ‘lowpriv’ -p ‘lowpriv-password’ -d client.domain.local --dc-ip 10.0.0.1 -vv --audit --protocols smb,ldap,ldaps,mssql,http,https --threads 10 -o plaintext,json --output-file relayking-scan --proto-portscan --ntlmv1 --gen-relay-list relaytargets.txt ``` #### 不检查 HTTP(S) 的轻度认证扫描 + 将扫描报告输出为 Plaintext 和 JSON: ``` python3 relayking.py -u ‘lowpriv’ -p ‘lowpriv-password’ -d client.domain.local --dc-ip 10.0.0.1 -vv --audit --protocols smb,ldap,ldaps,mssql -o plaintext,json --output-file relayking-scan --proto-portscan --gen-relay-list relaytargets.txt ``` #### 单目标认证扫描 (单目标 = 位置参数,最后一个参数) + 仅以纯文本形式将报告输出到 stdout: ``` python3 relayking.py -u ‘lowpriv’ -p ‘lowpriv-password’ -d client.domain.local -vv --protocols smb,ldap,ldaps,mssql,http,https -o plaintext SERVER1-EXAMPLE.LAB.LOCAL ``` #### 以 CIDR 范围为目标的未经身份验证的扫描 + 无报告文件/仅以纯文本形式输出到 stdout: ``` python3 relayking.py --null-auth -vv --protocols smb,ldap,http -o plaintext 10.0.0.0/24 ``` #### 完整审计,通过 RemoteRegistry 检查所有主机的 Net-NTLMv1 (操作繁重): ``` python3 relayking.py -u ‘lowpriv’ -p ‘lowpriv-password’ -d client.domain.local --dc-ip 10.0.0.1 -vv --audit --protocols smb,ldap,ldaps,mssql,http,https --threads 10 -o plaintext,json --output-file relayking-scan --proto-portscan --ntlmv1-all --gen-relay-list relaytargets.txt ``` ## 功能说明: ### 性能 * 默认有 10 个主要的扫描线程/作业,可通过 `--threads` 指定。每个主线程针对其下的某些任务会获取工作线程。例如,HTTP 为每个主线程使用 20 个线程。这会导致打开约 200 个 HTTP 线程来扫描 HTTP NTLM 认证。大多数情况下,这能被很好地容忍,但如果它导致了延迟/网络问题,请减少线程数。默认的 10 个线程本身就异常快速。 * 您可能几乎总是希望在所有扫描中使用 `--proto-portscan`。它显著提高了性能,并防止扫描器在不存在的端口上等待超时。如果它引起了问题,您可以移除它,但这会牺牲扫描性能 (但通常不应该会引起问题!) ### 分组 * 可以通过将主机划分为组来进行分组扫描。可以使用选项 `--max-scangroup`、`--split-into` 和 `--skip` 来控制分组。 - 您可以指定 `--max-scangroup` 来设定每个组的目标数量。例如,`--max-scangroup 100` 会将 299 个目标分成 3 组。各组的目标数分别为 100、100 和 99。 - 您可以指定 `--split-into` 来设定分组的数量。例如,`--split-into 3` 会将 299 个目标分成 3 组。各组的目标数分别为 100、100 和 99。您不能同时指定 `--max-scangroup` 和 `--split-into`。 - 您可以指定 `--skip` 来跳过某些组。例如,`--max-scangroup 3 --skip 1` 会将 299 个目标分成 3 组 (目标数分别为 100、100 和 99),并跳过第一组,然后从第二组开始扫描。当您想重新启动此工具时,这会很有帮助。 ### 功能行为说明: * `--ntlmv1` 或 `-ntlmv1-all`:添加 `--ntlmv1` 将仅拉取域的所有 LanMan GPO 而不做其他操作。需要低权限 AD 凭据。`--ntlmv1-all` 需要管理员凭据,并将检查 **域中开放了 SMB 的每一个独立主机** 的 LMCompatibilityLevel 注册表项。至少运行 `--ntlmv1` **是显示/检测跨协议 SMB 中继路径所必需的**。 * RemoteRegistry 被禁用会导致 `--ntlmv1-all` 出现卡顿。这也非常繁重且对 OPSEC 不安全,但很彻底。除非您打算放手一搏或走投无路,否则可能不推荐使用。 * **多种格式的输出**。以逗号分隔的表示法提供格式 (`-o json,plaintext`),加上 `--output-file relayking-scan` 会生成 relayking-scan.json + relayking-scan.txt,因此无需为了多种格式而运行两次。可用格式:`plaintext, json, xml, csv, grep, markdown` (**默认: plaintext**) * `--coerce-all` 功能将对所有目标主机使用 PetitPotam、DFSCoerce 和 PrinterBug。它还会在不运行完整协议审计的情况下,强制调用域每一台机器。**同时**提供 `--audit` + `--coerce` 将执行域审计 **并且** 进行大规模强制调用。(**操作繁重**) * **Ghost SPN** (仅限 `--audit` 模式):主机扫描完成后,RelayKing 会查询 AD 中主机名没有 DNS 记录的 SPN。这些是用于 DNS 注册攻击的候选对象,可拦截 NTLM 身份验证。报告最多包含 5 项发现以保持输出易于管理;完整列表始终会写入工作目录的 `possible-ghost-spns.txt` 中。传递 `--no-ghosts` 可完全跳过此检查。 * **CVE-2025-54918**:通过在扫描期间已从每台主机注册表读取的 UBR (Update Build Revision) 进行检查。未打补丁的 Server 2025 主机 (内部版本 26100,UBR < 6584) 报告为 MEDIUM。如果该主机还是启用了 PrintSpooler 的 DC,严重性则升级为 CRITICAL。 * **CVE-2019-1040 (Drop the MIC)**:同样由 UBR 驱动,无额外网络流量。低于 2019 年 6 月补丁阈值的主机被标记为 HIGH,并被确定为使用 ntlmrelayx 的 `--remove-mic` 标志进行跨协议中继的候选对象。 ## 待办事项 * 更多测试 (您可以提供帮助) * Shell 文件强制调用投递器 + 清理。(需要特定功能 - 如果您想添加此项,请直接联系) * 创建使用 Wiki * Kerberos 中继 + 路径。创建围绕所有 krb 中继技术 (包括反射) 的逻辑。 * 潜在的 `--opsec-safe` 模式,以避免使用 Impacket/其他被指纹识别的 Python 库。实现起来并非易事。 ## 当前已知错误/限制 * 由于多个附属工具和功能都在对 LDAPS 进行各自的查询,导致在未将它们整合而各自为政的情况下,产生了绝对疯狂的逻辑。目前我认为 --ntlmv1、凭据验证器、ghost SPN 模块以及目标分析器都各自为认证做着独立的事情。这绝对荒谬,需要整合为使用一个单一的认证模块。 * LDAP 签名和通道绑定的各种组合可能还会引发其他愚蠢的怪癖。 * 在最新的 Server 2025 / Win11 版本上,RPC 存在严重的糟糕问题。需要修复。 * 难以解释的 HTTP(S) 服务极端边界情况,会导致误报/漏报结果。 ## 提交 Issue/拉取请求 ### Issues * 提交的 Issue 中如果包含没有任何详细信息的错误/工具故障 ("这不能用"/"为什么不能用") 将被关闭。 * 一般而言,如果您遇到错误,请使用 `-vv` 或 `-vvv` 运行该工具。日志记录在每次版本更新中都在不断改进。 * 在提交 Issue 时,强烈希望提供尽可能多的详细信息,以便进行调试/故障排查。请从调试输出中涂黑任何敏感信息,例如客户端/目标域、机器名称以及任何其他敏感信息。您绝不会希望将您客户的中继骨架泄露给全世界。 * 产生问题/错误/异常行为的参数用法也是必需提供的。 * 由用户错误或配置损坏、错误的环境引起的问题将被审查并可能被关闭。**例外**情况是工具**本应**优雅地处理某个环境特有的异常,但在遇到时却未能运行/抛出异常和堆栈跟踪。这些情况应该相当明显。以下是用户错误/糟糕网络设置的示例: * 例如,您运行了 `--audit`,但 RelayKing 无法在 DNS 中解析任何主机,因为它们的 DNS 服务器就是拒绝解析目标 DNS 区域中的计算机 FQDN。这不是 RelayKing 的问题。 * 或者,例如,未能确保测试主机上的 DNS 配置正确 (通过验证 /etc/resolv.conf),然后导致内容无法正确解析 - 这不是 RelayKing 的问题。 * 任何其他属于 PEBKAC (存在于键盘和椅子之间的问题) 的情况。 ### Pull Requests: * 欢迎随时提交 PR。新功能、改进以及能提升性能/整体逻辑的重构都是令人期待的。 * 功能请求可以通过 PR 提交。功能描述、具体行为以及潜在的用法标志/参数通常是考虑实现的最低要求。 * PR 应该经过彻底测试,最好在提交之前于多个环境中进行。我们会在合并之前测试 PR,但在独特环境中的测试越多 (尤其是在重大更改/重构之后) = 越好。我希望保持 RelayKing 的可靠性、稳健性和高性能 - 这就必须进行广泛的测试。 ## 免责声明 **按“原样”提供。必然存在许多错误。见上文。显然,并非为非法/未经授权的活动而设计或意图使用。** **请考虑您在客户项目中及其网络上运行的所有工具的行为与性质。这需要通过阅读工具源代码并在执行前了解其内部工作原理来实现,而不是盲目执行您在 GitHub 上找到的代码。虽然我可以向您保证 RelayKing 内部没有故意恶意的/破坏性的代码,但在运行所有新颖/未使用的工具之前对其进行验证,通常来说是一个好习惯。信任,但要始终验证。** **在红队演练中请谨慎使用,特别是使用认证检查和 `--audit` 时。您肯定会被发现,并且这将是您自己的责任!如果您不知怎么读到了这句话却还不知道这一点,您应该去读一读 README 顶部的警告。** **虽然极不可能/极不可思议,但如果 RelayKing 以某种方式造成了破坏,您需自行承担后果,且作者或 Depth Security 对执行 RelayKing 可能引发的任何结果/问题/麻烦/颠倒地理空间的比特翻转核爆炸 (无论多么不可能) 概不负责。您的实际效果可能有所不同。再次声明,RelayKing 的提供不针对任何特定结果、功能、实用性或行为提供任何保证或 warranties —— 无论是此处 (和/或未) 明确提及的还是以其他方式暗示的。** **由作者 (logansdiomedi) 创建的唯一合法 GitHub 仓库位于 https://github.com/depthsecurity/RelayKing-Depth - 所有其他均为分叉/副本/其他任何内容,作者可能并未阅读、验证、测试、分析或检查过其功能/行为/合法性。请动动脑筋。** ## 许可证 MIT 许可证 - 有关详细信息,请参阅 LICENSE 文件
标签:Active Directory, AD域安全, Checkov, CTF学习, HTTP, Impacket, ntlmrelayx, NTLM中继攻击, Plaso, RelayKing, Terraform 安全, 中继检测, 企业安全, 内网渗透, 协议分析, 域控制器, 插件系统, 权限提升, 枚举工具, 红队评估, 网络安全, 网络资产管理, 聊天机器人, 逆向工具, 隐私保护