依据Clinet与KDC和Server的交互过程,主要有3个流程,用代表性票据标识流程。
- Client to AS (TGT)
- Client To TGS(ST)
- Client To Server(PAC)
TGT阶段
CA过程完成预身份验证,通过验证的颁发TGT,反之认证失败。
此过程涉及如下攻击手段
- 无域用户账号——>用户枚举——>密码喷洒
- 有一个域用户+禁用预身份认证(默认否)——>离线破解
krbtgt
禁用预身份认证:如果禁用预身份验证,在AS_REQ阶段,无论用户身分是否验证成功,返回一个krbtgt加密的TGT。
- krbtgt
- 钻票
- 金票
ST阶段
解密TGT,并颁发使用服务hash(一般为域控机器账户hash,也就是DC$,而不是域控上的administrator用户)加密的ST。
此过程涉及如下攻击手段
- 无服务hash——>查询SPN(setspn.exe)拿到服务名/主机——>Client离线破解用服务hash加密的ST
这里是因为KDC不会验证权限,无论该用户是否拥有指定服务访问权限,KDC会将用服务hash加密的ST返回给Client。
与上文TGT阶段默认否定预身份验证是相反的。
注意这里只能攻击域用户的服务hash。
- 有服务hash(
dc$_hash
)- 银票
银票成功的原因是PAC未配置时,Server不会去向KDC验证访问权限。
PAC阶段
需要一个普通域用户
- MS14-068
- CVE-2021-42278 & CVE-2021-42287(Nopac)
总结
通过以上常见攻击手段可知,Kerberos易受攻击的主要原因是因为密钥的泄露:
- 用户的NTLM-hash
- krbtgt-hash
- 服务hash(在LDAP中是DC的机器账户)
可见,无论是Diamond Ticekt 、Golden Ticket、还是Silver Ticket,使用的场景一般都是权限维持。
某些特殊情况下,可以使用hashcat对krbtgt-hash
或者DC$-hash
进行穷举。