Kerberos分阶段攻击

发布时间 2023-03-30 17:03:11作者: _rainyday


依据Clinet与KDC和Server的交互过程,主要有3个流程,用代表性票据标识流程。

  • Client to AS (TGT)
  • Client To TGS(ST)
  • Client To Server(PAC)

TGT阶段

image.png
CA过程完成预身份验证,通过验证的颁发TGT,反之认证失败。
此过程涉及如下攻击手段

  • 无域用户账号——>用户枚举——>密码喷洒
  • 有一个域用户+禁用预身份认证(默认否)——>离线破解krbtgt

禁用预身份认证:如果禁用预身份验证,在AS_REQ阶段,无论用户身分是否验证成功,返回一个krbtgt加密的TGT。

  • krbtgt
    • 钻票
    • 金票

ST阶段

image.png
解密TGT,并颁发使用服务hash一般为域控机器账户hash,也就是DC$,而不是域控上的administrator用户)加密的ST。
此过程涉及如下攻击手段

  • 无服务hash——>查询SPN(setspn.exe)拿到服务名/主机——>Client离线破解用服务hash加密的ST

这里是因为KDC不会验证权限,无论该用户是否拥有指定服务访问权限,KDC会将用服务hash加密的ST返回给Client。
与上文TGT阶段默认否定预身份验证是相反的。
注意这里只能攻击域用户的服务hash。

  • 有服务hashdc$_hash
    • 银票

银票成功的原因是PAC未配置时,Server不会去向KDC验证访问权限。

PAC阶段

image.png
需要一个普通域用户

  • MS14-068
  • CVE-2021-42278 & CVE-2021-42287(Nopac)

总结

通过以上常见攻击手段可知,Kerberos易受攻击的主要原因是因为密钥的泄露:

  1. 用户的NTLM-hash
  2. krbtgt-hash
  3. 服务hash(在LDAP中是DC的机器账户)

可见,无论是Diamond Ticekt 、Golden Ticket、还是Silver Ticket,使用的场景一般都是权限维持。
某些特殊情况下,可以使用hashcat对krbtgt-hash或者DC$-hash进行穷举。