코드 무결성의 가상화 기반 보호 사용 설정
Warning
일부 애플리케이션 및 하드웨어 디바이스 드라이버는 메모리 무결성과 호환되지 않을 수 있습니다. 이러한 비호환성으로 인해 디바이스 또는 소프트웨어가 오작동할 수 있으며 드물게 부팅 실패(블루 스크린)가 발생할 수 있습니다. 이러한 문제는 메모리 무결성이 켜진 후 또는 사용 프로세스 자체 중에 발생할 수 있습니다. 호환성 문제가 발생하는 경우 수정 단계 문제 해결을 참조하세요.
메모리 무결성 은 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일 때 메모리 무결성이 더 잘 작동합니다.
메모리 무결성 기능
- 커널 모드 드라이버에 대한 CFG(Control Flow Guard) 비트맵 수정을 보호합니다.
- 다른 신뢰할 수 있는 커널 프로세스에 유효한 인증서가 있는지 확인하는 커널 모드 코드 무결성 프로세스를 보호합니다.
메모리 무결성을 켜는 방법
엔터프라이즈 전체에서 하드웨어를 지원하는 Windows 디바이스에서 메모리 무결성을 사용하도록 설정하려면 다음 옵션을 사용합니다.
Windows 보안 사용하여 메모리 무결성 사용
메모리 무결성은 Windows 보안 설정에서 켜고 Windows 보안>디바이스 보안>Core 격리 세부 정보>메모리 무결성에서 찾을 수 있습니다. 자세한 내용은 Windows 보안 디바이스 보호를 참조하세요.
Windows 11 22H2부터 Windows 보안 메모리 무결성이 꺼져 있으면 경고를 표시합니다. 경고 표시기도 Windows 작업 표시줄의 Windows 보안 아이콘과 Windows 알림 센터에 표시됩니다. 사용자는 Windows 보안 내에서 경고를 해제할 수 있습니다.
사용 가능한 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의 게스트 모드 트랩 실행 기능에 대해 보고됩니다.
이 명령의 출력은 사용 가능한 하드웨어 기반 보안 기능 및 현재 사용하도록 설정된 기능에 대한 세부 정보를 제공합니다.
InstanceIdentifier: 특정 디바이스에 고유하고 WMI에서 설정한 문자열입니다.
버전: 이 필드에는 이 WMI 클래스의 버전이 나열됩니다. 현재 유효한 값은 1.0뿐입니다.
AvailableSecurityProperties: 이 필드는 VBS 및 메모리 무결성에 대한 관련 보안 속성에 대한 상태를 열거하고 보고하는 데 도움이 됩니다.
값 설명 0 있는 경우 관련 속성이 장치에 없습니다. 1 있는 경우 하이퍼바이저 지원을 사용할 수 있습니다. 2 있는 경우 보안 부팅을 사용할 수 있습니다. 3 있는 경우 DMA 보호를 사용할 수 있습니다. 4 있는 경우 보안 메모리 덮어쓰기를 사용할 수 있습니다. 5 있는 경우 NX 보호를 사용할 수 있습니다. 6 있는 경우 SMM 완화를 사용할 수 있습니다. 7 있는 경우 MBEC/GMET를 사용할 수 있습니다. 8 있는 경우 APIC 가상화를 사용할 수 있습니다. CodeIntegrityPolicyEnforcementStatus: 이 필드는 코드 무결성 정책 적용 상태 나타냅니다.
값 설명 0 끔 1 감사. 2 적용. RequiredSecurityProperties: 이 필드는 VBS를 사용하도록 설정하는 데 필요한 보안 속성을 설명합니다.
값 설명 0 아무것도 필요하지 않습니다. 1 있는 경우 하이퍼바이저 지원이 필요합니다. 2 있는 경우 보안 부팅이 필요합니다. 3 있는 경우 DMA 보호가 필요합니다. 4 있는 경우 보안 메모리 덮어쓰기가 필요합니다. 5 있는 경우 NX 보호가 필요합니다. 6 있는 경우 SMM 완화가 필요합니다. 7 있는 경우 MBEC/GMET가 필요합니다. SecurityServices 구성됨: 이 필드는 Credential Guard 또는 메모리 무결성이 구성되었는지 여부를 나타냅니다.
값 설명 0 서비스가 구성되지 않았습니다. 1 있는 경우 Credential Guard가 구성됩니다. 2 있는 경우 메모리 무결성이 구성됩니다. 3 있는 경우 System Guard 보안 시작이 구성됩니다. 4 있는 경우 SMM 펌웨어 측정이 구성됩니다. 5 있는 경우 커널 모드 하드웨어 적용 스택 보호가 구성됩니다. 6 있는 경우 커널 모드 하드웨어 적용 스택 보호가 감사 모드로 구성됩니다. 7 있는 경우 Hypervisor-Enforced 페이징 번역이 구성됩니다. SecurityServicesRunning: 이 필드는 Credential Guard 또는 메모리 무결성이 실행 중인지 여부를 나타냅니다.
값 설명 0 실행 중인 서비스가 없습니다. 1 있는 경우 Credential Guard가 실행 중입니다. 2 있는 경우 메모리 무결성이 실행되고 있습니다. 3 있는 경우 보안 System Guard 실행 중입니다. 4 있는 경우 SMM 펌웨어 측정이 실행 중입니다. 5 있는 경우 커널 모드 하드웨어 적용 스택 보호가 실행 중입니다. 6 있는 경우 커널 모드 하드웨어 적용 스택 보호가 감사 모드에서 실행됩니다. 7 있는 경우 Hypervisor-Enforced 페이징 번역이 실행 중입니다. SmmIsolationLevel: 이 필드는 SMM 격리 수준을 나타냅니다.
UsermodeCodeIntegrityPolicyEnforcementStatus: 이 필드는 사용자 모드 코드 무결성 정책 적용 상태 나타냅니다.
값 설명 0 꺼짐 1 감사. 2 적용. VirtualizationBasedSecurityStatus: 이 필드는 VBS가 활성화되어 실행 중인지 여부를 나타냅니다.
값 설명 0 VBS를 사용할 수 없습니다. 1 VBS를 사용할 수 있지만 실행되고 있지 않습니다. 2 VBS를 사용할 수 있으며 실행 중입니다. VirtualMachineIsolation: 이 필드는 가상 머신 격리를 사용할 수 있는지 여부를 나타냅니다.
VirtualMachineIsolationProperties: 이 필드는 사용 가능한 가상 머신 격리 속성 집합을 나타냅니다.
값 설명 1 AMD SEV-SNP 2 가상화 기반 보안 3 Intel TDX
msinfo32.exe 사용
사용 가능한 VBS 기능을 결정하는 또 다른 방법은 관리자 권한 PowerShell 세션에서 msinfo32.exe 실행하는 것입니다. 이 프로그램을 실행하면 VBS 기능이 시스템 요약 섹션의 맨 아래에 표시됩니다.
문제 해결
- 디바이스 드라이버가 런타임에 로드되지 않거나 충돌하는 경우 장치 관리자 사용하여 드라이버를 업데이트할 수 있습니다.
- 부팅하는 동안 심각한 오류가 발생하거나 메모리 무결성을 켠 후 시스템이 불안정하면 Windows 복구 환경(Windows RE)을 사용하여 복구할 수 있습니다.
먼저 VBS 및 메모리 무결성을 사용하도록 설정하는 데 사용되는 모든 정책(예: 그룹 정책)을 사용하지 않도록 설정합니다.
그런 다음 영향을 받는 컴퓨터에서 Windows RE 부팅하려면 Windows RE 기술 참조를 참조하세요.
Windows RE 로그인한 후 메모리 무결성 레지스트리 키를 해제로 설정합니다.
reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v "Enabled" /t REG_DWORD /d 0 /f
마지막으로 디바이스를 다시 시작합니다.
참고
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
가상화 기반 보안을 옵트아웃해야 합니다.