kerberos 認證理解
一、認證過程
1) AS-REQ(請求)
域內的使用者向 KDC(域控伺服器)傳送請求包,告訴域控,我要獲得訪問服務的票據。
請求包: 使用者名稱,主機名,認證因子 Authenticator(由客戶端使用者 hash 加密的時間戳等資訊),其他資訊
2)AS-REP(響應)
- KDC 接受到客戶端的請求包。
- KDC 判斷使用者是不是有效的域使用者 , 是就進行下一步校驗
- KDC 在自己的 AD 庫裡查詢該使用者的 hash,解密
Authenticator
, 完成認證,並校驗時間戳是不是在 5 分鐘以內。 都滿足就進行響應 - KDC 請客戶端傳送兩個票據
TGT
:是由krbtgt
使用者的 hash 加密的login session key
和客戶端的資訊等- 第二個就是
使用者hash
加密的login session key
3)TGS-REQ(請求)
- 客戶端收到兩個票據後,用
自己的hash
解密第二個票據,拿到login session key
,並快取起來 - 用
login session key
加密時間戳和一些其他資訊生成認證因子 Authenticator - 向 TGS 傳送
Authenticator
+TGT
+SeverID
(要訪問服務的標識)
4)TGS-REP(響應)
- TGS 收到客戶端發來的三個資訊
- 用自己的
krbtgt
使用者的hash
解密TGT
獲得login session key
,再用 login session key 解密認證因子 Authenticator 認證客戶端,並判斷時間戳是不是在 5 分鐘以內 - 在 AD 資料庫裡查詢
ServerID
對應的 hash 值,並隨機生成一個server session key
- 向客戶端傳送兩個票據
ST
: 由Server hash
加密的server session key
和其他資訊- 由
login session key
加密的server session key
等資訊
5)AP-REQ(請求)
- 客戶端收到兩個票據
- 用快取的
login session key
解密server session key
- 用
sever session key
加密時間戳等資訊,再次生成認證因子Authenticator
- 把
ST
+Authenticator
傳送給要訪問的伺服器Server
6)AP-REP(響應)
- 伺服器 Server 收到
ST
和Authenticator
- 伺服器用自己的 hash 解密
ST
,拿到 server session key 。 - 用 server session key 解密 Authenticator 完成認證,並校驗時間戳是不是在 5 分鐘以內
- 向客戶端回覆校驗成功
二、簡單理解兩種票據
黃金票據:就是在攻擊者獲得了 krbtgt 使用者的 hash 值,跳過前兩步的認證,直接偽造第三步(TGS-REQ)的資訊。傳送給 TGS 之後合規的簽發 ST 去訪問服務 (可以訪問域內任意服務)
白銀票據:攻擊者透過伺服器的 server hash,偽造第五步(AP-REQ)的請求資訊,傳送給伺服器,已獲得訪問服務的許可權 (可以訪問某一特定服務)
黃金票據和白銀票據的區別在於訪問的範圍不同,而不是許可權不同。