本文說明如何利用稽核模式評估漏洞防護緩解措施、檢視相容性指引、設定系統與程式設定以進行測試,以及在正式環境中啟用緩解措施前解讀稽核事件。
惡意探索保護可協助保護裝置,以避免惡意程式碼使用惡意探索來散播和感染其他裝置。 緩和措施可套用至作業系統或個別應用程式。 增強的緩和措施體驗工具組 (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 規則提供了一種更現代化的方法來防止這些應用程式被濫用:
- 從電子郵件客戶端和網頁郵件中封鎖可執行內容
- 封鎖 Office 應用程式使其無法建立可執行的內容
- 封鎖所有 Office 應用程式使其無法建立子程序
- 封鎖 Office 通訊應用程式使其無法建立子程序
- 封鎖 Office 應用程式使其無法將程式碼插入其他程序
- 封鎖可能經過模糊化的指令碼的執行
- 封鎖來自 Office 巨集的 Win32 API 呼叫
對於 Adobe Reader,請使用以下 ASR 規則:
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 安全性 應用程式,在測試模式下為特定程式設定漏洞防護緩解措施:
開啟 Windows 安全性應用程式。 在工作列中選取防護盾圖示,或在 [開始] 功能表中搜尋 [Windows 安全性]。
選取 [應用程式和瀏覽器控制] 磚 (或左側功能表列上的應用程式圖示),然後選取 [惡意探索保護]。
請移至 [程式設定],然後選擇您想要套用保護的應用程式:
如果你想設定的應用程式已經列出,請選擇它,然後選擇 編輯。
如果應用程式不在列表頂端,請選擇 新增程式以自訂。 然後選擇您要如何新增應用程式。
- 使用 [依程式名稱新增],以將緩和措施套用至任何具有該名稱的執行中程式。 指定含有副檔名的檔案。 您可以輸入完整路徑,限制只有該位置中具有該名稱的應用程式才套用緩和措施。
- 使用 [選擇確切的檔案路徑] 以使用標準的 Windows 檔案總管檔案選擇器視窗來尋找並選取您想要的檔案。
選取應用程式之後,您就會看到可套用的所有緩和措施清單。 選擇 審計 只會在測試模式下套用緩解措施。 如果你需要重新啟動程序、應用程式或 Windows,系統會通知你。
針對您想要設定的所有應用程式和緩和措施,重複此程序。 當您設定完成時,選取 [套用]。
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 |
| 封鎖不信任的字型 |
AuditFont、FontAuditOnly |
| 程式碼完整性防護 |
AuditMicrosoftSigned、AuditStoreSigned |
| 停用 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 | 程式碼完整性防護稽核 |