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) ![KDAMonitor 架构](https://raw.githubusercontent.com/HalfTimeOfLife/KDAMonitor/main/assets\kdamonitor_architecture.svg) ## 环境要求 - 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内核驱动, 客户端加密, 恶意软件分析, 沙箱