HalfTimeOfLife/KDAMonitor
GitHub: HalfTimeOfLife/KDAMonitor
KDAMonitor 是一个 Windows 内核驱动活动监视器,用于恶意软件沙箱分析场景下实时记录进程、镜像加载、网络连接和注册表活动。
Stars: 0 | Forks: 0
# KDAMonitor - 内核驱动活动监视器
一个 Windows 内核驱动程序(使用 C 语言),用于实时记录进程、镜像加载、网络连接和注册表活动。
## 状态
早期开发阶段:目前处于 **v0.4(磁盘日志记录)**。尚未实现任何监控功能。有关计划发布的版本,请参阅 [ROADMAP.md](./ROADMAP.md)。
## 概念
KDAMonitor 由两个组件组成:
- **`driver/`**:一个 Windows 内核驱动(`.sys`),运行在内核级别,通过注册原生内核回调(进程、线程、镜像加载、注册表)和 WFP(网络)来观察系统活动,这种观察方式使得恶意软件难以察觉或绕过。
- **`client/`** *(目前为最小化测试客户端;计划在 v0.11 推出完整的实时查看器)*:一个用户模式命令行应用程序,用于连接驱动程序...
预期的使用场景是恶意软件沙箱分析:在加载了 KDAMonitor 的隔离虚拟机中运行样本,并在执行后获取其进程、网络和持久化活动的完整时间线(通过日志)。
## 架构 (v0.4)

## 环境要求
- Windows 10/11(推荐使用测试虚拟机,并开启测试签名模式)
- Windows Driver Kit (WDK)
- Visual Studio 及 WDK 扩展
## 项目结构 (v0.4)
```
KDAMonitor/
├── client
│ ├── include
│ │ └── client.h
│ ├── src
│ │ └── client.c
│ ├── client.vcxproj
│ └── client.vcxproj.filters
├── docs
│ ├── dumps
│ │ └── IRQL_NOT_LESS_OR_EQUAL.dmp
│ └── crashes.md
├── driver
│ ├── include
│ │ ├── device.h
│ │ ├── driver.h
│ │ ├── event_queue.h
│ │ ├── event_types.h
│ │ ├── ioctl.h
│ │ ├── kdamon_config.h
│ │ ├── kdamon_shared.h
│ │ └── log_writer.h
│ ├── src
│ │ ├── device.c
│ │ ├── driver_entry.c
│ │ ├── event_queue.c
│ │ ├── ioctl.c
│ │ └── log_writer.c
│ ├── KDAMonitor.inf
│ ├── KDAMonitor.vcxproj
│ ├── KDAMonitor.vcxproj.filters
│ └── packages.config
├── .gitignore
├── CHANGELOG.md
├── KDAMonitor.sln
├── LICENSE
├── README.md
└── ROADMAP.md
```
## 构建
### 构建
在安装了 WDK 扩展的 Visual Studio 中打开 `KDAMonitor.sln`,并构建 `KDAMonitor` 项目(Debug 或 Release,x64)。编译后的驱动程序(`KDAMonitor.sys`)将输出到解决方案根目录下的 `x64\\KDAMonitor.sys`。
### 测试签名
该驱动程序未受信任的 CA 签名,因此目标虚拟机必须开启测试签名:
```
bcdedit /set testsigning on
```
重启后生效。
### 加载驱动程序
在测试虚拟机上的管理员命令提示符中执行:
```
mkdir C:\Drivers
copy \KDAMonitor.sys C:\Drivers
sc create KDAMonitor type= kernel binPath= C:\Drivers\KDAMonitor.sys
sc start KDAMonitor
```
如果路径缺失,驱动程序会自动创建 `C:\KDAMonitor\logs\`,并在那里为每个会话写入一个带有时间戳的 `.jsonl` 日志文件。
### 卸载驱动程序
```
sc stop KDAMonitor
sc delete KDAMonitor
```
### 注意事项
- 内核调试输出(`KdPrint`)需要以管理员身份运行 [DebugView](https://learn.microsoft.com/en-us/sysinternals/downloads/debugview),并启用 **Capture Kernel**,同时设置调试打印过滤器:
```
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter" /v DEFAULT /t REG_DWORD /d 0xFFFFFFFF /f
```
设置完成后请重启系统。
## 资源
### 官方文档
- [Windows Driver Kit 文档](https://learn.microsoft.com/en-us/windows-hardware/drivers/)
- [Windows 驱动程序入门](https://learn.microsoft.com/en-us/windows-hardware/drivers/gettingstarted/)
- [Kernel-Mode Driver API 参考](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/)
- [Windows Filtering Platform 文档](https://learn.microsoft.com/en-us/windows/win32/fwp/windows-filtering-platform-start-page)
- [Windows 调试工具 / WinDbg](https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/)
### 代码示例
- [microsoft/Windows-driver-samples](https://github.com/microsoft/Windows-driver-samples)
### 书籍
- *Windows Kernel Programming*, Pavel Yosifovich (第 2 版)
- *Windows Internals*, Yosifovich / Solomon / Ionescu (第 7 版) — 作为参考使用,无需通读
## 许可证
本项目基于 MIT 许可证授权 - 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
标签:DAST, NSM, WDK, Windows内核驱动, 客户端加密, 恶意软件分析, 沙箱