KeyFrame內部研究專用

SecTor 2025 | How Adversaries Beat User-Mode Protection Engines for Over a Decade

Black Hat·4月19日週日·43 min英文

三句話摘要

攻擊者如何透過三大戰術繞過端點安全產品的 User Mode Hook 監控機制。 --- User Mode Hook 是目前最主流的端點監控機制,但它與攻擊者同處一個權限層的先天缺陷,使得任何純 User Mode 的防護策略都必然存在可被繞過的系統性弱點,Call Stack 異常分析是目前防守方最可行的偵測支點。 1. User Mode Hook 的根本缺陷在於自我保護能力

重點整理

重點
  • 1

    1. User Mode Hook 的根本缺陷在於自我保護能力

  • 2

    安全產品選擇 User Mode 是因為開發穩定、無 Patch Guard 限制、且可取得完整應用層明文(如 TLS 解密後的流量)。但這同時意味著攻擊者只要有相同權限,就能對抗這套機制——這是架構層面無法迴避的矛盾。

  • 3

    2. Hook 規避技術的核心邏輯是「取得未被污染的原始指令」

  • 4

    無論是二次載入乾淨 DLL、從其他未被監控的程序記憶體竊取原始碼,還是直接呼叫 Syscall Index 跳過 NTDLL,攻擊者的目標都是繞過安全廠商在記憶體中植入的跳轉指令,本質手法高度重疊。

  • 5

    3. Direct Syscall 是最難偵測的繞過手法

  • 6

    攻擊者可透過解析 NTDLL、計算導出函式排列順序、解析 Kernel 二進位或硬編碼 Index 等方式取得 Syscall 號碼後直接觸發核心轉換,完全跳過所有 Hook。若系統啟用 VBS,預設使用 `INT2E` 而非 `SYSCALL` 指令,這也是一個可額外利用的差異點。

  • 7

    4. Call Stack 是目前最有效的行為偵測信號

  • 8

    幾乎所有 Hook 規避手法都會在 Call Stack 上留下異常特徵——浮動的匿名記憶體區段、不符合預期的模組路徑、過短的呼叫鏈。防守方應以 Call Stack 分析作為主要運行時偵測基礎,並可搭配 CET Shadow Stack 對抗偽造。

  • 9

    --

實用技巧與重點

乾貨
  • 數字與時間線
  • 2018 年起出現系統性繞過 User Mode Hook 的技術爆發趨勢
  • Hook 規避技術粗分 4 大類,約 20 種具體變體
  • 繞過 User Mode Hook 的技術數量甚至多於代碼注入技術數量
  • 工具與框架
  • Frida Toolkit(Hook 框架,防守方與惡意軟體分析師通用)
  • Cape / Cuckoo(沙箱分析工具,使用 Inline Hook)
  • Volatility Plugin(記憶體取證,可偵測 Unhooking,去年發布)
  • MITRE ATT&CK(目前僅在一個段落覆蓋 Binary Restoration 與 Engine Disarming,覆蓋不完整)
  • 技術名稱與分類
  • | 類別 | 具體方法 |
  • |------|----------|
  • | Secondary DLL Mapping | Reflective Loading、Clone & Load、Section Remapping |
  • | Binary Restoration / Unhooking | 從其他程序記憶體複製、Suspended Child Process、Section Refresh、Short Circuiting |
  • | Direct Syscall Invocation | 解析 NTDLL、計數排序法、Heaven's Gate(32→64位元)、解析 Kernel ntoskrnl.exe、Bring Your Own Index、動態解析(硬體中斷點 + Exception Handler) |
  • | Code Splicing / Byte Stealing | 載入原始 Stub 至浮動記憶體、Stub Reuse |
  • | 參數置換(TOCTOU) | Hardware Breakpoint + Exception Handler 置換參數 |
  • | 引擎除役 | FreeLibrary 卸載、Unmap DLL、Process Mitigation 限制載入、Preload 控制生命週期 |
  • Syscall 技術細節
  • Windows 使用 `EAX` 暫存器傳遞 Syscall Index
  • 轉換指令:`SYSCALL`(現代)、`INT2E`(舊版,VBS 啟用時回歸為預設)
  • NTDLL 導出函式在記憶體中依 Index 升序排列(Microsoft 長期編譯慣例)
  • ZW 前綴函式持有 Syscall Index,可用於解析 Kernel 轉換表
  • 偵測機會
  • 運行時:Call Stack 中出現匿名浮動記憶體、Syscall 指令出現在非系統二進位、硬體中斷點或 Trap Flag 存在但無 Debugger attached
  • 取證:DLL 路徑異常但 Header 與大小相同、同一 DLL 出現於兩個不同基底位址、記憶體快照中 Hook 已被移除
  • --

