HVV(六)

21 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

黄金白银票据

blog.csdn.net/weixin_4460…

kerberos协议

大致流程如下:

在这里插入图片描述

参与的角色:
client:application client应用客户端
AS:Authentication server 用来认证用户身份
TGS:ticket-grantiing-service 用来授权服务访问
SS:service server 用户所请求的服务

在这里插入图片描述

Client向KDC发起AS_REQ请求内容为通过Client密码Hash 加密的时间戳、ClientID、网络地址、加密类型等内容
KDC使用Client hash进行解密,并在ntds.dit(只有域控中才有的数据库)中查找该账户,如果结果正确就返回用krbtgt NTLM-hash加密的TGT票据,TGT里面包含PAC(Privilege Attribute Certificate,不同的账号有不同的权限,PAC就是为了区别不同权限的一种方式),PAC包含Client的sid,Client所在的组

Client(客户端)凭借TGT票据向KDC发起针对特定服务的TGS_REQ请求

KDC使用krbtgt NTLM-hash进行解密,如果结果正确,就返回用服务NTLM-hash 加密的TGS票据,并带上PAC返回给Client(客户端),这一步不管用户有没有访问服务的权限,只要TGT(认证票据)正确,就返回TGS票据

此时client拿着KDC给的TGS票据去请求服务

服务端使用自己的NTLM-hash解密TGS票据。如果解密正确,就拿着PAC去KDC那边问Client有没有访问权限,域控解密PAC。获取Client的sid,以及所在的组,再根据该服务的ACL,判断Client是否有访问服务的权限。

打个比方,整个过程就是:你想坐飞机,但是机场告诉你必须有机票(TGT)才可以登机,接着你去购票处(AS)出示身份证(Client name)购买了一张机票(TGT),你拿着机票登机,在检票处(TGS)出示机票,服务人员告诉了你的座位号(Ticket),然后就可以坐到自己的位置上。

Client 上的用户请求KDC上的AS服务TGT
Client 使用TGT请求KDC上的TGS得到ST(TGS ticket)
Client使用ST(TGS Ticket)访问Server