FatRodzianko/Get-RBCD-Threaded

GitHub: FatRodzianko/Get-RBCD-Threaded

用于快速发现 Active Directory 环境中基于资源的约束委派攻击路径的多线程扫描工具。

Stars: 129 | Forks: 17

# 获取基于资源的约束委派-多线程 用于发现 Active Directory 环境中基于资源的约束委派攻击路径的工具 几乎完全基于 [Elad Shamir](https://shenaniganslabs.io/2019/01/28/Wagging-the-Dog.html) 的精彩博文“Wagging the Dog: Abusing Resource-Based Constrained Delegation to Attack Active Directory”以及 [harmj0y](https://www.harmj0y.net/blog/redteaming/another-word-on-delegation/) 的“A Case Study in Wagging the Dog: Computer Takeover”。如果你真的想了解这里发生了什么,请阅读这两篇博文。老实说,我自己也只理解了一半(这已经很宽容了)。 我不太擅长 C#,所以我通过阅读 [SharpSploit](https://github.com/cobbr/SharpSploit) 和 [SharpView](https://github.com/tevora-threat/SharpView) 的源代码弄清楚了如何用 C# 与域进行通信。 ## 工作原理 Get-RBCD-Thread 将查询当前域中的所有 Active Directory 用户、组(不包括“Domain Admins”和“BUILTIN\Administrators”等特权组)和计算机对象,并编译它们的 SID 列表。然后,Get-RBCD-Threaded 将查询 AD 以获取域中计算机对象上的所有 DACL。DACL 中的每个 ACE 都将被检查,以查看用户/组/计算机 SID 之一是否对计算机对象拥有“GenericAll”、“GenericWrite”、“WriteOwner”或“WriteDacl”权限,或者 SID 是否对 ms-DS-Allowed-To-Act-On-Behalf-Of-Other-Identity 属性(GUID:3f78c3e5-f79a-46bd-a0b8-9d18116ddc79)拥有“WriteProp”权限。如果是,那么,我的朋友,你正在通往基于资源的约束委派攻击的路上! ## 用法 在 Visual Studio 中编译。这使用 Parallel.ForEach 来加速搜索 DACL 对象,因此最低需要 .NET v4。 ### 选项 -u|-username=, 用于认证的用户名 -p|-password=, 用户的密码 -d|-domain=, 用于认证的完全限定域名 -s|-searchforest, 通过信任关系发现域和林。枚举所有域和林 -pwdlastset=, 基于 pwdLastSet 过滤计算机以移除过时的计算机对象。如果你将其设置为 90,它将过滤掉 pwdLastSet 日期超过 90 天前的计算机对象 -i|-insecure, 如果 LDAPS 导致连接问题,强制使用不安全的 LDAP 连接。 -o|-outputfile=, 输出到 CSV 文件。提供文件的完整路径和文件名。 -h|-?|-help, 显示帮助选项 你现在可以指定用于认证的用户名、密码和域。如果 u/p/d 选项为空,Get-RBCD-Threaded 将尝试使用你当前用户上下文向域进行认证。 -o 将输出到 CSV 文件。提供完整的文件路径和文件名以保存输出。 默认搜索指定使用端口 636 以强制 LDAPS。这可能会导致问题。**如果你收到关于服务器不可用或类似的错误,请尝试使用“-i”标志从连接字符串中移除 636 端口。** “pwdLastSet”已作为过滤选项添加。在大型环境中,你可能会遇到许多不再存在的过时计算机对象,它们作为 ACL 中的“目标”对象,并且无法真正用于 RBCD 攻击(至少据我所知)。将 pwdLastSet 设置为天数。例如:“-pwdlastset=90”将从结果中过滤掉 pwdLastSet 日期距离当前日期和时间大于或等于 90 天的任何计算机对象。 在一个拥有 20k+ 用户、组和计算机(总计超过 60k 个对象)的环境中进行了测试。Get-RBCD-Thread 完成大约需要 60 秒。相比之下,我在这个 [gist](https://gist.github.com/FatRodzianko/e4cf3efc68a700dca7cedbfd5c05c99f) 中拼凑的 [PowerView](https://github.com/PowerShellMafia/PowerSploit/tree/dev) 命令执行类似搜索运行了几个小时仍未完成。 此工具不会为你执行委派攻击。你需要阅读 Elad Shamir 和 harmj0y 的博客来弄清楚如何做到这一点。这只会帮助你找到 RBCD 攻击的可能目标。 来自我的 AD 实验室的示例用法: ![alt text](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/06f54c3351214054.png) ## 检测 此工具仅使用 LDAP 查询查询 Active Directory,这可能不容易被检测到。Netflow 可能用于检测发往一个系统的大量 LDAP 查询/流量。 另一种可能的检测方法是通过蜜罐账户。其思路是创建一个某些用户/组对其具有写入权限的计算机对象。RBCD 攻击依赖于修改计算机对象,然后向其委派 kerberos 票据。蜜罐计算机对象的可能检测点可以是: 1. 监视对蜜罐计算机对象的修改,特别是对“msds-allowedtoactonbehalfofotheridentity”属性的修改 2. 监视为蜜罐计算机对象上的服务请求的 kerberos 票据,特别是任何管理员用户的 kerberos 票据 我制作这个工具是为了在渗透测试中帮助我。然而,防御者/蓝队/系统管理员可以轻松地使用它来帮助发现他们环境中的弱点,并(希望)着手修复它们。
标签:ACE, Active Directory, Checkov, Conpot, DACL, GenericAll, PE 加载器, Plaso, RBCD, SharpSploit, Web报告查看器, Windows安全, WriteDacl, WriteOwner, 协议分析, 域渗透, 委派攻击, 攻击路径发现, 权限提升, 横向移动, 电子数据取证, 编程规范, 资源型约束委派