Habilitar la protección basada en virtualización de la integridad de código

La integridad de memoria es una característica de seguridad basada en virtualización (VBS) disponible en Windows. La integridad de la memoria y VBS mejoran el modelo de amenazas de Windows y proporcionan protecciones más seguras contra el malware que intenta aprovechar el kernel de Windows. VBS usa el hipervisor de Windows para crear un entorno virtual aislado que se convierte en la raíz de confianza del sistema operativo que supone que el kernel se puede poner en peligro. La integridad de memoria es un componente crítico que protege y protege Windows mediante la ejecución de la integridad de código en modo kernel dentro del entorno virtual aislado de VBS. La integridad de memoria también restringe las asignaciones de memoria del kernel que se podrían usar para poner en peligro el sistema.

Nota

  • La integridad de memoria a veces se conoce como integridad de código protegida por hipervisor (HVCI) o integridad de código aplicado por hipervisor, y se publicó originalmente como parte de Device Guard. Device Guard ya no se usa excepto para buscar la integridad de la memoria y la configuración de VBS en directiva de grupo o en el Registro de Windows.
  • La integridad de la memoria funciona mejor con Intel Kabylake y procesadores superiores con control de ejecución basado en modo y procesadores AMD Zen 2 y superiores con capacidades de captura de ejecución en modo invitado . Los procesadores más antiguos se basan en una emulación de estas características, denominada modo de usuario restringido, y tendrán un mayor impacto en el rendimiento. Cuando la virtualización anidada está habilitada, la integridad de la memoria funciona mejor cuando la máquina virtual es versión >= 9.3.

Advertencia

Algunas aplicaciones y controladores de dispositivos de hardware pueden ser incompatibles con la integridad de la memoria. Esta incompatibilidad puede hacer que los dispositivos o el software no funcionen correctamente y, en raras ocasiones, puede provocar un error de arranque (pantalla azul). Estos problemas pueden producirse después de activar la integridad de la memoria o durante el propio proceso de habilitación. Si se producen problemas de compatibilidad, consulte Solución de problemas para ver los pasos de corrección.

Características de integridad de memoria

  • Protege la modificación del mapa de bits de Control Flow Guard (CFG) para los controladores de modo kernel.
  • Protege el proceso de integridad de código en modo kernel que garantiza que otros procesos de kernel de confianza tengan un certificado válido.

Cómo activar la integridad de la memoria

Para habilitar la integridad de la memoria en dispositivos Windows con hardware compatible en toda una empresa, use cualquiera de estas opciones:

Seguridad de Windows

La integridad de la memoria se puede activar en Seguridad de Windows configuración y se puede encontrar en Seguridad de Windows>Dispositivosdetalles> de aislamiento de seguridad > coreIntegridad de memoria. Para obtener más información, consulte Protección de dispositivos en Seguridad de Windows.

A partir de Windows 11 22H2, Seguridad de Windows muestra una advertencia si la integridad de la memoria está desactivada. El indicador de advertencia también aparece en el icono de Seguridad de Windows en la barra de tareas de Windows y en el Centro de notificaciones de Windows. El usuario puede descartar la advertencia desde dentro de Seguridad de Windows.

Habilitación de la integridad de memoria mediante Intune

Use la configuraciónDe integridad de código aplicada del hipervisorde tecnología> basada en virtualización mediante el catálogo de configuración para habilitar la integridad de la memoria. También puede usar el nodo HypervisorEnforcedCodeIntegrity en el CSP virtualizationBasedTechnology.

Habilitación de la integridad de la memoria mediante directiva de grupo

  1. Use directiva de grupo Editor (gpedit.msc) para editar un GPO existente o crear uno nuevo.
  2. Vaya a Configuración> del equipoPlantillas> administrativasSystem>Device Guard.
  3. Haga doble clic en Activar seguridad basada en virtualización.
  4. Seleccione Habilitado y, en Protección basada en virtualización de integridad de código, seleccione Habilitado sin bloqueo UEFI. Solo seleccione Habilitado con bloqueo UEFI si desea evitar que la integridad de la memoria se deshabilite de forma remota o mediante la actualización de directivas. Una vez habilitado con el bloqueo UEFI, debe tener acceso al menú UEFI BIOS para desactivar el arranque seguro si desea desactivar la integridad de la memoria. Habilite la integridad de la memoria mediante directiva de grupo.
  5. Seleccione Aceptar para cerrar el editor.

Para aplicar la nueva directiva en un equipo unido a un dominio, reinicie o ejecute gpupdate /force en un símbolo del sistema con privilegios elevados.

Uso de claves del Registro para habilitar la integridad de la memoria

Establezca las siguientes claves del Registro para habilitar la integridad de la memoria. Estas claves proporcionan exactamente el mismo conjunto de opciones de configuración proporcionadas por directiva de grupo.

Importante

  • Entre los comandos que siguen, puedes elegir la configuración para Arranque seguro y Arranque seguro con DMA. En la mayoría de los casos, recomendamos elegir Arranque seguro. Esta opción proporciona el arranque seguro con tanta protección como sea compatible con el hardware de un equipo determinado. Un equipo con unidades de administración de memoria de entrada y salida (IOMMU) tendrá arranque seguro con protección de DMA. Un equipo sin las IOMMU simplemente tendrá habilitado el arranque seguro.

  • Si selecciona Arranque seguro con DMA, la integridad de la memoria y las otras características de VBS solo estarán activadas para los equipos que admitan DMA. Es decir, solo para equipos con IOMMU. Cualquier equipo sin IOMMU no tendrá VBS ni protección de la integridad de la memoria.

  • Todos los controladores del sistema deben ser compatibles con la protección basada en la virtualización de la integridad de código; en caso contrario, el sistema puede presentar errores. Recomendamos habilitar estas características en un grupo de equipos de prueba antes de habilitarlas en los equipos de los usuarios.

Configuración recomendada (para habilitar la integridad de la memoria sin bloqueo UEFI):

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "EnableVirtualizationBasedSecurity" /t REG_DWORD /d 1 /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "RequirePlatformSecurityFeatures" /t REG_DWORD /d 1 /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "Locked" /t REG_DWORD /d 0 /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v "Enabled" /t REG_DWORD /d 1 /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v "Locked" /t REG_DWORD /d 0 /f

Si desea personalizar la configuración recomendada anterior, use las siguientes claves del Registro.

Para habilitar solo VBS (sin integridad de memoria)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "EnableVirtualizationBasedSecurity" /t REG_DWORD /d 1 /f

Para habilitar VBS y requerir solo Arranque seguro (valor 1)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "RequirePlatformSecurityFeatures" /t REG_DWORD /d 1 /f

Para habilitar VBS con arranque seguro y DMA (valor 3)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "RequirePlatformSecurityFeatures" /t REG_DWORD /d 3 /f

Para habilitar VBS sin bloqueo UEFI (valor 0)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "Locked" /t REG_DWORD /d 0 /f

Para habilitar VBS con bloqueo UEFI (valor 1)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v "Locked" /t REG_DWORD /d 1 /f

Para habilitar la integridad de la memoria

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v "Enabled" /t REG_DWORD /d 1 /f

Para habilitar la integridad de la memoria sin bloqueo UEFI (valor 0)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v "Locked" /t REG_DWORD /d 0 /f

Para habilitar la integridad de la memoria con bloqueo UEFI (valor 1)

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v "Locked" /t REG_DWORD /d 1 /f

Para atenuar la interfaz de usuario de integridad de memoria y mostrar el mensaje "Esta configuración la administra el administrador"

reg delete HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity /v "WasEnabledBy" /f

Para permitir que la interfaz de usuario de integridad de memoria se comporte con normalidad (no atenuada)

reg add HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity /v "WasEnabledBy" /t REG_DWORD /d 2 /f

Habilitación de la integridad de memoria mediante Windows Defender Control de aplicaciones (WDAC)

Puede usar la directiva WDAC para activar la integridad de la memoria mediante cualquiera de las técnicas siguientes:

  1. Use el Asistente para WDAC para crear o editar la directiva WDAC y seleccione la opción Integridad de código protegida por hipervisor en la página Reglas de directivas del Asistente.
  2. Use el cmdlet de PowerShell Set-HVCIOptions .
  3. Edite el XML de directiva WDAC y modifique el valor establecido para el <HVCIOptions> elemento.

Nota

Si la directiva WDAC está establecida para activar la integridad de la memoria, se activará incluso si la directiva está en modo de auditoría.

Validación de vbs habilitado y características de integridad de memoria

Uso de Win32_DeviceGuard clase WMI

Windows 10, Windows 11 y Windows Server 2016 y versiones posteriores tienen una clase WMI para las propiedades y características relacionadas con VBS: Win32_DeviceGuard. Esta clase puede consultarse desde una sesión de Windows PowerShell con privilegios elevados mediante el siguiente comando:

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

Nota

La propiedad Control de ejecución basada en modo solo se mostrará como disponible a partir de Windows 10 versión 1803 y Windows 11 versión 21H2. Este valor se notifica tanto para el control de ejecución basado en modo de Intel como para las funcionalidades de captura de ejecución en modo invitado de AMD.

La salida de este comando proporciona detalles de las características de seguridad basadas en hardware disponibles y las características que están habilitadas actualmente.

AvailableSecurityProperties

Este campo ayuda a enumerar y notificar el estado de las propiedades de seguridad pertinentes para VBS y la integridad de la memoria.

Valor Descripción
0 Si se encuentra presente, no hay ninguna propiedad pertinente en el dispositivo.
1 Si se encuentra presente, existe compatibilidad con el hipervisor.
2 Si se encuentra presente, el arranque seguro está disponible.
3 Si se encuentra presente, la protección de DMA está disponible.
4 Si se encuentra presente, la sobrescritura de memoria segura está disponible.
5 Si se encuentra presente, las protecciones NX están disponibles.
6 Si se encuentra presente, las mitigaciones de SMM están disponibles.
7 Si está presente, MBEC/GMET está disponible.
8 Si está presente, la virtualización de APIC está disponible.
InstanceIdentifier

