
Hypervisor Windows per Intel x64: hypervisor host difensivo per Windows progettato per mitigare attacchi a livello di kernel, inclusi BYOVD, compatibile con VMware e Hyper-V.
NovaHypervisor è un hypervisor difensivo basato su host Intel x64. L'obiettivo di questo progetto è proteggere da attacchi a livello kernel (tramite Bring Your Own Vulnerable Driver (BYOVD) o altri mezzi) salvaguardando i prodotti di difesa (Antivirus / Protezione endpoint) e le strutture di memoria del kernel, impedendo l'accesso non autorizzato alla memoria del kernel.
NovaHypervisor è scritto in C++ e Assembly, ed è progettato per essere compatibile con Windows 10 e versioni successive. Consultare la sezione configurazione per maggiori informazioni sul suo utilizzo.
[!IMPORTANTE]
L'hypervisor è stato testato su Windows 11 25H2 e su diverse versioni di Windows 10. Se si incontra un problema, aprire una issue dopo aver verificato che non esista già una issue aperta.
NovaHypervisor può essere eseguito su questi hypervisor:
✅ - Supportato e testato
⌛ - In lavorazione
❌ - Non supportato e non previsto
| Hypervisor | Supportato |
|---|---|
| VMware | ✅ |
| Hyper-V | ✅ |
| Hyper-V con VBS | ⌛ |
| VirtualBox | ❌ |
| QEMU | ❌ |
| KVM | ❌ |
Per utilizzare NovaHypervisor, è necessario creare un servizio kernel e avviarlo:
sc create NovaHypervisor type= kernel binPath= "C:\Path\To\NovaHypervisor.sys"
sc start NovaHypervisor
Successivamente, è possibile aggiungere e rimuovere gli indirizzi da proteggere utilizzando l'applicazione NovaClient:
REM Aggiunge un indirizzo da proteggere
NovaClient.exe protect 0x12345678 <r|w|x> <hook di esecuzione>
REM Rimuove la protezione da un indirizzo
NovaClient.exe unprotect 0x12345678
protect: Protegge un indirizzo di memoria dall'accesso, è possibile specificare il tipo di protezione:
r: Protezione in letturaw: Protezione in scritturax: Protezione in esecuzione
La protezione fornita è quella che l'indirizzo avrà. Ad esempio, per rimuovere i privilegi di esecuzione, usare "rw".unprotect: Rimuove la protezione da un indirizzo di memoria.
[!NOTA] L'hook di esecuzione tramite inline hook + EPT hook non è supportato e non sarà supportato per questo progetto per prevenire abusi.
La configurazione per compilare il progetto richiede:
Per eseguire l'hypervisor, è necessario disporre di Windows 10 o versione successiva installata sulla macchina. È inoltre necessario avere:
NovaHypervisor scrive i log sulla seconda porta seriale (COM2, porta I/O 0x2F8) utilizzando un piccolo logger COM che può essere eseguito a HIGH_LEVEL IRQL e nei percorsi root VMX. Emette record di debug, informazione ed errore con un prefisso fisso NovaHypervisor.
bcdedit /dbgsettings serial debugport:2 baudrate:115200
Catturare l'output dalla pipe seriale host o dall'endpoint COM2 configurato della VM a 115200 8N1. Ad esempio, in PuTTY è possibile connettersi al trasporto seriale configurato per la VM e osservare le righe di log mentre il driver è in esecuzione. È anche possibile utilizzare lo script connect-vm.ps1 per connettersi alla porta COM2 della VM e visualizzare i log nella console.
Per testare e fare debug nel proprio ambiente di test, eseguire questi comandi con cmd elevato e poi riavviare la macchina:
bcdedit /set testsigning on
bcdedit /debug on
bcdedit /dbgsettings net hostip:<HOSTIP> port:55000 key:1.2.3.4
Dove <HOSTIP> è l'indirizzo IP della propria macchina host.