Black Hat Europe 2025 | You Win Some, You CheckSum: A Kerberos Delegation Vulnerability
三句話摘要
安全研究員 Eliran Batusch 揭露 Kerberos 委派(Delegation)中的邏輯漏洞:透過 MD4 弱雜湊與客戶端驗證繞過,攻擊者可在 MITM 位置以任意使用者身份冒充取得憑證,實現域內完全控制。 Kerberos S4U2self 中「找不到 PA-DATA 就直接成功」的客戶端邏輯缺陷,配合 MD4 無金鑰 checksum,讓 MITM 攻擊者只需兩個步驟即可冒充域內任意使用者——啟用 Kerberos Armoring(FAST) 是根治此類 PA-DATA 篡改攻擊的最佳長期方案。 S4U2self 的身份識別設計本身就是弱點:S4U2self 只需提供使用者識別(user ID),不需密碼或 ticket 作為憑據,這是設計上的協議轉換功能,卻也讓信任邊界完全依賴委派帳戶,攻擊者若能介入這條路徑就能冒充任意使用者。
重點整理
重點- 1
S4U2self 的身份識別設計本身就是弱點:S4U2self 只需提供使用者識別(user ID),不需密碼或 ticket 作為憑據,這是設計上的協議轉換功能,卻也讓信任邊界完全依賴委派帳戶,攻擊者若能介入這條路徑就能冒充任意使用者。
- 2
MD4 不只是過時,而是被錯誤使用:MS-S2U 文件描述 PA-DATA 130 的 checksum 類型時,混淆了「有金鑰(keyed, type 6)」與「無金鑰(unkeyed, type 2)」的 MD4,實際實作採用的是 plain MD4,沒有加密保護,使得攻擊者可自行重算並偽造任意內容。
- 3
客戶端驗證存在「成功退出」邏輯漏洞:Windows 客戶端驗證函式在搜尋 reply 中的 PA-DATA 130 時,若找不到該欄位,會直接以 `success` 返回、跳過所有完整性檢查;攻擊者只需將 DC reply 中的 PA-DATA 130 移除,即可讓偽造的 ticket 成功安裝至 LSA 快取。
- 4
Entra Application Proxy + CA Web Enrollment 提供完整攻擊路徑:Entra 應用程式代理本質上是雲端到本地端的 Kerberos 協議轉換(protocol transition)服務,攻擊者在 connector 和 KDC 之間進行 MITM,兩個步驟(載入 mitmproxy 腳本)即可將一般使用者的請求轉換成 Administrator 的憑證申請,並取得有效 certificate。
實用技巧與重點
乾貨- 漏洞相關數字與 CVE
- CVE 評分:7.5(高複雜度,因需 MITM)
- 研究時間軸:2024 年 2 月開始 → 3 月發現 MD4 → 7 月揭露 → 8 月確認 → 11 月官方修補
- 同期另一個研究者發現的 NT auth policy bypass:CVE 評分 8.8
- 關鍵技術名詞
- MS-S2U(Service for User):Microsoft Kerberos 協議擴展
- PA-DATA type 129:使用者名稱識別(HMAC-MD5,安全)
- PA-DATA type 130:憑證識別(使用 MD4,有問題)
- Encryption type 23 = RC4-HMAC-MD5
- Checksum type 2 = RSA-MD4(unkeyed,plain MD4)
- Checksum type 6 = RSA-MD4-DES-K(keyed,已棄用但更強)
- `KDCSVC.DLL`:DC 端 Kerberos 服務邏輯所在 DLL
- 攻擊工具:mitmproxy + impacket
- 攻擊步驟(精簡)
- MITM 介入 client ↔ KDC 之間
- 攔截 AS-REQ,移除 AES,強制降級至 RC4(encryption type 23)
- 在 S4U2self 請求中,將 PA-DATA type 129 替換為 type 130,修改 username 為 Administrator,重算 MD4
- 攔截 DC reply,移除 PA-DATA 130,繞過客戶端完整性驗證
- 偽造 ticket 安裝至 LSA,用於 S4U2proxy 存取後端資源
- 攻擊向量
- CA Web Enrollment(ADCS)
- Entra Application Proxy(混合環境,雲端 SSO → 本地 Kerberos)
- 防禦措施
- 首選:安裝 2024 年 11 月官方修補
- 次選:停用所有舊版加密類型(RC4 等)
- 根治:啟用 Kerberos Armoring(FAST,群組原則),將 PA-DATA 加密;macOS/Linux 預設已啟用,Windows 需手動開啟
結論
結論“Kerberos S4U2self 中「找不到 PA-DATA 就直接成功」的客戶端邏輯缺陷,配合 MD4 無金鑰 checksum,讓 MITM 攻擊者只需兩個步驟即可冒充域內任意使用者——啟用 Kerberos Armoring(FAST) 是根治此類 PA-DATA 篡改攻擊的最佳長期方案。”
完整解析
詳細Kerberos 委派(Delegation)是解決「雙跳問題」的機制:當使用者透過前端服務(如 SharePoint)存取後端資源(如 File Server)時,前端需要以使用者身份向後端驗證,但 Kerberos ticket 不能直接轉發。Microsoft 的解法是受限委派(Constrained Delegation)與資源型受限委派(RBCD),搭配 MS-S2U 協議擴展,其中 S4U2self 允許前端在使用者以非 Kerberos 協議(如 NTLM、憑證)登入時,向 DC 請求一張「代表該使用者的 service ticket」,再透過 S4U2proxy 存取後端。整個機制的安全前提,是這張 self-generated ticket 的身份識別欄位受到充分保護。
Silverfort 研究員 Eliran Batusch 在審閱 MS-S2U 文件時,注意到 PA-DATA type 130 的 checksum 說明有一個隱藏歧義:文件寫明當加密類型為 RC4(type 23)時,checksum type 為「2」(RSA-MD4),但 Kerberos RFC 中的 type 2 定義的是「無金鑰、純雜湊的 plain MD4」(section 6.1),而非有金鑰的加密版(type 6, section 6.2.6)。這意味著用於保護使用者名稱欄位的 checksum,只是一個任何人都能重算的 MD4 雜湊——攻擊者只要修改使用者名稱,重算 MD4,DC 完全不會察覺篡改。
於是 Batusch 設計了 MITM 攻擊:先攔截 AS-REQ 並移除 AES 選項,強制協商降級至 RC4;再在 S4U2self 請求中,將 PA-DATA type 129 替換為 type 130、把使用者名稱改為 Administrator、重算 MD4 後送出。DC 果然回傳一張 Administrator 的 ticket。但問題出現了:ticket 無法安裝到 LSA 快取——因為客戶端會對 reply 中的 PA-DATA 130 做完整性驗證,而攻擊者無法偽造 server 端的 reply checksum(該 checksum 是用 session key 加密後嵌在加密區段裡)。
Batusch 一度放棄,但重新檢視客戶端驗證函式的反組譯碼後,發現一個關鍵邏輯缺陷:若 DC reply 中找不到 PA-DATA type 130,函式直接以 `success` 返回,跳過所有後續的完整性檢查。攻擊者只需在轉發 DC reply 給客戶端前,將其中的 PA-DATA 130 欄位移除,客戶端就會接受這張偽造的 ticket 並安裝它。最終,攻擊者用兩個動作(在 mitmproxy 載入腳本)、不需任何憑證,將低權限帳戶的登入請求轉換成 Administrator 的 Kerberos ticket。透過 Entra Application Proxy(設計上即為雲端 SSO → 本地 Kerberos 的協議轉換)結合 ADCS CA Web Enrollment,Batusch 在 demo 中以 user1 登入,卻成功申請到 Administrator 的 X.509 憑證,並可進一步提取 NT hash。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