Cadena que es única para un dispositivo determinado y establecida por WMI.

RequiredSecurityProperties

En este campo se describen las propiedades de seguridad necesarias para habilitar VBS.

Valor Descripción
0 No se necesita nada.
1 Si se encuentra presente, se necesita la compatibilidad con el hipervisor.
2 Si se encuentra presente, se necesita el arranque seguro.
3 Si se encuentra presente, se necesita la protección de DMA.
4 Si se encuentra presente, se necesita la sobrescritura de memoria segura.
5 Si está presente, se necesitan las protecciones NX.
6 Si está presente, se necesitan las mitigaciones de SMM.
7 Si está presente, se necesita MBEC/GMET.
SecurityServicesConfigured

Este campo indica si se ha configurado Credential Guard o la integridad de la memoria.

Valor Descripción
0 No se configura ningún servicio.
1 Si se encuentra presente, Credential Guard se ha configurado.
2 Si está presente, se configura la integridad de la memoria.
3 Si está presente, se configura Protección del sistema inicio seguro.
4 Si está presente, se configura la medición de firmware de SMM.
SecurityServicesRunning

Este campo indica si se está ejecutando Credential Guard o la integridad de la memoria.

Valor Descripción
0 No se está ejecutando ningún servicio.
1 Si se encuentra presente, Credential Guard está en ejecución.
2 Si está presente, se está ejecutando la integridad de la memoria.
3 Si está presente, se está ejecutando Protección del sistema inicio seguro.
4 Si está presente, se está ejecutando la medición de firmware de SMM.
Version

Este campo muestra la versión de esta clase de WMI. Actualmente, el único valor válido es 1.0.

VirtualizationBasedSecurityStatus

Este campo indica si VBS está habilitado y en ejecución.

Valor Descripción
0 VBS no está habilitado.
1 VBS está habilitado, pero no en ejecución.
2 VBS está habilitado y en ejecución.
PSComputerName

En este campo se muestra el nombre del equipo. Todos los valores válidos para el nombre del equipo.

Uso de msinfo32.exe

Otro método para determinar las características de VBS disponibles y habilitadas es ejecutar msinfo32.exe desde una sesión de PowerShell con privilegios elevados. Al ejecutar este programa, las características de VBS se muestran en la parte inferior de la sección Resumen del sistema .

Características de seguridad basadas en virtualización en el resumen del sistema de información del sistema.

Solución de problemas

  • Si un controlador de dispositivo no se carga o se bloquea en tiempo de ejecución, es posible que pueda actualizar el controlador mediante Administrador de dispositivos.
  • Si experimenta un error crítico durante el arranque o el sistema es inestable después de activar la integridad de la memoria, puede recuperarlo mediante el entorno de recuperación de Windows (Windows RE).
    1. En primer lugar, deshabilite las directivas que se usan para habilitar VBS y la integridad de la memoria, por ejemplo, directiva de grupo.

    2. A continuación, arranque para Windows RE en el equipo afectado, consulte Windows RE Referencia técnica.

    3. Después de iniciar sesión en Windows RE, establezca la clave del Registro de integridad de memoria en off:

      reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v "Enabled" /t REG_DWORD /d 0 /f
      
    4. Por último, reinicie el dispositivo.

Nota

Si ha activado la integridad de la memoria con bloqueo UEFI, deberá deshabilitar Arranque seguro para completar los pasos de recuperación de Windows RE.

Implementación de integridad de memoria en máquinas virtuales

La integridad de la memoria puede proteger una máquina virtual de Hyper-V, igual que lo haría con una máquina física. Los pasos para habilitar la integridad de la memoria son los mismos desde dentro de la máquina virtual.

La integridad de la memoria protege contra el malware que se ejecuta en la máquina virtual invitada. No proporciona protección adicional del administrador del host. Desde el host, puede deshabilitar la integridad de memoria de una máquina virtual:

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

Requisitos para ejecutar la integridad de memoria en máquinas virtuales de Hyper-V

  • El host de Hyper-V debe ejecutar al menos Windows Server 2016 o Windows 10, versión 1607.
  • La máquina virtual de Hyper-V debe ser de la generación 2 y ejecutar como mínimo Windows Server 2016 o Windows 10.
  • La integridad de la memoria y la virtualización anidada se pueden habilitar al mismo tiempo. Para habilitar el rol de Hyper-V en la máquina virtual, primero debe instalar el rol de Hyper-V en un entorno de virtualización anidada de Windows.
  • Canal de fibra virtual adaptadores no son compatibles con la integridad de la memoria. Antes de conectar un adaptador de canal de fibra virtual a una máquina virtual, primero debe excluirse de la seguridad basada en virtualización mediante Set-VMSecurity.
  • La opción AllowFullSCSICommandSet para discos de paso a través no es compatible con la integridad de la memoria. Antes de configurar un disco de paso a través con AllowFullSCSICommandSet, primero debe rechazar la seguridad basada en virtualización mediante Set-VMSecurity.