Включение функции защиты целостности кода на основе виртуализации

Целостность памяти — это функция безопасности на основе виртуализации (VBS), доступная в Windows. Целостность памяти и VBS улучшают модель угроз Windows и обеспечивают более надежную защиту от вредоносных программ, пытающихся использовать ядро Windows. VBS использует гипервизор Windows для создания изолированной виртуальной среды, которая становится корнем доверия операционной системы, предполагающей, что ядро может быть скомпрометировано. Целостность памяти — это критически важный компонент, который защищает и защищает Windows за счет выполнения целостности кода в режиме ядра в изолированной виртуальной среде VBS. Целостность памяти также ограничивает выделение памяти ядра, которое может использоваться для компрометации системы.

Примечание.

  • Целостность памяти иногда называется защищенной гипервизором целостности кода (HVCI) или принудительной целостностью кода гипервизора, и первоначально была выпущена в составе Device Guard. Device Guard больше не используется, кроме как для поиска целостности памяти и параметров VBS в групповая политика или реестре Windows.
  • Целостность памяти лучше работает с процессорами Intel Kabylake и более поздних версий с управлением выполнением на основе режима, а также процессорами AMD Zen 2 и более поздних версий с возможностями выполнения перехвата в гостевом режиме . Старые процессоры используют эмуляцию этих функций, называемую режимом ограниченного пользователя, и оказывают большее влияние на производительность. Если включена вложенная виртуализация, целостность памяти работает лучше, если виртуальная машина имеет версию >9.3.

Warning

Некоторые приложения и аппаратные драйверы устройств могут быть несовместимы с целостностью памяти. Такая несовместимость может привести к сбоям устройств или программного обеспечения, а в редких случаях — к сбою загрузки (синий экран). Такие проблемы могут возникать после включения целостности памяти или во время самого процесса включения. Если возникают проблемы с совместимостью, см. раздел Устранение неполадок для действий по исправлению.

Функции целостности памяти

  • Защищает изменение растрового изображения Control Flow Guard (CFG) для драйверов режима ядра.
  • Защищает процесс целостности кода в режиме ядра, который гарантирует, что другие доверенные процессы ядра имеют действительный сертификат.

Включение целостности памяти

Чтобы обеспечить целостность памяти на устройствах с Windows с поддержкой оборудования на предприятии, используйте любой из следующих вариантов:

Безопасность Windows

Целостность памяти можно включить в параметрах Безопасность Windows и найти в разделе Безопасность Windows>Изолировать>основные сведения о>целостности памяти. Дополнительные сведения см. в разделе Защита устройств в Безопасность Windows.

Начиная с Windows 11 22H2, Безопасность Windows отображает предупреждение, если целостность памяти отключена. Индикатор предупреждения также отображается на значке Безопасность Windows на панели задач Windows и в Центре уведомлений Windows. Пользователь может отклонить предупреждение в Безопасность Windows.

Включение целостности памяти с помощью Intune

Используйте параметрПринудительной целостности кодана основе технологии> виртуализации с помощью каталога параметров, чтобы включить целостность памяти. Вы также можете использовать узел HypervisorEnforcedCodeIntegrity в поставщике CSP VirtualizationBasedTechnology.

Включение целостности памяти с помощью групповая политика

  1. Используйте групповая политика Редактор (gpedit.msc), чтобы изменить существующий объект групповой политики или создать новый.
  2. Перейдите в раздел Конфигурация> компьютераАдминистративные шаблоны>System>Device Guard.
  3. Дважды щелкните Включить безопасность на основе виртуализации.
  4. Выберите Включено и в разделе Защита целостности кода на основе виртуализации выберите Включено без блокировки UEFI. Выберите Включено с блокировкой UEFI , только если вы хотите запретить удаленное отключение целостности памяти или обновление политики. После включения блокировки UEFI необходимо иметь доступ к меню UEFI BIOS, чтобы отключить безопасную загрузку, если вы хотите отключить целостность памяти. Включите целостность памяти с помощью групповая политика.
  5. Нажмите кнопку ОК , чтобы закрыть редактор.

Чтобы применить новую политику на присоединенном к домену компьютере, перезагрузите компьютер или запустите gpupdate /force его в командной строке с повышенными привилегиями.

Использование разделов реестра для обеспечения целостности памяти

