mysql kerberos_Kerberos认证流程简述

本文介绍了Kerberos网络身份认证协议的流程,包括KDC、AS、TGS的角色及TGT、ticket、session key的概念。通过一个用户访问服务器服务的示例,详细解析了从AS-REQ到AP-REP的验证过程,强调了时间戳和NTLM HASH在安全性中的作用,同时提到了黄金票据和白银票据的概念。
摘要由CSDN通过智能技术生成

摸鱼了很长一段时间,被大佬按在地上摩擦,一时间精神恍惚想不起来写点啥,正好回来碰巧给别人讲kerberos协议认证流程,结果讲来讲去把自己讲晕了,就非常尴尬

c1f6167a65cba35e9aea66c6c6a4ecd6.png

于是有了这篇文章(友情提示:无事莫装X,装X遭人X),争取用我简单浅显而贫乏的词汇量,描述一下相关流程

0x01  认知

ca341289a593d983be57bb432759d0b3.png(1)

这是一个关于kerberos的经典图示,最简化地展示了kerberos的验证流程

kerberos是一种网络身份认证协议,设计目标是为了通过秘钥系统为C/S应用程序提供一种可靠的认证协议。它是双向验证的,即在保证客户端访问的服务端是安全可靠的情况下,也保证服务端回复的客户端也是安全可靠的。

想要证明访问与被访问的双方都是信得过的,必须要有一个第三方平台。在kerberos中就是图(1)中的KDC

按照图(1)介绍几个专有名词:

1.KDC (key distributed center ):用于票据生成管理服务,它包含AS与TGS

2.AS (authentication service):为客户端生成TGT

3.TGS(ticket granting service):为客户端生成某个服务的ticket

4.AD(account database):存储客户端白名单,只有位于白名单中的客户端才能申请TGT,就像SAM数据库一样

5.TGT(ticket granting ticket):用于获取ticket的一种票据

6.SK(session key):用户与域控的加密秘钥

7.client:想访问某个server的客户端

8.server:提供某种业务的服务

一般来说,kerberos是用于域环境中身份认证的

所以KDC一般会安装到域控之中。

从物理层面来看,AD 和 KDC都是“域控”

KDC当中有个krbtgt用户,在域控中net user会看到

ca5622dd96ec7b14cb4f7808cc8bba2c.png

krbtgt是个系统自建用户,不用于登录,发票据的时候会用到其NTML HASH

愿意继续看下去的,这里有个人认为详细一些的解释,不愿意看的请划到最后一小点

0x02 流程

逐一解释图(1)假设域内主机一个用户lcx想访问域内某服务器server中的某服务

圈1 (AS-REQ):client发送用户信息到KDC,向AS请求TGT票据

圈2(AS-REP):KDC收到请求,看看client是否在AD的白名单中,在的话,AS生成随机Session Key,并用用户的NTLM HASH对Session Key 加密得到密文A,再用krbtgt的NTLM HASH 对Session Key、客户端信息Client Info、客户端时间戳timestamp加密得到TGT,并将A 和 TGT一起返回客户端client

圈3(TGS-REQ):client收到请求,用自身的NTLM HASH 解密 密文A 得到Session Key,再用Session Key加密Client Info与timestamp 得到密文B , 把密文B 和 TGT一起发给KDC 给TGS

圈4(TGS-REP):TGS 用krbtgt的NTLM HASH 解密TGT ,得到Session Key和timestamp和Client Info。再用这个由TGT解密出来的Session Key解密密文B得到timestamp与Client Info。 两相对比是否一致。如果一致,TGS生成新的随机 Session Key,叫它Session Key2 吧,用它加密timestamp和Client Info得到密文Enc。再用服务端server的NTLM HASH对Session Key2和timestamp和Client Info加密得到ticket,返回给客户端client

圈5(AP-REQ):客户端client把ticket和Enc向服务端server发送,请求服务

圈6(AP-REP):服务端server用自己的NTLM HASH 对ticket进行解密得到Session Key2和timestamp和Client Info,再用解密出来的Session Key2解密密文Enc,得到timestamp和Client Info,进行信息校验,成功授权访问

大功告成

补充一些说明:时间戳timestamp的存在保证了密文在短时间内不可能被暴破;Client Info中存在很多信息包括客户端信息

由于krbtgt只存在于域控中KDC中,TGT要用krbtgt的NTLM HASH解密,即TGT只能由KDC解密

所以如果krbtgt的NTLM HASH泄露出去了,那谁拿到krbtgt的NTLM HASH,谁就充当KDC(指有奶便是娘),就可以伪造TGT,也就是权限维持里常说的黄金票据。。。。。。的原理,生成伪造黄金票据把票据一导入,体验一把生杀大权尽在手中的感觉。

另一方面ticket是服务账号用NTLM HASH加密得到的,如果这个服务账号的NTLM HASH泄露了(域控上抓的,新鲜的热乎的,计算机服务账号的NTLM HASH)谁拿到域控中计算机服务账号的NTLM HASH,谁就充当TGS(有奶便是娘*2),这就是权限维持中白银票据的原理。

0x03 比喻

知乎用户车小胖

随便转载,请标明作者出处

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值