
The Console Monitor Driver is a KMDF kernel-mode filter driver that captures certain Fast I/O operations (input and output) that is sent to or from the ConDrv. ConDrv is a device created by condrv.sys, which handles the traffic between the Console Application (cmd/powershell/etc) and the actual console (conhost.exe).
Este proyecto se basa en la investigación realizada para la técnica de detección de mimikatz fase 2. La solución contiene múltiples proyectos:
El Console Monitor Driver es un controlador de filtro en modo kernel KMDF que captura ciertas operaciones Fast I/O (entrada y salida) que se envían a o desde ConDrv. ConDrv es un dispositivo creado por condrv.sys, que gestiona el tráfico entre la aplicación de consola (cmd/powershell/etc) y la consola real (conhost.exe). Console Monitor es una aplicación GUI en C# que muestra al usuario final cada pulsación de tecla o línea que se envía a o desde la consola. La utilidad de esta aplicación es limitada, pero es excelente para presentaciones y depuración.
La aplicación GUI de Console Monitor crea una named pipe y escucha las conexiones entrantes. Todos los datos que se envían a la named pipe se muestran en la GUI. El controlador comprueba si la named pipe está disponible; si no lo está, devuelve un error y no se instala. Si la named pipe está presente (la GUI está en ejecución), se instala y envía todo lo que captura a la pipe.
Para que funcione, deben seguirse los siguientes pasos:
La técnica subyacente es la misma que antes con ConsoleMonitorDriver, pero aquí, en lugar de capturar todos los datos, el controlador de filtro KMDF intenta comparar varias cadenas con los datos que pasan por el controlador. En este caso concreto, el título de la aplicación de consola se compara con una cadena estática, y también el contenido de la salida de la consola se compara con múltiples cadenas estáticas. Si se produce alguna coincidencia, se envía un evento al registro de eventos mediante Event Tracing for Windows (ETW). Por el momento, el controlador define 4 eventos diferentes:
Para preparar el sistema y que pueda leer estos mensajes correctamente, el archivo event.xml debe instalarse con (wevtutil.exe), pero esto está cubierto en el script install.ps1.
Pasos para hacer funcionar el controlador:
Obviamente, las cadenas que se comparan con el título y con la salida pueden cambiarse para que otras herramientas/malware puedan detectarse con la herramienta si se modifican las cadenas.
Simplemente use la función Uninstall-Driver de install.ps1.
Las redirecciones a archivos no se detectarán, ya que la salida no se enviará al dispositivo ConDrv.