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

知乎用戶車小胖

 

隨便轉載,請標明作者出處


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM