Invoke-Kerberoasting:Kerberos 密碼破解技術的 PowerShell 實現
什麼是 Kerberoasting?
Kerberoasting 是一種針對 Active Directory 環境中的 Kerberos 認證協議的攻擊技術。攻擊者通過請求服務賬戶的 Kerberos 服務票據(Service Ticket,通常以加密的形式存儲),然後離線進行暴力破解,從而獲取服務賬戶的明文密碼。
此攻擊通常針對使用弱密碼的服務賬戶,並有可能導致進一步的橫向移動或提權。
Invoke-Kerberoasting 工具
Invoke-Kerberoasting
是一個用於執行 Kerberoasting 攻擊的 PowerShell 腳本。它是 PowerView(一個用於 Active Directory 枚舉和攻擊的 PowerShell 工具集)的組件,或者是其他類似工具(如 Empire 或 Rubeus)中實現的功能。工作原理
- 列舉 SPN(Service Principal Name):
- 查詢 Active Directory 中的所有服務賬戶,這些賬戶具有註冊的 SPN(Service Principal Name)。
- SPN 用於標識運行特定服務的用戶或計算機賬戶,例如 SQL Server 或 IIS。
- 請求 Kerberos 服務票據(TGS):
- 對列舉到的 SPN 發送請求以獲取服務票據(Ticket Granting Service, TGS)。
- Active Directory 返回的 TGS 是用服務賬戶的哈希進行加密的。
- 提取並保存加密的票據:
- 將加密的 TGS 保存到文件中,通常以 Kirbi 格式或 Hashcat 支持的格式保存。
- 離線破解:
- 使用工具(如 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
:- 支持的格式包括 Hashcat 和 John(用於不同的破解工具)。
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 的手段:
- 查看事件日誌
- 在域控的事件日誌中,搜索與 Kerberos TGS 請求相關的事件:
- 事件 ID 4769:生成 Kerberos 服務票據的事件。
- 關注短時間內大量的 TGS 請求,這可能是攻擊的跡象。
- 分析網絡流量
- 使用流量分析工具(如 Wireshark 或 Zeek)檢測可疑的 Kerberos 服務請求。
- 使用安全工具
- 部署 EDR/XDR 解決方案,如 CrowdStrike、Carbon Black 或 Microsoft Defender for Identity,檢測和響應可疑的 Kerberos 活動。
總結
Invoke-Kerberoasting
是一個強大的 PowerShell 工具,用於對 Active Directory 域環境進行 Kerberos 密碼破解攻擊。它利用了 Kerberos 協議中 SPN 的設計特性,通過離線破解技術獲取服務賬戶的明文密碼。為防範此類攻擊,企業應採取多層次的防禦策略,包括加強密碼策略、限制 SPN 的使用、啟用 AES 加密以及實施持續監控。有效的檢測和快速響應可以大大降低 Kerberoasting 攻擊的成功率。