WDAC 強制模式引發開機階段驅動程式封鎖——大規模復原架構及原則清除之技術探討

Ping Wang 60 信譽點數
2026-07-27T05:42:54.0166667+00:00

背景及問題陳述: 我們於混合環境(包含 Azure Stack HCI 及實體伺服器)中部署了基於 Windows Defender 應用程式控制(WDAC)的基礎原則(透過「從原則轉換」指令產生可延伸標記語言檔案,並轉換為點七二進制原則檔案)。該原則基於發行者層級(發行者名稱加上 SHA256 雜湊值)進行應用程式白名單管控,並已啟用選項三(審計模式)進行為期三十日的驗證。唯切換至強制模式(透過「設定規則選項」指令刪除選項三並重新開機)後,約三成節點出現開機階段的程式碼完整性違規事件——具體表現為:

  • 系統核心模式驅動程式(主要為第三方儲存篩選驅動程式及備份磁碟區陰影複製服務提供者)被程式碼完整性動態連結程式庫標記為「未經簽署」或「不符合原則規則」(即使該驅動程式已具備微軟交叉簽署)
  • 事件日誌:微軟 Windows 程式碼完整性/操作紀錄 → 事件識別碼 三零七六(檔案「磁碟區裝置路徑\Windows\System32\drivers\xxx.sys」已被封鎖)
  • 受影響服務無法啟動,導致應用程式脈搏監測觸發嚴重警報

目前已確認排除之因素:

  • 原則延伸標記語言語法無誤(已透過「測試原則」指令驗證)
  • 所有驅動程式在審計模式下均未被記錄為「已封鎖」(「取得審計原則」指令無相關項目)
  • 安全開機設定正常,無平台組態登錄七不匹配問題

核心問題:大規模復原策略

階段一:安全模式強制引導

  • 已知 WDAC 在安全模式(包括「安全開機:精簡」及「安全開機:網路」)下會跳過原則強制執行(因為程式碼完整性啟用旗標被停用)。
  • 但對於沒有整合式遠端管理卡或整合式燈光輸出管理介面的環境,如何透過遠端 PowerShell 同時對多部伺服器執行「開機組態資料編輯器 /設定 {預設} 安全開機 網路」並重新開機?需要注意開機組態資料存放區是否位於可延伸韌體介面系統分割區而非 C 磁碟機的開機資料夾?
  • 有否已知的 Windows 復原環境開機選項可以透過「復原代理程式 /啟用」後用「關機 /r /o」強制進入復原主控台,然後透過命令提示字元執行「開機組態資料編輯器 /刪除值 {預設} 安全開機」來反轉設定?

階段二:原則儲存位置及清除方法 根據微軟文件,WDAC 原則儲存於以下位置:

  • 可延伸韌體介面系統:%SystemRoot%\System32\CodeIntegrity\CiPolicies\{原則識別碼}.p7b(主要) + 可延伸韌體介面分割區 \EFI\Microsoft\Boot\CiPolicies\(用於安全開機驗證)
  • 問題:單獨刪除 C:\Windows\System32\CodeIntegrity\CiPolicies\ 是否足夠?若可延伸韌體介面分割區內仍存在原則,系統會否在下次開機時自動重建原則?(已知若系統偵測到可延伸韌體介面內有點七二進制檔案,會強制重新複製到 %SystemRoot%\System32\CodeIntegrity\)。
  • 是否必須使用「WDAC 工具.exe --移除原則 <原則識別碼>」才可完全解除關聯?(該工具似乎會同時清理登錄機碼 HKLM\SYSTEM\CurrentControlSet\Control\CI\PolicyState 並刪除可延伸韌體介面檔案)

階段三:自動化大規模執行方案 計劃透過系統中心組態管理員或自動化 Runbook 於安全模式下執行以下邏輯:

  1. 檢測受影響主機(透過「取得原則」指令檢查當前啟用的原則)
  2. 執行「WDAC 工具.exe --移除原則 --全部」或逐一刪除原則識別碼
  3. 刪除登錄機碼 HKLM\SYSTEM\CurrentControlSet\Control\CI\PolicyState 中的「原則全域唯一識別碼清單」(避免重新開機後殘留)
  4. 重新設定「開機組態資料編輯器 /刪除值 {當前} 安全開機」並重新開機至正常模式

具體需要驗證之技術細節:

  • 「WDAC 工具.exe」在安全模式下是否運作正常?(有傳言需要「受信任安裝程式」權限才能變更可延伸韌體介面檔案)
  • 如果原則是「已簽署原則」(透過「-簽署」參數生成),是否無法透過「--移除原則」直接刪除?需要先「重設原則」還是強制覆寫空白原則?
  • 有無 Windows 預先安裝環境下的離線清理方法?(例如掛載可延伸韌體介面分割區及 C:\Windows 後,手動刪除點七二進制檔案並重建開機組態資料)

環境總結:

  • 作業系統:Windows Server 2022(組建編號 20348)+ 可延伸韌體介面第三類
  • WDAC 原則版本:基於「微軟建議封鎖規則」並加入了自訂允許清單
  • 受影響伺服器數目:約二十五部(分散於三個站點,透過多協定標籤交換網絡互連)

希望各位專家可以提供「復原流程優先級矩陣」及「PowerShell 期望狀態設定復原腳本」作為參考。如果有微軟頂級支援的知識庫文章或內部修補程式相關資訊,亦請不吝告知。多謝!

Windows 商務版 | Windows 365 企業版
0 則留言 沒有留言

1 個回答

排序依據: 最實用
  1. Chen Tran 13,700 信譽點數 獨立顧問
    2026-07-27T10:19:13.5166667+00:00

    你好,王,

    感谢您在 Microsoft Windows 论坛提问!

    基于详细的问题描述。好!关于审计模式缺少启动驱动的合理解释是,在审计模式下,代码完整性(Ci.dll)会记录用户模式和标准内核模式的违规。然而,启动启动过滤驱动程序(START_TYPE = 0,如SAN/NAS存储过滤器、VSS提供者和杀毒过滤器驱动)会在事件日志服务(EvtLog)激活前启动阶段初始化。

    此外,Microsoft 交叉签名(由 Microsoft 退休的遗留 SHA-1/SHA-256 交叉证书)通过标准 Windows 操作系统驱动检查,但除非经过 WHQL/Attestation 签名或策略中的发布者/哈希规则明确匹配,否则严格的 WDAC 内核强制执行失败。在审计模式下,早期启动 CI 事件被存储在内存内环缓冲区中,若服务未能启动,该缓冲区常被覆盖或丢失,审计时事件 ID 3076 日志为零,但强制启动时则会完全启动失败。

    鼓励您参考以下被认为有助于解答您关切的文章。

    希望以上信息对你有帮助!

    此回答有幫助嗎?

    0 則留言 沒有留言

您的回答

答案可由問題作者標示為「已接受」,而由仲裁者標示為「推薦」,這可協助使用者知道答案解決了作者的問題。