
Hypervisor Windows para Intel x64: hypervisor anfitrião defensivo para Windows projetado para mitigar ataques a nível de kernel, incluindo BYOVD, compatível com VMware e Hyper-V.
O NovaHypervisor é um hipervisor defensivo baseado em host Intel x64. O objetivo deste projeto é proteger contra ataques no nível do kernel (seja por meio de Bring Your Own Vulnerable Driver (BYOVD) ou outros meios) resguardando produtos de defesa (Antivírus / Proteção de Endpoints) e estruturas de memória do kernel, além de impedir o acesso não autorizado à memória do kernel.
O NovaHypervisor é escrito em C++ e Assembly, e foi projetado para ser compatível com Windows 10 e versões posteriores. Consulte a seção configuração para obter mais informações sobre como utilizá-lo.
[!IMPORTANT]
O hipervisor foi testado no Windows 11 25H2 e em várias versões do Windows 10. Se encontrar algum problema, abra uma issue após verificar se não há uma issue já aberta.
O NovaHypervisor pode ser executado nestes hipervisores:
✅ - Suportado e testado
⌛ - Em andamento
❌ - Não suportado e sem previsão de suporte
| Hipervisor | Suportado |
|---|
Para utilizar o NovaHypervisor, você precisará criar um serviço de kernel e iniciá-lo:
sc create NovaHypervisor type= kernel binPath= "C:\Path\To\NovaHypervisor.sys"
sc start NovaHypervisor
Em seguida, você pode adicionar e remover os endereços que deseja proteger usando o aplicativo NovaClient:
REM Adiciona um endereço para proteger
NovaClient.exe protect 0x12345678 <r|w|x> <execution hook>
REM Remove um endereço da proteção
NovaClient.exe unprotect 0x12345678
protect: Protege um endereço de memória contra acesso. Você pode especificar o tipo de proteção:
r: Proteção de leituraw: Proteção de gravaçãox: Proteção de execução
A proteção que você fornece é a proteção que o endereço terá. Por exemplo, se você deseja remover privilégios de execução, use "rw".unprotect: Remove a proteção de um endereço de memória.
[!NOTE] O hook de execução via inline hook + hooks EPT não é suportado e não será suportado neste projeto para evitar abusos.
Para compilar o projeto, você precisa ter:
Para executar o hipervisor, você precisará ter o Windows 10 ou versão posterior instalado em sua máquina. Você também precisará ter:
O NovaHypervisor faz registro no segundo log da porta serial (COM2, porta de E/S 0x2F8) usando um pequeno registrador COM que pode ser executado no HIGH_LEVEL IRQL e nos caminhos raiz do VMX. Ele emite registros de depuração, informação e erro com um prefixo fixo NovaHypervisor.
bcdedit /dbgsettings serial debugport:2 baudrate:115200
Capture a saída do pipe serial do lado do host ou do endpoint COM2 configurado de sua VM a 115200 8N1. Por exemplo, no PuTTY você pode anexar ao transporte serial configurado para a VM e observar as linhas de registro conforme o driver é executado. Você também pode usar o script connect-vm.ps1 para conectar-se à porta COM2 da VM e exibir os registros no console.
Para testar e depurar em seu ambiente de teste, execute estes comandos no cmd elevado e reinicie a máquina em seguida:
bcdedit /set testsigning on
bcdedit /debug on
bcdedit /dbgsettings net hostip:<HOSTIP> port:55000 key:1.2.3.4
Onde <HOSTIP> é o endereço IP da sua máquina host.
| VMware | ✅ |
| Hyper-V | ✅ |
| Hyper-V com VBS | ⌛ |
| VirtualBox | ❌ |
| QEMU | ❌ |
| KVM | ❌ |