kerberos

cAr7n發表於2021-05-21

kerberos概述

Kerberos(/ˈkərbərəs/)是一種計算機網路授權協議,用來在非安全網路中,對個人通訊以安全的手段進行身份認證。這個詞又指麻省理工學院為這個協議開發的一套計算機軟體。軟體設計上採用客戶端/伺服器結構,並且能夠進行相互認證,即客戶端和伺服器端均可對對方進行身份認證。

在kerberos協議中有三個角色:

  1. Client(訪問服務)
  2. Server(提供服務)
  3. KDC(Key Distribution Cente)金鑰分發中心

image

其中:
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
域控:WIN-KONG 域管:hiro\administrator
主機:DESKTOP-P34E60A 域使用者:hiro\win10

win10使用者執行:
**net use \\WIN-KONG\C$ password /u:hiro\administrator**

AS-REQ:

主要內容:

  1. 請求的使用者端資訊
  2. 加密型別
  3. Authenticator(使用者Hash加密時間戳

image

AS-REP:

主要內容:

  1. 通過活動目錄查詢使用者得到使用者的Hash,用Hash解密Authenticator,如果解密成功並且時間戳在規定時間內(一般為五分鐘),則預認證成功。
  2. 生成由krbtgt使用者Hash加密的TGT認購權證,用於確保客戶端和DC進行安全通訊的使用者Hash加密後的Login Session Key(作為下一階段的認證祕鑰)。
  3. 返回TGT,Login Session Key,時間戳和PAC。(PAC包含使用者SID,所在組等資訊)

PS:krbtgt這個使用者在域生成的時候會自動建立,它是祕鑰發行中心服務賬戶,不能直接登入。

image

TGS-REQ:

主要內容:

  1. 客戶端資訊
  2. Authenticator(Login Session Key加密時間戳)
  3. TGT認購許可權
  4. 訪問的服務名

image
padata:

image

req-body:

image

TGS-REP:

主要內容:

  1. 檢查自身是否存在服務,如果存在,通過krbtgt解密TGT並通過Login Session Key解密Authenticator(Login Session Key加密時間戳),就驗證了對方身份。然後驗證時間戳是否在範圍內,並且驗證TGT中的時間戳是否過期,原始地址是否和TGT儲存的地址相同等。
  2. 生成用AS-REP得到的Login Session Key加密後的用於確保安全傳輸的Server Session Key
  3. 完成認證後,TGS生成ST票據,其中包括:客戶端資訊和原始的Server Session Key整個ST票據由該服務的NTLM Hash加密
  4. ST和Server Session Key傳送給客戶端。

image

AP-REQ:

  1. 客戶端收到TGS服務後,通過自己快取的Login Session Key解密得到原始的Server Session Key。
  2. 將ST和Authenticator(Server Session Key加密時間戳)傳送給服務端。

AP-REP:

  1. 通過服務的NTLM Hash解密ST,從中提取Server Session Key。
  2. 通過提取出來的Server Session Key解密Authenticator,從而驗證客戶端身份。
  3. 將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簽名,那麼白銀票據就不起作用了)

相關文章