EtwTi-FluctuationMonitor 是一款基于 ETW-TI (Event Tracing for Windows - Threat Intelligence) 和内核回调的 Windows 进程行为实时监控工具。通过结合用户态 ETW 监控和内核驱动回调,实现对进程内存操作、线程注入、模块加载等敏感行为的全面监控。
本项目的核心框架基于 jdu2600/EtwTi-FluctuationMonitor 开发,感谢原作者的出色工作!
- EtwTi-FluctuationMonitor - ETW-TI 监控框架基础
GLM-5结合项目生成的README,太啰嗦了,可能还会缺少一些细节,直接写怎么用,然后你自己测测就知道了。
1、下载项目并编译,如果缺啥库就去致谢里的项目库里clone一下,和他用的库都一样的。
2、项目包含驱动和用户态代码。如果驱动编译过不了,就在添加/fd sha256, 如果还是有问题,就把对应的inf文件多复制几个,或者百度找找,问问ai。
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 注入、线程上下文修改等威胁行为
- 🛡️ 内核回调监控 - 监控进程创建/退出、线程创建、镜像加载事件
- 🧵 远程线程检测 - 识别并标记远程线程注入行为
- 📊 调用栈追踪 - 自动捕获敏感操作的调用栈信息
- 💾 进程信息缓存 - 智能缓存进程元数据,提升事件处理效率
- ⚡ 高性能设计 - 多线程架构,事件驱动,低延迟输出
| 事件类型 | 描述 |
|---|---|
ALLOCVM_* |
虚拟内存分配 (本地/远程/内核调用者) |
PROTECTVM_* |
内存保护属性修改 |
MAPVIEW_* |
内存映射视图操作 |
READVM_* |
跨进程内存读取 |
WRITEVM_* |
跨进程内存写入 |
QUEUEUSERAPC_* |
APC 队列注入 |
SETTHREADCONTEXT_* |
线程上下文修改 |
SUSPEND/RESUME_* |
进程/线程挂起与恢复 |
| 事件类型 | 描述 |
|---|---|
PROCESS_CREATE |
进程创建,包含父进程信息和命令行 |
PROCESS_EXIT |
进程退出 |
THREAD_CREATE |
线程创建,支持远程线程检测 |
IMAGE_LOAD |
DLL/驱动加载,包含基址和大小 |
| 项目 | 要求 |
|---|---|
| 操作系统 | Windows 10 / Windows 11 (x64) |
| 构建工具 | Visual Studio 2022 (v143 工具集) |
| C++ 标准 | C++17 |
| SDK | Windows 10 SDK |
| 架构 | x64 only |
⚠️ 注意: 本工具需要管理员权限运行,并需要加载内核驱动。
git clone https://github.com/yourusername/EtwTi-FluctuationMonitor.git
cd EtwTi-FluctuationMonitor- 使用 Visual Studio 2022 打开
EtwTi-KernelNotifyMonitor.sln - 选择构建配置: Release | x64
- 还原 NuGet 包 (自动): 项目依赖
Microsoft.O365.Security.Krabsetw - 生成解决方案 (Ctrl+Shift+B)
# 使用 MSBuild 编译
msbuild EtwTi-KernelNotifyMonitor.sln /p:Configuration=Release /p:Platform=x64| 配置项 | 值 |
|---|---|
| 配置类型 | 应用程序 (.exe) |
| 平台工具集 | Visual Studio 2022 (v143) |
| C++ 语言标准 | ISO C++17 标准 |
| 字符集 | Unicode |
| 运行时库 | 多线程 (/MT) |
| 优化 | 已启用 (/O2) |
| 内联函数展开 | 任何适用项 (/Ob2) |
| 整个程序优化 | 已启用 |
输出目录: $(SolutionDir)x64\Release\
驱动项目位于 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 包会在首次编译时自动还原。
- 以管理员身份运行
EtwTi_mon.exe - 程序会自动加载驱动并开始监控
- 按
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 提供者:
Microsoft-Windows-Kernel-Threat-Intelligence
Provider GUID: {F4E1897C-BB5D-5668-F1D8-040F4D8DD344}
| 标志 | 描述 |
|---|---|
EnableReadVmLogging |
启用跨进程内存读取日志 |
EnableWriteVmLogging |
启用跨进程内存写入日志 |
EnableProcessSuspendResumeLogging |
启用进程挂起/恢复日志 |
EnableThreadSuspendResumeLogging |
启用线程挂起/恢复日志 |
本工具仅供安全研究和教育目的使用。请确保在合法授权的环境下使用。使用本工具进行任何非法活动所产生的后果由使用者自行承担。
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 提交 Pull Request
本项目采用 MIT 许可证 - 详见 LICENSE 文件。
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.
- 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
- 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! ⭐

