Ap3x/Panoptes

GitHub: Ap3x/Panoptes

面向教育目的的 Windows 端点检测与响应系统,帮助理解内核驱动、ETW 事件追踪和 API Hook 等 EDR 核心技术。

Stars: 43 | Forks: 5

# Panoptes 端点检测与响应

Panoptes Logo

## 概述 Panoptes 是一个端点检测与响应 (EDR) 系统,专为教育目的而设计,旨在帮助理解 Windows Kernel Drivers、ETW 以及 Windows 系统交互。**该项目不适用于生产环境。** ## 演示 [视频链接](https://youtu.be/U_L-zY7IxYM) ## 功能特性 - MSI 安装程序,便于安装和卸载 - 使用 RocksDB 进行持久化存储,以缩短响应时间 - JSON 格式的日志,兼容 ELK、[HELK](https://github.com/Cyb3rWard0g/HELK) 和其他 SIEM 解决方案 - 使用 Kernel Asynchronous Procedure Call (kAPC) 进行内核级 DLL 注入 - Kernel Callbacks 监控: - 进程创建 - DLL 加载 - Kernel Driver 加载 - 线程/进程/桌面句柄操作 - 用户态 NTAPI 函数挂钩 (Hooks) - 使用 Yara-X 进行静态分析,支持自定义规则 - 使用 LIEF 进行 PE 文件分析(头部、数字签名、节区) - AMSI 扫描集成 - 带有内置 linter 的 JSON 配置文件 - 右键上下文菜单集成 - 用于扫描的命令行界面 - 使用 Google Tests 进行全面的单元测试(进行中) ## 关于名称 Panoptes 意为“全视者”,源自希腊神话。Argus Panoptes 是一个拥有一百只眼睛的巨人,担任希腊诸神的守护者。[了解更多关于 Argus Panoptes 的信息](https://en.wikipedia.org/wiki/Argus_Panoptes) ## 架构 Panoptes 设计时充分考虑了灵活性,允许用户通过 JSON 配置文件自定义部署。Panoptes 还使用 [Wix Toolset](https://www.firegiant.com/wixtoolset/) 打包成 MSI 文件,以便于安装和卸载。

EDR Architecture Overview

