• Kerberos认证流程简述


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

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

    0x01  认知

    (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会看到

     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 比喻

    https://www.zhihu.com/question/22177404

    知乎用户车小胖

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

  • 相关阅读:
    Cookie练习
    JS写九九乘法表
    对GridView实现分页
    对GridView的行加颜色并弹出Kindeditor
    对Dictionary的理解
    一、android 开发环境大搭建
    main方法的测试
    main 方法的书写(1)
    由InvocationTargetException引发的思考
    汇编学习笔记之处理器体系结构
  • 原文地址:https://www.cnblogs.com/lcxblogs/p/13821443.html
Copyright © 2020-2023  润新知