Windows内存完整性配置:完整技术指南

  • 内存完整性是 VBS 的一个组件,它通过将内核代码隔离在虚拟机管理程序保护的环境中来加强内核代码的完整性。
  • 其激活取决于硬件、固件和驱动程序要求,并且可以通过图形界面、注册表、应用程序控制或 MDM 工具进行管理。
  • Windows 提供了多种验证和诊断机制(Win32_DeviceGuard、msinfo32、SkTool、代码完整性事件)来检查 VBS 和 HVCI 的实际状态。
  • 该功能既可用于物理硬件,也可用于 Hyper-V 虚拟机,但需考虑具体的兼容性和性能因素。

Windows 中的内存完整性

如果你走到这一步是因为你和……相处不来 Windows内存完整性敬请期待,我们将深入探讨这项功能。您将了解它的具体内容、它与内核隔离和 VBS 的关系、如何在个人电脑和企业环境中启用它(通过 Intune、策略、注册表、PowerShell 等工具)、它对硬件的要求,以及当 Windows 完全拒绝启用它时该怎么办。

本指南的目标是让您在阅读完后了解以下内容。 如何在 Windows 中配置内存完整性 您将轻松学会如何检查消息和参数以确认一切正常运行,以及如何诊断物理计算机和 Hyper-V 虚拟机上常见的错误。我们将循序渐进地讲解,并提供足够的技术细节,使高级用户和系统管理员都能从中受益。

什么是内存完整性?它与VBS有何关联?

电话 内存完整性 (内存完整性或 HVCI,虚拟机监控程序强制代码完整性)是基于 Windows 虚拟化的安全机制的关键组件,称为 VBS(基于虚拟化的安全)这个想法很简单,但非常强大:Windows 使用虚拟机管理程序创建一个隔离的虚拟环境,假设正常的内核可能已被破坏,并在该受保护的环境中运行关键的代码完整性检查。

因此,该系统可以 验证在内核模式下运行的代码 从更安全的视角出发,将密钥和敏感操作与操作系统的其他部分分开,并加强对高级恶意软件(如 rootkit 或直接攻击 Windows 内核的漏洞利用程序)的威胁模型。

当内存完整性正常运行时,系统 严格限制内核内存分配代码页只有在安全环境中通过完整性检查后才会被标记为可执行,而且可执行页无法被重写。换句话说,这使得……变得极其困难。 代码注入 或对关键内核结构进行修改。

升级到 Windows 11 前必备硬件清单
相关文章:
升级到 Windows 11 前必备硬件清单

内存完整性的具体功能

虽然从图形界面上看只是一个简单的开关,但内存完整性功能实际上实现了多种底层机制。 对内核的非常具体的保护其中最重要的两项是:

  • 内核模式控制流保护 (CFG) 位图保护这可以防止恶意代码操纵 CFG 用于验证控制器执行流程的结构,从而堵住了许多重定向不需要的函数调用的漏洞利用途径。
  • 在内核模式下屏蔽代码完整性进程用于验证内核驱动程序是否可信且已正确签名的检查是在 VBS 环境中执行的,以便: 无法从内核内部进行操作 传统的。

总之,这一特性使得经典内核代码的完整性更加可靠,因为 它将其迁移到由虚拟机管理程序隔离的上下文中。 这种恶意软件更难攻击。

Windows界面中内存完整性在哪里配置?

在用户计算机上,访问内存完整性的最直接方法是通过应用程序。 Windows安全性这属于核心绝缘部分。 核心隔离它将 VBS 支持的内核保护相关的所有内容集中在一起。

要从界面本身激活它,通常的操作流程如下, 应该知道 即使您之后更倾向于通过策略或注册表应用配置:

  • 打开 Windows安全性 (系统托盘中的盾牌图标,或从“开始”菜单搜索)。
  • 输入 设备安全在那里你会看到这个方块 芯线绝缘.
  • 点击 芯线绝缘细节,其中出现选项 内存完整性 在开关旁边。
  • 打开开关。您可能会看到类似这样的信息:“内存完整性已禁用。设备可能存在安全漏洞。在激活该选项之前。
  • 当 Windows 提示您应用更改时,请重新启动计算机。

