
Hipervisor de Windows para Intel x64: hipervisor host defensivo para Windows diseñado para mitigar ataques a nivel de kernel, incluido BYOVD, compatible con VMware y Hyper-V.
NovaHypervisor es un hipervisor de host x64 Intel defensivo. El objetivo de este proyecto es proteger contra ataques basados en el kernel (ya sea mediante Bring Your Own Vulnerable Driver (BYOVD) u otros medios) salvaguardando los productos de defensa (AntiVirus / Protección de Endpoint) y las estructuras de memoria del kernel y evitando el acceso no autorizado a la memoria del kernel.
NovaHypervisor está escrito en C++ y Assembly, y está diseñado para ser compatible con Windows 10 y versiones posteriores. Consulte la sección configuración para obtener más información sobre cómo usarlo.
[!IMPORTANT]
El hipervisor fue probado en Windows 11 25H2 y múltiples versiones de Windows 10. Si encuentra un problema, abra un issue después de verificar que no exista ya un issue abierto.
NovaHypervisor puede ejecutarse bajo estos hipervisores:
✅ - Compatible y probado
⌛ - Trabajo en progreso
❌ - No compatible y no se planea dar soporte
| Hipervisor | Soportado |
|---|---|
| VMware | ✅ |
| Hyper-V | ✅ |
| Hyper-V con VBS | ⌛ |
| VirtualBox | ❌ |
| QEMU | ❌ |
| KVM | ❌ |
Para usar NovaHypervisor, necesitará crear un servicio de kernel e iniciarlo:
sc create NovaHypervisor type= kernel binPath= "C:\Path\To\NovaHypervisor.sys"
sc start NovaHypervisor
Luego, puede agregar y eliminar las direcciones que desea proteger usando la aplicación 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: Protege una dirección de memoria contra acceso, puede especificar el tipo de protección:
r: Protección de lecturaw: Protección de escriturax: Protección de ejecución
La protección que usted da es la protección que la dirección tendrá. Por ejemplo, si desea eliminar los privilegios de ejecución, haga "rw".unprotect: Elimina la protección de una dirección de memoria.
[!NOTE] Los hooks de ejecución mediante inline hook + EPT hooks no son compatibles y no lo serán para este proyecto para evitar abusos.
La configuración para compilar el proyecto requiere que tenga:
Para ejecutar el hipervisor, necesitará tener una versión de Windows 10 o posterior instalada en su máquina. También necesitará tener:
NovaHypervisor registra en el segundo puerto serie (COM2, puerto de E/S 0x2F8) usando un pequeño registrador COM que puede ejecutarse en IRQL HIGH_LEVEL y en rutas raíz de VMX. Emite registros de depuración, información y error con un prefijo fijo NovaHypervisor.
bcdedit /dbgsettings serial debugport:2 baudrate:115200
Capture la salida desde la tubería serie del lado del host o el extremo COM2 configurado de su VM a 115200 8N1. Por ejemplo, en PuTTY puede conectarse al transporte serie configurado para la VM y observar las líneas de registro mientras el controlador se ejecuta. También puede usar el script connect-vm.ps1 para conectarse al puerto COM2 de la VM y mostrar los registros en la consola.
Para probarlo y depurarlo en su entorno de prueba, ejecute esos comandos con cmd elevado y luego reinicie su máquina:
bcdedit /set testsigning on
bcdedit /debug on
bcdedit /dbgsettings net hostip:<HOSTIP> port:55000 key:1.2.3.4
Donde <HOSTIP> es la dirección IP de su máquina host.