Задайте следующие разделы реестра, чтобы включить целостность памяти. Эти ключи предоставляют тот же набор параметров конфигурации, которые предоставляются групповая политика.

Важно.

  • Для следующих команд можно выбрать параметры для безопасной загрузки и безопасной загрузки с DMA. В большинстве случаев рекомендуем выбирать параметр Безопасная загрузка. Этот параметр обеспечивает безопасную загрузку с такой же защитой, как и оборудование данного компьютера. Компьютер с модулями управления памятью ввода-вывода (IOMMU) обеспечит безопасную загрузку с защитой DMA. На компьютере без IOMMU будет включена обычная безопасная загрузка.

  • Если выбрать безопасную загрузку с помощью DMA, целостность памяти и другие функции VBS будут включаться только для компьютеров, поддерживающих DMA. То есть только для компьютеров с IMMU. Любой компьютер без ioMMU не будет иметь защиту от VBS или целостности памяти.

  • Все драйверы в системе должны поддерживать функцию защиты целостности кода на основе виртуализации. В противном случае может произойти сбой в системе. Рекомендуем испытать эти функции на группе тестовых компьютеров, прежде чем включать их на компьютерах пользователей.

Рекомендуемые параметры (для включения целостности памяти без блокировки 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

Если вы хотите настроить предыдущие рекомендуемые параметры, используйте следующие разделы реестра.

Включение только VBS (без целостности памяти)

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

Включение VBS и использование только безопасной загрузки (значение 1)

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

Включение VBS с безопасной загрузкой и DMA (значение 3)

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

Включение VBS без блокировки UEFI (значение 0)

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

Включение VBS с блокировкой UEFI (значение 1)

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

Включение целостности памяти

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

Включение целостности памяти без блокировки UEFI (значение 0)

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

Включение целостности памяти с помощью блокировки UEFI (значение 1)

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

Чтобы очистить пользовательский интерфейс целостности памяти и отобразить сообщение "Этот параметр управляется администратором"

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

Чтобы обеспечить нормальное поведение пользовательского интерфейса целостности памяти (не выделено серым цветом)

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

Включение целостности памяти с помощью управления приложениями Защитник Windows (WDAC)

Вы можете использовать политику WDAC для включения целостности памяти, используя любой из следующих методов:

  1. С помощью мастера WDAC создайте или измените политику WDAC и выберите параметр Целостность кода, защищенная гипервизором , на странице Правила политики мастера.
  2. Используйте командлет PowerShell Set-HVCIOptions .
  3. Измените XML-код политики WDAC и измените значение, заданное <HVCIOptions> для элемента.

Примечание.

Если политика WDAC настроена для включения целостности памяти, она будет включена, даже если политика находится в режиме аудита.

Проверка включенных функций VBS и целостности памяти

Использование класса WMI Win32_DeviceGuard

Windows 10, Windows 11 и Windows Server 2016 и выше имеют класс WMI для свойств и функций, связанных с VBS: Win32_DeviceGuard. Этот класс можно запросить из сеанса Windows PowerShell с повышенными привилегиями с помощью следующей команды:

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

Примечание.

Свойство элемента управления выполнением на основе режима будет указано как доступное только начиная с Windows 10 версии 1803 и Windows 11 версии 21H2. Это значение указывается для возможностей Intel Mode-Based Execution Control и AMD в гостевом режиме Execute Trap .

Выходные данные этой команды содержат сведения о доступных аппаратных функциях безопасности и функциях, которые в настоящее время включены.

AvailableSecurityProperties

Это поле помогает перечислить и сообщить о состоянии соответствующих свойств безопасности для VBS и целостности памяти.

Значение Описание
0 Означает, что на устройстве отсутствуют соответствующие свойства.
1 Означает, что предусмотрена поддержка низкоуровневой оболочки.
2 Означает, что доступна безопасная загрузка.
3 Означает, что доступна защита DMA.
4 Означает, что доступна безопасная перезапись памяти.
5 Означает, что доступна защита NX.
6 Означает, что доступны меры защиты SMM.
7 При наличии mbec/GMET доступен.
8 При наличии доступна виртуализация APIC.
InstanceIdentifier

Строка, которая является уникальной для определенного устройства и задается WMI.

RequiredSecurityProperties

В этом поле описываются необходимые свойства безопасности для включения VBS.

Значение Описание
0 Ничего не требуется.
1 Означает, что необходима поддержка низкоуровневой оболочки.
2 Означает, что требуется безопасная загрузка.
3 Означает, что требуется защита DMA.
4 Означает, что требуется безопасная перезапись памяти.
5 Означает, что требуются средства защиты NX.
6 Означает, что требуются меры защиты SMM.
7 При наличии требуется MBEC/GMET.
SecurityServicesConfigured

Это поле указывает, настроен ли Credential Guard или целостность памяти.

Значение Описание
0 Службы не настроены.
1 Означает, что настроен Credential Guard.
2 При наличии настроена целостность памяти.
3 Если это так, настроен System Guard безопасный запуск.
4 Если это так, настроено измерение встроенного ПО СММ.
SecurityServicesRunning

Это поле указывает, выполняется ли Credential Guard или целостность памяти.

Значение Описание
0 Никакие службы не выполняются.
1 Означает, что запущен Credential Guard.
2 При наличии выполняется целостность памяти.
3 Если это так, System Guard выполняется безопасный запуск.
4 При наличии выполняется измерение встроенного ПО СММ.
Version

В этом поле указана версия данного класса WMI. Единственным допустимым значением на данный момент является 1.0.

VirtualizationBasedSecurityStatus

В этом поле содержатся сведении о включении и выполнении VBS.

Значение Описание
0 VBS не включен.
1 Функция VBS включена, но не работает.
2 Функция VBS включена и работает.
PSComputerName

В этом поле указано имя компьютера. Все допустимые значения имени компьютера.

Использование msinfo32.exe

Другим способом определения доступных и включенных функций VBS является запуск msinfo32.exe из сеанса PowerShell с повышенными привилегиями. При запуске этой программы функции VBS отображаются в нижней части раздела Сводка по системе .

Функции безопасности на основе виртуализации в системной сводке сведений о системе.

Поиск и устранение неисправностей

  • Если драйвер устройства не загружается или аварийно завершает работу во время выполнения, возможно, вы сможете обновить драйвер с помощью диспетчер устройств.
  • Если во время загрузки возникает критическая ошибка или система нестабильна после включения целостности памяти, вы можете выполнить восстановление с помощью Среды восстановления Windows (Windows RE).
    1. Сначала отключите все политики, которые используются для включения целостности VBS и памяти, например групповая политика.

    2. Затем загрузите Windows RE на затронутом компьютере, см. раздел Технический справочник по Windows RE.

    3. После входа в Windows RE установите для раздела реестра целостности памяти значение off:

      reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v "Enabled" /t REG_DWORD /d 0 /f
      
    4. Наконец, перезапустите устройство.

Примечание.

Если вы включили целостность памяти с блокировкой UEFI, необходимо отключить безопасную загрузку, чтобы выполнить Windows RE шаги восстановления.

Развертывание целостности памяти на виртуальных машинах

Целостность памяти может защитить виртуальную машину Hyper-V так же, как и физическую машину. Действия по включению целостности памяти одинаковы в виртуальной машине.

Целостность памяти защищает от вредоносных программ, запущенных на гостевой виртуальной машине. Это не обеспечивает дополнительную защиту от администратора узла. На узле можно отключить целостность памяти для виртуальной машины:

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

Требования для выполнения целостности памяти на виртуальных машинах Hyper-V

  • На узле Hyper-V должна быть установлена по крайней мере версия Windows Server 2016 или Windows 10 версии 1607.
  • Виртуальная машина Hyper-V должна быть по крайней мере 2 поколения и должна работать под управлением Windows Server 2016 или Windows 10.
  • Целостность памяти и вложенная виртуализация могут быть включены одновременно. Чтобы включить роль Hyper-V на виртуальной машине, необходимо сначала установить роль Hyper-V во вложенной среде виртуализации Windows.
  • виртуальный адаптер Fibre Channel адаптеры несовместимы с целостностью памяти. Перед подключением виртуального адаптера Fibre Channel к виртуальной машине необходимо сначала отказаться от безопасности на основе виртуализации с помощью Set-VMSecurity.
  • Параметр AllowFullSCSICommandSet для сквозных дисков несовместим с целостностью памяти. Перед настройкой сквозного диска с помощью AllowFullSCSICommandSet необходимо сначала отказаться от безопасности на основе виртуализации с помощью Set-VMSecurity.