
Hyperviseur Windows pour Intel x64 : hyperviseur hôte défensif pour Windows conçu pour atténuer les attaques au niveau du noyau, y compris BYOVD, compatible avec VMware et Hyper-V.
NovaHypervisor est un hyperviseur défensif basé sur l'hôte, conçu pour l'architecture Intel x64. Ce projet a pour objectif de protéger contre les attaques au niveau du noyau (que ce soit via Bring Your Own Vulnerable Driver (BYOVD) ou d'autres moyens) en sécurisant les produits de défense (antivirus / protection des terminaux) et les structures mémoire du noyau, et en empêchant tout accès non autorisé à la mémoire du noyau.
NovaHypervisor est écrit en C++ et en assembleur, et est conçu pour être compatible avec Windows 10 et versions ultérieures. Veuillez consulter la section configuration pour plus d'informations sur son utilisation.
[!IMPORTANT]
L'hyperviseur a été testé sous Windows 11 25H2 et plusieurs versions de Windows 10. Si vous rencontrez un problème, veuillez ouvrir une issue après avoir vérifié qu'il n'y en a pas déjà une ouverte.
NovaHypervisor peut fonctionner sous ces hyperviseurs :
✅ - Supporté et testé
⌛ - En cours de développement
❌ - Non supporté et pas prévu
| Hyperviseur | Supporté |
|---|
Pour utiliser NovaHypervisor, vous devez créer un service noyau et le démarrer :
sc create NovaHypervisor type= kernel binPath= "C:\Path\To\NovaHypervisor.sys"
sc start NovaHypervisor
Ensuite, vous pouvez ajouter et supprimer les adresses que vous souhaitez protéger à l'aide de l'application NovaClient :
REM Ajouter une adresse à protéger
NovaClient.exe protect 0x12345678 <r|w|x> <execution hook>
REM Supprimer la protection d'une adresse
NovaClient.exe unprotect 0x12345678
protect : Protège une adresse mémoire contre tout accès. Vous pouvez spécifier le type de protection :
r : Protection en lecturew : Protection en écriturex : Protection en exécution
La protection que vous définissez est celle que l'adresse aura. Par exemple, si vous souhaitez supprimer les privilèges d'exécution, utilisez "rw".unprotect : Supprime la protection d'une adresse mémoire.
[!NOTE] Le crochet d'exécution via un inline hook combiné aux hooks EPT n'est pas supporté et ne le sera pas pour ce projet afin d'éviter toute utilisation abusive.
Pour compiler le projet, vous devez avoir :
Pour exécuter l'hyperviseur, vous devez disposer de Windows 10 ou d'une version ultérieure installée sur votre machine. Vous devez également avoir :
NovaHypervisor écrit les logs sur le second port série (COM2, port d'E/S 0x2F8) à l'aide d'un petit logger COM capable de fonctionner au niveau d'IRQL HIGH_LEVEL et dans les chemins racine VMX. Il émet des enregistrements de débogage, d'information et d'erreur avec un préfixe fixe NovaHypervisor.
bcdedit /dbgsettings serial debugport:2 baudrate:115200
Capturez la sortie depuis le pipe série de l'hôte ou le point d'accès COM2 configuré de votre machine virtuelle à 115200 8N1. Par exemple, dans PuTTY, vous pouvez vous connecter au transport série configuré pour la machine virtuelle et observer les lignes de log pendant l'exécution du pilote. Vous pouvez également utiliser le script connect-vm.ps1 pour vous connecter au port COM2 de la machine virtuelle et afficher les logs dans la console.
Pour tester et déboguer dans votre environnement de test, exécutez ces commandes dans une invite de commandes élevée, puis redémarrez votre machine :
bcdedit /set testsigning on
bcdedit /debug on
bcdedit /dbgsettings net hostip:<HOSTIP> port:55000 key:1.2.3.4
Où <HOSTIP> est l'adresse IP de votre machine hôte.
Sinaei : Pour son aide en répondant à mes questions et pour son travail remarquable sur HyperDbg et Hypervisor From Scratch.
Humza : Pour son aide dans la correction de bugs et ses suggestions d'amélioration.
memN0ps : Pour son aide en répondant à mes questions et en m'orientant vers les bonnes ressources.
| VMware | ✅ |
| Hyper-V | ✅ |
| Hyper-V avec VBS | ⌛ |
| VirtualBox | ❌ |
| QEMU | ❌ |
| KVM | ❌ |