自訂利用保護

適用於:

想要體驗適用於端點的 Microsoft Defender 嗎? 注册免費試用版。

惡意探索保護會在作業系統處理程序和個別應用程式上自動套用大量惡意探索風險降低技術。

在個別裝置上使用 Windows 安全性應用程式設定這些設定。 然後,將設定匯出為 XML 檔案,以便可以部署至其他裝置。 使用群組原則將 XML 檔案一次散發至多個裝置。 您還可以使用 PowerShell 設定緩和措施。

本文列出了惡意探索保護中可用的各個緩和措施。 它指示緩和措施是可以套用至全系統還是個別應用程式,並簡要描述了緩和措施的運作原理。

它還描述了如何使用 Windows 安全性、PowerShell 和行動裝置管理 (MDM) 設定服務提供者 (CSP) 啟用或設定緩和措施。 這是建立可跨網路部署之設定的第一步。 下一步涉及 產生、匯出、匯入設定並將其部署至多個裝置

警告

某些安全緩解技術可能有某些應用程式的相容性問題。 您應該先使用稽核模式,在所有目標使用案例中測試惡意探索防護,然後再將設定部署至生產環境或網路的其餘部分。

惡意探索保護移轉

可為個別應用程式設定所有緩和措施。 還可將一些緩和措施套用至作業系統層級。

您可以將每個緩和措施設定為開啟、關閉或其預設值。 一些緩和措施有其他選項,如表中的說明所示。

預設值一律在每個緩和措施的 [使用預設值] 選項的括弧中指定。 在以下範例中,資料執行防護的預設值為「開啟」。

每個風險降低設定的 [使用預設值] 設定表示我們對家庭使用者日常使用之基本保護層級的建議。 企業部署應考慮其個別需求所需的保護,並且可能需要修改設定,使其脫離預設值。

如需每個緩和措施的關聯 PowerShell cmdlet,請參閱本文底部的 PowerShell 參考資料表

緩和措施 描述 可套用至 稽核模式可用
控制流量防護 (CFG) 確認間接呼叫的控制流程完整性。 可以選擇抑制匯出並使用嚴格 CFG。 系統與應用程式層級
資料執行防護 (DEP) 防止程式碼從僅資料記憶體頁 (如堆積和堆疊) 執行。 僅可為 32 位元 (x86) 應用程式設定,對所有其他結構永久啟用。 可選擇性啟用 ATL thunk 模擬。 系統與應用程式層級
強制執行映像隨機化 (強制 ASLR) 強制重新放置未使用 /DYNAMICBASE 編譯的映像。 可選擇性地無法載入沒有重新放置資訊的映像。 系統與應用程式層級
隨機記憶體配置 (由下而上 ASLR) 隨機化虛擬記憶體配置的位置。 它包括系統結構堆積、堆疊、TEB 和 PEB。 可選擇性地對 64 位元處理序使用更大的隨機化差異。 系統與應用程式層級
驗證例外狀況鏈結 (SEHOP) 確保例外狀況分派期間例外狀況鏈結的完整性。 僅可為 32 位元 (x86) 應用程式設定。 系統與應用程式層級
驗證堆積完整性 偵測到堆積損壞時終止處理序。 系統與應用程式層級
任意程式碼防護 (ACG) 防止引入非映像支援的可執行程式碼,並防止修改字碼頁。 可選擇性地允許執行緒退出並允許遠端降級 (僅可使用 PowerShell 設定)。 僅應用程式層級
封鎖低完整性映像 防止載入標示為「低完整性」的映像。 僅應用程式層級
封鎖遠端映像 防止載入來自遠端裝置的映像。 僅應用程式層級
封鎖不信任的字型 防止載入系統字型目錄中未安裝的任何 GDI 型字型,尤其是來自網路的字型。 僅應用程式層級
程式碼完整性防護 限制載入由 Microsoft、WHQL 或更高版本簽署的映像。 可選擇性允許 Microsoft Store 簽署的映像。 僅應用程式層級
停用擴充點 停用允許 DLL 插入所有處理序的各種擴充性機制,例如 AppInit DLL、視窗勾點和 Winsock 服務提供者。 僅應用程式層級
停用 Win32k 系統呼叫 防止應用程式使用 Win32k 系統呼叫資料表。 僅應用程式層級
不允許子處理序 防止應用程式建立子處理序。 僅應用程式層級
匯出位址篩選 (EAF) 偵測惡意程式碼導致的危險作業。 可選擇性地驗證惡意探索常用模組的存取。 僅應用程式層級
匯入位址篩選 (IAF) 偵測惡意程式碼導致的危險作業。 僅應用程式層級
模擬執行 (SimExec) 確保對敏感性 API 的呼叫傳回至合法呼叫者。 僅可為 32 位元 (x86) 應用程式設定。 與 ACG 不相容。 僅應用程式層級
驗證 API 引動過程 (CallerCheck) 確保敏感性 API 是由合法呼叫方所叫用。 僅可為 32 位元 (x86) 應用程式設定。 與 ACG 不相容 僅應用程式層級
驗證控制代碼使用方式 導致在任何無效控制代碼參考上引發例外狀況。 僅應用程式層級
驗證映像相依性完整性 強制 Windows 映像相依性載入的程式碼簽署。 僅應用程式層級
驗證堆疊完整性 (StackPivot) 確保堆疊沒有針對敏感性 API 重新導向。 與 ACG 不相容。 僅應用程式層級

