all credits goes to:
- https://www.trustedsec.com/blog/i-wanna-go-fast-really-fast-like-kerberos-fast/
- https://syfuhs.net/kerberos-fast-armoring
这里的 FAST 并不是字面意义的 fast,而是Flexible Authentication Secure Tunneling
的首字母缩写,它的出现主要是为了解决域内用户密码被离线破解的问题
大家可能都听说过 kerberoasting,这个技术主要用于离线爆破服务账户的明文密码,以及 asrep-roast,用于离线爆破未开启 pre-auth 认证的普通用于的明文密码
这两种爆破都基于同一个事实:数据包被用户密码派生出来的哈希加密,并且我们可以控制加密算法为最弱的 RC4
对于计算机账户,就不存在这种问题,因为计算机账户的明文密码是很长的一串随机字符串,且复杂度极高,这是我的测试环境中的机器账户的明文密码:
可以看到,相当的复杂,离线爆破是不可能的,就算你真的爆出来了,密码也已经失效了,机器账户默认情况下一个月自动更新一次密码
而启用了 FAST 之后,在进行 kerberos 认证的时候,会先使用机器账户从 DC 获取一个 key,使用这个 key 来保护用户认证阶段的数据,这样即使离线爆破,获得的也只是这个 short-term key,更何况你还不一定爆的出来,这种 key 长度一般都很长