漏洞保护 有助于防止恶意软件利用漏洞来感染设备和传播。 漏洞保护包含多种可应用于操作系统或单个应用的缓解措施。
本文介绍如何使用 Windows 安全中心 应用、Microsoft Intune、MDM、Microsoft Configuration Manager、组策略或 PowerShell 来启用和配置攻击保护缓解措施。
重要
.NET 2.0 与某些漏洞保护功能不兼容,具体而言,与导出地址筛选 (EAF) 和导入地址筛选 (IAF) 不兼容。 如果已启用 .NET 2.0,则不支持使用 EAF 和 IAF。
增强型减灾体验工具包 (EMET) 中的许多功能都包含在漏洞保护中。
先决条件
以下建议可帮助你成功部署攻击保护。
为应用程序崩溃设置监视, (事件 ID 1000 和/或事件 ID 1001) 和/或挂起 (事件 ID 1002)
启用 完全用户模式转储 收集
查看哪些应用程序已使用“控制流防护” (CFG) 编译,这些应用程序主要侧重于缓解内存损坏漏洞。 使用 dumpbin 工具查看它是否使用 CFG 编译。 对于已使用 CFG 编译的应用程序,可以跳过为 DEP、ASLR、SEHOP 和 ACG 启用强制实施。
使用安全部署做法(SDP)逐步测试和推出攻击保护更改。
警告
如果不进行测试,不执行安全部署做法,可能会导致最终用户工作效率中断。
安全部署做法
安全部署实践 (SDP) :安全部署过程和过程定义如何安全地对工作负载进行更改和部署。 实现 SDP 需要从管理风险的角度考虑部署。 可以通过实现 SDP 来最大程度地降低部署中最终用户工作效率中断的风险,并限制有问题的部署对用户的影响。
从一小部分(例如 10 到 50)Windows设备开始,并将该设备组用作测试环境,以查看 21 种缓解措施中的哪项与攻击保护不兼容。 删除与应用程序不兼容的缓解措施。 使用要面向的应用程序重申。 开发保护策略准备好用于生产后,开始更广泛地推出它。
首先,首先推送到用户验收测试 (UAT) 由 IT 管理员、安全管理员和技术支持人员组成。 然后是 1%,5%,10%,25%,50%,75%,最后是 100% 的环境。
启用攻击保护缓解措施
可以使用以下任一方法单独启用每个缓解措施:
在 Windows 10 和 Windows 11 中默认配置漏洞保护。 可以将每个缓解设置为打开、关闭或设置为其默认值。 某些缓解措施具有更多选项。 可以将 攻击保护缓解设置导出为 XML 文件 ,并将其部署到其他设备。
还可以将缓解设置为 审核模式。 审核模式允许你测试缓解措施的工作原理(并查看事件),且不会影响设备的正常使用。
使用 Windows 安全中心 应用启用攻击保护
使用以下步骤在 Windows 安全中心 应用中配置攻击保护缓解措施:
通过选择任务栏中的防护图标或在“开始”菜单搜索“安全性”以打开 Windows 安全应用。
选择 应用和浏览器控制 磁贴(或左侧菜单栏上的应用图标),然后选择 漏洞保护设置。
转到 “程序”设置,然后选择要向其采取缓解措施的应用。
- 如果要配置的应用已列出,请选择它,然后选择“编辑”。
- 如果未列出应用,请在列表顶部选择“ 添加要自定义的程序 ”,然后选择要添加应用的方式。
- 使用“按程序添加名称”将缓解措施应用于具有该名称的任何正在运行的进程。 指定具有扩展名的文件。 可以输入完整路径,以仅将缓解措施限制为该位置中具有该名称的应用。
- 使用“选择确切的文件路径”,以使用标准 Windows 资源管理器文件选取器窗口查找并选择所需的文件。
选择应用后,你将看到可采取的所有缓解措施的列表。 选择 “审核 ”仅在审核模式下应用缓解措施。 如果需要重启进程或应用,或者需要重启 Windows,你将收到通知。
对要配置的所有应用和缓解措施重复步骤 3-4。
在“系统设置”部分下,找到要配置的缓解措施,然后指定以下设置之一。 未在“程序设置”部分单独配置的应用使用此处配置的设置。
- 默认启用:对未在特定于应用的“程序设置”部分中设置此缓解措施的应用启用缓解措施
- 默认关闭:对未在特定于应用的“程序设置”部分中设置此缓解措施的应用关闭缓解措施
- 使用默认值:根据 Windows 10 或 Windows 11 安装设置的默认配置,启用或禁用缓解;默认值(打开 或 关闭)始终在每个缓解措施的“使用默认”标签旁边指定
对要配置的所有系统级缓解措施重复步骤 6。 设置完配置后,选择“应用”。
如果将应用添加到 “程序设置” 部分并在其中配置单个缓解设置,则这些设置将优先于 “系统设置” 部分中指定的相同缓解措施的配置。 以下矩阵和示例有助于说明默认值的工作原理:
| 在程序设置中启用 | 在系统设置中启用 | 行为 |
|---|---|---|
| 是 | 否 | 如程序设置中所定义 |
| 是 | 是 | 如程序设置中所定义 |
| 否 | 是 | 如系统设置中所定义 |
| 否 | 否 | 默认如使用默认选项中所定义 |
示例 1:Mikael 将系统设置部分中的数据执行防护配置为默认关闭
Mikael 将应用 test.exe 添加到程序设置部分。 在该应用的选项中,在“数据执行防护 (DEP)”下,Mikael 启用“替代系统设置”选项,并将开关设置为“开”。 “ 程序设置 ”部分中未列出其他应用。
结果是仅为 test.exe 启用 DEP。 所有其他应用都不会应用 DEP。
示例 2:Josie 在系统设置中将数据执行防护配置为默认关闭
Josie 将应用 test.exe 添加到 “程序设置” 部分。 在该应用的选项中,在“数据执行防护 (DEP)”下,Josie 启用“替代系统设置”选项,并将开关设置为“开”。
Josie 还会将应用 miles.exe 添加到“程序设置”部分,并将 控制流防护 (CFG) 配置为“开”。 Josie 不会为 DEP 启用 替代系统设置 选项,也不会为该应用启用任何其他缓解措施。
结果是为 test.exe 启用了 DEP。 不会为任何其他应用启用 DEP,包括 miles.exe。 将对 miles.exe 启用 CFG。
通过选择任务栏中的防护图标或搜索 Windows 安全性的“开始”菜单,打开 Windows 安全应用。
选择 应用和浏览器控制 磁贴(或左侧菜单栏上的应用图标),然后选择 漏洞保护。
转到 “程序”设置,然后选择要向其采取缓解措施的应用。
- 如果要配置的应用已列出,请选择它,然后选择“编辑”。
- 如果未列出应用,请在列表顶部选择“ 添加要自定义的程序 ”,然后选择要添加应用的方式。
- 使用“按程序添加名称”将缓解措施应用于具有该名称的任何正在运行的进程。 指定具有扩展名的文件。 可以输入完整路径,以仅将缓解措施限制为该位置中具有该名称的应用。
- 使用“选择确切的文件路径”,以使用标准 Windows 资源管理器文件选取器窗口查找并选择所需的文件。
选择应用后,你将看到可采取的所有缓解措施的列表。 选择 “审核 ”仅在审核模式下应用缓解措施。 如果需要重启进程或应用,或者需要重启 Windows,你将收到通知。
对要配置的所有应用和缓解措施重复步骤 3-4。 设置完配置后,选择“应用”。
使用 Microsoft Intune 启用攻击保护
若要使用Microsoft Intune Endpoint Security Attack Surface 减少策略配置攻击防护,请参阅创建终结点安全策略 (在Intune文档) 的新选项卡中打开。 创建策略时,请使用以下设置:
- 策略类型:攻击面减少
- 平台:Windows 10、Windows 11和Windows Server
- 配置文件:Exploit Protection
- 配置设置:将 Exploit Protection 设置 设置为 “已配置”,然后浏览到攻击防护 XML 文件并选择
有关创建 exploit Protection XML 文件的详细信息,请参阅 导入、导出和部署 exploit Protection 配置。
有关Microsoft Intune中攻击面减少策略的详细信息,请参阅 Intune 中终结点安全性的攻击面减少策略。
使用 MDM 启用攻击保护
使用 ExploitGuard ExploitProtectionSettings 配置服务提供程序(CSP) 启用或禁用攻击保护缓解或使用审核模式。
使用 Microsoft Configuration Manager 启用攻击保护
可以使用 Endpoint Security 节点或资产和符合性工作区通过 Configuration Manager 部署攻击保护。
从 Endpoint Security 节点启用攻击保护
若要使用 Endpoint Security 节点在 Microsoft Configuration Manager中创建攻击保护策略,请执行以下步骤:
在“Microsoft Configuration Manager”中,转到“终结点安全>攻击面减少”。
选择“ 创建策略>平台”,对于 “配置文件”,选择“ Exploit Protection”。 然后选择“创建”。
指定名称和说明,然后选择“下一 步”。
选择“选择 XML 文件”,然后浏览到漏洞保护 XML 文件的位置。 选择该文件,然后选择“下一步”。
如有必要,请配置“作用域标记”和“分配”。
在“查看 + 创建”下,查看配置设置,然后选择“创建”。
从资产和符合性工作区启用攻击保护
若要使用资产和符合性工作区在 Microsoft Configuration Manager 中创建攻击保护策略,请执行以下步骤:
在“Microsoft Configuration Manager”中,转到“资产和符合性>终结点保护>”“Windows Defender 攻击防护”。
选择“ 开始>创建攻击防护策略”。
指定名称和说明,选择 Exploit Protection,然后选择“下一步”。
浏览到漏洞保护 XML 文件的位置,然后选择“下一步”。
查看设置,然后选择“下一步”以创建策略。
创建策略后,选择“关闭”。
使用组策略启用攻击保护
执行以下步骤,通过组策略配置攻击保护:
在组策略管理设备上,打开组策略管理控制台。 右键单击要配置的组策略对象,然后选择“编辑”。
在 策略管理编辑器中, 计算机配置 并选择 管理模板。
将树展开到 Windows 组件>Windows Defender 攻击防护>攻击防护>使用一组常见的攻击防护设置。
选择“已启用 ”并键入 XML 文件 的位置,然后选择“确定”。
使用 PowerShell 启用攻击保护
可以将 PowerShell 谓词 Get 或 Set 与 cmdlet ProcessMitigation 一起使用。 使用 Get 列出设备上启用的任何缓解措施的当前配置状态。 若要查看当前应用于特定应用的攻击保护缓解措施,请添加 -Name 参数和应用可执行文件:
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 以及任何子选项(首尾加空格)。 每个缓解措施用逗号隔开。
以下示例使用 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。 但是,对于应用级缓解,替换为-Enable-Disable强制仅针对该应用禁用缓解措施。
若要删除特定于应用的 DEP 替代并将缓解还原回系统默认值,请包括 -Remove cmdlet,如以下示例所示:
Set-Processmitigation -Name test.exe -Remove -Disable DEP
下表列出了要与 或 cmdlet 参数一起使用的各个 -Enable(以及可用的-Disable)。
| 缓解措施类型 | 适用对象 | 缓解措施 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]:若要为特定进程启用导出地址筛选加号(EAF+),并将监视限制为所选 DLL,请使用以下格式:
Set-ProcessMitigation -Name processName.exe -Enable EnableExportAddressFilterPlus -EAFModules dllName1.dll,dllName2.dll
[2]:无法通过 PowerShell cmdlet 对此缓解措施进行审核。
自定义攻击保护通知
有关在触发规则并阻止应用或文件时自定义通知的信息,请参阅 Windows 安全中心。
删除攻击保护缓解措施
若要重置(撤消或删除)攻击保护缓解措施,请参阅 重置或删除攻击保护缓解措施。