Kerberos Bronze Bit Attack 绕过约束委派限制
Kerberos Bronze Bit Attack又称Kerberos青铜比特攻击,由国外netspi安全研究员Jake Karnes发现的漏洞,并且申请了CVE-2020-17049编号。
# 概述
该漏洞解决了两个问题
- 禁止协议转换/协议过渡
- 受保护的用户和敏感用户不能被委派
具体设置表现为DC上设置Service1计算机账户为“仅使用Kerberos”而非“使用任何身份验证协议”
spn服务账户sql设置为“敏感用户不能被委派”或者添加到“受保护的组”中(两者任选其一)
利用场景:
- 传统的约束委派
- 基于资源的约束委派(滥用域账户的MachineAccountQuota属性)
下面进行复现
# 传统的约束委派绕过
模拟场景
- 已经爆破了一个用户[email protected] 密码为
test123!@#
- 拿到Service1的hash
- Service1对Service2有信任的约束关系
- 攻击者充当Service1向Service2申请票据从而ptt到Service2
首先尝试常规的约束委派利用(参考我之前的文章)
报错,说明这是“敏感用户不能被委派”和“受保护的组”的原因。
然后尝试Kerberos Bronze Bit Attack
首先需要Service1的hash和aeskey(这里可以通过提权获取Service1的hash,我这里使用Service1的本地管理员账号抓取)
|
|
然后使用最新版的impacket请求票据
|
|
这样绕过了“敏感用户不能被委派”和“受保护的组”利用约束委派拿下来了Service2。
# 基于资源的约束委派绕过
先配置环境,首先删除上一步service1的委派权限
用adsi编辑器赋予域用户jack对service2写入权限
开始利用,首先需要通过powermad新加入一个计算机账户AttackerService,密码为AttackerServicePassword,用域账户jack登录service1
|
|
因为密码是我们自定义的,所以可以用mimikatz计算出hash
然后使用PowerShell Active Directory模块添加基于资源的约束委派,即从AttackerService到Service2的传入信任关系。
Microsoft.ActiveDirectory.Management.dll
在安装powershell模块Active Directory后生成,默认只在域控上有,可以从域控上导出。
|
|
设置好基于资源的约束委派之后就可以模拟用户申请票据了。
|
|
hashes和aesKey参数来自于添加的机器用户AttackerService,mimikatz可以计算。
|
|
# 总结
Kerberos Bronze Bit Attack可以绕过“敏感用户不能被委派”和“受保护的组”进一步利用约束委派,扩大了Kerberos的攻击面。
# 参考
文笔垃圾,措辞轻浮,内容浅显,操作生疏。不足之处欢迎大师傅们指点和纠正,感激不尽。
如果你觉得这篇文章对你有所帮助,欢迎赞赏或关注微信公众号~