在这个屏幕上,通常会发现以下选项默认处于激活状态: 微软已屏蔽的易受攻击驱动程序列表这样可以防止在内存完整性保护激活时加载某些已知存在缺陷的驱动程序。这是一项重要的功能,因为 加强司机之间的信任链.

核心隔离与记忆完整性之间的关系

Windows 中的内存完整性

在安全应用程序中, 芯线绝缘 它包含多个功能。对大多数用户而言,最明显也最关键的功能正是内存完整性。启用此选项后,您实际上是在执行以下操作: 在 VBS 环境中启用 HCCI 你的设备。

核心隔离创造了 系统某些敏感部分的虚拟化环境内存完整性依赖于这种隔离机制来检查和控制内核代码。这样一来,即使具有提升权限的应用程序遭到攻击,攻击者也很难修改内核或其内部结构。

然而,这并非全是优点:这种隔离和额外的检查可能会带来一些问题。 对性能的某些影响尤其是在对延迟非常敏感的游戏或应用程序中。一些用户报告称,帧率下降甚至出现问题。 蓝色截图 激活该功能后。在这种情况下,如果确认问题根源在于HVCI,则有可能 暂时禁用核心隔离 驱动程序、固件正在更新或不兼容问题正在修复期间。

Windows 系统中何时默认启用内存完整性?

在现代版本的 Windows 系统中,微软通常会在许多新电脑上默认启用内存完整性保护。具体来说, Windows 11 默认启用内存完整性。 在兼容硬件上进行全新安装,无需用户触碰任何部件。这同样适用于被视为……的设备。 受保护核心 旧版全新安装的 Windows 10 S 模式。

如果设备不符合最低要求,该功能将不会自动激活,但是 用户或管理员可以手动开启此功能。 可以通过 Windows 安全界面、策略或修改注册表进行设置。无论采用哪种方式,微软都坚持要求 IT 专业人员和最终用户维护 最终控制权在于决定此保护措施是否生效。.

自动启用内存完整性的硬件要求

为了使系统能够在无需用户干预的情况下自动启用内存完整性,必须满足一系列相当具体的硬件和固件要求。这一点很重要,因为 它解释了为什么有些设备无法自动激活。 尽管他们可以选择是否使用该功能。

在...的水平 处理器一般准则如下:

  • 第八代英特尔处理器或更新版本 适用于 Windows 11 版本 22H2(以及 Windows 11 21H2 上的第 11 代酷睿处理器)。
  • 采用 Zen 2 架构或更高架构的 AMD 处理器也就是说,是相对较近的几代人。
  • 高通骁龙 8180 或更高版本 在 ARM 设备上。

此外,该设备还必须具备以下条件: 至少8 GB的RAM 在 x64 平台上,一种系统单元类型 64GB或更大的SSD 并且需要在 BIOS/UEFI 中启用以下功能: 硬件虚拟化选项.

另一个关键要求是…… 与内存完整性兼容的控制器如果任何关键驱动程序不支持 HVCI 或已知与其冲突,系统可能会选择不自动启用 VBS 和内存完整性保护,以避免严重的启动问题。因此,在旧硬件上检查驱动程序兼容性至关重要。

通过注册实现内存完整性控制(专业和 OEM 环境)

在企业环境中,通过以下方式控制内存完整性非常普遍: 注册表项可以直接在系统映像中进行配置,也可以通过 Intune 等管理工具、脚本或 GPO 进行配置。关键分支是 HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard 特别是子树 场景\虚拟机监控程序强制代码完整性.

为了实现基于虚拟化的安全性和内存完整性, 推荐配置 (不启用 UEFI 锁定,以便可以撤销),可以使用如下形式的条目:

  • 启用基于虚拟化的安全性 在 DeviceGuard 中,值为 1 以激活 VBS。
  • 需要平台安全功能 例如,值为 1(仅安全启动)或 3(安全启动 + DMA 保护)。
  • 锁定 在 DeviceGuard 和 HypervisorEnforcedCodeIntegrity 中决定是否通过 UEFI 固件锁定配置(0 不锁定,1 锁定)。
  • 启用 在“场景\HypervisorEnforcedCodeIntegrity”中,可以专门打开或关闭内存完整性。
  • 强制性 如果您希望系统启用此功能,请在 DeviceGuard 中将值设置为 1。 如果 VBS 或其关键组件出现故障,请勿完成启动过程。.

