Black Hat USA 2025 | I'm in Your Logs Now, Deceiving Your Analysts and Blinding Your EDR
三句話摘要
攻擊者可透過 Windows ETW 事件偽造機制,繞過 EDR 監控、淹沒告警上限,使 Microsoft Defender for Endpoint 等雲端 EDR 系統完全致盲。 ETW 事件偽造與 buffer 洪水攻擊讓雲端 EDR 的遙測可信度從根本動搖,攻擊者只需一般使用者權限即可讓 Defender for Endpoint 等系統長達 24 小時甚至持續致盲,而防禦方目前只能被動偵測異常模式、等待廠商逐一修補。 任何使用者皆可對已存在的 ETW provider 注冊並發送事件:Windows ETW 的設計允許同一 GUID 被多個 process 同時注冊,ETW kernel 不記錄事件由哪個 process 發出,只記錄 PID(且為真實觸發 activity 的 PID,不可偽造),因此偽造事件在 EDR 眼中與真實事件無異。
重點整理
重點- 1
任何使用者皆可對已存在的 ETW provider 注冊並發送事件:Windows ETW 的設計允許同一 GUID 被多個 process 同時注冊,ETW kernel 不記錄事件由哪個 process 發出,只記錄 PID(且為真實觸發 activity 的 PID,不可偽造),因此偽造事件在 EDR 眼中與真實事件無異。
- 2
雲端 EDR 的事件上限設計反而成為攻擊面:Defender for Endpoint 對多數 ETW provider 設有全域上限(如 LDAP 每 24 小時 1,000 筆),攻擊者可預先刷爆配額,讓後續真實攻擊行為的事件被靜默丟棄,不送往雲端分析引擎。
- 3
Buffer pool 洪水攻擊可持續致盲 EDR 直到重開機:ETW trace session 的 buffer pool 一旦被填滿,ETW kernel 會通知所有訂閱該 provider 的 session 暫停接收,包含 EDR 的 real-time session,且此狀態持續到機器重開機,效果比 24 小時配額刷爆更持久。
- 4
偽造告警可操縱 Conditional Access 政策,將正當使用者或裝置踢出網路:藉由發出大量假性惡意軟體或風險告警,可人為拉高使用者或裝置的風險評分,觸發 Intune / Azure AD Conditional Access 策略,讓合法使用者被封鎖,製造混亂或轉移 SOC 分析師注意力。
實用技巧與重點
乾貨- 全域上限(Global cap):Defender for Endpoint LDAP provider 設定為每台機器每 24 小時 1,000 筆唯一事件,超過部分不上傳
- 本地上限(Local cap):相同 process、相同查詢參數於 24 小時內只記錄一次(first-seen 機制)
- Buffer pool 存放於 non-paged kernel memory,可用 `logman` 查詢設定值
- Trace session 上限:單台機器最多 64 個 trace session,可被惡意佔滿以阻擋 EDR 新增 session
- 可偽造的 provider 範例:LDAP client、Microsoft Anti-malware Service、Windows Defender ETW provider、TCP/IP provider
- 工具名稱:
- `ETW Explorer`:瀏覽與搜尋 ETW manifest 的工具
- `ETW Top`(作者自製):監控 ETW provider 事件遺失狀況的 CLI 工具
- `Bamboozle EDR`(作者自製):一鍵偽造 ETW 事件、刷爆 capping、模擬攻擊工具(BloodHound/SharpHound LDAP 查詢等)
- 程式語言:作者以 Go 語言撰寫 PoC,使用 Windows native syscall 直接呼叫 ETW API 以控制 header(keywords、level 等)
- 通報結果:Microsoft MSRC 確認問題,評估為「不需立即修補」;August 7 發布的更新僅修補 anti-malware provider 單一項目
- Defender for Endpoint 依賴的 ETW provider 數量:超過 100 個(作者回報的清單),Microsoft 僅修補 1 個
結論
結論“ETW 事件偽造與 buffer 洪水攻擊讓雲端 EDR 的遙測可信度從根本動搖,攻擊者只需一般使用者權限即可讓 Defender for Endpoint 等系統長達 24 小時甚至持續致盲,而防禦方目前只能被動偵測異常模式、等待廠商逐一修補。”
完整解析
詳細Event Tracing for Windows(ETW)是 Windows 內建的高效能遙測框架,設計初衷是效能監控與除錯,而非資安。現代雲端 EDR 廠商(包含 Microsoft Defender for Endpoint 與 CrowdStrike)大量仰賴 ETW 取代傳統 kernel callback,原因在於 ETW 更穩定、可動態調整訂閱 provider、不需注入每個 process,且提供原生的 buffer 機制降低事件遺失率。這使得 ETW 成為端點遙測的核心命脈——也因此成為高價值的攻擊目標。
Falcon Force 的 Olaf 在研究過程中發現,ETW 的安全模型存在根本性弱點:任何具有適當 Windows 權限(通常是一般使用者即可)的 process,都能向已存在的 ETW provider GUID 注冊並取得 handle,進而向該 provider 已連接的所有 trace session 發送自訂事件。由於 ETW kernel 不記錄「是哪個 process 發出這個事件」,只記錄事件內容中的 PID(且該 PID 是實際發起 activity 的 process,並非注冊 provider 的 process),偽造事件與真實事件在 EDR 眼中毫無差異。作者以 Go 撰寫 PoC,透過 Windows native API 繞過第三方套件的 header 限制,成功讓偽造的 LDAP 查詢事件出現在 Defender for Endpoint 的雲端告警介面。
進一步分析 Defender for Endpoint 的設定檔後,作者發現其對每個 ETW provider 都設有「全域上限」(global cap,例如 LDAP provider 每 24 小時 1,000 筆)與「first-seen 本地上限」(相同 process 相同查詢 24 小時只記一次)。攻擊者可在執行真實攻擊前,先以垃圾事件刷爆該配額,讓後續真實的惡意 LDAP 查詢或 anti-malware 偵測事件永遠無法上傳雲端,SOC 分析師因此對攻擊行為渾然不知。實驗驗證:發送超過 1,000 筆事件後,雲端確實只顯示 1,000 筆,後續的「canary」測試 process 事件完全消失。除了配額刷爆,作者還發現 ETW 的 buffer pool 機制同樣可被濫用——若攻擊者開啟一個 trace session 但不連接 consumer,持續向 provider 噴射事件填滿 buffer,ETW kernel 會通知所有訂閱該 provider 的 session(包含 EDR 的 real-time session)停止接收,效果持續到機器重開機為止,比 24 小時重置的配額攻擊更具持久性。
在進攻應用上,作者還展示了更具破壞力的場景:透過偽造大量 anti-malware 偵測事件(使用真實惡意軟體名稱與偵測 ID,但指向不存在的假檔案),可人為製造告警洪水,讓 SOC 分析師陷入假性恐慌;搭配 Azure AD Conditional Access 與 Intune 合規政策,甚至可將合法使用者或裝置的風險評分推高至被封鎖門檻,強制踢出企業網路。防禦方目前能做的相當有限:監控事件數量的異常峰值後驟降(spike-then-nothing 模式)可作為偵測指標;調整部分 ETW provider 的安全描述符(Security Descriptor)也許能限制非特權注冊,但風險不明。Microsoft 的回應是在 August 7 的更新中僅修補 anti-malware 單一 provider,其餘超過百個 MDE 依賴的 provider 仍處於可被偽造的狀態。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