重要事項

如果您將應用程式新增到 [程式設定] 區段,並在那裡設定個別的緩和措施設定,它們的優先順序會高於在 [系統設定] 區段所指定之相同緩和措施的設定。 下列矩陣和範例可說明預設值的運作方式:

[程式設定] 中啟用 [系統設定] 中啟用 行為
[程式設定] 中定義
[程式設定] 中定義
[系統設定] 中定義
預設值,如 [使用預設值] 選項所定義
  • 範例 1 Mikael 在 [系統設定] 區段將 [資料執行防護 (DEP)] 設定為 [預設關閉]。 Mikael 然後將應用程式 test.exe 新增至 [程式設定] 區段。 在該應用程式的選項中,在 [資料執行防護 (DEP)] 下,他啟用 [覆寫系統設定] 選項,並且將開關設定為 [開啟]。 在 [程式設定] 區段下未列出其他應用程式。 結果將是僅為 test.exe 啟用 DEP。 所有其他應用程式將不會套用 DEP。

  • 範例 2 Josie 在 [系統設定] 區段將 [資料執行防護 (DEP)] 設定為 [預設關閉]。 Josie 然後將應用程式 test.exe 新增至 [程式設定] 區段。 在該應用程式的選項中,在 [資料執行防護 (DEP)] 下,她啟用 [覆寫系統設定] 選項,並且將開關設定為 [開啟]。 Josie 也將 miles.exe 應用程式新增到 [程式設定] 區段,並將 [控制流程防護 (CFG)] 設定為 [開啟]。 她沒有為 DEP 啟用 [覆寫系統設定] 選項或該應用程式的任何其他緩和措施。 結果將為 test.exe 啟用 DEP。 將不會為任何其他應用程式啟用 DEP,包括 miles.exe。 將為 miles.exe 啟用 CFG。

注意事項

如果您在本文中發現任何問題,您可以直接向 Windows Server/Windows 用戶端合作夥伴回報,或使用您國家/地區的 Microsoft 技術支持號碼。

