評估漏洞利用防護

本文說明如何利用稽核模式評估漏洞防護緩解措施、檢視相容性指引、設定系統與程式設定以進行測試,以及在正式環境中啟用緩解措施前解讀稽核事件。

惡意探索保護可協助保護裝置,以避免惡意程式碼使用惡意探索來散播和感染其他裝置。 緩和措施可套用至作業系統或個別應用程式。 增強的緩和措施體驗工具組 (EMET) 中的許多功能包含在惡意探索保護中。 (EMET 已終止支援。)

在稽核中,您可以在測試環境中查看緩和措施如何在特定應用程式中運作。 稽核模式顯示如果你在生產環境中啟用漏洞利用保護 發生什麼事。 透過使用稽核模式,您可以驗證漏洞防護不會對您的業務應用造成不利影響,並查看哪些可疑或惡意事件發生。

評估漏洞防護的一般指引

漏洞防護緩解措施在作業系統的低層級運作,而某些執行類似低階操作的軟體,若設定為透過漏洞保護來保護,可能會出現相容性問題。

哪些軟體不應該受到漏洞利用保護?

  • 反惡意軟體與入侵防護或偵測軟體
  • 除錯器
  • 處理數位版權管理 (DRM) 技術 (的軟體,也就是電子遊戲)
  • 使用反除錯、混淆或掛鉤技術的軟體

你應該考慮啟用漏洞防護的哪些類型的應用程式?

接收或處理不受信任資料的應用程式。

哪些流程不在漏洞保護範圍內?

服務

  • 系統服務
  • 網路服務

預設啟用的漏洞防護緩解措施

下表列出預設啟用的漏洞防護緩解措施:

緩和措施 預設啟用
資料執行防護 (DEP) 64 位元與 32 位元應用
驗證例外處理鏈 (SEHOP) 64 位元應用
驗證堆積完整性 64 位元與 32 位元應用

已廢棄的「程式設定」緩解措施

以下的程式設定緩解措施已被棄用。 表格說明了為何每一項被移除:

「程式設定」緩解措施 原因
匯出位址篩選 (EAF) 應用程式相容性問題
匯入位址篩選 (IAF) 應用程式相容性問題
模擬執行 (SimExec) 被 Arbitrary Code Guard (ACG) 取代
驗證 API 呼叫 (CallerCheck) 被 Arbitrary Code Guard (ACG) 取代
驗證堆疊完整性 (StackPivot) 被 Arbitrary Code Guard (ACG) 取代

Office 應用程式最佳實務

對於像 Outlook、Word、Excel、PowerPoint 和 OneNote 這類 Office 應用程式,請使用攻擊面縮小(ASR)規則取代漏洞防護。 ASR 規則提供了一種更現代化的方法來防止這些應用程式被濫用:

對於 Adobe Reader,請使用以下 ASR 規則:

封鎖 Adobe Reader 使其無法建立子程序

