
Драйвер Console Monitor Driver — это KMDF-фильтр-драйвер режима ядра, который перехватывает определённые операции Fast I/O (ввода и вывода), отправляемые в ConDrv или из него. ConDrv — это устройство, создаваемое condrv.sys, которое обрабатывает трафик между консольным приложением (cmd/powershell и т. д.) и самой консолью (conhost.exe).
Этот проект основан на исследовании, проведённом для метода обнаружения mimikatz на этапе 2. В решении содержится несколько проектов:
Драйвер Console Monitor Driver - это драйвер-фильтр режима ядра KMDF, который перехватывает определённые операции Fast I/O (ввод и вывод), отправляемые в ConDrv или из него. ConDrv - это устройство, создаваемое condrv.sys, которое обрабатывает трафик между консольным приложением (cmd/powershell/etc) и самой консолью (conhost.exe). Console Monitor - это GUI-приложение на C#, которое показывает конечному пользователю каждое нажатие клавиши или строку, отправленные в консоль или из неё. Польза от этого приложения невелика, но оно отлично подходит для презентаций и отладки.
GUI-приложение Console Monitor создаёт именованный канал (named pipe) и ожидает входящие подключения. Все данные, отправляемые в именованный канал, отображаются в GUI. Драйвер проверяет наличие именованного канала; если его нет, он возвращает ошибку и не устанавливается. Если именованный канал существует (GUI запущен), драйвер устанавливается и отправляет в канал всё, что перехватывает.
Чтобы это заработало, необходимо выполнить следующие шаги:
Лежащая в основе техника та же, что и раньше с ConsoleMonitorDriver, но здесь вместо перехвата всех данных драйвер-фильтр KMDF пытается сопоставить несколько строк с данными, проходящими через драйвер. В данном конкретном случае заголовок консольного приложения проверяется на соответствие статической строке, а также содержимое вывода консоли проверяется на соответствие нескольким статическим строкам. При любом совпадении в журнал событий отправляется событие через Event Tracing for Windows (ETW). На данный момент в драйвере определено 4 различных события:
Чтобы система могла правильно читать эти сообщения, файл event.xml необходимо установить с помощью (wevtutil.exe), но это описано в сценарии install.ps1.
Шаги для запуска драйвера:
Очевидно, что строки, с которыми сравниваются заголовок и вывод, можно изменить, чтобы с помощью этого инструмента можно было обнаруживать другие вредоносные программы/инструменты, если строки изменены.
Просто используйте функцию Uninstall-Driver из install.ps1.
Перенаправление в файлы не будет обнаружено, поскольку вывод не будет отправляться на устройство ConDrv.