使用 Windows 安全性應用程式設定系統層級緩和措施

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

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

  3. [系統設定] 區段下,尋找您想要設定的緩和措施,然後選取下列其中項。 未在 [程式設定] 區段個別設定的應用程式,將使用此處設定的設定:

    • [預設開啟] - 針對未在應用程式特定的 [程式設定] 區段設定此緩和措施的應用程式,啟用緩和措施
    • [預設關閉] - 針對未在應用程式特定的 [程式設定] 區段設定此緩和措施的應用程式,停用緩和措施
    • [使用預設值] - 根據 Windows 10 或 Windows 11 安裝所設定的預設設定,緩和措施會設定為啟用或停用;一律在每個緩和措施的 [使用預設值] 標籤旁指定預設值 ([開啟][關閉])

    注意事項

    變更某些設定時,您可能會看到使用者帳戶控制視窗。 輸入系統管理員認證以套用設定。

    變更某些設定可能需要重新啟動。

  4. 對您想要設定的所有系統層級緩和措施重複此作業。

  5. 請移至 [程式設定] 區段,然後選擇要對其套用緩和措施的應用程式:

    1. 如果您要設定的應用程式已列出,請選取它,然後選取 [編輯]
    2. 如果未列出應用程式,請在清單頂端選取 [新增程式以自訂],然後選擇您要如何新增應用程式:
      • 使用 [依程式名稱新增],以將緩和措施套用至任何具有該名稱的執行中程式。 您必須指定具副檔名的檔案。 您可以輸入完整路徑,限制只有該位置中具有該名稱的應用程式才套用緩和措施。
      • 使用 [選擇確切的檔案路徑] 以使用標準的 Windows 檔案總管檔案選擇器視窗來尋找並選取您想要的檔案。
  6. 選取應用程式之後,您就會看到可套用的所有緩和措施清單。 若要啟用緩和措施,請選取核取方塊,然後將滑桿變更為 [開啟]。 選取任何額外選項。 選擇 [稽核] 僅會在稽核模式中套用緩和措施。 如果您需要重新啟動程式或應用程式,或如果您需要重新啟動 Windows,您將收到通知。

  7. 對要設定的所有應用程式和緩和措施重複這些步驟。 當您設定完成時,選取 [套用]

現在,您可以將這些設定匯出為 XML 檔案,或繼續設定應用程式特定的緩和措施。

將設定匯出為 XML 檔案可讓您將設定從一個裝置複製到其他裝置上。

PowerShell 參考

您可以使用 Windows 安全性應用程式設定惡意探索保護,也可以使用 PowerShell Cmdlet。

無論您使用的是 PowerShell 還是 Windows 安全性,都將一律套用最近修改的組態設定。 這表示,如果您使用應用程式設定緩和措施,然後使用 PowerShell 設定相同的緩和措施,則應用程式將更新以顯示您使用 PowerShell 所做的變更。 如果您隨後使用應用程式再次變更緩和措施,則該變更將套用。

重要事項

透過群組原則部署至裝置的任何變更都將覆寫本機設定。 設定初始設定時,請使用不會套用群組原則設定的裝置,以確保變更不會被覆寫。

您可以使用 PowerShell 動詞 GetSet 來搭配 Cmdlet ProcessMitigation 使用。 使用 Get 會列出裝置上已啟用之任何緩和措施的目前設定狀態 - 新增 -Name Cmdlet 與 app exe,以查看該應用程式的緩和措施:

Get-ProcessMitigation -Name processName.exe

重要事項

尚未設定的系統層級緩和措施會顯示 NOTSET 的狀態。

對於系統層級設定,NOTSET 表示已套用該緩和措施的預設設定。

對於應用層級設定,NOTSET 表示將套用該緩和措施的系統層級設定。

可以在 Windows 安全性中查看每個系統層級緩和措施的預設設定。

使用 Set 以下列格式設定每個緩和措施:

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

其中:

  • <範圍>:
    • -Name 表示應將緩和措施套用至特定應用程式。 在此旗標之後指定應用程式的可執行檔。
    • -System 表示應在系統層級套用緩和措施。
  • <動作>:
    • -Enable 以啟用緩和措施
    • -Disable 以停用緩和措施
  • <風險降低>:
    • 以下 緩和措施 Cmdlet 資料表 中定義的緩和措施 Cmdlet,以及任何子選項 (以空格包圍)。 每個緩和措施會以逗號分隔。

例如,若要使用 ATL Thunk 模擬來啟用 [資料執行保護 (DEP)] 緩和措施,以及針對資料夾 C:\Apps\LOB\tests中名為 testing.exe 的可執行檔,以及防止該可執行檔建立子處理序,您可以使用下列命令:

Set-ProcessMitigation -Name c:\apps\lob\tests\testing.exe -Enable DEP, EmulateAtlThunks, DisallowChildProcessCreation

重要事項

以逗號分隔每個緩和措施選項。

如果您想要在系統層級套用 DEP,請使用下列命令:

