kerberos 认证流程-理解

kerberos 认证理解

一、认证过程

image

1) AS-REQ(请求)

域内的用户向 KDC(域控服务器)发送请求包,告诉域控,我要获得访问服务的票据。

请求包: 用户名,主机名,认证因子 Authenticator(由客户端用户 hash 加密的时间戳等信息),其他信息

2)AS-REP(响应)

  1. KDC 接受到客户端的请求包。
  2. KDC 判断用户是不是有效的域用户 , 是就进行下一步校验
  3. KDC 在自己的 AD 库里查找该用户的 hash,解密 Authenticator, 完成认证,并校验时间戳是不是在 5 分钟以内。 都满足就进行响应
  4. KDC 请客户端发送两个票据
    • TGT:是由 krbtgt 用户的 hash 加密的 login session key 和客户端的信息等
    • 第二个就是 用户hash 加密的 login session key

3)TGS-REQ(请求)

  1. 客户端收到两个票据后,用 自己的hash 解密第二个票据,拿到 login session key,并缓存起来
  2. login session key 加密时间戳和一些其他信息生成认证因子 Authenticator
  3. 向 TGS 发送 Authenticator + TGT + SeverID(要访问服务的标识)

4)TGS-REP(响应)

  1. TGS 收到客户端发来的三个信息
  2. 用自己的 krbtgt 用户的 hash 解密 TGT 获得 login session key,再用 login session key 解密认证因子 Authenticator 认证客户端,并判断时间戳是不是在 5 分钟以内
  3. 在 AD 数据库里查找 ServerID 对应的 hash 值,并随机生成一个 server session key
  4. 向客户端发送两个票据
    • ST : 由 Server hash 加密的 server session key 和其他信息
    • login session key 加密的 server session key 等信息

5)AP-REQ(请求)

  1. 客户端收到两个票据
  2. 用缓存的 login session key 解密 server session key
  3. sever session key 加密时间戳等信息,再次生成认证因子 Authenticator
  4. ST + Authenticator 发送给要访问的服务器 Server

6)AP-REP(响应)

  1. 服务器 Server 收到 ST Authenticator
  2. 服务器用自己的 hash 解密 ST ,拿到 server session key 。
  3. 用 server session key 解密 Authenticator 完成认证,并校验时间戳是不是在 5 分钟以内
  4. 向客户端回复校验成功

二、简单理解两种票据

黄金票据:就是在攻击者获得了 krbtgt 用户的 hash 值,跳过前两步的认证,直接伪造第三步(TGS-REQ)的信息。发送给 TGS 之后合规的签发 ST 去访问服务 (可以访问域内任意服务)

白银票据:攻击者通过服务器的 server hash,伪造第五步(AP-REQ)的请求信息,发送给服务器,已获得访问服务的权限 (可以访问某一特定服务)

黄金票据和白银票据的区别在于访问的范围不同,而不是权限不同。

posted @ 2024-08-31 18:53  Ling-X5  阅读(4)  评论(0编辑  收藏  举报