內網學習之Kerberos協議
學習瞭解kerberos協議,有助於咱們後期理解黃金票據和白銀票據的原理
kerberos協議
kerberos是一種由麻省理工大學提出的一種網絡身份驗證協議。旨在經過使用密鑰加密技術爲客戶端/服務器應用程序提供強身份驗證。
kerberos協議中主要由三個角色:
(1)訪問服務的client(一下表述爲Client或者用戶)
(2)提供服務的server(一下表述爲服務)
(3)KDC(Key Distribution Center)密鑰分發中心
其中KDC服務默認會安裝在一個域的域控中,而Client和Server爲域內的用戶或者是服務,如HTTP服務,SQL服務,遠程桌面服務。在kerberos中Client是否有權限訪問Server端的服務有KDC發放的票據決定
Kerberos工做過程

(服務器
1)AS_REQ:Client向KDC發起AS_REQ請求內容爲經過Client密碼Hash 加密的時間戳、ClientID、網絡地址、加密類型等內容。
(2)AS_REP:KDC使用Clienthash進行解密,並在ntds.dit中查找該帳戶,若是結果正確就返回用krbtgtNTLM-hash加密的TGT票據,TGT裏面包含PAC,PAC包含Client的sid,Client所在的組。
PAC的全稱是Privilege Attribute Certificate(特權屬證書)。不一樣的帳號有不一樣的權限,PAC就是爲了區別不一樣權限的一種方式。
(3)TGS_REQ:Client憑藉TGT票據向KDC發起針對特定服務的TGS_REQ請求
(4)TGS_REP:KDC使用krbtgt NTLM-hash進行解密,若是結果正確,就返回用服務NTLM-hash 加密的TGS票據,並帶上PAC(這一步無論用戶有沒有訪問服務的權限,只要TGT正確,就返回TGS票據)
TGT:認證票據
TGS:票據發放服務
TGS tikcet:服務票據 後面簡稱ST(Service ticket)
(5)AP_REQ:Client拿着TGS票據去請求服務
(6)AP_REP:服務使用本身的NTLM-hash解密TGS票據。若是解密正確,就拿着PAC去KDC那邊問Client有沒有訪問權限,域控解密PAC。獲取Client的sid,以及所在的組,再根據該服務的ACL,判斷Client是否有訪問服務的權限。

在Kerberos認證中,主要結局兩個問題
第一個問題:如何證實你本人是XXX用戶的問題 由Authentication Server負責
第二個問題:提供服務的服務器如何知道你有權限訪問它提供的服務。當一個Client去訪問Server服務器上的某服務時,Server如何判斷Client是否有權限來訪問本身主機上的服務。 由Ticket Granting Server負責

歡迎關注本站公眾號,獲取更多信息