코드 무결성의 가상화 기반 보호 사용 설정

메모리 무결성 은 Windows에서 사용할 수 있는 VBS(가상화 기반 보안) 기능입니다. 메모리 무결성 및 VBS는 Windows의 위협 모델을 개선하고 Windows 커널을 악용하려는 맬웨어에 대해 더 강력한 보호를 제공합니다. VBS는 Windows 하이퍼바이저를 사용하여 커널이 손상될 수 있다고 가정하는 OS의 신뢰 루트가 되는 격리된 가상 환경을 만듭니다. 메모리 무결성은 VBS의 격리된 가상 환경 내에서 커널 모드 코드 무결성을 실행하여 Windows를 보호하고 강화하는 중요한 구성 요소입니다. 또한 메모리 무결성은 시스템을 손상시키는 데 사용할 수 있는 커널 메모리 할당을 제한합니다.

참고

  • 메모리 무결성을 HVCI(하이퍼바이저로 보호된 코드 무결성) 또는 하이퍼바이저 강제 코드 무결성이라고도 하며 원래 Device Guard의 일부로 릴리스되었습니다. Device Guard는 그룹 정책 또는 Windows 레지스트리에서 메모리 무결성 및 VBS 설정을 찾는 것 외에는 더 이상 사용되지 않습니다.
  • 메모리 무결성은 모드 기반 실행 제어를 사용하는 Intel Kabylake 및 더 높은 프로세서와 게스트 모드 실행 트랩 기능을 사용하는 AMD Zen 2 이상 프로세서에서 더 잘 작동합니다. 이전 프로세서는 제한된 사용자 모드라는 이러한 기능의 에뮬레이션에 의존하며 성능에 더 큰 영향을 미칩니다. 중첩된 가상화를 사용하도록 설정하면 VM이 버전 >= 9.3일 때 메모리 무결성이 더 잘 작동합니다.

Warning

일부 애플리케이션 및 하드웨어 디바이스 드라이버는 메모리 무결성과 호환되지 않을 수 있습니다. 이러한 비호환성으로 인해 디바이스 또는 소프트웨어가 오작동할 수 있으며 드물게 부팅 실패(블루 스크린)가 발생할 수 있습니다. 이러한 문제는 메모리 무결성이 켜진 후 또는 사용 프로세스 자체 중에 발생할 수 있습니다. 호환성 문제가 발생하는 경우 수정 단계 문제 해결을 참조하세요.

메모리 무결성 기능

  • 커널 모드 드라이버에 대한 CFG(Control Flow Guard) 비트맵 수정을 보호합니다.
  • 다른 신뢰할 수 있는 커널 프로세스에 유효한 인증서가 있는지 확인하는 커널 모드 코드 무결성 프로세스를 보호합니다.

메모리 무결성을 켜는 방법

엔터프라이즈 전체에서 하드웨어를 지원하는 Windows 디바이스에서 메모리 무결성을 사용하도록 설정하려면 다음 옵션을 사용합니다.

Windows 보안

메모리 무결성Windows 보안 설정에서 켜고 Windows 보안>디바이스 보안>Core 격리 세부 정보>메모리 무결성에서 찾을 수 있습니다. 자세한 내용은 Windows 보안 디바이스 보호를 참조하세요.

Windows 11 22H2부터 Windows 보안 메모리 무결성이 꺼져 있으면 경고를 표시합니다. 경고 표시기도 Windows 작업 표시줄의 Windows 보안 아이콘과 Windows 알림 센터에 표시됩니다. 사용자는 Windows 보안 내에서 경고를 해제할 수 있습니다.

Intune 사용하여 메모리 무결성 사용

설정 카탈로그를 사용하여 가상화 기반 기술>하이퍼바이저 강제 코드 무결성 설정을 사용하여 메모리 무결성을 사용하도록 설정합니다. VirtualizationBasedTechnology CSP에서 HypervisorEnforcedCodeIntegrity 노드를 사용할 수도 있습니다.

