TITAN-Softwork-Solutions/Vigil
GitHub: TITAN-Softwork-Solutions/Vigil
基于 Windows Kernel ETW 的蓝队遥测引擎,通过确定性策略检测不受信任进程对受保护文件系统资源的访问。
Stars: 3 | Forks: 1
TITAN Vigil
Kernel ETW 蓝队遥测引擎
使用低延迟的 Kernel ETW 检测和确定性策略评估,检测不受信任的进程对受保护文件系统资源的访问。
## 项目文档 - `README.md`:运行时概述、配置和操作 - `CONTRIBUTING.md`:开发和 PR 工作流 ## 仓库布局 - `Vigil/src/main.rs`:入口点,负责连接配置、日志记录、工作线程池、ETW 会话生命周期 - `Vigil/src/runtime/`:检测引擎状态和警报编排 - `Vigil/src/telemetry/`:Kernel ETW 会话管理和可信句柄发现 - `Vigil/src/trust/`:签名者验证和进程元数据辅助工具 - `Vigil/src/output/`:警报 schema、日志接收器 (JSONL/CEF/Sigma)、端点转发、toast UX - `Vigil/src/support/`:配置/CLI 解析和启动诊断 - `tests/data_access_test/`:用于验证的合成文件系统访问生成器 ## 检测内容 引擎监控内核级文件 I/O 事件并在以下情况发出警报: * **不受信任或未签名的进程** * 尝试**访问已配置的受保护路径** * 包括通过**从受信任进程复制句柄**进行的访问 典型的受保护目标包括(可配置): * 浏览器配置文件数据(cookies、登录数据库) * 存储在磁盘上的应用程序机密 * Token 存储(例如基于 LevelDB 的应用) * 您定义的任何敏感文件系统位置 ## 工作原理 * 启动 **Kernel ETW 用户追踪**(进程 + 文件提供程序) * 跟踪进程启动事件并缓存进程元数据 * 通过 ETW 文件事件跟踪文件名映射 * 使用确定性索引查找将访问路径与受保护规则进行匹配 * 通过以下方式评估进程信任度: * Authenticode 签名验证 * 可选的证书吊销检查(`security.revocation_mode = "chain"`) * 已知受损签名者证书指纹的显式黑名单 * 可选的签名者白名单 * 可选的遗留进程名白名单回退 * 检测可疑访问模式,包括: * 不受信任进程的直接访问 * 通过最初由受信任进程打开的文件对象进行访问 * 通过以下方式发出警报: * JSONL / text / CEF / Sigma-JSON 日志接收器 * 可选的控制台输出 * Windows toast 通知(限速) * 通过 UDP/TCP 的可选端点转发(功能标志控制) * 使用有界的 crossbeam 通道和工作线程进行接收器处理/背压 ## 要求 * Windows * 管理员权限(Kernel ETW 会话所需) * Rust 工具链(用于构建) ## 配置 配置通过 TOML 文件提供。 核心概念: * **受保护规则** 用于敏感资源的基于子字符串的路径匹配。 * **白名单** * 证书签名者主题片段 * 遗留进程名后缀 * **安全策略** * 签名要求开关 * 吊销模式 * 受损证书指纹黑名单 * 遗留回退策略 * 可选的操作员信任 API(模式:wintrust-only, api-only, prefer-api, prefer-wintrust) * **并发策略** * 工作线程数 * 用于突发控制的通道容量 * **端点警报转发** * 功能标志(`endpoint_alert.enabled`) * UDP/TCP 端点数据包转发 * **SIEM 和 Sigma** * 多格式输出(`jsonl`, `text`, `cef`, `sigma_json`) * 可选的在启动时生成 Sigma 规则制品 * **常规设置** * 警报抑制窗口 * 静默模式 * JSONL 与文本日志记录 示例(简化版): ``` [general] quiet = false suppress_ms = 1500 [security] require_signature = true require_signer_allowlist = true allow_legacy_process_name_fallback = false revocation_mode = "chain" denylisted_cert_thumbprints = [] [concurrency] worker_threads = 4 alert_channel_capacity = 8192 [endpoint_alert] enabled = false endpoint = "127.0.0.1:9000" transport = "udp" connect_timeout_ms = 1500 retries = 2 [siem] enabled = true formats = ["jsonl", "cef", "sigma_json"] generate_sigma_rules = true sigma_rules_file = "sigma_rules.yml" [watch] protected = [ { name = "Browser Cookies", substring = "cookies" }, { name = "Token Store", substring = "leveldb" } ] [allowlist] signer_subject_allow = ["microsoft", "google"] process_name_allow = ["chrome.exe", "msedge.exe"] [trust_api] enabled = false endpoint = "https://trust.example.com/verify" api_key = "Bearer token-here" timeout_ms = 2500 # 模式: wintrust_only | api_only | prefer_api | prefer_wintrust mode = "prefer_api" ``` ## 运行 ``` cargo run --release -- --config config.toml ``` 详细输出: ``` cargo run --release -- --config config.toml --verbose ``` 日志写入位置: ``` %LOCALAPPDATA%\TITAN-Vigil-CE\logs ``` 当 `siem.generate_sigma_rules = true` 时,同一个日志目录(或配置的绝对路径)中也会生成 Sigma 规则制品。 ### 功能标志 - `remote_endpoint`(可选启用):构建并启用 UDP/TCP 远程警报转发。示例: `cargo run --release --features remote_endpoint -- --config config.toml` - `trust_api`(可选启用):调用操作员 HTTP 信任 API 来决定签名者信任度,可选择替换 WinTrust。示例: `cargo run --release --features trust_api -- --config config.toml` ### 测试 - 核心套件:`cargo test` - 远程端点套件(可选启用):`cargo test --features remote_endpoint -- output::endpoint` - 信任 API 套件(可选启用):`cargo test --features trust_api -- trust::api` ## 警报语义 每个警报包括: * 时间戳 * PID * 进程映像路径 * 目标文件路径 * 受保护规则名称 * ETW 事件 ID * 警报类型(原因) * 人类可读的备注 警报经过**去重和限速**处理,以避免风暴。 ## 威胁模型契合度 此工具适用于: * 基于主机的检测 * 可疑进程发现 * 后渗透可视化 * 蓝队遥测丰富标签:AMSI绕过, HTTP工具, Python安全, Rust, 内核ETW, 可视化界面, 威胁检测, 文件监控, 网络流量审计, 通知系统