結論

結論

User Mode Hook 是目前最主流的端點監控機制,但它與攻擊者同處一個權限層的先天缺陷,使得任何純 User Mode 的防護策略都必然存在可被繞過的系統性弱點,Call Stack 異常分析是目前防守方最可行的偵測支點。

完整解析

詳細

端點安全產品的 User Mode 監控引擎,本質上是一個被注入至受保護程序的 DLL。它透過 Inline Hook——也就是在運行時直接修改記憶體中的函式指令——攔截關鍵 API 呼叫,並在允許繼續執行前進行惡意行為判斷。這套機制之所以被廣泛採用,是因為 User Mode 開發難度低、不受 Windows Kernel Patch Guard 限制,而且能在應用層取得完整的未加密內容(例如 TLS 流量在解密後的明文)。然而,這套機制從誕生之初就帶著一個根本性的矛盾:它與它想要監控的攻擊者處於同一個權限空間。

攻擊者的第一個主要戰術是「Hook 規避」,目標是讓惡意程式碼完全繞過攔截點執行。最直覺的方式是「二次載入乾淨 DLL」——透過 Reflective Loading、磁碟複製、或低階 NT API 的 Section Remapping,在程序記憶體中建立一份沒有 Hook 的 DLL 副本,之後所有 API 呼叫皆透過這個副本發出。更進一步的「Unhooking」技術則直接將已被 Hook 的原始函式還原:攻擊者可從其他未被監控程序的記憶體竊取乾淨程式碼、透過 Section Refresh 將同一模組重新映射至相同基底位址後還原,或是「Short Circuiting」——定位安全廠商自己存放的原始指令 Stub,將 Hook 跳轉目標改寫為那個位址,讓 Hook 自行失效。在這些方法都涉及 System Call 的前提下,攻擊者又衍生出「Direct Syscall Invocation」——直接提取 Syscall Index 並透過 `SYSCALL` 或 `INT2E` 指令轉換至 Kernel 特權模式,完整跳過 NTDLL 中所有的 Hook 層。取得 Index 的方式包含:解析 NTDLL 導出函式的排列順序(Microsoft 長期依 Index 值升序編譯)、利用 Heaven's Gate 讓 32 位元程序直接呼叫 64 位元原生 DLL、解析 Kernel 二進位 `ntoskrnl.exe` 中的 ZW 函式,乃至硬編碼各 OS 版本對應的 Index 值(Bring Your Own Index)。

第二個戰術「參數置換」則採取完全不同的思路:攻擊者不試圖繞過 Hook,而是讓 Hook 正常執行,但在安全引擎完成檢查、將控制權交回目標函式的那一瞬間,偷換成惡意參數。這是一種典型的 TOCTOU(Time-of-Check to Time-of-Use)漏洞利用模式。攻擊者透過硬體中斷點或單步執行(無需修改任何記憶體)找到安全引擎回傳的指令位址,先以良性參數呼叫函式通過檢查,在斷點觸發後由 Exception Handler 將參數替換為惡意版本再繼續執行。防守方的反制手段是在 Hook 內主動偵測硬體中斷點的存在或 Trap Flag 的啟用——在沒有 Debugger 連接的情況下,這些特徵高度可疑。

