Invoke-Kerberoasting
00 min
2024-12-16

Invoke-Kerberoasting:Kerberos 密碼破解技術的 PowerShell 實現

什麼是 Kerberoasting?

Kerberoasting 是一種針對 Active Directory 環境中的 Kerberos 認證協議的攻擊技術。攻擊者通過請求服務賬戶的 Kerberos 服務票據(Service Ticket,通常以加密的形式存儲),然後離線進行暴力破解,從而獲取服務賬戶的明文密碼。
此攻擊通常針對使用弱密碼的服務賬戶,並有可能導致進一步的橫向移動或提權。

Invoke-Kerberoasting 工具

Invoke-Kerberoasting 是一個用於執行 Kerberoasting 攻擊的 PowerShell 腳本。它是 PowerView(一個用於 Active Directory 枚舉和攻擊的 PowerShell 工具集)的組件,或者是其他類似工具(如 Empire 或 Rubeus)中實現的功能。

工作原理

  1. 列舉 SPN(Service Principal Name)
      • 查詢 Active Directory 中的所有服務賬戶,這些賬戶具有註冊的 SPN(Service Principal Name)。
      • SPN 用於標識運行特定服務的用戶或計算機賬戶,例如 SQL Server 或 IIS。
  1. 請求 Kerberos 服務票據(TGS)
      • 對列舉到的 SPN 發送請求以獲取服務票據(Ticket Granting Service, TGS)。
      • Active Directory 返回的 TGS 是用服務賬戶的哈希進行加密的。
  1. 提取並保存加密的票據
      • 將加密的 TGS 保存到文件中,通常以 Kirbi 格式或 Hashcat 支持的格式保存。
  1. 離線破解
      • 使用工具(如 Hashcat 或 John the Ripper)對加密的票據進行暴力破解或字典攻擊,還原服務賬戶的明文密碼。

PowerShell 命令示例

以下是使用 Invoke-Kerberoasting 的常見步驟:

1. 獲取可進行 Kerberoasting 的目標賬戶

使用以下命令列舉 Active Directory 中所有具有 SPN 的賬戶:
powershell
复制
Get-DomainUser -SPN
該命令會返回所有註冊了 SPN 的賬戶,這些賬戶是潛在的攻擊目標。

2. 執行 Kerberoasting

使用 Invoke-Kerberoasting 對列舉到的 SPN 發起攻擊,並提取加密票據:
powershell
复制
Invoke-Kerberoasting -OutputFormat Hashcat -SaveTo kerberoasting_hashes.txt
  • OutputFormat
    • 支持的格式包括 HashcatJohn(用於不同的破解工具)。
  • SaveTo
    • 指定保存提取的 TGS 哈希的位置。

3. 離線破解 TGS 哈希

將保存的哈希導入 Hashcat 或 John the Ripper 進行破解。例如,使用 Hashcat:
bash
复制
hashcat -m 13100 kerberoasting_hashes.txt /path/to/wordlist.txt
  • m 13100:指定 Hashcat 的 Kerberos 5 TGS 哈希破解模式。
  • /path/to/wordlist.txt:字典文件,用於嘗試破解。

防禦措施

Kerberoasting 攻擊的成功與否,取決於服務賬戶的密碼強度以及 Active Directory 的配置。以下是防禦此類攻擊的建議:

1. 使用強密碼策略

  • 確保所有服務賬戶使用強密碼(長度至少 20 個字符,並包含大小寫字母、數字和特殊字符)。
  • 避免使用默認密碼或易於猜測的密碼。

2. 最小權限原則

  • 僅為服務賬戶分配必要的權限,避免將服務賬戶用於多個應用或服務。

3. 移除不必要的 SPN

  • 定期審核 Active Directory 中的 SPN,刪除不再需要的服務賬戶或 SPN。

4. 啟用 Kerberos AES 加密

  • 配置服務賬戶使用 Kerberos 的 AES 加密(AES128 或 AES256),而不是 RC4 加密,因為 AES 更難破解。

5. 監控與檢測

  • 使用 SIEM 工具(如 Splunk 或 ELK)監控域控上的 Kerberos 請求,檢測是否有大量 TGS 請求。
  • 建立基線,並關注異常的 SPN 查詢或 TGS 請求行為。

6. 限制服務賬戶的 Kerberos 委派

  • 將服務賬戶的委派模式設置為 “不允許委派” 或 “受限制的委派”,以減少攻擊面。

檢測 Kerberoasting 攻擊

以下是一些可以用於檢測 Kerberoasting 的手段:
  1. 查看事件日誌
      • 在域控的事件日誌中,搜索與 Kerberos TGS 請求相關的事件:
        • 事件 ID 4769:生成 Kerberos 服務票據的事件。
        • 關注短時間內大量的 TGS 請求,這可能是攻擊的跡象。
  1. 分析網絡流量
      • 使用流量分析工具(如 Wireshark 或 Zeek)檢測可疑的 Kerberos 服務請求。
  1. 使用安全工具
      • 部署 EDR/XDR 解決方案,如 CrowdStrike、Carbon Black 或 Microsoft Defender for Identity,檢測和響應可疑的 Kerberos 活動。

總結

Invoke-Kerberoasting 是一個強大的 PowerShell 工具,用於對 Active Directory 域環境進行 Kerberos 密碼破解攻擊。它利用了 Kerberos 協議中 SPN 的設計特性,通過離線破解技術獲取服務賬戶的明文密碼。
為防範此類攻擊,企業應採取多層次的防禦策略,包括加強密碼策略、限制 SPN 的使用、啟用 AES 加密以及實施持續監控。有效的檢測和快速響應可以大大降低 Kerberoasting 攻擊的成功率。
上一篇
HB
下一篇
AZ-900