
Outil de terminaison de processus du noyau (exploit CVE-2026-0828)


?? Avertissement : Ce projet est destiné strictement à des fins éducatives et de recherche en sécurité. L'auteur n'est pas responsable de toute utilisation abusive, de tout dommage ou de toute activité illégale causée par cet outil. Utilisez-le uniquement dans des environnements de laboratoire isolés avec une autorisation explicite.
KillChain est un outil en mode utilisateur qui exploite un pilote noyau vulnérable (ProcessMonitorDriver.sys, CVE-2026-0828) pour terminer des processus protégés depuis l'espace utilisateur. Il communique avec le noyau via une interface IOCTL personnalisée, contournant les mécanismes standard de protection des processus.
L'outil intègre directement le binaire du pilote dans l'exécutable, l'extrait vers un emplacement temporaire au moment de l'exécution, l'enregistre en tant que service noyau, le charge via NtLoadDriver, et envoie des demandes de terminaison via DeviceIoControl.
KillChain/
??? KillChain.cpp Point d'entrée, analyse des arguments CLI, boucle principale de terminaison
??? LoadDriver.h Extraction du pilote, enregistrement du service, logique NtLoadDriver/NtUnloadDriver
??? Logger.h Journalisation console/fichier thread-safe avec sortie colorée
??? driverBytes.h Binaire du pilote intégré (tableau d'octets brut)
ProcessMonitorDriver.sys (intégré dans l'exécutable)
??? Expose IOCTL_KILL_PROCESS (0xB822200C) termine un processus cible par PID
1. Analyser les arguments CLI
2. Extraire le .sys intégré ? %TEMP%\EmbeddedDriverService.sys
3. Créer la clé de service du registre + enregistrer via SCM
4. Charger le pilote dans le noyau via NtLoadDriver (nécessite SeLoadDriverPrivilege)
5. Ouvrir le handle du périphérique : \\.\STProcessMonitorDriver
6. Boucle (jusqu'à 360 secondes) :
a. Résoudre le PID par nom à chaque itération (si --name a été utilisé)
b. Envoyer IOCTL_KILL_PROCESS avec le PID cible
c. Après 2 terminaisons réussies, désactiver éventuellement Windows Defender via le registre
7. Fermer le handle du périphérique ; exécuter éventuellement le nettoyage --uninstall-driver
SeLoadDriverPrivilege et l'accès au registreKillChain.sln dans Visual Studio 2022Ctrl+Shift+B pour compilerSortie : x64\Release\KillChain.exe
KillChain.exe [options]
Options :
--pid <PID> Terminer le processus par PID
--name <ProcessName> Terminer le processus par nom d'exécutable
--disable-defender Désactiver également Windows Defender via le registre
--log-level <0-3> Verbeux de journalisation (0=erreurs, 1=normal, 2=verbeux, 3=débogage)
--output <fichier> Enregistrer la sortie du journal dans un fichier
--uninstall-driver Décharger le pilote, supprimer le service et le fichier du pilote
--help Afficher cette aide
REM Terminer un processus protégé par nom
KillChain.exe --name MsMpEng.exe
REM Terminer par PID avec journalisation verbeuse écrite dans un fichier
KillChain.exe --pid 1234 --log-level 2 --output log.txt
REM Terminer un processus et désactiver Windows Defender ensuite
KillChain.exe --name notepad.exe --disable-defender
REM Nettoyer le pilote après les tests
KillChain.exe --uninstall-driver
| Constante | Valeur |
|---|---|
IOCTL_KILL_PROCESS | 0xB822200C |
| Champ | Type | Description |
|---|---|---|
| Tampon d'entrée | ULONG64 | PID du processus cible |
| Tampon de sortie |
La sortie est thread-safe (soutenue par une CRITICAL_SECTION) et peut écrire dans la console avec des couleurs ANSI et dans un fichier journal simultanément.
CVE-2026-0828 ProcessMonitorDriver.sys expose un IOCTL qui permet à tout appelant en mode utilisateur disposant d'un handle sur le périphérique de terminer des processus arbitraires y compris les processus système protégés sans contrôles d'accès standard.
Eleven Red Pandas
Ce projet est fourni uniquement à des fins éducatives et de recherche. Toute redistribution ou utilisation dans des environnements de production est strictement interdite.
| Fonctionnalité | Description |
|---|
| Terminer par PID | Terminer n'importe quel processus par son PID numérique via IOCTL noyau |
| Terminer par nom | Résoudre et terminer un processus par nom d'exécutable, revérifié à chaque itération |
| Boucle de persistance | Surveille et re-termine en continu la cible pendant jusqu'à 360 secondes |
| Désactiver Defender | Écrit dans HKLM\SOFTWARE\Policies\Microsoft\Windows Defender pour désactiver la protection en temps réel |
| Pilote intégré | Le binaire du pilote est intégré dans l'exécutable aucun fichier .sys externe requis |
| Désinstallation du pilote | Décharge le pilote du noyau, supprime le service SCM, nettoie le registre, supprime le fichier temporaire |
| Journalisation configurable | Quatre niveaux de verbosité avec sortie fichier optionnelle |
DWORD |
| Inutilisé (factice) |
| Chemin du périphérique | \\.\STProcessMonitorDriver |
| Niveau | Valeur | Description |
|---|
LOG_ERROR | 0 | Erreurs uniquement |
LOG_INFO | 1 | Messages opérationnels normaux (par défaut) |
LOG_WARNING | 2 | Avertissements et messages informatifs |
LOG_DEBUG | 3 | Trace de débogage complète |
| Étape | API Win32 / NT |
|---|
| Extraire vers temp | CreateFile + WriteFile |
| Enregistrer le service | RegCreateKeyEx + CreateService (SCM) |
| Charger dans le noyau | NtLoadDriver (ntdll) |
| Vérifier l'activité | EnumDeviceDrivers + GetDeviceDriverBaseName |
| Décharger du noyau | NtUnloadDriver (ntdll) |
| Supprimer le service | DeleteService (SCM) + RegDeleteTree |
| Supprimer le fichier temporaire | DeleteFile |