
Windows Analysis and Research Toolkit
⚠️ Certaines parties de ce projet ont été codées en « vibe coding » avec l'aide de l'IA, il peut donc y avoir quelques bugs. Le pilote noyau (KWinSys) ne doit être installé que dans une VM de test à des fins de recherche.

| Composant | Rôle |
|---|---|
| NtWarden | Application GUI (ImGui + DirectX 11) |
Analyse de sécurité par processus, accessible depuis le menu contextuel des processus.
Prérequis : Visual Studio 2022, Windows SDK 10.0.26100.0+, WDK (pour KWinSys)
NtWarden.sln
├── NtWarden/ # GUI app
├── WinSys/ # Core library (static lib)
├── KWinSys/ # Kernel driver
└── WinSysServer/ # Remote server
NtWarden.sln dans Visual Studiox64/Release/KWinSys nécessite la signature de test ou une signature valide.
# Enable test signing (reboot required)
bcdedit /set testsigning on
# On VMs you may also need
bcdedit /set nointegritychecks on
Exécutez NtWarden en tant qu'administrateur. Le passage à l'onglet Mode noyau installera et démarrera automatiquement le pilote s'il n'est pas déjà chargé. Vous pouvez également le gérer manuellement depuis le menu Pilote.
WinSysServer s'exécute sur une machine cible (généralement une VM) et fournit les données système via TCP. Connectez-vous depuis NtWarden via À distance > Connecter.
| Fichier | Chemin | Nécessaire pour |
|---|---|---|
WinSysServer.exe | x64/Release/WinSysServer.exe | Toujours |
KWinSys.sys | x64/Release/KWinSys/KWinSys.sys | Fonctionnalités noyau uniquement |
Les éléments en mode utilisateur (processus, services, réseau) fonctionnent sans le pilote. Les onglets noyau nécessitent KWinSys chargé sur la cible.
# Auto-install driver + start server (run elevated)
WinSysServer.exe --install # default port 50002
WinSysServer.exe --install --port 9000 # custom port
# Or install the driver yourself first
sc create KWinSys type= kernel binPath= "C:\path\to\KWinSys.sys"
sc start KWinSys
WinSysServer.exe [--port <port>] # default: 50002
Protocole binaire personnalisé sur TCP. En-tête de 12 octets (MessageType, DataSize, Status). Pas d'authentification - à utiliser uniquement dans des environnements de laboratoire/VM isolés.
MIT - voir LICENSE.
| Bibliothèque statique pour l'énumération des processus, services et réseaux |
| KWinSys | Pilote noyau pour les callbacks, SSDT, modules noyau, etc. |
| WinSysServer | Serveur TCP sans interface pour l'inspection à distance |
| Onglet | Description |
|---|
| Processus | Liste des processus avec vue arborescente, handles, threads, régions mémoire, modules |
| Performances | Graphiques d'utilisation en temps réel du CPU, de la RAM, du GPU et du réseau - peuvent être superposés par-dessus d'autres tâches |
| Services | Énumération des services avec état, type de démarrage, chemin du binaire |
| Réseau > Connexions | Connexions TCP/UDP avec processus propriétaire et points de terminaison distants |
| Réseau > Certificats racines | Magasin des autorités de certification racines de confiance avec sujet, émetteur, empreinte |
| Réseau > NDIS | Informations sur l'adaptateur réseau - pilote, MAC, vitesse, type de média |
| ETW | Sessions de traçage actives et fournisseurs enregistrés |
| IPC | Points de terminaison RPC et tubes nommés |
| Gestionnaire d'objets | Parcourir l'espace de noms des objets noyau - répertoires, liens symboliques, périphériques |
| Registre | Navigateur du registre avec énumération des clés/valeurs |
| Symboles | État du chargement des symboles en mode utilisateur |
| Journal | Intercepte les journaux de débogage du pilote noyau et les journaux GUI en mode utilisateur en un seul endroit |
| Onglet | Description |
|---|
| Objets processus | Énumération des EPROCESS, détection des processus cachés par recoupement |
| Modules | Pilotes noyau chargés avec base, taille, chemin (avec vérification LolDrivers) |
| Callbacks | Callbacks noyau (processus/thread/image/registre/objet/alimentation) + vérifications d'intégrité |
| SSDT | Entrées SSDT avec propriétaire et détection de hooks |
| Symboles | Résolution des symboles noyau et chargement des PDB |
| Pool noyau | Grandes allocations de pool, statistiques des pool tags |
| Lecture/écriture mémoire | Lecture/écriture de la mémoire noyau par adresse |
| Minuteries | Compteurs d'interruptions et de DPC par CPU |
| Filtre | Pilotes minifilter avec altitude et informations d'instance |
| Tables de descripteurs | Entrées GDT/IDT |
| Dispatch IRP | Table de dispatch IRP pour tout pilote - adresses des gestionnaires, module propriétaire |
| WFP | Pilotes de callout WFP et filtres |
| État DSE | État de l'application de la signature des pilotes |
| Politique CI | Politique d'intégrité du code et niveau d'application |
| Intégrité du noyau | Vérifier le .text du noyau par rapport à l'image sur disque |
| Hooks hyperviseur | Détection de hooks EPT via analyse temporelle |
| Section | Ce qui est vérifié |
|---|
| Mémoire non adossée | Régions exécutables privées non adossées à aucun fichier (indicateur de shellcode) |
| Hollowing | Incohérence entre l'ImageBase du PEB et l'ImageBase de l'en-tête PE |
| Module Stomping | Sections .text en mémoire comparées aux originales sur disque |
| Syscalls directs | Instructions syscall (0F 05) trouvées hors de ntdll |
| Stubs syscall | Intégrité des stubs ntdll - octets mémoire vs copie disque propre |
| Hooks en mode utilisateur | Hooks inline (patchs JMP/CALL) dans ntdll, kernel32, etc. (nécessite capstone pour désassembler les octets analysés) |
| Jetons | Élévation, niveau d'intégrité, impersonation, privilèges suspects |
| Objets de débogage | Objets de débogage et ports de débogage sur le processus |
| Hyperviseur | Vérification du vendeur CPUID + anomalies de temporisation RDTSC/CPUID |
| Objets Job | Appartenance à un job, limites, restrictions d'interface utilisateur |
| État CFG | État d'application CFG/XFG et indicateurs de mitigation |