对于准备映像的设备制造商或管理员来说,有一个特别重要的设置:设置 HVCI 路径中的值。 已启用=1, WasEnabledBy=1 y EnabledBootId=这样可以确保内存完整性。 启动已启用 同时,如果系统在首次重启时检测到由于驱动程序不兼容而导致的启动阻塞,系统本身可以自动禁用它。

BootId 是一个计数器,每次成功启动时都会递增,它位于密钥中。 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters\BootIdHVCI自动停用逻辑仅在以下情况下适用: BootId 小于 EnabledBootId + 3这提供了一种安全保障,防止因驾驶员冲突而导致设备无法使用。

更改内存完整性图形界面的行为

管理员还要注意另一个关键点: WasEnabledBy 在 HVCI 子树中。它用于控制该选项在 Windows 安全应用中的显示方式,以及谁“负责”激活它。

如果该值被移除 WasEnabledBy界面显示消息 此设置由管理员管理。 并禁用最终用户控制,这在您想要……时非常有用 非常严格且不可修改的公司政策如果将其设置为某个值(例如 2),则界面恢复正常行为,用户可以从应用程序重新提交更改。

利用企业级应用控制实现内存完整性

在已经使用 应用程序控制(企业版应用程序控制)可以通过将内存完整性集成到应用程序控制策略本身来实现。这可以通过多种方式实现,所有方式都旨在利用现有的集中式管理。

最常见的选项包括:

  • 使用 应用程序控制助手 创建或编辑策略,请勾选此框 代码完整性受虚拟机管理程序保护 在政策规则部分。
  • 运行 PowerShell cmdlet 设置 HVCIOptions这样,您就可以通过脚本或自动化工具以更精细的方式调整 HVCI 选项。
  • 直接修改 应用程序控制策略 XML 调整元素的值 <HVCIOptions>当使用单个策略模板管理团队农场时,这非常有用。

这允许决定是否启用或禁用内存完整性 与应用程序控制指令本身一起旅行将整个代码安全模型集中在一个地方,避免配置分散。

检查VBS状态和内存完整性

一旦该功能被激活,就必须能够可靠地检查它是否有效。 VBS 和 HCCI 已上线运行。Windows 提供了多种验证机制,既可以通过命令行,也可以通过图形工具。

如何避免在购买廉价硬盘时上当受骗
相关文章:
如何避免在购买廉价内存和硬盘时上当受骗

Win32_DeviceGuard 和 PowerShell WMI 类

在 Windows 10、Windows 11 和 Windows Server 2016 或更高版本中,存在一个 WMI 类 Win32_DeviceGuard它公开了许多与 VBS 和内存完整性相关的属性。您可以使用具有管理员权限的 PowerShell 控制台,通过以下命令查询它:

Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard

输出结果显示,除其他内容外, 例如以下领域:

  • 实例标识符 y 版本其中标识类实例和版本(目前为 1.0)。
  • 可用安全属性,一个值数组,指示设备支持哪些安全功能(虚拟机管理程序兼容性、安全启动、DMA 保护、安全内存覆盖、NX 保护、SMM 缓解、MBEC/GMET、APIC 虚拟化……)。
  • 必需的安全属性这表明激活 VBS 所必需的安全属性(例如,需要 hyper-V、安全启动、IOMMU 等)。
  • 代码完整性策略执行状态 y 用户模式代码完整性策略执行状态指示代码完整性策略是已禁用、处于审计模式还是处于强制模式。
  • 安全服务已配置 y 安全服务正在运行您可以在哪里看到 Credential Guard、Memory Integrity 或其他 VBS 服务 是否已配置且正在运行?
  • 基于虚拟化的安全状态该命令用于检查 VBS 是否未启用、已启用但未启动,或者已直接启用并正在运行。
  • 虚拟机隔离 y 虚拟机隔离属性报告虚拟机隔离情况,其数值包括 AMD SEV-SNP、Intel TDX 或基于虚拟化的安全本身。

解读这些属性可以让您: 诊断VBS无法启动的原因 (如果缺少硬件功能,如果存在配置问题,如果只是启用但未运行等)以及内存完整性处于审计模式或严格强制模式。

使用 msinfo32.exe 和其他检查

另一种快速且直观地检查 VBS 状态的方法是运行 msinfo32.exe以提升的权限打开它,在“部分”中 系统总览 底部出现一个方块,上面写着: 基于虚拟化的安全功能 以及正在运行的服务。

您还可以检查反映 HVCI 状态的易失性注册表项,具体来说 HKLM\System\CurrentControlSet\Control\CI\State其中值 已启用 HVCIE 指示启动后内存完整性保护是否真正生效。

从用户的角度来看,最直接的检查仍然是打开 Windows 安全中心 > 设备安全 请查看标题。 实施基于虚拟化的安全服务 以及核心隔离细节中的内存完整性开关。

内存完整性常见问题的排查

并非每个人都能享受“即插即用”的体验。经常会看到那条令人头疼的提示信息…… “无法激活内存完整性” 或者,在 Intune 管理的环境中,配置可能会显示错误状态,但没有提供进一步的解释。对于这种情况,掌握一些诊断检查和技巧会很有帮助。

家用电脑上的手动激活错误

当您在 Windows 安全中心启用内存完整性保护但系统拒绝时,通常是有原因的。 这些因素之一:

  • 驱动程序过时或不兼容尤其是 USB 设备、老式显卡或不常见的周边设备。
  • 防病毒或安全软件 来自与 HVCI 的运作及其检查相冲突的第三方。
  • 硬件兼容性问题 (CPU 缺少必要功能,BIOS 不支持虚拟化,某些情况下缺少 SLAT、IOMMU 或安全启动)。
  • 待处理的 Windows 更新这会导致 VBS 和内存完整性部署无法完成,直到安装某些补丁程序为止。

有些指南推荐了一些极端解决方案,例如 从头开始重新安装 Windows 或者执行恢复出厂设置,但在那之前,不妨尝试一些侵入性更小的选项:删除有问题的驱动程序、更新所有驱动程序(尤其是 USB 和芯片组驱动程序)、执行…… 使用系统文件检查器进行扫描(sfc /scannow) 并使用 Windows 安全中心进行全面恶意软件扫描。

如果该功能似乎被“管理员”阻止,另一种解决方法是: 审查和修改注册表确保价值 启用 HVCI 路径已设置为 1,并且没有活动的组策略强制执行其他设置。但是,对注册表的任何更改都必须使用管理员权限并在备份后进行,因为 错误会导致系统不稳定。.

通过 Intune 或其他 MDM 工具激活失败

在 Intune 管理的部署中,内核隔离或内存完整性策略出现的情况相对常见。 误差 在很大一部分设备上,通过本地界面手动激活是有效的。

当这种情况发生时 IME.log 和事件查看器中均无明确记录。建议检查以下内容:

  • 这款设备确实名不虚传。 硬件和固件要求包括在 BIOS 中启用虚拟化、根据策略要求启用安全启动以及更新驱动程序。
  • 没有其他先前的指令或配置 这与Intune的政策相冲突。 对于 HCCI 来说,尤其是在测试过有 UEFI 锁定和无 UEFI 锁定的设置之后。
  • Intune代理确实收到了指令,再次检查 IME.log 即使没有出现明确的错误,也要查找有关 DeviceGuard 或 HVCI 的信息。
  • 如果错误仅发生在某些型号上,请使用 VBS 兼容性诊断工具进行检查(例如, SkTool 或记录 安装操作日志如果已被检测到 VBS 兼容性问题 具体的。

有时,Windows自身的启动保护逻辑会做出决定 请勿通过策略自动激活 HCCI。 如果之前的启动程序检测到崩溃或强制重启,并且指向不兼容的驱动程序,即使用户可以手动启用该驱动程序而没有明显的问题,也请检查相关的密钥。 已启用启动 ID 以及包含以下信息 SYSPRP HVCI 查看 setupact.log 文件有助于了解是否发生了类似情况。

使用 SkTool 和日志调试 VBS 和内存完整性

Windows SDK 包含一个鲜为人知但非常有用的高级支持和管理实用程序,名为 SkTool它位于 SDK 的 bin 文件夹中,路径类似于: C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\<arquitectura>其中架构将是 x64、arm64 等。

跑步 sktool.exe 即使不设置参数,也会显示虚拟机管理程序和 VBS 的当前状态,甚至还会显示相关信息。 VBS 开始或未开始的原因例如开关 /地位, /lkey o 缓解措施 它们使您能够深入了解密钥配置、安全内核缓解措施以及基于虚拟化的安全的其他方面。

另一方面,要查看内存完整性是否在运行时阻塞控制器,您可以查阅事件日志。 应用程序和服务日志\Microsoft\Windows\代码完整性\操作日志事件与 事件ID 3087 它们通常与某些驱动程序的HVCI兼容性问题有关,是理解这些问题的关键线索。 需要更新或更换哪个组件.

如果您想查看在系统准备期间如何做出默认启用或禁用 HVCI 的决定,请在 安装操作日志 您可以搜索类似这样的字符串 HCCI:实现 HCCI o 操作系统不符合HVCI自动启用要求包含以下信息 VBS_COMPAT_ISSUES 0xXXXXXXXXX 他们使用十六进制值列出了检测到的各种兼容性问题(例如,不支持的架构、缺少 SLAT、缺少 ACPI WSMT 表、缺少 SSD、RAM 不足等)。

当内存完整性导致系统不稳定时,如何恢复系统

如果在激活内存完整性后系统 它无法正常启动、启动时卡住或变得不稳定。建议使用 Windows 恢复环境 (Windows RE) 来撤销更改。

El 一般程序 是:

  • 暂时禁用任何 组策略或 MDM 策略 这会强制使用 VBS 或 HVCI。
  • 启动受影响的设备 视窗 RE使用高级恢复选项。
  • 以特权打开控制台并 修改 HVCI 启用密钥 在注册表中,将 DeviceGuard 分支中的值设置为 0 以禁用内存完整性。
  • 重启设备并检查系统是否能正常启动。

这种方法可以让你恢复陷入启动错误循环的计算机,而无需完全重新安装操作系统或丢失数据,这在生产环境中尤其有用。 停机时间至关重要.

Hyper-V 虚拟机中的内存完整性

内存完整性并非物理设备所独有:它也可以…… 在 Hyper-V 虚拟机中启用保护客户系统的方式与保护物理主机相同。在虚拟机内部,配置步骤几乎相同:启用 VBS 和 HVCI,可以通过策略、注册表或 Windows 安全界面进行配置。

但是,必须明确保护范围:内存完整性。 它可以防止虚拟机内部运行的恶意软件。但是,它并不能增加对主机管理员或对虚拟机管理程序本身的攻击的任何额外防御。

从 Hyper-V 主机上,您可以 禁用虚拟机包含 在基于虚拟化的安全方案中使用 cmdlet:

Set-VMSecurity -VMName <NombreMV> -VirtualizationBasedSecurityOptOut $true

为了使这一切正常运作,需要牢记以下几个要求。:

  • Hyper-V 主机必须运行 Windows Server 2016 或 Windows 10 1607 或更高版本.
  • 虚拟机必须是 第 2 代 并运行 Windows Server 2016 或 Windows 10 或更高版本。
  • 内存完整性由以下方式支持: 嵌套虚拟化但是,首先需要在已准备好进行嵌套虚拟化的环境中,在虚拟机内安装 Hyper-V 角色。
  • MGI 虚拟光纤通道适配器 它们与内存完整性不兼容;在将它们连接到虚拟机之前,必须使用 Set-VMSecurity 将该虚拟机从 VBS 中排除。
  • 选择 允许完整 SCSI 命令集 启用 HVCI 时,直通磁盘也不被支持;同样,在使用该配置之前,您需要选择退出 VBS 虚拟机。

在满足这些条件的前提下,即可部署 VBS 和内存完整性的实验室和生产场景 在虚拟机中,可以更轻松地测试策略和配置,而无需直接冒险操作主机。

Windows 内存完整性已成为一个 现代安全模式的核心 操作系统:利用虚拟化技术隔离关键代码完整性决策,强化内核以抵御高级攻击,将其管理与应用程序控制、设备策略和 Intune 等工具集成,并允许 详细诊断 通过 WMI、msinfo32、SkTool 和特定注册表。

持久性存储器(PMEM)
相关文章:
持久性内存存储(PMEM):它是什么以及它的用途

了解其硬件要求、注册表项和故障转移机制后,就可以在个人电脑和大型企业环境中以可控的方式部署它,充分发挥其潜力,同时又不忽略…… 在安全性、兼容性和性能之间取得平衡. 分享这些信息,让更多人了解这个话题。