Black Hat USA 2025 | Shade BIOS: Unleashing the Full Stealth of UEFI Malware
三句話摘要
研究員松本和樹提出「Shade BIOS」技術,說明如何讓 EFI 惡意軟體在作業系統啟動後仍能利用 UEFI 環境執行,徹底擺脫 OS 層級安全機制的偵測。 BIOS 層惡意軟體並非萬能,但 Shade BIOS 證明透過「將 BIOS 保留在記憶體中重用 UEFI 協定」可同時打破 OS 依賴與硬體依賴的兩難,使純 BIOS 惡意軟體的隱蔽性大幅超越現有啟動套件,防禦方必須將 Runtime DXE 記憶體取證納入常規安全檢查。 現有 EFI 惡意軟體的兩難困境:若在 BIOS 層實作所有功能,必須直接讀寫硬體暫存器,導致強烈的設備依賴性;若借用 OS 功能,又面臨被防毒驅動偵測的風險,兩者無法兼得。
重點整理
重點- 1
現有 EFI 惡意軟體的兩難困境:若在 BIOS 層實作所有功能,必須直接讀寫硬體暫存器,導致強烈的設備依賴性;若借用 OS 功能,又面臨被防毒驅動偵測的風險,兩者無法兼得。
- 2
SMM 後門的時代正在結束:SMM 長期被稱為 Ring -2 而被濫用,但現代 Intel 平台的 SMM Isolation 機制將非原廠 SMM 模組隔離至 Ring 3 環境,存取 OS 記憶體或 I/O 將被攔截,既有 SMM 後門在新平台上已大幅失效。
- 3
Shade BIOS 的核心洞察:UEFI BIOS 本身就是一個輕量級「作業系統」,擁有自己的記憶體管理與裝置驅動;透過掛鉤 `GetMemoryMap` 將啟動服務區塊偽裝成執行時服務,讓 OS loader 不回收這段記憶體,BIOS 程式碼即可在 OS 啟動後繼續使用 UEFI 協定。
- 4
裝置控制劫持策略:Shade BIOS 呼叫 `DisconnectController` 重置硬體暫存器(斷開 OS 驅動),再呼叫 `ConnectController` 讓 UEFI 驅動重新初始化裝置,完成惡意行為後讓 OS 驅動自我修復(約 3 分鐘),全程不碰任何特定設備暫存器,保持裝置無關性。
實用技巧與重點
乾貨- 現有 EFI 啟動套件數量:約 9 個(LoJax、Cosmic Strand 等)
- LoJax 啟動套件:停用 Driver Signature Enforcement
- Cosmic Strand 啟動套件:停用 PatchGuard
- Dirty Bounce:僅支援 Dell PowerEdge 伺服器
- Iron Chef 啟動套件:僅支援特定版本 HP ProLiant 伺服器
- SMM Isolation(Intel 平台):非原廠 SMM 模組執行於 SMM Ring 3,存取 OS 記憶體觸發 Page Fault
- Shade BIOS 五大技術問題及解法:
- 執行時記憶體管理 → 掛鉤 `GetMemoryMap`,保留黃色 General Memory 供 BIOS 專用
- 記憶體虛擬化 → 改用 Partial Identity Mapping(分頁設為恆等映射)
- 僅啟動期資源 → 啟動時複製指標,執行時還原
- UEFI 變數存取 → 掛鉤 `SetVariable`,為變數追加 Runtime 屬性
- 獨占控制權 → 使用 CR8 / Task Priority Register(TPR)停用中斷,UEFI 驅動極少使用此暫存器
- 定時器中斷模擬:遍歷計時事件雙向鏈結串列,手動觸發所有 Notify Function
- Shade BIOS 唯一需要的 OS 功能:`MmGetVirtualForPhysical` API
- 設備控制恢復時間:約 3 分鐘(OS 驅動自我修復)
- C2 通訊 Demo 監聽埠:3333
- 偵測工具:Craft Dinner(Satoshi Tanda 開發,開源,可從核心記憶體傾印 Runtime DXE 模組)
結論
結論“BIOS 層惡意軟體並非萬能,但 Shade BIOS 證明透過「將 BIOS 保留在記憶體中重用 UEFI 協定」可同時打破 OS 依賴與硬體依賴的兩難,使純 BIOS 惡意軟體的隱蔽性大幅超越現有啟動套件,防禦方必須將 Runtime DXE 記憶體取證納入常規安全檢查。”
完整解析
詳細EFI/BIOS 惡意軟體長期被視為「小題大做」,但在國家級攻擊與雲端安全領域,BIOS 的重要性不可忽視。BIOS 由眾多廠商實作,天然適合植入後門;且其執行優先於 OS 與 Hypervisor,理論上可影響同一實體主機上所有虛擬機。Vault 7 等外洩文件也顯示,國家安全機構確實將 EFI 安全視為重要議題。
然而現有的 EFI 啟動套件(共約 9 個)全都陷入同一個兩難困境:若想讓惡意行為完全在 BIOS 層執行,就必須直接讀寫硬體暫存器——這意味著攻擊者必須針對每款設備撰寫專屬驅動,造成嚴重的硬體依賴性,例如 Dirty Bounce 只能在 Dell PowerEdge 上運作。反過來,若借用 OS 的抽象介面(如 Windows API、核心驅動),就不可避免地暴露在防毒軟體、過濾驅動的監控之下;即便停用 Driver Signature Enforcement 或 PatchGuard,也難以確保停用所有安全機制。此外,SMM 隔離機制的普及更讓傳統 SMM 後門在新平台上基本失效。
松本和樹的突破點在於一個簡單洞察:UEFI BIOS 本身就是一個擁有記憶體管理與設備驅動的輕量 OS。因此他設計了 Shade BIOS,核心思想是透過掛鉤 `GetMemoryMap` 啟動服務,將原本會被 OS loader 回收的 UEFI 啟動服務記憶體區塊偽裝成「執行時服務」,使其在 OS 啟動後永久保留。為讓保留的 BIOS 程式碼能正常運作,他依序解決五個問題:為 BIOS 保留一塊專屬的常規記憶體避免踩踏 OS 記憶體、改用 Partial Identity Mapping 解決虛擬位址問題、複製啟動期指標於執行時還原、為 UEFI 變數追加 Runtime 屬性,以及使用 CR8/TPR 暫存器停用中斷並手動模擬定時器事件。裝置控制方面,Shade BIOS 利用 UEFI Driver Model 的 `DisconnectController` 與 `ConnectController` 服務在 BIOS 與 OS 驅動之間切換設備所有權,全程不碰任何設備特定暫存器,因此同一份程式碼可在不同機器上執行。
演示結果顯示,Shade BIOS 的 C2 通訊成功繞過 Windows Defender 防火牆封鎖,而傳統核心驅動在同樣環境下直接失敗。偵測方面,由於 Shade BIOS 以 Runtime DXE 模組形式映射於核心記憶體,可使用開源工具 Craft Dinner 傾印這些模組並進行靜態分析,或觀察副作用(設備短暫斷線約 3 分鐘)來發現異常。防禦建議包括:啟用 SMM Isolation 阻擋 SMM 後門、定期對核心記憶體做取證檢查,政府採購設備尤其應在交付時驗證是否存在硬體層後門。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

