本项目基于 mimikatz 检测技术第二阶段的研究成果。 该解决方案包含多个项目:
Console Monitor Driver 是一个 KMDF 内核模式过滤驱动程序,用于捕获发送到 ConDrv 或从 ConDrv 发出的某些 Fast I/O 操作(输入和输出)。ConDrv 是由 condrv.sys 创建的一个设备,负责处理控制台应用程序(cmd/powershell 等)与实际控制台(conhost.exe)之间的流量。Console Monitor 是一个 C# GUI 应用程序,用于向最终用户展示发送到控制台或从控制台发出的每一次击键或每一行内容。该应用程序的实际用途有限,但非常适合演示和调试。
Console Monitor GUI 应用程序会创建一个命名管道并监听传入连接。所有发送到该命名管道的数据都会显示在 GUI 上。驱动程序会检查命名管道是否存在,如果不存在,则将返回错误且不会安装。如果命名管道存在(GUI 正在运行),则驱动程序会安装并将嗅探到的所有内容发送到管道。
需要按照以下步骤才能使其正常工作:
底层技术与上述 ConsoleMonitorDriver 相同,但这里 KMDF 过滤驱动程序并非嗅探所有数据,而是尝试将多个字符串与经过驱动程序的数据进行匹配。在此特定场景下,控制台应用程序的标题会与静态字符串进行比对,控制台输出的内容也会与多个静态字符串进行比对。如果发生任何匹配,将通过 Windows 事件跟踪(ETW)向事件日志发送事件。目前,驱动程序中定义了 4 个不同的事件:
为了确保系统能够正确读取这些消息,需要使用(wevtutil.exe)安装 event.xml 文件,但这一点已包含在 install.ps1 脚本中。
使驱动程序正常工作的步骤:
显然,用于匹配标题和输出的字符串可以被修改,因此如果更改了字符串,该工具也可以检测其他恶意软件/工具。
只需使用 install.ps1 中的 Uninstall-Driver 函数即可。
重定向到文件的操作不会被检测到,因为输出不会发送到 ConDrv 设备。