Skip to content

Latest commit

 

History

History
331 lines (230 loc) · 12.8 KB

File metadata and controls

331 lines (230 loc) · 12.8 KB

EtwTi-FluctuationMonitor v3.0

Windows 内核级进程行为监控工具

Platform Visual Studio C++17 License

English | 简体中文


📖 项目简介

EtwTi-FluctuationMonitor 是一款基于 ETW-TI (Event Tracing for Windows - Threat Intelligence) 和内核回调的 Windows 进程行为实时监控工具。通过结合用户态 ETW 监控和内核驱动回调,实现对进程内存操作、线程注入、模块加载等敏感行为的全面监控。

🙏 致谢

本项目的核心框架基于 jdu2600/EtwTi-FluctuationMonitor 开发,感谢原作者的出色工作!

使用方式(人写的)

GLM-5结合项目生成的README,太啰嗦了,可能还会缺少一些细节,直接写怎么用,然后你自己测测就知道了。

1、下载项目并编译,如果缺啥库就去致谢里的项目库里clone一下,和他用的库都一样的。

2、项目包含驱动和用户态代码。如果驱动编译过不了,就在添加/fd sha256, 如果还是有问题,就把对应的inf文件多复制几个,或者百度找找,问问ai。

image-20260319010200850

3、你需要一个BYOVD来开启PPL权限,这里使用的是RTCORE64,使用如下的命令:

sc create rtcore64 binPath= xxxxx/xxxx/xxx/rtcore64.sys
sc start rtcore64

4、然后就是内核回调监控的驱动,这个驱动也是按照上面的方式手动创建

sc create drivermon binPath= xxxxx/xxxx/xxx/drivermon.sys
sc start drivermon

5、用管理员权限,启动exe,这里建议使用 > 对输出进行重定向,要不然dos界面可能会卡住,事后也不好分析。

6、win10测试没问题,win11不确定会不会蓝屏。

7、这个readme看到这里就可以结束了,剩下的去看docs路径下的设计文档,那个写的全面。

✨ 核心特性

  • 🔍 ETW-TI 事件监控 - 捕获跨进程内存操作、APC 注入、线程上下文修改等威胁行为
  • 🛡️ 内核回调监控 - 监控进程创建/退出、线程创建、镜像加载事件
  • 🧵 远程线程检测 - 识别并标记远程线程注入行为
  • 📊 调用栈追踪 - 自动捕获敏感操作的调用栈信息
  • 💾 进程信息缓存 - 智能缓存进程元数据,提升事件处理效率
  • 高性能设计 - 多线程架构,事件驱动,低延迟输出

🎯 监控事件类型

ETW-TI 事件

事件类型 描述
ALLOCVM_* 虚拟内存分配 (本地/远程/内核调用者)
PROTECTVM_* 内存保护属性修改
MAPVIEW_* 内存映射视图操作
READVM_* 跨进程内存读取
WRITEVM_* 跨进程内存写入
QUEUEUSERAPC_* APC 队列注入
SETTHREADCONTEXT_* 线程上下文修改
SUSPEND/RESUME_* 进程/线程挂起与恢复

内核回调事件

事件类型 描述
PROCESS_CREATE 进程创建,包含父进程信息和命令行
PROCESS_EXIT 进程退出
THREAD_CREATE 线程创建,支持远程线程检测
IMAGE_LOAD DLL/驱动加载,包含基址和大小

📺 示例输出

alt text


🛠️ 系统要求

项目 要求
操作系统 Windows 10 / Windows 11 (x64)
构建工具 Visual Studio 2022 (v143 工具集)
C++ 标准 C++17
SDK Windows 10 SDK
架构 x64 only

⚠️ 注意: 本工具需要管理员权限运行,并需要加载内核驱动。


🚀 快速开始

1. 克隆仓库

git clone https://github.com/yourusername/EtwTi-FluctuationMonitor.git
cd EtwTi-FluctuationMonitor

2. 编译项目

方式一:Visual Studio IDE

  1. 使用 Visual Studio 2022 打开 EtwTi-KernelNotifyMonitor.sln
  2. 选择构建配置: Release | x64
  3. 还原 NuGet 包 (自动): 项目依赖 Microsoft.O365.Security.Krabsetw
  4. 生成解决方案 (Ctrl+Shift+B)

方式二:命令行编译

# 使用 MSBuild 编译
msbuild EtwTi-KernelNotifyMonitor.sln /p:Configuration=Release /p:Platform=x64

3. x64 Release 配置说明

配置项
配置类型 应用程序 (.exe)
平台工具集 Visual Studio 2022 (v143)
C++ 语言标准 ISO C++17 标准
字符集 Unicode
运行时库 多线程 (/MT)
优化 已启用 (/O2)
内联函数展开 任何适用项 (/Ob2)
整个程序优化 已启用

输出目录: $(SolutionDir)x64\Release\

4. 编译驱动 (可选)

驱动项目位于 drivers_mon/ 目录,需要安装 Windows Driver Kit (WDK)。

# 使用 Visual Studio 编译驱动
# 需要先安装 WDK
msbuild drivers_mon\drivers_mon.vcxproj /p:Configuration=Release /p:Platform=x64

