Ce projet est développé à des fins strictement éducatives, dans le but de comprendre les mécanismes internes de Windows, la programmation de pilotes et les techniques de type rootkit (comme la manipulation directe d'objets noyau - DKOM).
L'utilisation de rootkits ou de techniques similaires peut être illégale et nuisible si employée à des fins malveillantes. Ce code est fourni "tel quel", sans garantie. L'auteur n'est pas responsable des dommages ou des conséquences découlant de l'utilisation (ou de la mauvaise utilisation) de ce projet.
Utilisez ce projet de manière responsable, dans un environnement de test contrôlé (comme une machine virtuelle), et ne l'exécutez jamais sur un système que vous n'êtes pas autorisé à modifier ou sur lequel vous ne souhaitez pas prendre de risques.
Ce projet est un exemple basique de rootkit pour Windows, accompagné d'une application compagnon en mode utilisateur. Il démontre des techniques telles que :
- ❌ Élévation de privilèges par vol de token.
- 🕵️ Dissimulation de processus via manipulation de
EPROCESS(DKOM). ↔️ Communication IOCTL entre mode noyau et mode utilisateur.
L'objectif principal est l'apprentissage et l'expérimentation des aspects de bas niveau de Windows.
- Élévation de Privilèges : Copie du token du processus
SYSTEMsur un autre processus. - Dissimulation de Processus : Déliaison/reliement de la liste
ActiveProcessLinksdansEPROCESS. - Interface IOCTL : Permet les commandes depuis le mode utilisateur.
-
Interface CLI pour contrôler le pilote.
-
Installation auto via
--install:- Copie dans
%LOCALAPPDATA%\MonCompagnonApp - Ajout au
PATHutilisateur
- Copie dans
-
Menu interactif :
- ↑ Élever les privilèges
- 🚫 Cacher un processus (PID)
- 👁️ Rendre visible un processus (PID)
- 📃 Lister les processus cachés
<racine_du_projet>/
├── rootkit_win/
│ ├── compagnon.c # Application compagnon (source)
│ ├── compagnon.exe # Binaire compagnon
│ ├── driver.vcxproj # Projet Visual Studio (pilote)
│ ├── rootkit.c # Code source du pilote
│ └── x64/ # Build output (rootkit.sys)
└── scripts/
├── ConfigWindows_DevOn.cmd # Active le mode test signing
├── ConfigWindows_DevOff.cmd # Désactive le mode test
├── LoadDriver.cmd # Charge le pilote
├── UnloadDriver.cmd # Décharge le pilote
-
Windows 10 x64 Build XXXX (adapter selon version).
-
Offsets noyau à jour !
-
Exemple dans
rootkit.c:#define EPROCESS_TOKEN_OFFSET 0x4B8 #define EPROCESS_ACTIVE_PROCESS_LINKS_OFFSET 0x448
-
⚠️ Offsets spécifiques à votre build !
-
-
Pilote : [EWDK (Enterprise Windows Driver Kit)]
-
Compagnon : [MSVC
cl.exe- via Visual Studio Developer Command Prompt] -
Mode Test Signing activé :
cd scripts ConfigWindows_DevOn.cmd
cd rootkit_win
msbuild /t:clean /t:build /p:Platform=x64cd rootkit_win
cl.exe compagnon.c /Fecompagnon.execd scripts
ConfigWindows_DevOn.cmdRedémarrage nécessaire
cd scripts
LoadDriver.cmd ..\rootkit_win\x64\Release\rootkit.syscd rootkit_win
compagnon.exe --installcompagnon@echo off
set sysfile=%~f1
set drvname=%~n1
sc stop %drvname% >nul 2>&1
sc delete %drvname% >nul 2>&1
copy "%sysfile%" C:\Windows\System32\drivers\
sc create %drvname% type= kernel start= demand binPath= C:\Windows\System32\drivers\%~nx1
sc start %drvname%- ↑ Élévation de privilège : Deviens SYSTEM
- 🚫 Cacher un PID
- 👁️ Rendre un PID visible
- 📊 Lister les processus cachés
- Ce projet est à but strictement pédagogique.
- Il est recommandé d'utiliser une machine virtuelle pour tous les tests.
⚠️ Les manipulations de structures noyau sont sensibles. Un mauvais offset = BSOD !
- EWDK
- [Structures Windows Internes (EPROCESS, etc)]
- [IOCTL communication driver <-> userland]
Projet publié à des fins éducatives. Aucun usage en environnement de production. Respectez les lois en vigueur.