第三個戰術「引擎除役」目標更直接:讓安全 DLL 根本無法正常運作。方法包含呼叫 `FreeLibrary` 強制卸載、透過 Process Mitigation 限制子程序只能載入 Microsoft 簽章程式碼(安全廠商的 DLL 自然無法通過),或在子程序啟動早期透過 API 控制載入順序,主動攔截並阻止安全 DLL 被初始化。針對這類攻擊,防守方若在自身引擎中加入狀態監控(偵測自己是否突然消失或停留在未初始化狀態),可在運行時有效識別,但事後取證則相當困難。

整體而言,講者的研究揭示了一個系統性問題:User Mode 保護引擎因為與攻擊者共享執行環境,無法在架構上提供充分的自我保護。目前最有效的防線是對 Call Stack 的即時分析——幾乎所有繞過手法都會在呼叫鏈上留下可識別的異常特徵。更長遠的方向則是搭配硬體層支援(如 Intel CET Shadow Stack)或 Kernel 層的監控能力,才能從根本上縮小這個攻擊面。

---

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「Web2 安全」的內容

Risky Bulletin: Russia starts blocking DoH and DoT
編輯精選
8 min
Web2 安全英文PODCAST8月26日

Risky Bulletin: Russia starts blocking DoH and DoT

Risky Business

  • 國家級網路管制層級提升:俄羅斯主動封鎖加密 DNS 協定對抗審查工具,中國加速淘汰 Windows 系統並遷移自主 Linux 發行版,各國正透過技術與法律手段強化網路主權與信息控制能力。
  • 詐騙犯罪走向精密化與自動化:從冒充警察的聲音詐騙(竊取 7.2 百萬美元)、AI 語音代理自動化破解 iPhone 啟用鎖、到跨越數百網站的投資詐騙(詐騙 7400 萬美元),犯罪組織正利用自動化工具與 AI 技術大幅降低成本並擴大規模。
  • AI 惡意軟體威脅實際上被嚴重誇大:405 個整合 AI 的惡意軟體樣本中僅 12 個於真實感染被偵測,其餘來自測試環境,證明當前 AI 惡意軟體仍停留於實驗階段,尚未構成主流威脅。
SANS Stormcast Wednesday, August 26th, 2026: Obfuscating SSRF; Paint and Photos AI Watermarks; FTP Banner C2;
5 min
Web2 安全英文PODCAST8月26日

SANS Stormcast Wednesday, August 26th, 2026: Obfuscating SSRF; Paint and Photos AI Watermarks; FTP Banner C2;

SANS Stormcast

  • SSRF 攻擊者已進化出高級繞過手段,不直接使用元數據服務 IP(169.254.169.254),而改用專門域名服務將請求轉址,支援點或破折號分隔 IP,甚至可自部署 DNS 伺服器進行 DNS 重綁定攻擊,使傳統簡易過濾機制失效。
  • 本地 AI 模型並非完全隱私:微軟 Paint 雖在本地執行生成邏輯,但安全檢查需上傳提示文字至遠程伺服器,返回時圖像內嵌不易移除的伺服器 GUID 隱形浮水印,可見浮水印(Copilot 圖標)則易被移除。
  • 傳統 FTP 協議被新型惡意軟體重新利用為命令控制通道,透過 FTP banner 傳遞指令於連接埠 21,防守者應視任何出站 FTP 流量為異常信號。
SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car
7 min
Web2 安全英文PODCAST8月25日

SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car

SANS Stormcast

  • PNG 容器攻擊的簡易性設計:Double Cup 不依賴複雜的 Exif 或隱寫技術,只用 PNG 副檔名和檔頭來偽裝,核心是利用 findstr 指令的常見可用性讓執行變得無需額外工具。
  • Web Audio API 的隱密指紋識別:音訊於增益零的無聲狀態下播放,使用者完全無感,但錄製波形足以建立裝置特徵,在瀏覽器原生功能層面難以區分是反詐欺還是過度追蹤。
  • 域名過期引發的串聯漏洞:DMARC 報告端點使用過期域名是常見疏漏,允許攻擊者透過簡單的域名註冊取得他人的 SPF/DKIM 錯誤報告,進而收集目標系統配置情報。