kerberos概述
Kerberos(/?k?rb?r?s/)是一種計算機網路授權協議,用來在非安全網路中,對個人通信以安全的手段進行身份認證,這個詞又指麻省理工學院為這個協議開發的一套計算機軟體,軟體設計上采用客戶端/服務器結構,并且能夠進行相互認證,即客戶端和服務器端均可對對方進行身份認證,
在kerberos協議中有三個角色:
- Client(訪問服務)
- Server(提供服務)
- KDC(Key Distribution Cente)密鑰分發中心
其中:
KDC(Key Distribution Center)= 密鑰分發中心
AS(Authentication Server)= 認證服務器
TGT(Ticket Granting Ticket)= TGT服務票據,由AS在AS-REP發放
TGS(Ticket Granting Server)= 票據授權服務器
ST(Server Ticket)=ST服務票據,由TGS在TGS-REP發放
kerberos協議分析
實驗環境
域名:HIRO
域控:[email protected] 域管:hiro\administrator
主機:[email protected] 域用戶:hiro\win10
win10用戶執行:
net use \\WIN-KONG\C$ password /u:hiro\administrator
AS-REQ:
主要內容:
- 請求的用戶端資訊
- 加密型別
- Authenticator(用戶Hash加密時間戳)
AS-REP:
主要內容:
- 通過活動目錄查詢用戶得到用戶的Hash,用Hash解密Authenticator,如果解密成功并且時間戳在規定時間內(一般為五分鐘),則預認證成功,
- 生成由krbtgt用戶Hash加密的TGT認購權證,用于確保客戶端和DC進行安全通信的用戶Hash加密后的Login Session Key(作為下一階段的認證秘鑰),
- 回傳TGT,Login Session Key,時間戳和PAC,(PAC包含用戶SID,所在組等資訊)
PS:krbtgt這個用戶在域生成的時候會自動創建,它是秘鑰發行中心服務賬戶,不能直接登錄,
TGS-REQ:
主要內容:
- 客戶端資訊
- Authenticator(Login Session Key加密時間戳)
- TGT認購權限
- 訪問的服務名
padata:
req-body:
TGS-REP:
主要內容:
- 檢查自身是否存在服務,如果存在,通過krbtgt解密TGT并通過Login Session Key解密Authenticator(Login Session Key加密時間戳),就驗證了對方身份,然后驗證時間戳是否在范圍內,并且驗證TGT中的時間戳是否過期,原始地址是否和TGT保存的地址相同等,
- 生成用AS-REP得到的Login Session Key加密后的用于確保安全傳輸的Server Session Key,
- 完成認證后,TGS生成ST票據,其中包括:客戶端資訊和原始的Server Session Key,整個ST票據由該服務的NTLM Hash加密,
- 將ST和Server Session Key發送給客戶端,
AP-REQ:
- 客戶端收到TGS服務后,通過自己快取的Login Session Key解密得到原始的Server Session Key,
- 將ST和Authenticator(Server Session Key加密時間戳)發送給服務端,
AP-REP:
- 通過服務的NTLM Hash解密ST,從中提取Server Session Key,
- 通過提取出來的Server Session Key解密Authenticator,從而驗證客戶端身份,
- 將Server Session Key加密時間戳為Authenticator發送給客戶端,客戶端用快取的Server Session Key進行解密,如果解密成功則說明兩方有相同的Server Session Key,
有些服務并沒有驗證PAC,這就是白銀票據能成功的原因,如果驗證了PAC的話,就算攻擊者擁有服務Hash,制作了ST票據,也不能制作PAC(PAC由兩個數字簽名構成,而這兩個數字簽名分別由服務器NTLM Hash和KDC NTLM Hash加密),并且只有KDC才能制作和查看PAC,(同樣防止了MS14-068攻擊)
Keberos攻擊
AS-REQ:
1.Hash傳遞
Authenticator是由用戶密碼Hash加密的,如果得到了用戶密碼哈希就算解不出來也可以嘗試hash傳遞攻擊,
(作業組中只能以sid為500的用戶[administrator],域環境中只能用域管Hash)
2.域用戶列舉,密碼噴灑
當cname值中的用戶不存在時回傳包提示錯誤,當用戶名存在時,密碼正確或者錯誤回傳包結果也不一樣,所以可以嘗試域用戶列舉和密碼噴灑攻擊,
(可以在域外使用,但是能ping通域控)
AS-REP:
1.黃金票據
TGT由krbtgt用戶Hash加密,如果擁有krbtgt用戶Hash就可以制作TGT,
2.AS-REP Roasting攻擊
enc-part是由用戶密碼Hash加密的,如果域用戶設定了Do not require Kerberos preauthentication,就可以嘗試爆破然后用hashcat破解獲得用戶密碼,
(當關閉了預身份認證后,攻擊者可以使用指定用戶去請求票據,此時域控不會做任何驗證就將TGT票據和該用戶Hash加密的Login Session Key回傳,所以只要對Login Session Key離線解密,就可以得到指定用戶的明文密碼,)
TGS-REP:
1.kerberoast攻擊
由于TGS-REP中的enc-part由服務密碼Hash加密,可以爆破獲得服務Hash,不管用戶對服務有沒有訪問權限,只要TGT正確就一定會回傳TGS,
2.白銀票據
ticket中的enc-part是由服務Hash加密的,如果有了服務Hash,就可以簽發任意用戶的ST票據,不需要跟域控打交道,但是只能訪問特定服務,(偽造的白銀票據沒有帶有效KDC簽名的PAC,如果目標驗證了KDC的PAC簽名,那么白銀票據就不起作用了)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/285623.html
標籤:其他
上一篇:真正的游戲
下一篇:談談網路協議 – 路由