Kerberoasting:用一杯咖啡的时间烤出域管密码

Windows 域环境里有一个看似无害的设计:任何域用户都可以请求访问某个 SPN(Service Principal Name)服务的票据。Kerberos 协议觉得这很合理——你要访问文件服务器,当然得拿到它的 TGS 票据才能通信。但问题在于,TGS 票据是用目标服务账户的密码哈希加密的。攻击者只需要一条命令就能从域控拉下所有 SPN 服务的 TGS 票据,然后拿回家慢慢离线爆破。整个过程不需要任何特权,一个普通域用户就够了。

实际操作中,攻击者先用 GetUserSPNs 枚举域内所有注册了 SPN 的账户——这些通常是服务账户,密码往往比普通用户更弱、更少更换。然后请求对应的 TGS 票据,丢进 Hashcat 用字典跑。因为 Kerberos 加密用的是 RC4 或 AES,RC4 模式下等价于 NTLM hash 爆破,速度极快。一旦拿到明文密码,横向移动的通道就打开了。

防御思路也很直接:服务账户用 gMSA(Group Managed Service Account)管理,密码自动轮换,48 小时一换,人类根本不需要知道密码是什么。退一步,至少把 SPN 账户的密码设到 25 字符以上,让离线爆破在时间上变得不现实。还有一个容易被忽视的点——。

#Security