📦 依赖项

依赖 版本 用途
Microsoft.O365.Security.Krabsetw 4.3.1 ETW 事件追踪封装库

NuGet 包会在首次编译时自动还原。


🔧 使用方法

运行程序

  1. 以管理员身份运行 EtwTi_mon.exe
  2. 程序会自动加载驱动并开始监控
  3. Ctrl+C 退出监控

命令行参数

EtwTi_mon.exe [--no-driver] [--help]

选项:
  --no-driver   禁用内核驱动,仅使用 ETW-TI 监控
  --help        显示帮助信息

运行截图

程序启动后将显示实时事件流,包含:

  • 时间戳
  • 进程名称、PID、路径、命令行
  • 事件类型和详细参数
  • 调用栈信息(如可用)

🏗️ 项目结构

EtwTi-FluctuationMonitor_v3.0/
├── main.cpp                    # 主程序入口,ETW-TI 事件处理
├── helpers.cpp                 # 辅助函数 (时间戳、事件类型转换)
├── driver_comm.cpp             # 驱动通信模块
├── enableppl.cpp               # PPL 启用功能
├── stdafx.h                    # 公共头文件
├── EtwTi-KernelNotifyMonitor.sln
├── EtwTi-KernelNotifyMonitor.vcxproj
├── packages.config             # NuGet 包配置
├── docs/
│   ├── develop_3.0.md          # 开发文档
│   └── etw-ti.yaml             # ETW-TI 事件定义
└── drivers_mon/                # 内核驱动项目
    ├── code.c                  # 驱动主代码
    ├── Public.h                # 公共头文件 (用户态/内核态共享)
    ├── drivers_mon.inf         # 驱动安装文件
    └── drivers_mon.vcxproj

🏛️ 系统架构

┌─────────────────────────────────────────────────────────────────────────────┐
│                    EtwTi-FluctuationMonitor v3.0 (用户态)                    │
├─────────────────────────────────────────────────────────────────────────────┤
│  ┌───────────────────┐  ┌───────────────────┐  ┌─────────────────────────┐  │
│  │   ETW-TI 监控线程  │  │  驱动事件读取线程  │  │    PPL 启用/禁用        │  │
│  │   (krabs库)        │  │  (DeviceIoControl) │  │   (RTCore64驱动)        │  │
│  └───────────────────┘  └───────────────────┘  └─────────────────────────┘  │
│                              │                      ▲                        │
│                              ▼                      │                        │
│  ┌───────────────────────────────────────────────────────────────────────┐  │
│  │                      进程信息缓存 (g_processCache)                     │  │
│  └───────────────────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────────────────┘
                               │
                               ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                    drivers_mon.sys (内核态驱动)                              │
├─────────────────────────────────────────────────────────────────────────────┤
│  ┌───────────────────┐  ┌───────────────────┐  ┌─────────────────────────┐  │
│  │ 进程创建回调        │  │ 线程创建回调        │  │ 镜像加载回调            │  │
│  │ PsSetCreate...     │  │ PsSetCreate...     │  │ PsSetLoadImage...      │  │
│  └───────────────────┘  └───────────────────┘  └─────────────────────────┘  │
└─────────────────────────────────────────────────────────────────────────────┘

📋 技术细节

ETW-TI 提供者

本工具监控以下 ETW 提供者:

Microsoft-Windows-Kernel-Threat-Intelligence
Provider GUID: {F4E1897C-BB5D-5668-F1D8-040F4D8DD344}

启用的 TI 标志

标志 描述
EnableReadVmLogging 启用跨进程内存读取日志
EnableWriteVmLogging 启用跨进程内存写入日志
EnableProcessSuspendResumeLogging 启用进程挂起/恢复日志
EnableThreadSuspendResumeLogging 启用线程挂起/恢复日志

⚠️ 免责声明

本工具仅供安全研究和教育目的使用。请确保在合法授权的环境下使用。使用本工具进行任何非法活动所产生的后果由使用者自行承担。


🤝 贡献指南

欢迎提交 Issue 和 Pull Request!

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 提交 Pull Request

📄 许可证

本项目采用 MIT 许可证 - 详见 LICENSE 文件。


📖 English Description

EtwTi-FluctuationMonitor is a Windows kernel-level process behavior monitoring tool based on ETW-TI (Event Tracing for Windows - Threat Intelligence) and kernel callbacks. It monitors process memory operations, thread injection, module loading, and other sensitive behaviors in real-time.

Key Features

  • ETW-TI Event Monitoring - Captures cross-process memory operations, APC injection, thread context modifications
  • Kernel Callback Monitoring - Monitors process/thread creation and image loading events
  • Remote Thread Detection - Identifies and marks remote thread injection behaviors
  • Call Stack Tracing - Automatically captures call stacks for sensitive operations
  • High Performance - Multi-threaded architecture with event-driven output

Build Requirements

  • Windows 10/11 x64
  • Visual Studio 2022 (v143 toolset)
  • Windows 10 SDK
  • Windows Driver Kit (WDK) - for driver compilation

⭐ If this project helps you, please give it a star! ⭐