Google Chrome 不再建議啟用 EMET) (漏洞防護,因為該功能過於冗餘或已被內建攻擊緩解措施取代。

應用程式相容性列表

下表列出了與漏洞防護中包含的緩解措施相容性問題的特定產品。 若想透過漏洞保護保護產品,必須停用特定不相容的緩解措施。 請注意,此清單考慮了最新版本產品的預設設定。 當你對標準軟體套用某些外掛或其他元件時,可能會產生相容性問題。

Note

當 Oracle Java 使用為虛擬機器保留大量記憶體的設定執行時(亦即使用 -Xms 選項),EMET 緩解措施可能會與其不相容。

產品 漏洞利用防護緩解措施
.NET 2.0/3.5 EAF/IAF
7-Zip 主控台/圖形介面/檔案管理器 EAF
AMD 62xx 處理器 EAF
Avecto (BeyondTrust) Power Broker EAF、EAF+、堆疊轉向
某些 AMD (ATI) 顯示驅動程式 系統 ASLR=AlwaysOn
DropBox EAF
Excel Power Query、Power View、Power Map 與 PowerPivot EAF
Google Chrome (不再推薦) EAF+
Immidio Flex+ EAF
Microsoft Office Web 元件 (OWC) 系統 DEP=AlwaysOn
Microsoft PowerPoint EAF
Microsoft 團隊 EAF+
Oracle Javaǂ 堆積噴霧
Pitney Bowes 印刷審核 6 SimExecFlow
Siebel CRM 版本為 8.1.1.9 西霍普
Skype EAF
SolarWinds Syslogd 管理員 EAF
Windows 媒體播放器 MandatoryASLR、EAF

ǂ EMET 緩解措施在使用保留大量記憶體給虛擬機的設定時,可能與 Oracle Java 不相容, (使用 -XMS 選項) 。

啟用漏洞防護系統設定以進行測試

這些漏洞利用防護系統設定預設為啟用,唯 Windows 10 及之後版本、Windows Server 2019 及之後版本、Windows Server 1803 核心版及之後版本上的強制位址空間組態隨機載入 (ASLR) 除外。

系統設定 設定
控制流量防護 (CFG) 請使用預設 (開啟)
資料執行防護 (DEP) 請使用預設 (開啟)
強制執行映像隨機載入 (強制 ASRL) 使用預設 (關閉)
隨機分配記憶體 (自下而上 ASRL) 請使用預設 (開啟)
高熵ASRL 請使用預設 (開啟)
驗證例外處理鏈 (SEHOP) 請使用預設 (開啟)

以下 XML 範例顯示預設系統緩解配置:

<?xml version="1.0" encoding="UTF-8"?>
<MitigationPolicy>
  <SystemConfig>
    <DEP Enable="true" EmulateAtlThunks="false" />
    <ASLR ForceRelocateImages="false" RequireInfo="false" BottomUp="true" HighEntropy="true" />
    <ControlFlowGuard Enable="true" SuppressExports="false" />
    <SEHOP Enable="true" TelemetryOnly="false" />
    <Heap TerminateOnError="true" />
  </SystemConfig>
</MitigationPolicy>

啟用漏洞防護程式設定以供測試

提示

我們強烈建議檢視現代的漏洞緩解方法,即使用 ASR 規則

您可以使用 Windows 安全性應用程式或 Windows PowerShell,在測試模式中設定特定程式的緩和措施。

Windows 安全性應用程式

使用 Windows 安全性 應用程式,在測試模式下為特定程式設定漏洞防護緩解措施:

  1. 開啟 Windows 安全性應用程式。 在工作列中選取防護盾圖示,或在 [開始] 功能表中搜尋 [Windows 安全性]

  2. 選取 [應用程式和瀏覽器控制] 磚 (或左側功能表列上的應用程式圖示),然後選取 [惡意探索保護]

  3. 請移至 [程式設定],然後選擇您想要套用保護的應用程式:

    1. 如果你想設定的應用程式已經列出,請選擇它,然後選擇 編輯

    2. 如果應用程式不在列表頂端,請選擇 新增程式以自訂。 然後選擇您要如何新增應用程式。

      • 使用 [依程式名稱新增],以將緩和措施套用至任何具有該名稱的執行中程式。 指定含有副檔名的檔案。 您可以輸入完整路徑,限制只有該位置中具有該名稱的應用程式才套用緩和措施。
      • 使用 [選擇確切的檔案路徑] 以使用標準的 Windows 檔案總管檔案選擇器視窗來尋找並選取您想要的檔案。
  4. 選取應用程式之後,您就會看到可套用的所有緩和措施清單。 選擇 審計 只會在測試模式下套用緩解措施。 如果你需要重新啟動程序、應用程式或 Windows,系統會通知你。

  5. 針對您想要設定的所有應用程式和緩和措施,重複此程序。 當您設定完成時,選取 [套用]

PowerShell

若要將應用程式層級的緩解措施設為測試模式,請使用 Set-ProcessMitigation 審計 模式 的指令碼。

請使用以下 Set-ProcessMitigation 語法來啟用或審核特定應用程式的緩解措施。 將預留位置替換成範圍、可執行檔、動作及緩解措施 cmdlet:

Set-ProcessMitigation -<scope> <app executable> -<action> <mitigation or options>,<mitigation or options>,<mitigation or options>

位置:

  • <範圍>:
    • -Name 表示應將緩和措施套用至特定應用程式。 在此旗標之後指定應用程式的可執行檔。
  • <動作場面>:
    • -Enable 以啟用緩解措施
      • -Disable 以停用緩解措施
  • <緩解措施>:
    • 緩解措施的 cmdlet 在下表中定義。 每個緩和措施會以逗號分隔。
緩和措施 測試模式指令檔
任意程式碼防護 (ACG) AuditDynamicCode
封鎖低完整性映像 AuditImageLoad
封鎖不信任的字型 AuditFontFontAuditOnly
程式碼完整性防護 AuditMicrosoftSignedAuditStoreSigned
停用 Win32k 系統呼叫 AuditSystemCall
不允許子處理流程 AuditChildProcess

例如,以下指令可在審計模式下啟用名為 testing.exe的應用程式的任意代碼守護(ACG),讓您在執行動態程式碼限制前測試其影響:

Set-ProcessMitigation -Name c:\apps\lob\tests\testing.exe -Enable AuditDynamicCode

您可以將 取代為 -Enable,以停用-Disable

檢閱攻擊防護稽核事件

要檢視哪些應用程式會被封鎖,請打開事件檢視器並在 Security-Mitigations 日誌中篩選以下事件。

功能 提供者/來源 事件識別碼 描述
入侵防護 安全性緩解措施(核心模式/使用者模式) 1 ACG 稽核
入侵防護 安全性緩解措施(核心模式/使用者模式) 3 不允許子處理流程稽核
入侵防護 安全性緩解措施(核心模式/使用者模式) 5 封鎖低完整性映像檔稽核
入侵防護 安全性緩解措施(核心模式/使用者模式) 7 封鎖遠端映像稽核
入侵防護 安全性緩解措施(核心模式/使用者模式) 9 停用 win32k 系統呼叫稽核
入侵防護 安全性緩解措施(核心模式/使用者模式) 11 程式碼完整性防護稽核