黑客可以使用有效的域用戶的身份驗證票證(TGT)去請求運行在服務器上的一個或多個目標服務的服務票證。DC在活動目錄中查找SPN,并使用與SPN關聯的服務帳戶加密票證,以便服務能夠驗證用戶是否可以訪問。請求的Kerberos服務票證的加密類型是RC4_HMAC_MD5,這意味著服務帳戶的NTLM密碼哈希用于加密服務票證。黑客將收到的TGS票據離線進行破解,即可得到目標服務帳號的HASH,這個稱之為Kerberoast攻擊。
如果我們有一個為域用戶帳戶注冊的任意SPN,那么該用戶帳戶的明文密碼的NTLM哈希值就將用于創建服務票證。這就是Kerberoasting攻擊的關鍵。
Kerberoasting攻擊流程:
- 發現服務主體名稱(SPN)
- 請求服務票據
- 導出服務票據
- 破解服務票據
- 重寫服務票據&RAM注入
該攻擊稱為域滲透攻擊,黑客可以使用有效的域用戶的身份驗證票證去請求運行在服務器上的一個或多個目標服務的服務票證。DC在活動目錄中查找SPN,并使用與SPN關聯的服務帳戶加密票證,以便服務能夠驗證用戶是否可以訪問。請求的Kerberos服務票證的加密類型是RC4_HMAC_MD5,這意味著服務帳戶的NTLM密碼哈希用于加密服務票證。黑客將收到的TGS票據離線進行破解,即可得到目標服務帳號的HASH。
攻擊原理如下:
攻擊者對一個域進行身份驗證,然后從域控制器獲得一個TGT認購權證,該TGT認購權證用于以后的ST服務票據請求。
攻擊者使用他們的 TGT認購權證 發出ST服務票據請求(TGS-REQ) 獲取特定標識的SPN。此SPN在域中應該是唯一的,并且在用戶或計算機帳戶的servicePrincipalName 字段中注冊。在服務票證請求(TGS-REQ)過程中,攻擊者可以指定它們支持的Kerberos加密類型(RC4_HMAC,AES256_CTS_HMAC_SHA1_96等等)。
如果攻擊者的 TGT 是有效的,則 DC 將從TGT認購權證中提取信息并填充到ST服務票據中。然后,域控制器查找哪個帳戶在ServicedPrincipalName字段中注冊了所請求的SPN。ST服務票據使用注冊了所要求的 SPN 的帳戶的NTLM哈希進行加密,并使用攻擊者和服務帳戶共同商定的加密算法。ST服務票據以服務票據回復(TGS-REP)的形式發送回攻擊者。
攻擊者從 TGS-REP 中提取加密的服務票證。由于服務票證是用鏈接到請求 SPN 的帳戶的哈希加密的,所以攻擊者可以離線破解這個加密塊,恢復帳戶的明文密碼。