
Windows hypervisor for Intel x64: Windows용 방어 호스트 하이퍼바이저로, BYOVD를 포함한 커널 수준 공격을 완화하도록 설계되었으며 VMware 및 Hyper-V와 호환됩니다.
NovaHypervisor는 방어적인 x64 Intel 호스트 기반 하이퍼바이저입니다. 이 프로젝트의 목표는 방어 제품(AntiVirus/Endpoint Protection)과 커널 메모리 구조를 보호하고 커널 메모리에 대한 무단 액세스를 방지하여 커널 기반 공격(자체 취약 드라이버(BYOVD) 또는 기타 수단을 통한)으로부터 보호하는 것입니다.
NovaHypervisor는 C++와 어셈블리로 작성되었으며, Windows 10 이상에서 실행되도록 설계되었습니다. 사용 방법에 대한 자세한 내용은 설정 섹션을 참조하십시오.
[!IMPORTANT]
하이퍼바이저는 Windows 11 25H2 및 여러 Windows 10 버전에서 테스트되었습니다. 문제가 발생하면 이미 열린 이슈가 없는지 확인한 후 이슈를 열어 주십시오.
NovaHypervisor는 다음 하이퍼바이저 아래에서 실행될 수 있습니다:
✅ - 지원 및 테스트 완료
⌛ - 작업 진행 중
❌ - 지원하지 않으며 지원 예정 없음
| 하이퍼바이저 | 지원 여부 |
|---|---|
| VMware | ✅ |
| Hyper-V | ✅ |
| Hyper-V with VBS | ⌛ |
| VirtualBox | ❌ |
| QEMU | ❌ |
| KVM | ❌ |
NovaHypervisor를 사용하려면 커널 서비스를 생성하고 시작해야 합니다:
sc create NovaHypervisor type= kernel binPath= "C:\Path\To\NovaHypervisor.sys"
sc start NovaHypervisor
그런 다음, NovaClient 애플리케이션을 사용하여 보호하려는 주소를 추가 및 제거할 수 있습니다:
REM Add an address to protect
NovaClient.exe protect 0x12345678 <r|w|x> <execution hook>
REM Remove an address from protection
NovaClient.exe unprotect 0x12345678
protect: 메모리 주소에 대한 접근을 보호합니다. 보호 유형을 지정할 수 있습니다:
r: 읽기 보호w: 쓰기 보호x: 실행 보호
지정한 보호는 주소가 갖게 될 보호입니다. 예를 들어, 실행 권한을 제거하려면 "rw"를 사용하십시오.unprotect: 메모리 주소에서 보호를 제거합니다.
[!NOTE] 인라인 후크 + EPT 후크를 통한 실행 후크는 지원되지 않으며, 남용을 방지하기 위해 이 프로젝트에서 지원할 예정이 없습니다.
프로젝트를 컴파일하려면 다음이 필요합니다:
하이퍼바이저를 실행하려면 컴퓨터에 Windows 10 이상이 설치되어 있어야 합니다. 또한 다음이 필요합니다:
NovaHypervisor는 HIGH_LEVEL IRQL 및 VMX 루트 경로에서 실행될 수 있는 작은 COM 로거를 사용하여 두 번째 직렬 포트(COM2, I/O 포트 0x2F8)에 로그를 기록합니다. 고정된 NovaHypervisor 접두사를 사용하여 디버그, 정보 및 오류 레코드를 출력합니다.
bcdedit /dbgsettings serial debugport:2 baudrate:115200
호스트 측 직렬 파이프 또는 VM에 구성된 COM2 엔드포인트에서 115200 8N1로 출력을 캡처합니다. 예를 들어, PuTTY에서 VM에 구성된 직렬 전송에 연결하여 드라이버가 실행될 때 로그 라인을 관찰할 수 있습니다. 또한 connect-vm.ps1 스크립트를 사용하여 VM의 COM2 포트에 연결하고 콘솔에 로그를 표시할 수 있습니다.
테스트 환경에서 테스트 및 디버그하려면 상승된 cmd로 다음 명령을 실행한 후 컴퓨터를 다시 시작하십시오:
bcdedit /set testsigning on
bcdedit /debug on
bcdedit /dbgsettings net hostip:<HOSTIP> port:55000 key:1.2.3.4
여기서 <HOSTIP>는 호스트 컴퓨터의 IP 주소입니다.