- KDC(Key Distribution Center): 密钥分发中心,里面包含两个服务:AS和TGS
- AS(Authentication Server): 身份认证服务
- TGS(Ticket Granting Server): 票据授予服务
- TGT(Ticket Granting Ticket): 由身份认证服务授予的票据,用于身份认证,存储在内存,默认有效期为10小时
- Pass The Ticket: 如果我们能够拿到用户的TGT,并将其导入到内存,就可以冒充该用户获得其访问权限
kerberos认证粗略流程:
1、Client向kerberos服务请求,希望获取访问Server的权限。 kerberos得到了这个消息,首先得判断Client是否是可信赖的, 也就是白名单黑名单的说法。这就是AS服务完成的工作,通过在AD中存储黑名单和白名单来区分Client。认证成功后,KDC此时生成一个随机字符串,叫Session Key,使用用户名对应的NTLM Hash加密Session Key,作为AS数据,使用KDC中某个用户(krbtgt)的NTLM Hash加密Session Key和客户端的信息,生成TGT。
2、Client得到了TGT后,继续向kerberos请求,希望获取访问Server的权限。客户端需要提供TGT与第一步中AS数据使用自己NTLM Hash解密出来的Session Key加密的客户端信息跟时间戳。kerberos又得到了这个消息,这时候通过client 消息中的TGT,判断出了client拥有了这个权限。验证通过后,就会生成一个新的Session Key,我们称之为Server Session Key,这个Server Session Key主要用于和服务器(不是KDC)进行通信。同时还会生成一个Ticket,也就是最后的票据了。给了client访 问server的权限ticket(ST,也就是server hash,包含请求客户端的主机名和客户端信息加上server session key还有票据失效时间)。
3、client得到ticket后,终于可以成功访问server。client会用Ticket,Server Session Key加密的客户端信息与时间戳去请求server。这个ticket只是 针对这个server,其他server需要向TGS申请。