使用 Windows 10 安全功能缓解威胁

适用于:

  • Windows 10

本主题概要介绍了当前安全环境面临的某些软件和固件威胁,以及 Windows 10 提供的应对这些威胁的缓解。 有关与 Microsoft 提供的保护类型相关的信息,请参阅相关主题

部分 内容
安全威胁环境 描述安全威胁环境的现状,并概述 Windows 10 如何专门用于缓解软件攻击和类似威胁。
你可以配置的 Windows 10 缓解功能 提供可配置的威胁缓解功能表以及指向详细信息的链接。 产品功能(例如 Device Guard)在表 1 中显示,内存保护选项(例如,数据执行保护在表 2 中显示。
Windows 10 的内置缓解功能 提供无需配置Windows 10缓解措施的说明,这些缓解措施内置于操作系统中。 例如,堆保护和内核池保护均内置于 Windows 10 中。
了解 Windows 10 中与增强的缓解体验工具包有关的内容 介绍增强的缓解体验工具包 (EMET) 中的缓解如何与 Windows 10 中的内置功能对应,以及如何将 EMET 设置转换为适用于 Windows 10 的缓解政策。

此主题重点介绍旨在设备保护和威胁抵御的违反前缓解。 这些保护使用 Windows 10 中的其他安全防护,如以下示意图中所示:

Windows 10中的防御类型

图 1.   作为Windows 10安全防御的一部分的设备保护和威胁防护

安全威胁环境

当今的安全威胁形势是攻击性和顽强的威胁之一。 过去几年,恶意攻击者主要专注于通过其攻击获得社群认同,或因暂时使系统离线而获得的兴奋感。 此后,攻击者的动机转向赚钱,包括将设备和数据扣为人质,直到所有者支付要求的赎金。 现代攻击日益集中于大规模的知识产权盗窃;可能导致财务损失的目标系统性能降低;甚至会威胁全世界的个人、企业和国家/地区利益的网络恐怖主义。 此类攻击者通常是训练有素的个人和安全专家,其中一些人受雇于国家/地区,这些国家/地区拥有大额预算和似乎无限的人力资源。 这样的威胁需要可以解决这一挑战的方法。

认识到这一环境后,Windows 10 创意者更新(Windows 10 版本 1703)包含了多个安全功能,创建这些功能是为了增加发现和利用多种软件漏洞的难度(及成本)。 这些功能旨在:

  • 消除各类漏洞

  • 中断攻击技术

  • 包含损坏,并阻止持续性

  • 限制攻击机会窗口

以下部分提供了有关 Windows 10 版本 1703 中的安全缓解功能的详细信息。

你可以配置的 Windows 10 缓解功能

你可以配置的 Windows 10 缓解功能在以下两个表中列出。 第一张表包含各种针对企业中的设备和用户的保护措施,第二张表深入到数据保护执行等具体的内存保护措施。 内存保护选项提供针对恶意软件的具体缓解功能,这些恶意软件会尝试操控内存,以获取对系统的控制。

表 1 Windows 10可以配置的缓解措施

缓解功能和相应的威胁 描述和链接
Windows Defender SmartScreen
有助于防止
下载
恶意应用程序
Windows Defender SmartScreen 可以通过使用 Microsoft 维护的服务检查下载的应用程序的信誉。 用户第一次运行源自 Internet 的应用时(即使用户是从另一台电脑上复制的),SmartScreen 会检查应用是否缺少信誉或被认为是恶意应用,并相应地响应。

详细信息:本主题后面的 Windows Defender SmartScreen
Credential Guard
有助于防止攻击者
通过哈希传递
或票证传递攻击
获取访问权限
Credential Guard 使用基于虚拟化的安全性隔离密钥(例如,NTLM 密码哈希和 Kerberos 票证授予票证),以便仅特权系统软件可以访问它们。
Credential Guard 包含在 Windows 10 企业版和 Windows Server 2016 中。

详细信息使用 Credential Guard 保护派生的域凭据
企业证书固定
有助于防止
利用 PKI 的
使用 PKI 的
企业证书固定让你能够防止内部域名链接到不需要的证书或欺骗颁发的证书。 使用企业证书固定,可以“固定” (将 X.509 证书及其公钥) 关联到其证书颁发机构(根证书或叶证书)。

详细信息企业证书固定
Device Guard
有助于防止设备
运行恶意软件或
其他不受信任的应用
Device Guard 包括你创建的代码完整性策略;受信任应用的允许列表 - 组织中唯一允许运行的应用。 Device Guard 还包括一种功能强大的系统缓解措施,称为虚拟机监控程序保护的代码完整性 (HVCI) ,它使用基于虚拟化的安全 (VBS) 来保护 Windows 的内核模式代码完整性验证过程。 HVCI 有特定的硬件要求并使用代码完整性策略,即使获得了内核访问权限,它们也能帮助阻止攻击。
Device Guard 包含在 Windows 10 企业版和 Windows Server 2016 中。

详细信息Device Guard 简介
Microsoft Defender防病毒
有助于使设备
远离病毒和其他
恶意软件
Windows 10包括Microsoft Defender防病毒,这是一种可靠的内置反恶意软件解决方案。 自 Windows 8 中引入防病毒以来,Microsoft Defender防病毒得到了显著改进。

详细信息本主题后面的Microsoft Defender防病毒
阻止不受信任的字体
有助于防止字体
被用于
特权提升攻击
阻止不受信任的字体这一设置可让你阻止用户将“不受信任”的字体加载到网络,这可以缓解与分析字体文件相关联的特权提升攻击。 但是,自 Windows 10 版本 1703 开始,这一缓解功能的重要性有所降低,因为字体分析被隔离在 AppContainer 沙盒中(对于描述此缓解功能和其他内核池保护功能的列表,请参阅本主题后面的内核池的保护功能)。

详细信息在企业中阻止不受信任的字体
内存保护
有助于防止恶意软件
使用缓冲区溢出
等内存操作
技术
这些缓解功能(在表 2 中列出)有助于抵御基于内存的攻击,在这种攻击中,恶意软件或其他代码会操作内存以获取对系统的控制(例如,尝试使用缓冲区溢出将恶意的可执行代码注入到内存的恶意软件。 注意:
如果其中一些缓解措施设置为其最严格的设置,则部分应用将无法运行。 测试可以帮助你充分发挥保护功能,并仍然允许应用运行。

详细信息:本主题后面的表 2
UEFI 安全启动
有助于使
平台抵御
启动工具包和 rootkit
统一可扩展固件接口 (UEFI) 安全启动是一个针对由制造商内置于电脑中的固件的安全标准(从 Windows 8 开始)。 它有助于保护启动进程和固件抵御篡改,例如,来自实际存在的攻击者或来自各种形式的恶意软件,这些软件在启动过程中提前运行,或者在启动后在内核中运行。

详细信息UEFI 和安全启动
开机初期启动的反恶意软件 (ELAM)
有助于使
平台抵御
伪装成驱动程序的 rootkit
提前启动反恶意软件 (ELAM) 旨在使反恶意软件解决方案在所有非Microsoft驱动程序和应用之前启动。 如果恶意软件修改了与启动相关的驱动程序,ELAM 将检测到该更改,而且 Windows 会阻止该驱动程序启动,从而阻止基于该驱动程序的 Rootkit。

详细信息提前启动反恶意软件
设备运行状况证明
有助于防止
被破坏的设备
访问组织的
资源
设备运行状况证明 (DHA) 提供了一种方法,可确认正在尝试连接到公司网络的设备处于正常运行状态,未受到恶意软件的破坏。 配置 DHA 后,可以根据预期的“正常”启动数据检查设备的实际启动数据度量值。 如果检查指示设备不正常,可以阻止该设备访问网络。

详细信息控制基于 Windows 10 的设备的运行状况设备运行状况证明

可配置的 Windows 10 缓解功能旨在帮助抵御要求深入了解威胁和缓解功能、以及有关操作系统和应用程序如何处理内存的知识的内存操作。 充分利用这些类型的缓解功能的标准过程是在测试实验室中操作,发现给定设置是否干扰你使用的应用程序,以便你可以部署充分利用保护功能的设置,并仍允许应用正常运行。

作为 IT 专业人员,你可以要求应用程序开发人员和软件供应商提供包含称为控制流防护 (CFG) 的额外保护的应用程序。 不需要在操作系统中配置—保护将编译为应用程序。 可以在控制流防护中查找详细信息。

表 2 旨在帮助防止内存攻击的可配置Windows 10缓解措施

缓解功能和相应的威胁 描述
数据执行保护 (DEP)
有助于防止
利用缓冲区溢出
数据执行保护(DEP) 是在 Windows 操作系统中提供的系统级内存保护功能。 DEP 允许操作系统将一个或多个内存页面标记为不可执行,这会防止从内存区域中运行代码,有助于防止利用缓冲区溢出。
DEP 有助于防止从内存页面(例如,默认堆、堆叠和内存池)中运行代码。 尽管某些应用程序存在与 DEP 的兼容性问题,但大多数应用程序没有。
详细信息:本主题后面的数据执行保护

组策略设置:对于 64 位应用程序,DEP 默认处于打开状态,但你可以使用替代进程缓解选项中所述的组策略设置来配置更多 DEP 保护,以帮助强制实施与应用相关的安全策略
SEHOP
有助于防止
结构化异常处理程序
覆盖
结构化异常处理覆盖保护 (SEHOP) 旨在帮助使用结构化异常处理程序 (SEH) 覆盖技术阻止攻击。 由于此保护机制是在运行时提供的,因此无论应用是否已使用最新改进进行编译,它都有助于保护应用。 一些应用程序与 SEHOP 有兼容性问题,因此,请务必针对你的环境进行测试。
详细信息:本主题后面的结构化异常处理覆盖保护

组策略设置:对于 64 位应用程序,SEHOP 默认处于打开状态,但你可以使用替代进程缓解选项中所述的组策略设置来配置更多 SEHOP 保护,以帮助强制实施与应用相关的安全策略
ASLR
有助于基于
预期的内存位置
缓解恶意软件
地址空间布局随机化 (ASLR) 在启动时将 DLL 载入到随机的内存地址。 这种加载特定 DLL 有助于缓解旨在攻击特定内存位置的恶意软件。
详细信息:本主题后面的地址空间布局随机化

组策略设置:ASLR 默认为 64 位应用程序启用,但你可以使用替代进程缓解选项中所述的组策略设置来配置更多 ASLR 保护,以帮助强制实施与应用相关的安全策略

Windows Defender SmartScreen

Windows Defender SmartScreen 会在用户单击已报告的网络钓鱼和恶意软件网站时通知用户,并有助于防止用户进行不安全的下载或作出有关下载的明智决定。

对于Windows 10,Microsoft改进的 SmartScreen (现在称为 Windows Defender SmartScreen) 保护功能,方法是将其应用信誉功能集成到操作系统本身,从而允许 Windows Defender SmartScreen 检查从 Internet 下载的文件的信誉,并在用户即将运行高风险下载文件时发出警告。 用户首次运行源自 Internet 的应用时,Windows Defender SmartScreen 会根据Microsoft维护的服务使用数字签名和其他因素来检查应用程序的信誉。 如果应用缺乏信誉或已知是恶意应用,Windows Defender SmartScreen 会警告用户或完全阻止执行,具体取决于管理员如何配置Microsoft Intune或组策略设置。

有关详细信息,请参阅 Microsoft Defender SmartScreen 概述

Microsoft Defender 防病毒

Windows 10 中的Microsoft Defender防病毒使用多管齐下的方法改进反恶意软件:

  • 云提供的保护可在几秒钟内帮助检测和阻止新的恶意软件,即使这种恶意软件之前从未出现过。 该服务(自 Windows 10 版本 1703 起可用)使用分布式资源和机器学习以远快于传统签名更新的速率为终结点提供保护。

  • 丰富的本地上下文改进了恶意软件的标识方式。 Windows 10不仅告知Microsoft Defender防病毒内容(如文件和进程),还告知内容来自何处、存储位置等。 有关源和历史记录的信息使Microsoft Defender防病毒可以对不同的内容应用不同级别的审查。

  • 广泛的全局传感器可帮助Microsoft Defender防病毒保持最新状态,并了解最新的恶意软件。 通过两种方式实现此最新状态:从终结点收集丰富的本地上下文数据,以及集中分析这些数据。

  • 防篡改有助于保护Microsoft Defender防病毒本身免受恶意软件攻击。 例如,Microsoft Defender 防病毒使用受保护的进程,可以防止不受信任的进程尝试篡改 Microsoft Defender 防病毒组件、其注册表项等。 (本主题后面将介绍受保护的进程。)

  • 企业级功能为 IT 专业人员提供了使Microsoft Defender防病毒成为企业级反恶意软件解决方案所需的工具和配置选项。

有关详细信息,请参阅 Windows 10 中的 Windows DefenderWindows Server 的 Windows Defender 概述

有关Microsoft Defender for Endpoint的信息,这是一项可帮助企业检测、调查和响应其网络上的高级和有针对性的攻击的服务,请参阅Microsoft Defender for Endpoint (资源) 和Microsoft Defender for Endpoint (文档) 。

数据执行保护

恶意软件依赖于其将恶意负载插入内存的能力,同时寄希望于在稍后执行。 如果恶意软件写入仅分配用于信息存储的区域,那么如果恶意软件可以阻止其运行,那难道不是很好吗?

数据执行保护 (DEP) 完全可以实现此目的,方法是大大缩小恶意代码可用来谋利的内存范围。 DEP 使用新式 CPU 上的 No eXecute 位将内存块标记为只读,以便这些块不能用于执行可能通过漏洞攻击插入的恶意代码。

若要使用任务管理器查看使用 DEP 的应用

  1. 打开任务管理器:按 Ctrl + Alt + Del 并选择任务管理器,或搜索“开始”屏幕。

  2. 单击更多详细信息(如果需要),然后单击详细信息选项卡。

  3. 右键单击任意列标题,然后单击选择列

  4. 选择列对话框中,选中最后一个数据执行保护复选框。

  5. 单击确定

现在,你可以看到哪些进程启用了 DEP。

Windows 10 中启用了 DEP 的进程。

图 2.  已在 Windows 10 中启用 DEP 的进程

可以使用“控制面板”来查看或更改 DEP 设置。

若要在个人电脑上使用“控制面板”来查看或更改 DEP 设置

  1. 打开“控制面板系统”:单击“开始”,键入控制面板系统,然后按 ENTER。

  2. 单击高级系统设置,然后单击高级选项卡。

  3. 性能框中,单击设置

  4. 性能选项中,单击数据执行保护选项卡。

  5. 选择一个选项:

    • 仅为关键的 Windows 程序和服务启用 DEP

    • 为除下列选定程序之外的所有程序和服务启用 DEP。 如果选择此选项,请使用 “添加 ”和“ 删除 ”按钮创建不为其启用 DEP 的异常列表。

若要使用组策略控制 DEP 设置

你可以使用名为进程缓解选项的组策略设置控制 DEP 设置。 一些应用程序与 DEP 有兼容性问题,因此,请务必针对你的环境进行测试。 若要使用组策略设置,请参阅替代进程缓解选项,有助于强制实施与应用相关的安全策略

结构化异常处理覆盖保护

结构化异常处理覆盖保护 (SEHOP) 可帮助防止攻击者使用恶意代码利用结构化 异常处理 (SEH) ,SEH) 是系统不可或缺的一部分,并允许 (非恶意) 应用适当处理异常。 由于此保护机制是在运行时提供的,因此无论应用程序是否已使用最新改进进行编译,它都有助于保护应用程序。

你可以使用名为进程缓解选项的组策略设置控制 SEHOP 设置。 一些应用程序与 SEHOP 有兼容性问题,因此,请务必针对你的环境进行测试。 若要使用组策略设置,请参阅替代进程缓解选项,有助于强制实施与应用相关的安全策略

地址空间布局随机化

用来访问系统的最常见的技术之一是,在已经运行的特权进程中找到漏洞、猜出或找到重要的系统代码和数据在内存中的放置位置,然后覆盖具有恶意负载的信息。 任何可以直接写入系统内存的恶意软件都可以在已知且可预测的位置覆盖它。

地址空间布局随机化 (ASLR) 使该类型的攻击变得更加困难,因为它随机化重要数据在内存中的存储方式和存储位置。 使用 ASLR 时,恶意软件更难找到需要攻击的特定位置。 图 3 通过显示在重新启动期间不同的关键 Windows 组件的位置在内存中如何更改,说明 ASLR 的工作原理。

ASLR 在工作。

图 3.  正在工作的 ASLR

与之前版本的 Windows 相比,Windows 10 已在整个系统中全面应用了 ASLR,并多次提高熵的级别以应对更复杂的攻击(如堆喷射)。 64 位系统和应用程序进程可充分利用大幅增加的内存空间,使恶意软件更难预测 Windows 10 存储重要数据的位置。 当将 ASLR 内存随机化用于具有 TPM 的系统时,其在各个设备之间所发挥的作用愈发不可替代,这使得通过在一个系统上运行而在另一系统上可靠运行以成功攻击变得更加困难。

可以使用名为“进程缓解选项”组策略设置来控制 ASLR 设置 (“强制 ASLR”和“自下而上 ASLR”) ,如替代进程缓解选项以帮助强制实施与应用相关的安全策略中所述。

Windows 10 的内置缓解功能

Windows 10 提供了多种可抵御攻击的操作系统内置威胁缓解功能,且无需在操作系统中进行任何配置。 下表介绍了其中一些缓解措施。

控制流防护 (CFG) 是一种缓解措施,不需要在操作系统中进行配置,但需要应用程序开发人员在编译时将缓解措施配置到应用程序中。 CFG 内置于 Microsoft Edge、IE11 和 Windows 10 中的其他区域,并且可以在编译时内置到许多其他应用程序中。

表 3 Windows 10缓解措施,以防范内存攻击 - 无需配置

缓解功能和相应的威胁 描述
SMB 针对 SYSVOL 和 NETLOGON 共享的强化
有助于缓解
中间人攻击
Active Directory 域服务默认 SYSVOL 和域控制器上的 NETLOGON 共享的客户端连接现在需要 SMB 签名和相互身份验证(如 Kerberos)。

详细信息:本主题后面的 SMB 针对 SYSVOL 和 NETLOGON 共享的强化改进
受保护的进程
有助于防止个别进程
篡改其他
进程
使用“受保护的进程”功能,Windows 10可防止不受信任的进程与已专门签名的进程交互或篡改。

详细信息:本主题后面的受保护的进程
通用 Windows 应用的保护功能
筛选可下载
应用,并在
AppContainer 沙盒中运行它们
在可用之前,通用 Windows 应用已经过仔细筛选,并使用有限的特权和功能在 AppContainer 沙盒中运行。

详细信息:本主题后面的通用 Windows 应用保护
堆的保护功能
有助于防止
利用堆
Windows 10包括对堆的保护,例如使用有助于防止堆使用的内存损坏的内部数据结构。

详细信息:本主题后面的 Windows 堆保护
内核池的保护功能
有助于防止
利用内核使用的
池内存
Windows 10 包含对内核使用的内存池的保护。 例如,池溢出可以与用于创建攻击的取消链接操作结合,安全取消链接可以防止池溢出。

详细信息:本主题后面的内核池的保护功能
控制流防护
有助于缓解对
基于
内存中的代码位置之间的流
的攻击
控制流防护 (CFG) 是一种缓解措施,不需要在操作系统中进行配置,而是在编译时内置于软件中。 它内置于 Windows 10 Microsoft Edge、IE11 和其他区域。 CFG 可内置于使用 C 或 C++ 编写的应用程序,或使用 Visual Studio 2015 编译的应用程序中。
对于此类应用程序,CFG 可以检测攻击者试图更改预期代码流。 如果发生此尝试,CFG 将终止应用程序。 你可以请求软件供应商提供通过启用 CFG 编译的 Windows 应用程序。

详细信息:本主题后面的控制流防护
Microsoft Edge 中的内置保护功能(浏览器)
有助于缓解多种
威胁
Windows 10 包含全新的 Microsoft Edge 浏览器,在设计时使用了多个安全改进。

详细信息:本主题后面的 Microsoft Edge 和 Internet Explorer 11

SMB 针对 SYSVOL 和 NETLOGON 共享的强化改进

在 Windows 10 和 Windows Server 2016 中,Active Directory 域服务默认 SYSVOL 和域控制器上的 NETLOGON 共享的客户端连接需要服务器消息块 (SMB) 签名和相互身份验证(如 Kerberos)。 此要求可降低中间人攻击的可能性。 如果 SMB 签名和相互身份验证不可用,则运行Windows 10或Windows Server 2016的计算机不会处理基于域的组策略和脚本。

注意

这些设置的注册表值默认情况下并不出现,但在被组策略或其他注册表值替代前,强化规则仍然适用。 有关这些安全改进的详细信息, (也称为 UNC 强化) ,请参阅Microsoft知识库文章 3000483MS15-011 & MS15-014:强化组策略

受保护的进程

大多数安全控件旨在防止初始感染点。 但是,尽管所有预防控制都非常好,但恶意软件最终还是能找到感染系统的方法。 因此,系统内置了一些保护方法,可对攻击设备的恶意软件产生限制。 受保护的进程可创建这种类型的限制。

使用受保护的进程,Windows 10可防止不受信任的进程与已专门签名的进程进行交互或篡改。 受保护的进程为进程定义了信任级别。 受信度较低的进程被阻止进行交互,因而会攻击受信度较高的进程。 Windows 10在操作系统中更广泛地使用受保护的进程,并且与Windows 8.1一样,以可由第三方反恶意软件供应商使用的方式实现它们,如保护反恶意软件服务中所述。 这种易用性有助于使系统和反恶意软件解决方案更容易受到设法进入系统的恶意软件的篡改。

通用 Windows 应用的保护功能

当用户从 Microsoft 应用商店下载通用 Windows 应用时,他们不太可能遇到恶意软件,因为所有应用在应用商店中可用之前都经过仔细的筛选过程。 组织通过旁加载进程生成和分发的应用将需要进行内部审查,以确保它们满足组织的安全要求。

不管用户如何获取通用 Windows 应用,他们可以更加自信地使用这些应用。 通用 Windows 应用在 AppContainer 沙盒中使用有限的特权和功能运行。 例如,通用 Windows 应用不具有系统级别的访问权限、严格控制与其他应用的交互,并且没有对数据的访问权限,除非用户明确授予该应用程序权限。

此外,所有通用 Windows 应用都应遵循最低权限安全原则。 应用仅收到执行其合法任务所需的最低权限,因此即使攻击者利用应用,该攻击所带来的损害也是极其有限的,并且应包含在沙盒内。 Microsoft应用商店显示应用 (所需的确切功能,例如,访问相机) ,以及应用的年龄分级和发布者。

Windows 堆的保护功能

是 Windows 用来存储动态应用程序数据的内存中的位置。 Windows 10 通过进一步缓解可能被用作攻击一部分的堆利用的风险,继续改进早期的 Windows 堆设计。

Windows 10 在堆安全性方面具有多个重要改进:

  • 堆元数据强化用于堆使用的内部数据结构,可加强针对内存损坏的保护功能。

  • 堆分配随机化,即使用随机位置和大小进行堆内存分配,使攻击者更难预测要覆盖的关键内存的位置。 具体来说,Windows 10 向新分配的堆添加了随机偏移,从而大大降低了分配的可预测性。

  • 堆保护 内存块之前和之后的页面,它们充当行程线。 如果攻击者尝试进行的写入超出了某一内存块(即称为缓冲区溢出的常用技术),该攻击者将必须覆盖一个保护页面。 修改保护页面的任何尝试都将视为内存损坏,而 Windows 10 将通过立即终止应用做出响应。

内核池的保护功能

Windows 中的操作系统内核留出两个内存池,一个内存池保留在物理内存 (“非分页池”) ,一个可以分页进出物理内存 (“分页池”) 。 随着时间的推移,已添加许多缓解措施,例如进程配额指针编码;lookaside、delay free 和 pool page Cookie;和 PoolIndex 边界检查。 Windows 10添加了多个“池强化”保护,例如完整性检查,可帮助保护内核池免受更高级的攻击。

除池强化外,Windows 10 还包含其他内核强化功能:

  • 内核 DEP内核 ASLR:遵循与本主题前面所述的数据执行保护地址空间布局随机化相同的原则。

  • 在 AppContainer 中分析字体:将字体分析隔离在 AppContainer 沙盒中。

  • 禁用 NT 虚拟 DOS 计算机 (NTVDM):默认情况下,禁用旧的 NTVDM 内核模块(用于运行 16 位应用程序),这能消除关联的漏洞。 (启用 NTVDM 会降低对 Null 取消引用和其他攻击的防御。)

  • 监督器模式执行防护 (SMEP) :帮助防止内核 (“监督器”) 在用户页面中执行代码,这是攻击者用于本地内核提升特权 (EOP) 的常见技术。 此配置需要在 Intel Ivy Bridge 或更高版本处理器中找到处理器支持,或者具有 PXN 支持的 ARM。

  • 安全取消链接:有助于防止与创建攻击的取消链接操作结合的池溢出。 Windows 10包括全局安全取消链接,它将堆和内核池的安全取消链接扩展到LIST_ENTRY的所有用法,并包括“FastFail”机制,以实现快速和安全的进程终止。

  • 内存保留:最少为系统保留 64 KB 的进程内存。 不允许应用分配该部分内存。 这种系统分配使得恶意软件更难使用“NULL 取消引用”等技术来覆盖内存中的关键系统数据结构。

控制流保护

将应用程序加载到内存中时,会根据代码大小、请求的内存和其他因素分配空间。 当应用程序开始执行代码时,它会调用位于其他内存地址中的其他代码。 代码位置之间的关系是众所周知的(它们是在代码本身中编写的),但在Windows 10之前,这些位置之间的流并未强制实施,这让攻击者有机会更改流以满足其需求。

在 Windows 10 中,通过控制流保护 (CFG) 功能使这种类型的威胁得到缓解。 当编译为使用 CFG 的受信任应用程序调用代码时,CFG 将验证调用的代码位置是否可执行。 如果位置不受信任,应用程序将立即终止,因为存在潜在的安全风险。

管理员无法配置 CFG;相反,应用程序开发人员可以通过在编译应用程序时配置 CFG 来利用 CFG。 考虑要求应用程序开发人员和软件供应商提供通过启用 CFG 编译的受信任 Windows 应用程序。 例如,它可以为使用 C 或 C++ 编写的应用程序,或使用 Visual Studio 2015 编译的应用程序启用。 有关为 Visual Studio 2015 项目启用 CFG 的信息,请参阅控制流防护

浏览器是攻击的关键入口点,因此Microsoft Edge、IE 和其他 Windows 功能充分利用 CFG。

Microsoft Edge 和 Internet Explorer 11

浏览器安全性是任何安全策略的关键组件,有充分的理由:浏览器是 Internet 的用户界面,环境有许多恶意站点和内容等待攻击。 大多数用户不能在没有浏览器的情况下至少执行部分作业,并且许多用户依赖于浏览器。 这一现实使得浏览器变成恶意黑客发起其攻击的常用途径。

所有浏览器都支持一定程度的可扩展性,以便于执行一些超出浏览器原始范围的操作。 两个常见示例是 Flash 和 Java 扩展,它们使各自的应用程序能够在浏览器中运行。 出于 Web 浏览和应用程序目的(尤其是对于这两种内容类型),Windows 10的安全性是一个优先事项。

Windows 10 包括一款全新的浏览器 Microsoft Edge。 Microsoft Edge 在很多方面都更安全,尤其是:

  • 减小攻击面,不支持非 Microsoft 的二进制扩展。 Microsoft Edge 删除了多个带有易受攻击的接口的浏览器组件。 已删除的组件包括,旧版文档模式和脚本引擎、浏览器帮助程序对象 (BHO)、ActiveX 控件和 Java。 但是,默认情况下,Microsoft Edge 通过内置扩展支持 Flash 内容和 PDF 查看。

  • 运行 64 位进程。 运行较早版本的 Windows 的 64 位电脑通常在 32 位兼容性模式下运行,以支持较旧的且不太安全的扩展。 在 64 位电脑上运行 Microsoft Edge 时,它只运行 64 位进程,这对于攻击而言更安全。

  • 包含内存垃圾收集 (MemGC)。 此功能有助于防止在释放后使用 (UAF) 问题。

  • 设计为通用 Windows 应用。 Microsoft Edge 在本质上具有独立性,并且在从系统、数据和其他应用沙盒化浏览器的 AppContainer 中运行。 Windows 10 上的 IE11 也可以通过增强保护模式利用相同的 AppContainer 技术。 但是,由于 IE11 可以运行 ActiveX 和 BHO,因此与 Microsoft Edge 相比,浏览器和沙盒容易受到范围更广的攻击。

  • 简化了安全配置任务。 由于 Microsoft Edge 使用简化的应用程序结构和单沙盒配置,因此需要的安全设置较少。 此外,Microsoft Edge 默认设置与安全最佳做法保持一致,使其在默认情况下更安全。

除了 Microsoft Edge 之外,Microsoft还包含 Windows 10 中的 IE11,主要用于向后兼容网站和不适用于 Microsoft Edge 的二进制扩展。 不能将其配置为主浏览器,而是将其配置为可选或自动切换。 我们建议将 Microsoft Edge 用作主要 Web 浏览器,因为它提供与现代 Web 和可能的最佳安全的兼容性。

对于需要 IE11 兼容性的站点(包括需要二进制扩展和插件的站点),请启用企业模式并使用企业模式站点列表来定义哪些站点具有依赖项。 借助此配置,如果 Microsoft Edge 标识了一个需要 IE11 的站点,用户将自动转换到 IE11。

软件供应商可用于在应用中内置缓解功能的函数

一些在 Windows 10 中可用的保护功能是通过可以从应用或其他软件内调用的函数提供的。 此类软件不太可能提供攻击开口。 如果与软件供应商合作,可以请求他们在应用程序中包括这些面向安全性的函数。 下表列出了部分缓解功能类型和对应的面向安全的函数,这些函数可在应用中使用。

注意

控制流防护 (CFG) 也是开发人员可以在编译时包含在软件中的重要缓解功能。 有关详细信息,请参阅本主题前面的控制流防护

表 4 开发人员可用于将缓解措施构建到应用中的函数

缓解功能 函数
MemProt 动态代码限制 UpdateProcThreadAttribute 函数
[PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_ON]
LoadLib 映像加载限制 UpdateProcThreadAttribute 函数
[PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_ALWAYS_ON]
子进程限制,限制创建子进程的功能 UpdateProcThreadAttribute 函数
[PROC_THREAD_ATTRIBUTE_CHILD_PROCESS_POLICY]
代码完整性限制,限制映像加载 SetProcessMitigationPolicy 函数
[ProcessSignaturePolicy]
Win32k 系统调用禁用限制,限制使用 NTUser 和 GDI 的功能 SetProcessMitigationPolicy 函数
[ProcessSystemCallDisablePolicy]
高 Entropy ASLR,内存分配中高达 1 TB 的差异 UpdateProcThreadAttribute 函数
[PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_ALWAYS_ON]
严格句柄检查,在发生不良句柄引用时立即引发异常 UpdateProcThreadAttribute 函数
[PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_ALWAYS_ON]
扩展点禁用,阻止使用某些第三方扩展点 UpdateProcThreadAttribute 函数
[PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_ALWAYS_ON]
堆损坏终止,保护系统抵御损坏的堆 UpdateProcThreadAttribute 函数
[PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_ALWAYS_ON]

了解 Windows 10 中与增强的缓解体验工具包有关的内容

你可能已经熟悉 增强的缓解体验工具包 (EMET) ,该工具包自 2009 年以来提供了各种攻击缓解措施,以及用于配置这些缓解措施的界面。 可以使用本部分来了解 EMET 缓解措施与 Windows 10 中的这些缓解措施的关系。 EMET 的许多缓解措施已内置于Windows 10中,有些还进行了额外的改进。 但是,某些 EMET 缓解措施具有高性能成本,或者似乎对现代威胁相对无效,因此尚未引入Windows 10。

由于许多 EMET 的缓解和安全机制已存在于Windows 10中,并且已得到改进,特别是评估在缓解已知绕过方面具有高可用性的缓解机制,因此版本 5.5x 已宣布为 EMET 的最终主版本 (请参阅增强缓解体验工具包) 。

下表列出了与 Windows 10 功能相关的 EMET 功能。

表 5 与Windows 10特征相关的 EMET 特征

具体的 EMET 功能 这些 EMET 功能如何映射到Windows 10功能
  • DEP
  • SEHOP
  • ASLR(强制 ASLR、底部向上 ASLR)
  • DEP、SEHOP 和 ASLR 作为可配置功能包含在Windows 10中。 请参阅本主题前面的表 2。可以安装 ProcessMitigations PowerShell 模块,将这些功能的 EMET 设置转换为可应用于Windows 10的策略。
  • 加载库检查 (LoadLib)
  • 内存保护检查 (MemProt)
  • Windows 10 中所有使用这些函数编写的应用程序都支持 LoadLib 和 MemProt。 请参阅本主题前面的表 4
    Null 页 此威胁的缓解措施内置于 Windows 10 中,如本主题前面的内核池保护中的“内存预留”项中所述。
  • 堆喷射
  • EAF
  • EAF+
  • Windows 10不包括专门映射到这些 EMET 功能的缓解措施,因为它们在当前威胁环境中的影响较小,并且不会显著增加利用漏洞的难度。 随着新的攻击出现,Microsoft 会保持致力于监视安全环境,并采取措施强化针对这些攻击的操作系统。
  • 调用方检查
  • 模拟执行流
  • 堆叠透视
  • 深层挂钩 (ROP“高级缓解”)
  • 反绕道 (ROP“高级缓解”)
  • 禁止的函数 (ROP“高级缓解”)
  • 在 Windows 10 中,通过使用控制流防护编译的应用程序得到缓解,如本主题之前的控制流防护中所述。

    将 EMET XML 设置文件转换为 Windows 10 缓解策略

    EMET 的优点之一是,它允许将 EMET 缓解的配置设置导入和导出为 XML 设置文件,以便直接部署。 若要从 EMET XML 设置文件中生成适用于 Windows 10 的缓解策略,你可以安装 ProcessMitigations PowerShell 模块。 在提升的 PowerShell 会话中,运行此 cmdlet:

    Install-Module -Name ProcessMitigations
    

    Get-ProcessMitigation cmdlet 从注册表或正在运行的进程中获取当前缓解设置,或,它可以将所有设置保存到 XML 文件中。

    若要获取 notepad.exe 的所有运行实例的当前设置:

    Get-ProcessMitigation -Name notepad.exe -RunningProcess
    

    若要获取 notepad.exe 的注册表中的当前设置:

    Get-ProcessMitigation -Name notepad.exe
    

    若要使用 pid 1304 获取正在运行的进程的当前设置:

    Get-ProcessMitigation -Id 1304
    

    若要从注册表获取所有进程缓解设置,并将其保存到 xml 文件 settings.xml 中:

    Get-ProcessMitigation -RegistryConfigFilePath settings.xml
    

    Set-ProcessMitigation cmdlet 可启用和禁用进程缓解,或从 XML 文件中进行批量设置。

    若要从注册表中获取“notepad.exe”的当前进程缓解,然后启用 MicrosoftSignedOnly 并禁用 MandatoryASLR:

    Set-ProcessMitigation -Name Notepad.exe -Enable MicrosoftSignedOnly -Disable MandatoryASLR
    

    若要从 XML 文件(可以从 get-ProcessMitigation -RegistryConfigFilePath settings.xml 中生成)设置进程缓解:

    Set-ProcessMitigation -PolicyFilePath settings.xml
    

    若要将系统默认设置设置为 MicrosoftSignedOnly:

    Set-ProcessMitigation -System -Enable MicrosoftSignedOnly
    

    ConvertTo-ProcessMitigationPolicy cmdlet 可转换缓解策略文件格式。 语法为:

    ConvertTo-ProcessMitigationPolicy -EMETFilePath <String> -OutputFilePath <String> [<CommonParameters>]
    

    示例:

    • 将 EMET 设置转换为 Windows 10 设置:你可以运行 ConvertTo-ProcessMitigationPolicy 并提供 EMET XML 设置文件作为输入,这会生成 Windows 10 缓解设置的结果文件。 例如:

      ConvertTo-ProcessMitigationPolicy -EMETFilePath policy.xml -OutputFilePath result.xml
      
    • 审核和修改 (输出文件) 转换的设置 :通过更多 cmdlet,可以在输出文件中应用、枚举、启用、禁用和保存设置。 例如,此 cmdlet 启用 SEHOP,并禁用记事本的 MandatoryASLR 和 DEPATL 注册表设置:

      Set-ProcessMitigation -Name notepad.exe -Enable SEHOP -Disable MandatoryASLR,DEPATL
      
    • 将攻击面减少 (ASR) 设置转换为代码完整性策略文件:如果输入文件包含 EMET 的攻击面减少 (ASR) 缓解的任何设置,转换器还将创建代码完整性策略文件。 在这种情况下,可以完成代码完整性策略的合并、审核和部署过程。 有关详细信息,请参阅 部署适用于企业的应用控制策略。 此完成将在等效于 EMET ASR 保护的Windows 10启用保护。

    • 将证书信任设置转换为企业证书固定规则:如果你有 EMET“证书信任”XML 文件 (固定规则文件) ,则还可以使用 ConvertTo-ProcessMitigationPolicy 将固定规则文件转换为企业证书固定规则文件。 然后,你可以完成启用该文件,如企业证书固定中所述。 例如:

      ConvertTo-ProcessMitigationPolicy -EMETfilePath certtrustrules.xml -OutputFilePath enterprisecertpinningrules.xml
      

    Microsoft 咨询服务 (MCS) 和 Microsoft 支持/Premier Field Engineering (PFE) 提供各种 EMET 选项、EMET 支持和 EMET 相关报告和审核产品,例如 EMET 企业报告服务 (ERS)。 对于目前使用此类产品或对类似功能感兴趣的任何企业客户,我们建议评估Microsoft Defender for Endpoint