Windows VBS(基于虚拟化的安全性,而不是 VBScript!)的文档不连贯,但微软提供了有关激活各种 VBS 组件并验证哪些组件处于活动状态的文章,这似乎应该相当简单。
验证已启用的 VBS 和内存完整性功能
使用 Win32_DeviceGuard WMI 类
Windows 10、Windows 11 和 Windows Server 2016 及更高版本具有用于 VBS 相关属性和功能的 WMI 类:Win32_DeviceGuard。 可以使用以下命令从提升的 Windows PowerShell 会话中查询此类:
PowerShell Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard
(...)
安全服务运行
该字段指示 Credential Guard 或内存完整性是否正在运行。
Value Description 0 No services running. 1 If present, Credential Guard is running. 2 If present, memory integrity is running. 3 If present, System Guard Secure Launch is running. 4 If present, SMM Firmware Measurement is running.
这是我的问题。
当我运行 Powershell 命令行时,我看到以下行:
SecurityServicesRunning: {1, 2, 5}
我无法在任何地方找到任何关于“5”这个值的含义的文档!
我的设备上 Powershell 命令行的完整输出是:
AvailableSecurityProperties : {1, 2, 3, 4…}
CodeIntegrityPolicyEnforcementStatus : 2
InstanceIdentifier : <redacted>
RequiredSecurityProperties : {1, 2, 3}
SecurityFeaturesEnabled : {0}
SecurityServicesConfigured : {1, 2, 3}
SecurityServicesRunning : {1, 2, 5}
UsermodeCodeIntegrityPolicyEnforcementStatus : 0
Version : 1.0
VirtualizationBasedSecurityStatus : 2
VirtualMachineIsolation : False
VirtualMachineIsolationProperties : {0}
PSComputerName : <redacted>
知道这里发生什么事了吗?
问题中链接的微软文章也说:
在此设备上执行此操作将从系统信息面板返回以下相关行:
最后一行列出了正在运行的服务“Credential Guard”、“Hypervisor 强制代码完整性”、“硬件强制堆栈保护(内核模式)”。前两项对应的
SecurityServicesRunning
值是{1}
和{2}
,所以我们可以猜测该值{5}
对应的是硬件强制堆栈保护(内核模式)。有关硬件强制堆栈保护(内核模式)的更多信息,请参阅以下 Microsoft 文章:
https://support.microsoft.com/en-us/windows/core-isolation-e30ed737-17d8-42f3-a2a9-87521df09b78#ID0EFN
虽然不能 100% 确定这就是其含义
{5}
,但这是一个合理的结论。如果启用了内核模式硬件强制堆栈保护的其他人也可以运行 PS 命令行来确认/比较值,那就太好了。