kerberos 認證流程-理解

Ling-X5發表於2024-08-31

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)的請求資訊,傳送給伺服器,已獲得訪問服務的許可權 (可以訪問某一特定服務)

黃金票據和白銀票據的區別在於訪問的範圍不同,而不是許可權不同。

相關文章