
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).
이 프로젝트는 mimikatz 탐지 기술 2단계를 위해 수행된 연구를 기반으로 합니다. 솔루션에는 여러 프로젝트가 포함되어 있습니다:
Console Monitor Driver는 ConDrv로 또는 ConDrv에서 전송되는 특정 Fast I/O 작업(입력 및 출력)을 캡처하는 KMDF 커널 모드 필터 드라이버입니다. ConDrv는 condrv.sys가 생성하는 디바이스로, 콘솔 애플리케이션(cmd/powershell 등)과 실제 콘솔(conhost.exe) 간의 트래픽을 처리합니다. Console Monitor는 콘솔로 또는 콘솔에서 전송된 모든 키 입력이나 줄을 최종 사용자에게 표시하는 C# GUI 애플리케이션입니다. 이 애플리케이션의 실용성은 미미하지만, 프레젠테이션이나 디버깅에는 훌륭합니다.
Console Monitor GUI 애플리케이션은 명명된 파이프를 생성하고 들어오는 연결을 수신 대기합니다. 명명된 파이프로 전송된 모든 데이터는 GUI에 표시됩니다. 드라이버는 명명된 파이프가 있는지 확인하며, 없으면 오류를 반환하고 설치되지 않습니다. 명명된 파이프가 있는 경우(GUI가 실행 중인 경우) 설치되고 스니핑된 모든 데이터를 파이프로 전송합니다.
작동시키려면 다음 단계를 따라야 합니다:
기본 기술은 앞서 설명한 ConsoleMonitorDriver와 동일하지만, 여기서는 모든 데이터를 스니핑하는 대신 KMDF 필터 드라이버가 드라이버를 통과하는 데이터에서 여러 문자열을 매칭하려고 시도합니다. 이 특정 경우, 콘솔 애플리케이션의 제목은 정적 문자열과 대조되고, 콘솔 출력의 내용도 여러 정적 문자열과 대조됩니다. 일치하는 항목이 발생하면 Event Tracing for Windows(ETW)를 통해 이벤트 로그로 이벤트가 전송됩니다. 현재 드라이버에는 4가지 이벤트가 정의되어 있습니다:
시스템이 이러한 메시지를 제대로 읽을 수 있도록 준비하려면 event.xml 파일을 wevtutil.exe로 설치해야 하지만, 이는 install.ps1 스크립트에 포함되어 있습니다.
드라이버를 작동시키는 단계:
당연히 제목과 출력에 대해 매칭되는 문자열은 변경할 수 있으므로, 문자열을 변경하면 다른 악성코드/도구도 이 도구로 탐지할 수 있습니다.
install.ps1의 Uninstall-Driver 함수를 사용하기만 하면 됩니다.
파일로의 리다이렉션은 출력이 ConDrv 디바이스로 전송되지 않으므로 탐지되지 않습니다.