
Le Console Monitor Driver est un pilote de filtre en mode noyau KMDF qui capture certaines opérations Fast I/O (entrée et sortie) envoyées vers ou depuis ConDrv. ConDrv est un périphérique créé par condrv.sys, qui gère le trafic entre l'application console (cmd/powershell/etc) et la console réelle (conhost.exe).
Ce projet est basé sur la recherche effectuée pour la technique de détection de mimikatz phase 2. Il contient plusieurs projets dans la solution :
Le Console Monitor Driver est un pilote de filtre en mode noyau KMDF qui capture certaines opérations Fast I/O (entrées et sorties) envoyées vers ou depuis ConDrv. ConDrv est un périphérique créé par condrv.sys, qui gère le trafic entre l'application console (cmd/powershell/etc) et la console réelle (conhost.exe). Console Monitor est une application GUI en C# qui montre à l'utilisateur final chaque frappe ou ligne envoyée vers ou depuis la console. L'utilité de cette application est négligeable, mais elle est idéale pour les présentations et le débogage.
L'application GUI Console Monitor crée un named pipe et écoute les connexions entrantes. Toutes les données envoyées au named pipe sont affichées sur l'interface graphique. Le pilote vérifie si le named pipe est en place ; sinon, il renvoie une erreur et ne s'installe pas. Si le named pipe est présent (l'interface graphique est en cours d'exécution), il s'installe et envoie tout ce qui est reniflé au pipe.
Les étapes suivantes doivent être suivies pour que cela fonctionne :
La technique sous-jacente est la même qu'auparavant avec ConsoleMonitorDriver, mais ici, au lieu de renifler toutes les données, le pilote de filtre KMDF tente de faire correspondre plusieurs chaînes de caractères aux données qui traversent le pilote. Dans ce cas particulier, le titre de l'application console est vérifié par rapport à une chaîne statique, et le contenu de la sortie console est également vérifié par rapport à plusieurs chaînes statiques. Si l'une de ces correspondances se produit, un événement est envoyé au journal des événements via Event Tracing for Windows (ETW). À l'heure actuelle, 4 événements différents sont définis dans le pilote :
Pour préparer le système à lire correctement ces messages, le fichier event.xml doit être installé avec (wevtutil.exe), mais cela est couvert par le script install.ps1.
Étapes pour faire fonctionner le pilote :
Évidemment, les chaînes de caractères comparées au titre et à la sortie peuvent être modifiées afin que d'autres logiciels malveillants/outils puissent être détectés avec l'outil si les chaînes sont changées.
Utilisez simplement la fonction Uninstall-Driver de install.ps1.
Les redirections vers des fichiers ne seront pas détectées, car la sortie ne sera pas envoyée au périphérique ConDrv.