
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 projeto é baseado na pesquisa que foi feita para a técnica de detecção de mimikatz da fase 2. Ele contém vários projetos na solução:
O Console Monitor Driver é um driver de filtro do modo kernel KMDF que captura certas operações Fast I/O (entrada e saída) enviadas para ou vindas do ConDrv. ConDrv é um dispositivo criado por condrv.sys, que lida com o tráfego entre o Aplicativo de Console (cmd/powershell/etc) e o console real (conhost.exe). O Console Monitor é um aplicativo GUI em C# que mostra ao usuário final cada tecla pressionada ou linha que foi enviada para ou do console. A utilidade deste aplicativo é pequena, mas é excelente para apresentações e depuração.
O aplicativo GUI do Console Monitor cria um named pipe e aguarda conexões de entrada. Todos os dados enviados ao named pipe são exibidos na GUI. O driver verifica se o named pipe está presente; se não estiver, ele retorna um erro e não será instalado. Caso o named pipe esteja lá (GUI em execução), ele instala e envia tudo o que é capturado para o pipe.
Os seguintes passos precisam ser seguidos para que funcione:
A técnica subjacente é a mesma de antes com o ConsoleMonitorDriver, mas aqui, em vez de capturar todos os dados, o driver de filtro KMDF tenta corresponder várias strings aos dados que passam pelo driver. Neste caso específico, o título do aplicativo do console é verificado em relação a uma string estática, e também o conteúdo da saída do console é verificado em relação a múltiplas strings estáticas. Caso alguma das correspondências ocorra, um evento é enviado ao log de eventos por meio do Event Tracing for Windows (ETW). No momento, 4 eventos diferentes estão definidos no driver:
Para preparar o sistema para ler essas mensagens corretamente, o arquivo event.xml precisa ser instalado com o (wevtutil.exe), mas isso é coberto pelo script install.ps1.
Passos para fazer o driver funcionar:
Obviamente, as strings que são correspondidas ao título e à saída podem ser alteradas para que outros malwares/ferramentas possam ser detectados com a ferramenta se as strings forem alteradas.
Apenas use a função Uninstall-Driver do install.ps1.
Redirecionamentos para arquivos não serão detectados, pois a saída não será enviada ao dispositivo ConDrv.