genesisgzdev/threat-detection-suite

GitHub: genesisgzdev/threat-detection-suite

这是一个专为 Windows 系统设计的跨环多向量威胁检测套件,通过内核态高性能数据采集与用户态深度分析实现实时防御与自动响应。

Stars: 1 | Forks: 0

# 威胁检测套件 (TDS) ## 系统架构 Threat Detection Suite (TDS) 跨两个主要执行环运行:内核模式 (Ring 0) 和用户模式 (Ring 3)。这种分离确保了高延迟的启发式分析不会导致系统范围的 DPC(延迟过程调用)延迟或错误检查(BSOD)。 ``` graph TD; subgraph Ring 0 [Kernel Mode] WFP[WFP Sublayer Filter] --> |Network Telemetry| EL[Event Lookaside List]; MF[Minifilter Callback] --> |File I/O Telemetry| EL; OB[ObRegisterCallbacks] --> |Process Handle Req| EL; EL --> |InterlockedPushEntrySList| SList[Lock-Free SList Queue]; IOCTL[IOCTL_TDS_GET_NEXT_EVENT] --> |InterlockedPopEntrySList| SList; end subgraph Ring 3 [User Mode] SList --> |Buffered IRP| Svc[TDS Analysis Service]; Svc --> |ETW-Ti Session| ETW[EtwCollector]; Svc --> |MEM_PRIVATE Scan| YARA[MemoryScanner / libyara]; Svc --> |Shannon Entropy| Heuristics[HeuristicsEngine]; Heuristics --> |Risk Score >= 70| IPS[IPSManager]; IPS --> |NtTerminateProcess| Threat[Malicious Process]; Heuristics --> |Log Event| Log[tds_threat_events.jsonl]; end subgraph Automation [Response] Log --> |tail -f| Bot[SOC Bot python]; Bot --> |HTTP POST| GitHub[GitHub Issues API]; end ``` ## 核心实现细节 ### 1. Windows Filtering Platform (WFP) 网络过滤器通过注册自定义 WFP 子层 (`TDS_SUBLAYER_GUID`) 独立于标准 Windows Firewall 运行。 - **权重 (Weight)**:设置为 `0xFFFF`,确保 TDS callouts 在第三方消费型过滤器之前检查网络流量。 - **回环排除**:在 BFE 引擎级别丢弃带有 `FWP_CONDITION_FLAG_IS_LOOPBACK` 标志的流量,消除不必要的进程间通信 (IPC) 噪音。 - **协议精度**:callout 针对 `FWPS_LAYER_DATAGRAM_DATA_V4` 和 `V6`。它拦截 53 端口上的 UDP 数据包;超过 512 字节的 payload 会被主动丢弃 (`FWP_ACTION_BLOCK`),从而中和 DNS 隧道外泄。 ### 2. 无锁遥测队列 在高 I/O 环境(例如勒索软件加密驱动器)中,传统的 `KSPIN_LOCK` 同步会导致严重的处理器争用。 - **内存分配**:驱动程序在 `DriverEntry` 期间初始化一个 `NPAGED_LOOKASIDE_LIST`。高频回调从此池分配事件缓冲区,保证恒定时间、无碎片的分配。 - **队列**:使用 `InterlockedPushEntrySList` 将事件推送到 `SLIST_HEADER`。用户模式服务通过 `IOCTL_TDS_GET_NEXT_EVENT` 使用 `InterlockedPopEntrySList` 检索它们。这完全消除了自旋等待。 ### 3. 内核异常处理 (Anti-Fuzzing) `TDSDispatchDeviceControl` 例程已针对用户模式模糊测试攻击进行加固。 - 结构化异常处理 (`__try / __except(EXCEPTION_EXECUTE_HANDLER)`) 包装所有 IRP 缓冲区访问。 - 对 `METHOD_NEITHER` I/O 严格执行 `ProbeForRead` 和 `ProbeForWrite`。 - 如果恶意进程发送损坏的指针或超大的缓冲区长度,内核会捕获 `STATUS_ACCESS_VIOLATION` 并优雅地使 IRP 失败,从而防止 Bug Check (BSOD)。 ### 4. 进程篡改保护 通过 `ObRegisterCallbacks` 实现对关键进程(例如 LSASS 和 TDS 用户模式服务)的保护。 - **签名验证**:`IsLsass()` 依赖于 `PsGetProcessSignatureLevel()`。它在比较进程路径之前要求 Microsoft 签名级别 (`>= 7`)。这挫败了简单的路径欺骗。 - **权限剥离**:针对受保护 PID 请求 `PROCESS_TERMINATE`、`PROCESS_VM_WRITE`、`PROCESS_SUSPEND_RESUME` 或 `PROCESS_CREATE_THREAD` 的句柄,其这些标志将被内核从 `DesiredAccess` 掩码中剥离。 ### 5. Minifilter 重入预防 为了防止无限递归死锁——即 EDR 拦截自己的日志写入——驱动程序实现了请求者感知。 - `TDSPreWriteCallback` 调用 `FltGetRequestorProcess()`。如果发起进程是 TDS 用户模式服务,则跳过 IRP (`FLT_PREOP_SUCCESS_NO_CALLBACK`)。 - 所有文件操作都使用 `FLTFL_OPERATION_REGISTRATION_SKIP_PAGING_IO` 标志,以避免与 Windows 内存管理器发生死锁。 ### 6. 用户模式内存扫描和 YARA `MemoryScanner` 类将 `libyara` 直接集成到 C++ 运行时中。 - 它遍历正在运行的进程的虚拟地址空间,专门针对具有 `PAGE_EXECUTE_READWRITE` 或 `PAGE_EXECUTE_READ` 保护的 `MEM_PRIVATE` 页面。 - **Direct Syscalls & Stack Pivoting**:扫描器在 `ntdll.dll` 边界之外静态搜索 `0x0F 0x05` (syscall) 指令,并使用 `NtQueryInformationThread` 验证当前堆栈指针是否位于线程环境块 (TEB) 定义的边界内。 ### 7. 自动化事件响应 (SOC Bot) `tools/soc/soc_bot.py` 脚本提供实时自动报告。 - 它对 `tds_threat_events.jsonl` 日志文件执行非阻塞的 `tail` 操作。 - 当 `HeuristicsEngine` 写入严重性为 `HIGH` 或 `CRITICAL` 的事件时,机器人会构造一个 Markdown 报告,并使用标准 HTTPS 请求将其推送到 GitHub Issues API。 - 该机器人严格依赖环境变量 (`GITHUB_TOKEN`, `TDS_LOG_PATH`),不包含任何硬编码的本地路径或凭据。
标签:AMSI绕过, C/C++, Conpot, EDR, ETW, GitHub Actions, HIPS, IPS, IP 地址批量处理, Minifilter, ObRegisterCallbacks, Python, Ring 0, Ring 3, Shannon Entropy, SOAR, UML, WFP, Windows Filtering Platform, Windows安全, YARA, 主机入侵检测, 事务性I/O, 云资产可视化, 元数据提取, 入侵防御, 内存扫描, 内核驱动, 启发式分析, 威胁检测, 威胁检测与响应, 性能优化, 文件系统监控, 无后门, 无锁队列, 检测绕过, 熵分析, 系统底层, 网络协议, 网络安全监控, 网络遥测, 脆弱性评估, 自动化响应, 自动笔记, 蓝屏防护, 进程保护, 逆向工具, 防火墙, 驱动开发