Kerberos無約束委派的攻擊和防御


 0x00 前言簡介

當Active Directory首次與Windows 2000 Server一起發布時,Microsoft就提供了一種簡單的機制來支持用戶通過Kerberos對Web服務器進行身份驗證並需要授權用戶更新后端數據庫服務器上的記錄的方案。這通常被稱為Kerberos double-hop issue(雙躍點問題),需要委派才能使Web服務器在修改數據庫記錄時模擬用戶操作。

Visio的KerberosDoubleHop-的Visio
 

0x01 Kerberos Unconstrained Delegation(Kerberos無約束委派)

Microsoft在Windows 2000中已添加了Kerberos“無約束委派”功能。域管理員可以通過勾選第二個復選框來啟用此委派級別。第三個復選框用於約束委派”,它要求在啟用了委派的計算機上列出特定的Kerberos服務。

KerberosUnConstrainedDelegation-代表團-Config中
PowerShell查找Kerberos無約束委派:

使用Active Directory PowerShell模塊的Get-ADComputer發現Kerberos無約束委派的計算機是比較容易。

無約束的委托:TrustedForDelegation = True

約束委派:TrustedToAuthForDelegation = True

KerberosUnConstrainedDelegation-PowerShell的DiscoverServers2

0x02 Kerberos通信流程

讓我們遵循標准的Kerberos通信流程,這是一個描述Kerberos如何工作的快速示例:

用戶使用用戶名和密碼登錄

1A.密碼轉換為NTLM哈希且時間戳用哈希加密,並把它作為身份驗證票證(TGT)請求(AS-REQ)的身份驗證者發送到KDC(密鑰分配中心)

1B.域控制器(KDC)檢查用戶信息(登錄限制,組成員等)並創建票據授予票證(TGT

2. TGT經過加密和簽名並發送給用戶(AS-REP)。只有域中的Kerberos服務(KRBTGT)才能打開和讀取TGT數據

3.當請求票證授予服務(TGS)票證(TGS-REQ)時,用戶將TGT發送給DC。DC打開TGT並驗證PAC校驗----如果DC可以打開票證並校驗和檢出,則TGT 是有效的,TGT中的數據被有效地復制來創建TGS票證

4.使用目標服務帳戶的NTLM密碼哈希對TGS進行加密並發送給用戶(TGS-REP

5. 用戶連接到服務器托管服務的適當的端口並發送給TGS(AP-REQ)。 該服務使用其NTLM密碼哈希打開TGS票證。

當托管在TGS-REQ中引用的服務主體名稱中指定的服務的服務器上啟用Kerberos無約束委派時(步驟3),DC控制器的域控制器將用戶的TGT副本存放到服務票證中。當用戶的服務票證(TGS)被提供給服務器以進行服務訪問時,服務器打開TGS並將用戶的TGT放入LSASS以方便以后使用。Application Server現在可以無限制地模擬該用戶操作!

注意:為了使應用程序服務器配置“Kerberos Unconstrained Delegation”,域管理員或企業管理員需要在域中的計算機帳戶上配置此設置。此權限可以委派給其他組,因此請謹慎在Active Directory中授權用戶權限。

Visio的KerberosUnconstrainedDelegation-的Visio

0x03 無約束委派盜取憑證

作為攻擊者,一旦找到具有Kerberos無約束委派的服務器,那么下一步可以如下:

1.通過管理員或服務帳戶攻擊服務器。

2.通過社會工程學使用Domain Admin連接到服務器上的任何服務,並且具有無約束委派權限。

3.當管理員連接到此服務時,管理員的TGS服務票證(使用TGT)將發送到服務器並存入LSASS中,以方便以后使用。

KerberosUnConstrainedDelegation-Mimikatz-票證出口-LS-TGT-TicketDetail2

 

4.可以提取並重新使用域管理員身份驗證(TGT)票證(直到票有效期為止)。

KerberosUnConstrainedDelegation-Mimikatz-PTT-LS-Ticket2

5.可以立即使用該票證以獲取域KRBTGT帳戶密碼哈希(當域管理員被泄露時),在這種情況下,我們使用PowerShell遠程操作作為域管理員連接到域控制器。

KerberosUnConstrainedDelegation-PSRemote-ADSDC02-Mimikatz-KRBTGT2

0x04 防御措施

1.不要使用Kerberos無約束委派權限 -----配置需要使用約束委派進行委派的服務器

2.將所有高權限的管理員帳戶配置為“帳戶敏感且無法委派
DA-帳戶-SensitiveAndCantBeDelegated-02

3.從Windows Server 2012 R2域功能級別開始提供的“受保護用戶”也可以緩解此問題,因為此組中的帳戶不允許委派。

 

注意:

當受保護用戶的組帳戶升級到Windows Server 2012 R2域功能級別時,將自動應用基於域控制器的保護。對Windows Server 2012 R2域進行身份驗證的受保護用戶組的成員無法再使用以下身份進行身份驗證:Windows 8.1設備連接到Windows Server 2012 R2主機時.

默認憑據委派(CredSSP):即使啟用了“ 允許委派默認憑據組策略”設置,也不會緩存純文本密碼憑據。

Windows摘要(Windows Digest):即使啟用了Windows摘要,也不會緩存純文本密碼憑據。

NTLM:NT單向函數NTOWF的結果不會被緩存

Kerberos長期密鑰:來自Kerberos初始TGT請求的密鑰通常被緩存,因此不會中斷身份驗證請求。對於此組中的帳戶,Kerberos協議會在每個請求中驗證身份驗證。

離線登錄:登錄時不會創建緩存的驗證程序

 

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM