HVCI 与内核完整性
HVCI(Hypervisor 强制代码完整性)在界面里叫“内存完整性”:它借助虚拟化层校验内核态代码,确保只有通过签名与完整性检查的代码能进入内核。这样即便攻击者利用脆弱驱动拿到内核态执行,也难以写入可执行内存篡改内核结构。它与 Credential Guard 同属基于虚拟化的安全(VBS)家族,对硬件与固件有要求,且部分老驱动不兼容。
基本信息
| 适用平台 | Windows 10、11 与 Windows Server 2016 及以后(需硬件支持 VBS) |
|---|---|
| 核查命令 | Get-CimInstance Win32_DeviceGuard |
| 判读 | SecurityServicesRunning 含 2 表示 HVCI 运行中(1 为 Credential Guard) |
| 注册表项 | HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity |
| 生效条件 | 修改后需重启 |
典型使用场景
- 终端加固:作为 VBS 防护组合的一部分统一启用
- 服务器加固:减少内核态攻击面,尤其是对多租户环境
- 合规核查:确认内核完整性保护处于运行状态
- 排障定位:蓝屏或驱动加载失败时检查是否与 HVCI 冲突
- 升级评估:启用前确认关键驱动与安全软件的兼容性
核查与启用
核查与启用
Get-CimInstance Win32_DeviceGuard | Select-Object VirtualizationBasedSecurityStatus, SecurityServicesRunning, SecurityServicesConfigured
# SecurityServicesRunning 含 2 = HVCI 已在运行;0 = 未启用
reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v Enabled /t REG_DWORD /d 1 /f
msinfo32 # 界面里可查看“基于虚拟化的安全性”各项状态
# 重启后复核:
Get-CimInstance Win32_DeviceGuard | Select-Object SecurityServicesRunning取值读法
| 项/取值 | 含义 | 正常与异常 |
|---|---|---|
| SecurityServicesRunning 含 2 | HVCI 正在运行 | 目标状态 |
| SecurityServicesRunning 含 1 | Credential Guard 运行中 | 与 HVCI 常同时启用 |
| SecurityServicesRunning 为空 | 未启用任何 VBS 服务 | 需检查硬件与固件支持 |
| VirtualizationBasedSecurityStatus=2 | VBS 已启用并运行 | 为 0 或 1 说明未运行 |
| SecurityServicesConfigured | 已配置但未运行的服务 | 有值而 Running 无值说明未生效 |
老反作弊组件与部分安全驱动与 HVCI 不兼容,可能阻止启用或触发蓝屏:先查厂商兼容性矩阵,再在生产机上批量启用。
落地要点
- 启用需要虚拟化扩展与相应固件设置,虚拟机中还要看宿主的嵌套虚拟化支持
- 在测试机验证一段时间再推生产:兼容性问题往往在特定驱动加载时才暴露
- 与 Credential Guard 一起规划,两者同属 VBS 能力集合
- 启用后复核定值与实际运行状态:配置为已启用不等于服务在运行
- 把 Windows 版本与驱动清单一起存档,便于后续排查兼容性
HVCI 属于攻击面收敛手段,不能替代杀毒与 EDR 的运行态检测:两者定位不同,需要同时存在。