그룹 정책 사용하여 메모리 무결성 사용

  1. 그룹 정책 편집기(gpedit.msc)를 사용하여 기존 GPO를 편집하거나 새 GPO를 만듭니다.
  2. 컴퓨터 구성>관리 템플릿>시스템>Device Guard로 이동합니다.
  3. 가상화 기반 보안 켜기를 두 번 클릭합니다.
  4. 사용을 선택하고 코드 무결성의 가상화 기반 보호에서 UEFI 잠금 없이 사용을 선택합니다. 메모리 무결성이 원격으로 또는 정책 업데이트로 사용하지 않도록 설정되지 않도록 하려면 UEFI 잠금으로 사용을 선택합니다. UEFI 잠금을 사용하도록 설정하면 메모리 무결성을 해제하려는 경우 보안 부팅을 해제하려면 UEFI BIOS 메뉴에 액세스할 수 있어야 합니다. 그룹 정책 사용하여 메모리 무결성을 사용하도록 설정합니다.
  5. 확인을 선택하여 편집기를 닫습니다.

도메인에 가입된 컴퓨터에 새 정책을 적용하려면 관리자 권한 명령 프롬프트에서 다시 시작하거나 실행 gpupdate /force 합니다.

레지스트리 키를 사용하여 메모리 무결성 사용

메모리 무결성을 사용하도록 설정하려면 다음 레지스트리 키를 설정합니다. 이러한 키는 그룹 정책 제공하는 것과 똑같은 구성 옵션 집합을 제공합니다.

중요

  • 뒤에 나오는 명령 중에 보안 부팅DMA를 사용하여 보안 부팅에 대한 설정을 선택할 수 있습니다. 대부분의 경우 보안 부팅을 선택하는 것이 좋습니다. 이 옵션은 지정된 컴퓨터의 하드웨어에서 지원하는 만큼의 보호 기능을 제공하는 보안 부팅을 제공합니다. IOMMU(입출력 메모리 관리 장치)가 포함된 컴퓨터에는 DMA를 사용하는 보안 부팅 기능이 있습니다. IOMMU가 없는 컴퓨터에서는 단순히 보안 부팅을 사용하도록 설정합니다.

  • DMA를 사용하여 보안 부팅을 선택하는 경우 메모리 무결성 및 기타 VBS 기능은 DMA를 지원하는 컴퓨터에 대해서만 설정됩니다. 즉, IOMKU가 있는 컴퓨터에만 해당합니다. IOMMUs가 없는 컴퓨터에는 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

보안 부팅 및 DMA를 사용하여 VBS를 사용하도록 설정하려면(값 3)

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

UEFI 잠금 없이(값 0) VBS를 사용하도록 설정하려면

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

