普通的Windows下的安全机制是基于NTLM认证方式,这主要用在windows工作组环境中。

而另一种基于Kerberos的认证方式,主要用在域环境中。

Kerberos

它是一种网络认证协议,对个人通信以安全的手段进行身份认证。

其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务。它允许某实体在非安全网络环境下通信,向另一个实体以一种安全的方式证明自己的身份。该认证过程的实现不依赖于

协议内容

  • AS(authentication service):认证服务器
  • KDC:密钥分发中心,默认安装在域控上
  • TGT票据授权票据 票据的票据
  • TGS 票据授权服务器

认证流程

认证主要是3个角色:Client 、Server、KDC

AD域会存储所有client的白名单,只有存在于白名单的Client才能顺利申请到TGT

AS为client生成TGT的服务

而TGS为Client生成某个服务的ticket

Session Key(会话密钥只有Client和TGS知道)

协议可分为三个步骤:

1.获得票据许可票据

2.获取服务许可票据

3.获得服务

kerberos协议认证的密码为什么能被mimikatz抓取?

image-20210926141935999

总结:

kerberos协议设计的思路就是用来在不受信的环境下进行认证的协议。

krbtgt账号的NTLM Hash理论上只存在于KDC中。这意味着TGT只能由KDC来解密。如果krbtgt账号的NTLM Hash泄露了,那么TGT就能被解密甚至伪造。伪造的TGT叫做黄金票据。

Ticket是由服务器计算机本身的NTLM Hash加密的,Client不能解密。如果该Hash泄露,那么就可以解密甚至伪造Ticket。伪造的Ticket叫做白银票据。

krbtgt用户是用于kerberos身份验证的账户。

参考文章: