Kerberos 协议出现情景
情景一
- 假设一个网络内有 1000 个账户可以使用打印机服务,在使用打印机服务时需要对账户进行身份认证
- 如果打印机将这 1000 个账户凭证保存到打印机本地将大量消耗系统资源
情景二
- 假设一个网络中的用户可以在 1000 台主机上登录
- 如果这 1000 台主机都将账户凭证保存到本机上,当某个用户更改密码时,需要在这 1000 台主机都更改密码,进行大量操作。
解决措施
出于以上种种情景,需要一个认证服务器知道所有的账户密码(在域中为活动AD目录)
服务票据
TGS、服务票据
TGS(Ticket Granting Service)是身份认证协议中的一个重要组件,它负责向认证成功的用户颁发服务票据(Service Ticket),用于用户获取对特定服务的访问权限。服务器持有 TGS 颁发的票据后,携带票据访问相应的服务可获取响应的服务权限。
问题
在实际环境中,有各种各样的服务都需要进行认证,需要频繁输入密码进行认证,不仅繁琐,而且频繁传输密码加大了出现中间人劫持等安全风险。为了减少传递密码的次数,出现了票据授权票(TGT)
票据授权票
AS、票据授权票
AS(Authentication Service)所在的服务器存储了用户凭证,用户输入账户密码进行认证成功后,AS 向用户颁发票据授权票(TGT,Ticket Granting Ticket)(身份票据),用户获取 TGT 后,凭借 TGT 即可向 TGS 申请各种服务票据(ST),用来获取各种服务的权限
Kerberos 协议
目的和 NTLM 协议一样,用于实现登录认证,不过 Kerberos 协议涉及了三方认证
KDC(Key Distribution Center)
KDC是Kerberos协议的核心组件,由两个主要部分组成:
- 认证服务器(AS,Authentication Server):负责处理用户的初始身份认证请求。当用户需要访问网络中的服务时,用户首先向 AS 发送身份认证请求,获取票据授权票(身份票据)。
- 票据授权服务器(TGS,Ticket Granting Server):负责颁发服务票据,以便用户可以访问网络中的各种服务。一旦用户通过 AS 的身份认证,AS 会颁发给用户一个 TGT(Ticket Granting Ticket),用户可以使用 TGT 向 TGS 请求服务票据。
Kerberos 协议流程
- 用户输入账户密码去找 AS 服务获取票据授权票(身份票据)
- 用户使用身份票据获取服务票据
- 使用服务票据获取具体的服务
黄金票据和白银票据
-
黄金票据就是伪造了 Kerberos 中的身份票据
-
白银票据就是伪造了 Kerberos 中的服务票据
应用场景:权限维持
丢失了获取的域控权限,拿回权限