UEFI 잠금을 사용하여 VBS를 사용하도록 설정하려면(값 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

메모리 무결성 UI를 회색으로 표시하고 "이 설정은 관리자가 관리합니다."라는 메시지를 표시하려면

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

메모리 무결성 UI가 정상적으로 작동하도록 하려면(회색으로 표시되지 않음)

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

Windows Defender WDAC(애플리케이션 제어)를 사용하여 메모리 무결성 사용

WDAC 정책을 사용하여 다음 기술을 사용하여 메모리 무결성을 설정할 수 있습니다.

  1. WDAC 마법사를 사용하여 WDAC 정책을 만들거나 편집하고 마법사의 정책 규칙 페이지에서 하이퍼바이저로 보호되는 코드 무결성 옵션을 선택합니다.
  2. Set-HVCIOptions PowerShell cmdlet을 사용합니다.
  3. WDAC 정책 XML을 편집하고 요소에 대한 값 집합을 수정합니다 <HVCIOptions> .

참고

WDAC 정책이 메모리 무결성을 켜도록 설정된 경우 정책이 감사 모드인 경우에도 켜집니다.

사용 가능한 VBS 및 메모리 무결성 기능의 유효성 검사

Win32_DeviceGuard WMI 클래스 사용

Windows 10, Windows 11 및 Windows Server 2016 이상에는 VBS 관련 속성 및 기능에 대한 WMI 클래스(Win32_DeviceGuard)가 있습니다. 이 클래스는 다음 명령을 사용하여 관리자 권한 Windows PowerShell 세션에서 쿼리할 수 있습니다.

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

참고

모드 기반 실행 제어 속성은 Windows 10 버전 1803 및 Windows 11 버전 21H2부터 사용 가능한 것으로만 나열됩니다. 이 값은 Intel의 모드 기반 실행 제어 및 AMD의 게스트 모드 트랩 실행 기능에 대해 보고됩니다.

이 명령의 출력은 사용 가능한 하드웨어 기반 보안 기능 및 현재 사용하도록 설정된 기능에 대한 세부 정보를 제공합니다.

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 있는 경우 SMM 펌웨어 측정이 구성됩니다.
SecurityServicesRunning

이 필드는 Credential Guard 또는 메모리 무결성이 실행 중인지 여부를 나타냅니다.

설명
0 실행 중인 서비스가 없습니다.
1 있는 경우 Credential Guard가 실행 중입니다.
2 있는 경우 메모리 무결성이 실행되고 있습니다.
3 있는 경우 보안 System Guard 실행 중입니다.
4 있는 경우 SMM 펌웨어 측정이 실행 중입니다.
버전

이 필드에는 이 WMI 클래스의 버전이 나열됩니다. 현재 유효한 값은 1.0뿐입니다.

VirtualizationBasedSecurityStatus

이 필드는 VBS를 사용할 수 있고 실행 중인지 여부를 나타냅니다.

설명
0 VBS를 사용할 수 없습니다.
1 VBS를 사용할 수 있지만 실행되고 있지 않습니다.
2 VBS를 사용할 수 있으며 실행 중입니다.
PSComputerName

이 필드에는 컴퓨터 이름이 나열됩니다. 컴퓨터 이름에 유효한 모든 값입니다.

msinfo32.exe 사용

사용 가능한 VBS 기능을 결정하는 또 다른 방법은 관리자 권한 PowerShell 세션에서 msinfo32.exe 실행하는 것입니다. 이 프로그램을 실행하면 VBS 기능이 시스템 요약 섹션의 맨 아래에 표시됩니다.

시스템 정보 시스템 요약의 가상화 기반 보안 기능입니다.

문제 해결

  • 디바이스 드라이버가 런타임에 로드되지 않거나 충돌하는 경우 장치 관리자 사용하여 드라이버를 업데이트할 수 있습니다.
  • 부팅하는 동안 심각한 오류가 발생하거나 메모리 무결성을 켠 후 시스템이 불안정하면 Windows 복구 환경(Windows RE)을 사용하여 복구할 수 있습니다.
    1. 먼저 VBS 및 메모리 무결성을 사용하도록 설정하는 데 사용되는 모든 정책(예: 그룹 정책)을 사용하지 않도록 설정합니다.

    2. 그런 다음 영향을 받는 컴퓨터에서 Windows RE 부팅하려면 Windows RE 기술 참조를 참조하세요.

    3. Windows RE 로그인한 후 메모리 무결성 레지스트리 키를 해제로 설정합니다.

      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 역할을 사용하도록 설정하려면 먼저 Windows 중첩 가상화 환경에 Hyper-V 역할을 설치해야 합니다.
  • 가상 파이버 채널 어댑터는 메모리 무결성과 호환되지 않습니다. 가상 머신에 가상 파이버 채널 어댑터를 연결하기 전에 먼저 를 사용하여 Set-VMSecurity가상화 기반 보안을 옵트아웃해야 합니다.
  • 통과 디스크에 대한 AllowFullSCSICommandSet 옵션은 메모리 무결성과 호환되지 않습니다. AllowFullSCSICommandSet을 사용하여 통과 디스크를 구성하기 전에 먼저 를 사용하여 Set-VMSecurity가상화 기반 보안을 옵트아웃해야 합니다.