
Rootkit Windows pour Intel x64 avec 25+ fonctionnalités, démontrant des techniques de rootkit compatibles avec toutes les versions de Windows 10 et Windows 11.
Nidhogg est un rootkit multifonction conçu pour illustrer la variété des opérations possibles depuis l'espace noyau. Son objectif est de fournir un rootkit complet et facile à utiliser, doté de nombreuses fonctionnalités utiles pour les opérations. De plus, il peut être facilement intégré à votre framework C2.
Nidhogg fonctionne sur toutes les versions x64 de Windows 10 et Windows 11.
Ce dépôt contient un pilote noyau ainsi qu'un programme C++ permettant de communiquer avec lui.
Pour en savoir plus, consultez le wiki pour une explication détaillée.
[!IMPORTANT]
Toutes les fonctionnalités ont été entièrement testées jusqu'à Windows 11 25H2. Si vous rencontrez un problème, veuillez ouvrir une issue après avoir vérifié qu'il n'en existe pas déjà une.
[!WARNING]
Lors d'un chargement réfléchi, certaines fonctionnalités seront désactivées par défaut et le déchargement automatique des modules masqués ainsi que le rétablissement des callbacks ne fonctionneront pas correctement. Il est de la responsabilité de l'utilisateur de s'assurer de décharger manuellement tout module masqué à la fin du processus et de rétablir les callbacks si le pilote cible se décharge. Ne pas le faire peut entraîner une instabilité ou un crash du système.
Depuis la version v0.3, Nidhogg peut être chargé de manière réfléchie avec kdmapper mais comme PatchGuard sera automatiquement déclenché si le pilote enregistre des callbacks, Nidhogg n'en enregistrera aucun. Ainsi, si vous chargez le pilote de manière réfléchie, ces fonctionnalités seront désactivées par défaut :
Depuis la version v2.0, Nidhogg dispose d'une nouvelle capacité appelée « Nidhogg Object File » (NOF) pour l'exécution de COFF en mode noyau. Cela signifie que vous pouvez écrire votre propre code en mode noyau et le compiler en un fichier COFF qui a accès à :
Cette fonctionnalité n'est pas compatible avec la sécurité basée sur la virtualisation (VBS) car elle viole à la fois HVCI et kCFG.
Depuis la version v1.0, Nidhogg peut exécuter des NidhoggScripts – un outil permettant d'exécuter plusieurs commandes à la suite, créant ainsi des playbooks pour Nidhogg. Pour savoir comment en rédiger un, consultez le wiki.
En raison de la difficulté de maintenance et du fait qu'il ne s'agit pas d'une fonctionnalité populaire, elle est devenue obsolète dans la version v2.0 et sera supprimée dans la prochaine version majeure. Elle sera remplacée par une autre capacité nommée « Nidhogg Object File » (NOF) pour l'exécution de COFF en mode noyau, qui aura accès à l'API de Nidhogg.
Depuis la version v1.0, Nidhogg peut également exécuter des NidhoggScripts comme opérations initiales. Cela signifie que s'il trouve le fichier out.ndhg à la racine du répertoire du projet (le même répertoire que le fichier Python), il exécutera ce fichier à chaque démarrage du pilote.
En raison de la difficulté de maintenance et du fait qu'il ne s'agit pas d'une fonctionnalité populaire, elle est devenue obsolète dans la version v2.0 et sera supprimée dans la prochaine version majeure. Elle sera remplacée par une autre capacité nommée « Nidhogg Object File » (NOF) pour l'exécution de COFF en mode noyau, qui aura accès à l'API de Nidhogg.
[!CAUTION]
Les fonctionnalités suivantes sont connues pour déclencher PatchGuard. Vous pouvez toujours les utiliser à vos propres risques.
Pour voir les commandes disponibles, vous pouvez exécuter NidhoggClient.exe ou consulter le wiki pour des informations détaillées sur la façon d'utiliser chaque commande, ses paramètres et son fonctionnement.
NidhoggClient.exe
# Utilisation simple : masquer un processus
NidhoggClient.exe process hide 3110
Pour compiler le client, vous devez avoir Visual Studio 2022 installé, puis construire le projet comme n'importe quel autre projet Visual Studio.
Pour compiler le projet, vous aurez besoin des outils suivants :
Clonez le dépôt et compilez le projet :
git clone https://github.com/Idov31/Nidhogg.git --recurse-submodules
Pour le tester dans votre environnement de test, exécutez ces commandes dans une invite de commandes élevée (cmd) :
bcdedit /set testsigning on
Après avoir redémarré, créez un service et lancez le pilote :
sc create nidhogg type= kernel binPath= C:\Chemin\Vers\Le\Pilote\Nidhogg.sys
sc start nidhogg
Pour déboguer le pilote dans votre environnement de test, exécutez cette commande dans une invite de commandes élevée et redémarrez votre ordinateur :
bcdedit /debug on
Après le redémarrage, vous pouvez voir les messages de débogage dans des outils comme DebugView.
Un grand merci aux personnes qui ont contribué à ce projet :