你所不知道的Kerberos 整理筆記(三)

本篇文章會來到真實的環境來將詳細講解一下客戶端如何申請TGT

1、 當用戶按下“Ctrl + Alt + Del”之後,Winlogon被喚醒,同時跳出需要輸入用戶名和密碼的登入身份憑據窗口(由Gina.ll來定義)

2、 用戶使用domain\userUPN名之後,由Winlogon讀取用戶的身份憑據,並把它交給LSA(本地安全機構),LSA會使用MD4對用戶的密碼進行哈希處理,然後交給Kerberos協議(這裏先留一個坑,事實上LSA並不是馬上就交給Kerberos協議,也有可能交給NTLM協議,最下面會有解釋),以便對用戶進行身份驗證

3、 Kerberos生成一份TGT請求,請求會包含一個預鑑別碼(預鑑別碼是一個“時間戳”,其主要目的是防止DOS***和身份驗證),並使用剛纔的用戶密碼哈希對預鑑別碼進行加密,然後交給遠端的KDC

4、 KDC接收到TGT請求之後,會先交給DC來進行用戶的身份驗證,然後會用用戶的密碼哈密來解密這份TGT請求。會有以下幾種可能發生:

1) 無法解密預鑑別碼

2) 能解密,但裏面的時間戳是以前別人用過的

3) 能解密,但超過的時間容差,5分鐘

5、 如果發生以上任何一種情況,那麼KDC會返回錯誤信息。如果以上情況都沒有發生,KDC就認爲這個請求是真實有效的。於是生成一份TGT,並在本地LSA的幫助下,爲用戶創建一個PAC(特權訪問證書,關於什麼是PAC下面會詳細介紹),放在TGT授權數據字段。然後通過一個應答消息返回給客戶。

      KDC的應答消息(包括TGT或會話票證)包含兩部分內容:一部分是由客戶端讀取的信息(TGT或會話票證的內容不一樣),使用客戶端用戶的密碼哈希來加密,另一部分就是TGT或會話票證本身,使用KRBTGT賬戶的密碼哈希來加密。

6、 Kerberos客戶端使用自己的密碼哈希來解密屬於他的那部分數據,其實就是一個會話密鑰,也就是KDC生成的一組隨機數,客戶端將會話密鑰(也就是那一組隨機數)和TGT緩存到內存中,以便以後申請目標服務器的會話票證(TGT的有效期默認是10小時)。然後Kerberos協議從TGT中取出PAC,交給本地LSA

LSA讀取PAC中的信息,爲用戶創建一個本地訪問令牌

8、 這樣,整個認證過程結束,Winlogon把控制權交給Userinit,接下來處理組策略方面的內容,這個就不詳細介紹。

9、用戶以後啓用的所有進程,都將繼承用戶的訪問令牌。

下面解釋下上面挖的那個坑。LSA在收到Winlogon的交給他的身份憑證後,並不是馬上就交給Kerberos協議,還有可能是NTLM協議,因爲我們知道用戶登入有兩種,一種是本地登入,一種是域登入。如果是本地登入的話,會使用本地數據庫進行驗證,如果是域登入的話,就會使用域控制器來進行身份驗證。那LSA如何判斷是本地登入還是域登入呢?下面來講解一下LSA的處理流程

一、LSA的處理流程:

1、 LSA首先會把身份憑據交給SSPI,由該接口負責與KerberosNTLM服務溝通。

2、 SSPI不能確定用戶是本地登錄還是域賬戶進行域登錄。所以他會先把身份認證請求傳遞到Kerberos SSP

3、 Kerberos SSP會驗證用戶的登入目標是本地計算機還是域。如果是登錄域,Kerberos SSP將繼續處理。如果是本地計算機,即用戶不是登錄域,Kerberos SSP返回一個錯誤消息到SSPI,交回給GINA處理,使服務器登錄不可用。

4、 SSPI現在發送請求到下一個安全提供程序——NTLMNTLM SSP會將請求交給Netlogon服務針對LSAM Local Security Account Manager,本地安全賬戶管理器)數據庫進行身份認證。使用NTLM SSP的身份認證過程與Windows NT系統的身份認證方法是相同的。

二、什麼是PAC

KDC在向Kerberos客戶端頒發TGT時,會向本地LSA請求生成一個特殊的數據結構,名爲“特權訪問證書”(Privilege Access Certificate,PAC,這個PAC包含爲Kerberos客戶端構建一個本地訪問令牌所需的用戶信息,他同時使用域控制器服務器的私鑰和KDC服務器的私鑰來進行數字簽署。以防假的KDC僞造PAC,下面是PAC的具體內容

1、 用戶的登入時間以及用戶會話額到期時間

2、 用戶上一次設置密碼的時間,以及允許他再次更改密碼的時間

3、 用戶的經典登入名,domain\user

4、 用戶的顯示名稱

5、 指派給用戶賬戶的經典NT登入腳本的名稱(如果有的話)

6、 用戶漫遊配置文件的UNC路徑

7、 客戶端主目錄的UNC路徑

8、 用戶的併發登入數

9、 在頒發PACKDC處,自從上一次成功登入以來,所允許的不成功登入嘗試次

10、      用戶的RID

11、用戶的“主要組”的RID,只限在POSIX使用

12、在域中,將用戶作爲一個成員的組的數量,以及每個組的RID

         13、適用於用戶的已知SID

         14、域的SID

         15、資源域的SID

除此之外,PAC中還嵌入了另一個名爲“用戶賬戶控制”的數據結構,這個結構定義了大量用戶設置,許多設置都在“Active Directory用戶和計算機”的用戶屬性對話框的“賬戶”選項卡中以複選框的形式出現。內容我就不詳細寫出來了。

 

下一篇文章,會講解用戶要訪問本地域的資源時,如何申請目標服務器會話票證

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章