系统使用 gRPC 在主服务、容器和工具之间进行通信。内核组件被配置为 ETW 提供程序,支持实时事件监控和扫描排队。 ## 核心组件 ### Kernel Driver 回调 Kernel Driver 实现了多个用于系统事件监控的回调: - 进程创建/终止 - 模块/驱动加载 - 进程句柄操作 (**进行中**) - 注册表修改 (**进行中**) 当前已实现: - PsSetCreateProcessNotifyRoutineEx - PsSetLoadImageNotifyRoutine 计划实现: - ObRegisterCallbacks - CmRegisterCallbackEx - PsSetCreateThreadNotifyRoutine **注意:目前 Kernel Driver 被硬编码为仅将 Hook DLL 注入到 Detect it Easy (die.exe) 中** ### 用户态 Hooks Panoptes 使用内核级注入技术在进程创建早期阶段将 DLL 模块注入到进程中。这确保了从进程开始到结束的全面事件捕获。当前的 API Hooks 包括: - NtWriteVirtualMemory - NtModifyBootEntry - NtMapViewOfSectionEx - NtMapViewOfSection - **更多功能即将添加** ### 扩展模块 Panoptes 为其模块采用基于容器的架构,提供: - 故障隔离 - 提高稳定性 - 便于添加模块 - 更好的资源管理 - 并行处理能力 #### 核心模块 1. **PanoptesYara** - 核心检测模块 - 使用 [VirusTotal/Yara-X](https://github.com/VirusTotal/yara-x) - 支持自定义编译规则 - 兼容 [awesome-yara](https://github.com/InQuest/awesome-yara) 规则及许多其他规则 2. **PanoptesPE** - PE 文件分析模块 - 使用 [LIEF Project](https://github.com/lief-project/LIEF) - 提供详细的二进制分析 - 支持多种二进制格式,未来 Panoptes 可能支持其他操作系统 3. **PanoptesAMSI** - 可选的 AMSI 集成 - 使用 AmsiScanBuffer - 兼容现有的防病毒解决方案 - 不是 AMSI 扫描提供程序 ## 安装 1. 从 Releases 页面下载 MSI 安装程序 2. 要使用 Panoptes Kernel Driver,请确保使用以下命令启用测试签名: bcdedit /set TESTSIGNING ON 然后重启系统 3. 运行 MSI 安装程序 4. 将编译好的 Yara-X 规则放置在 `C:\Program Files\Panoptes\` 5. 以管理员身份启动 `PanoptesService.exe` ### 编译自定义规则 ``` yr.exe compile -o rules.pkg ``` ## 使用方法 - 右键单击文件进行扫描 - 使用命令行界面进行批量扫描 - 监控通知以获取检测结果 - 检查隔离文件夹:`C:\ProgramData\Panoptes\Quarantine` - 查看日志:`C:\ProgramData\Panoptes\Logs` ## 开发环境设置 ### 前置条件 - [Visual Studio 2022](https://visualstudio.microsoft.com/),包含 C++ 桌面开发工作负载 - [vcpkg](https://vcpkg.io/en/) (包含在 Visual Studio 中或独立安装) - [Windows Driver Kit (WDK)](https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk) (用于构建 Kernel Driver) - 启用测试签名 (用于驱动开发) - 配置了使用 WinDbg 进行 Windows Kernel Debugging 的虚拟机 将 `VCPKG_ROOT` 环境变量设置为您的 vcpkg 安装路径: ``` # 如果随 Visual Studio 安装 $env:VCPKG_ROOT = "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\vcpkg" # 或者将其永久设置 [System.Environment]::SetEnvironmentVariable("VCPKG_ROOT", "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\vcpkg", "User") ``` 关于内核开发环境的设置,请参阅: - [Ap3x/Windows-Kernel-Development-Infrastructure](https://github.com/Ap3x/Windows-Kernel-Development-Infrastructure) - [Microsoft WDK Installation Guide](https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk) ### 使用 CMake 构建 该项目使用带有 Visual Studio multi-config 生成器的单个 CMake 预设。您只需配置一次,并在构建时选择 Debug/Release。 #### 配置 ``` cmake --preset default ``` #### 构建 ``` # Debug build(包含代码的 debug symbols) cmake --build build/default --config Debug # Release build(已优化) cmake --build build/default --config Release ``` #### 构建 Kernel Driver ``` cmake --preset default -DBUILD_DRIVER=ON cmake --build build/default --config Debug --target PanoptesDriver ``` #### 运行测试 ``` cd bin/tests/Debug ./PanoptesAMSITest.exe ./PanoptesPETest.exe ./PanoptesYaraTest.exe ./PanoptesLinterTest.exe ``` ### CMake 构建选项 可以在配置期间使用 `-D` 传递以下选项: | 选项 | 默认值 | 描述 | |--------|---------|-------------| | `BUILD_DRIVER` | OFF | 构建 kernel driver 包 (需要 WDK) | | `BUILD_GRPC` | ON | 根据 protobuf 定义生成 gRPC 代码 | | `BUILD_DOC` | OFF | 构建 Doxygen 文档 | | `BUILD_WIX_INSTALLER` | OFF | 构建 Wix MSI 安装包 | 多选项示例: ``` cmake --preset default -DBUILD_DRIVER=ON -DBUILD_DOC=ON cmake --build build/default --config Release ``` #### 构建 MSI 安装程序 MSI 安装程序需要 [WiX Toolset v5](https://wixtoolset.org/) 及其扩展: ``` # 安装 WiX v5 CLI tool dotnet tool install --global wix --version 5.0.0 # 安装所需的 WiX extensions wix extension add -g WixToolset.UI.wixext/5.0.0 wix extension add -g WixToolset.Util.wixext/5.0.0 ``` 然后配置并构建: ``` cmake --preset default -DBUILD_WIX_INSTALLER=ON -DBUILD_DRIVER=ON cmake --build build/default --config Release cmake --build build/default --config Release --target installer ``` MSI 将输出到 `bin/installer/PanoptesInstaller.msi`。 ## Panoptes 功能截图 ### 扫描并检测恶意活动通知



### MSI 安装程序




### 安装位置



### 在设置的“应用和程序”菜单中轻松卸载


## 路线图 - [ ] 组件特定文档 - [ ] 添加更多 NTDLL hooks 以进行监控 ## 参考资料 - [Kernel Callback Functions](https://codemachine.com/articles/kernel_callback_functions.html) - [EDR Kernel Callbacks](https://pre.empt.blog/2023/maelstrom-5-edr-kernel-callbacks-hooks-and-call-stacks) - [Windows EDR Telemetry](https://www.edr-telemetry.com/windows) - [ETW Events Overview](https://artefacts.help/windows_etw_overview.html) - [Windows Security Event IDs](https://www.ultimatewindowssecurity.com/securitylog/encyclopedia/default.aspx) - [LOL Drivers Yara Rules](https://github.com/magicsword-io/LOLDrivers/tree/main/detections/yara) - [Installing Test Certifications](https://learn.microsoft.com/en-us/windows-hardware/drivers/install/installing-test-certificates)
标签:0day挖掘, AMSI绕过, AMSI集成, Bash脚本, C++, DLL注入, DNS 反向解析, EDR, ELK兼容, ETW, gRPC, JSON日志, kAPC注入, LIEF, MSI安装包, Network, NSM, NTAPI Hook, PE文件分析, Python工具, RocksDB, Rust, Windows内核驱动, Yara-X, Yara规则, 事件跟踪, 云安全监控, 便携式工具, 内核回调, 内核安全, 威胁检测, 开源EDR, 持久化存储, 教育项目, 数字取证, 数字签名检测, 数据擦除, 流量嗅探, 流量审计, 用户态Hook, 端点检测与响应, 网络安全, 网络安全审计, 网络流量审计, 脆弱性评估, 脱壳工具, 自动化脚本, 隐私保护, 静态分析