摸魚了很長一段時間,被大佬按在地上摩擦,一時間精神恍惚想不起來寫點啥,正好回來碰巧給別人講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
知乎用戶車小胖
隨便轉載,請標明作者出處