Set-Processmitigation -System -Enable DEP

若要停用緩和措施,您可以將 -Enable 取代為 -Disable。 不過,對於應用程式層級的緩和措施,這會強制僅對該應用程式停用緩和措施。

如果您需要將緩和措施還原回系統預設值,您也需要包含 -Remove Cmdlet,如下列範例所示:

Set-Processmitigation -Name test.exe -Remove -Disable DEP

您也可以將一些緩和措施設定為稽核模式。 不要將 PowerShell Cmdlet 用於緩和措施,而是使用以下 緩和措施 Cmdlet 資料表 中指定的稽核模式 Cmdlet。

例如,要在稽核模式下為之前使用的 testing.exe 啟用任意程式碼防護 (ACG),可以使用以下命令:

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

您可以使用相同的命令停用稽核模式,但將 -Enable 替換為 -Disable

PowerShell 參考資料表

此資料表列出了可用於設定每個緩和措施的 PowerShell Cmdlet (以及關聯的稽核模式 Cmdlet)。

緩和措施 適用於 Powershell Cmdlet 稽核模式 Cmdlet
控制流量防護 (CFG) 系統與應用程式層級 CFG,StrictCFG,SuppressExports 稽核無法使用
資料執行防護 (DEP) 系統與應用程式層級 DEP,EmulateAtlThunks 稽核無法使用
強制執行映像隨機化 (強制 ASLR) 系統與應用程式層級 ForceRelocateImages 稽核無法使用
隨機記憶體配置 (由下而上 ASLR) 系統與應用程式層級 BottomUp,HighEntropy 稽核無法使用
驗證例外狀況鏈結 (SEHOP) 系統與應用程式層級 SEHOP,SEHOPTelemetry 稽核無法使用
驗證堆積完整性 系統與應用程式層級 TerminateOnError 稽核無法使用
任意程式碼防護 (ACG) 僅應用程式層級 DynamicCode AuditDynamicCode
封鎖低完整性映像 僅應用程式層級 BlockLowLabel AuditImageLoad
封鎖遠端映像 僅應用程式層級 BlockRemoteImages 稽核無法使用
封鎖不信任的字型 僅應用程式層級 DisableNonSystemFonts AuditFont,FontAuditOnly
程式碼完整性防護 僅應用程式層級 BlockNonMicrosoftSigned,AllowStoreSigned AuditMicrosoftSigned, AuditStoreSigned
停用擴充點 僅應用程式層級 ExtensionPoint 稽核無法使用
停用 Win32k 系統呼叫 僅應用程式層級 DisableWin32kSystemCalls AuditSystemCall
不允許子處理序 僅應用程式層級 DisallowChildProcessCreation AuditChildProcess
匯出位址篩選 (EAF) 僅應用程式層級 EnableExportAddressFilterPlus、EnableExportAddressFilter [1] 稽核無法使用[2]
匯入位址篩選 (IAF) 僅應用程式層級 EnableImportAddressFilter 稽核無法使用[2]
模擬執行 (SimExec) 僅應用程式層級 EnableRopSimExec 稽核無法使用[2]
驗證 API 引動過程 (CallerCheck) 僅應用程式層級 EnableRopCallerCheck 稽核無法使用[2]
驗證控制代碼使用方式 僅應用程式層級 StrictHandle 稽核無法使用
驗證映像相依性完整性 僅應用程式層級 EnforceModuleDepencySigning 稽核無法使用
驗證堆疊完整性 (StackPivot) 僅應用程式層級 EnableRopStackPivot 稽核無法使用[2]

[1]:使用下列格式為進程啟用 dll 的 EAF 模組:

Set-ProcessMitigation -Name processName.exe -Enable EnableExportAddressFilterPlus -EAFModules dllName1.dll,dllName2.dll

[2]:無法透過 PowerShell Cmdlet 來稽核此防護功能。

自訂通知

如需在觸發規則並封鎖應用程式或檔案時自訂通知的更多資訊,請參閱 Windows 安全性

另請參閱

提示

想要深入了解? Engage 技術社群中的 Microsoft 安全性社群:適用於端點的 Microsoft Defender 技術社群。