geezsecurity/Vigil-DFIR

GitHub: geezsecurity/Vigil-DFIR

一款自托管的 Windows 事件日志 (.evtx) DFIR 分诊工具,集 Sigma + YARA + 启发式检测、MITRE ATT&CK 映射、攻击链关联和一键报告于一体。

Stars: 0 | Forks: 0

# Vigil DFIR **专为 DFIR 打造的快速、自托管 Windows 事件日志 (.evtx) 分诊工具。** 加载一个案件,几秒钟内即可获得基于规则 + 启发式 + YARA 的检测结果、MITRE ATT&CK 覆盖率、重构的攻击链、风险排名的实体、合并的超级时间线、挖掘出的取证证据,以及一键生成的事件响应报告——全部在浏览器中完成。解析和检测均在服务端运行,因此几百 MB 的日志绝不会卡死你的标签页。 ![Vigil DFIR dashboard](https://static.pigsec.cn/wp-content/uploads/repos/cas/d6/d617d050cb9c6f5d685a7ee430443c65814d5676a20f5efd712958de89fbc583.png) ## 核心亮点 **检测引擎** (`engine.cjs`,也可在浏览器中离线运行) - **3 个层级:** 行为启发式(默认开启)+ Sigma 子集(包含 Windows 字段映射、修饰符和布尔条件)+ YARA-lite 字符串/正则/十六进制引擎。 - **Aho-Corasick 预筛** 使得数千条 Sigma 规则能够快速扫描海量日志。 - **Sigma 管道聚合** (`count` / distinct `count(field)` / `sum` / `min` / `max` / `avg`, `by `, sliding `timeframe`) 作为窗口化关联过程运行 - 适用于暴力破解、密码喷射、用户枚举、Kerberoasting 风格的阈值检测。 - 包含针对日志清除、暴力破解/密码喷射、编码的 PowerShell、新建服务、外部 RDP、账户和特权组更改、Kerberoasting、**DCSync、LSASS 转储、PsExec、overpass-the-hash 和恶意计划任务**的启发式检测。 - **自带规则** - **⚑ 规则**面板支持通过四种方式加载检测规则:服务器在首次运行时在线拉取精选的 **SigmaHQ** 规则集;直接从 GitHub 快速加载更多 **SigmaHQ 类别/文件夹**;**粘贴** Sigma 或 YARA 文本;通过 URL 获取单个规则;或者**上传你自己的规则文件夹**(例如 Hayabusa 的 `rules/` 树或你自己的 `.yml` / `.yar` 文件)。所有内容都保存在服务端的 `data/rules/`(`sigma/` + `yara/`)目录下,**在重启后依然存在,并在所有案件间共享**。 - **设计为累加机制** - 加载更多规则**绝不会移除**你已有的规则;计数器只会增加。只有当你明确点击*清除规则*时,规则才会被清空。 **调查视图** - **MITRE ATT&CK** - 覆盖矩阵(战术 × 技术),点击某项技术即可过滤网格,并支持一键导出 **ATT&CK Navigator layer**。 - **攻击链关联** - 将每个主机的检测结果按时间分组的突发 bursts 进行聚类,并按杀伤链进展命名(`Execution → Persistence → Defense Evasion → …`)。 - **实体风险评分** - 根据严重程度 + 技术多样性对用户/主机/IP 进行排名(带有噪声抑制),每个实体都会打开一个完整的**配置档案**(包含你可以遍历的关联实体、登录统计、技术和时间线)。 - **进程树重建** - 利用 Sysmon 的 `ProcessGuid` / `ParentProcessGuid`(EID 1,结束时间取自 EID 5)重建进程谱系,生成一个可交互的折叠树。支持展开/全部折叠、实时镜像/命令/PID 搜索、*仅显示检测结果* 筛选器,并显示每个进程的运行时间和 PID,以及未捕获父进程的提示;包含检测的分支会被高亮显示,点击每个节点即可打开其事件。 - **登录会话重建** - 通过 `LogonId` 将 4624 登录事件与其 4634/4647 注销事件配对,生成一个可排序、可筛选的会话表(包含解码后的登录类型、源 IP/工作站、持续时间、RDP + 外部源标志,以及仍处于活动状态的会话)。 - **横向移动图** - 一个可交互、可拖拽的节点-连线图,展示源自远程登录(4624 类型 3/10)、显式凭据(4648)、NTLM(4776)、RDP(1149)和共享访问(5140/5145)的主机↔主机 / IP→主机 移动轨迹;连线按技术着色,检测路径会被高亮显示,点击节点可联动切换网格视图。 - **监视列表** - 两种模式。**案件中观察到的** 自动提取日志中存在的所有 **IP / 哈希 / 域名**(IP 来自地址字段,哈希来自 Sysmon 的 `Hashes`,域名来自 DNS 查询),支持按类型筛选并显示计数、主机以及首次/最后一次出现的时间。**我的指示器** 允许你粘贴或上传已知的恶意 IOC(可在多个案件中复用),并扫描案件以查找匹配项 - IP/哈希/域名基于精确 token 匹配(避免子字符串造成的误报),文件/用户则通过 Aho-Corasick 过程进行匹配。 - **威胁情报富化** - 在 **⚙ 设置** 中配置 API key 后,可以将任何观察到的或匹配到的 IP/哈希提交给 **AbuseIPDB**(滥用评分、ISP、Tor 节点)和 **VirusTotal**(恶意引擎比例、文件名/类型)进行查验 - 每行只需点击一次,或选择“检查所有显示项”(对免费层级进行限流)。内联显示恶意/可疑/正常的判定结果。Key 保存在服务端(被 git 忽略);结果缓存 24 小时。完全由用户自主选择是否开启。 - **稀有性与堆叠分析** - 长尾频率分析,用于发现规则遗漏的内容:去重后的**进程**、**父进程 → 子进程**对(如 Office/Web 服务器 → shell 的异常谱系会被标记)、**登录源**(用户 × 主机 × 类型 × 来源)、**服务**,以及**可执行文件哈希**(每一个都支持一键使用 **VirusTotal** 检查,以确认 `.exe` 是否为已知恶意软件) - 所有项按稀有度从高到低排序,带有*仅显示稀有项*筛选器、主机、首次/最后一次出现时间,以及网格联动功能。 - **超级时间线** - 全日志活动直方图 + 合并的、可筛选的重要事件流(检测结果、登录、RDP、横向移动等),支持点击缩放时间窗口。 - **证据** - 挖掘出的取证工件(账户、服务、任务、LSASS 访问、共享访问、Defender 命中记录、**配对的登录会话**、**自动解码的 PowerShell `-enc`**、IOC)。 - **案件处理** - 将分诊转化为案件档案:使用**判定**(真/假阳性、可疑、良性、已审查)加上**标签**和**备注**对任何事件进行标记(在网格中,带注释的行会有彩色的边缘标记),并在 📝 案件笔记 选项卡中维护**案件叙述** + **调查发现**列表。所有内容按案件持久化保存,并整合到 IR 报告中。 - **一键 IR 报告** - 导出完整的分诊摘要 - 现已包含**分析师评估**(叙述、发现以及真阳性/可疑判定) - 支持导出为 **HTML,或服务端渲染的真实 PDF / DOCX**(正规的分页文档,直接下载)。 - **✦ AI 支持** - 自带模型(**Claude**、**ChatGPT** 或 **Gemini** - 在 ⚙ 设置中选择一个并粘贴其 key)。每个部分中都有一个上下文感知的 **AI 支持** 按钮,用于解释当前正在查看的内容;在 **Dashboard** 上,它会叙述整个案件*发生了什么*;在**案件笔记**中,它会直接将简洁的事件摘要草拟到报告中;而在事件弹窗中,它会解释单条记录。调用过程在**服务端**运行(key 保留在服务端,永远不会出现在浏览器中)。 **性能与用户体验** - 恒定内存流式 `.evtx` 解析器(可处理数 GB 大小的文件)。 - **基于磁盘的 SQLite 事件索引 (FTS5)** → 支持 搜索/筛选/排序 + 真正的 `LIMIT/OFFSET` 分页,可超越 RAM 限制扩展至 1000 万以上事件(基于 Node 内置的 `node:sqlite` 构建,因此无需原生构建步骤)。自由文本通过 FTS5 进行 token/前缀搜索,对于 IP/路径/哈希片段则提供精确的子字符串回退支持。 - 滚动获取网格:浏览器仅保存可见的数据行。 - **多案件工作区** - 每个案件都有自己独立的目录 + 索引;可从工具栏创建、切换和删除案件,而不会丢失其他案件的数据。 - **证据保管链** - 每个摄入的文件在上传时都会进行 SHA-256 哈希计算,并记录其大小、类型和摄入时间。 - 专门的 Firewall 和 VPN 区域;多文件案件管理;标记功能;刷新后依然保持会话。 ## 截图展示 **检测结果 - 严重程度、攻击链关联、MITRE ATT&CK 覆盖率及风险排名实体** ![Detections](https://static.pigsec.cn/wp-content/uploads/repos/cas/13/13eb42345e21b87ab90c95adab10a81def00c1c18dbb1f720a362ba095f90bed.png) | 实体风险档案 | 超级时间线 | |:---:|:---:| | ![Entity profile](https://static.pigsec.cn/wp-content/uploads/repos/cas/a5/a5147a8b3aab02dbe70fd97f465efdca0867af2e0073ad5251475d4f488e4cbd.png) | ![Super-timeline](https://static.pigsec.cn/wp-content/uploads/repos/cas/83/83c20d61f0af2456ba466622dcb68e3f61d143928e562b42c12637cfab003263.png) | | **取证证据** | **稀有度/长尾堆叠** | | ![Evidence](https://static.pigsec.cn/wp-content/uploads/repos/cas/69/6912dd4603eaf5548dab4bdf42dee891e5ee67fa70b53b3c8e8c0a78562ed0e8.png) | ![Rarity](https://static.pigsec.cn/wp-content/uploads/repos/cas/d2/d244da3f3b974936e0b7b60a45f7ebc54d56bbc6e64a38117c411159da439eea.png) | | **事件网格 + 即时搜索** | **Firewall / VPN + 分析师判定** | | ![Events](https://static.pigsec.cn/wp-content/uploads/repos/cas/5a/5a921d639c91ab329a5a1ca7ddfebf9b800d47f2ed793d8806a1ecf8a1a82615.png) | ![Firewall](https://static.pigsec.cn/wp-content/uploads/repos/cas/93/93e4393e055f3b0181f42e86b2ac91047bd6a9b5e261124f89612872add6e1d8.png) | ## 快速开始 ### npm ``` cd server npm install npm start # → Vigil DFIR 服务器位于 http://localhost:8742 ``` ### Docker ``` cd server docker compose up -d --build # → http://localhost:8742 (cases 将保留在 vigil-data volume 中) docker compose down ``` 打开 `http://localhost:8742/`,拖入 `.evtx` / JSONL 文件(或点击**加载示例**),UI 会自动切换到服务器模式。 ## 配置说明 | 环境变量 | 默认值 | 含意 | |--------------------|-------------|----------------------------------------------------| | `PORT` | `8742` | 监听端口 | | `EVTX_DATA` | `./data` | 日志/规则/检测结果的存储路径 | | `EVTX_BROWSE_CAP` | `1000000` | 在开启滚动获取前,流式传输到网格的事件数 | | `EVTX_DETECT_CAP` | `500000` | 每次检测过程扫描的最大事件数(受限于 RAM) | | `EVTX_RECORD_CACHE`| `500000` | 在回退到流式传输前,保存在 RAM 中的已解析事件数| 检测引擎一次最多可将 `EVTX_DETECT_CAP` 个事件加载到内存中,因此这是内存(RAM)的主要瓶颈。默认值使服务器保持在 Docker 堆内存上限之下(在 `Dockerfile` 中配置了 `NODE_OPTIONS=--max-old-space-size`,默认为 3 GB);超过这些上限时,浏览网格、搜索和分析功能仍可通过磁盘流继续工作,检测程序将扫描前 `EVTX_DETECT_CAP` 个事件(报告会将结果标记为截断)。只有在你同时提高堆内存上限且有足够 RAM 的情况下,才建议提高这些上限。在 Docker 中,请在 `docker-compose.yml` 的 `environment:` 下进行设置。 ## 测试 一个零依赖的回归测试套件覆盖了检测引擎(启发式规则、Sigma 字段修饰符 + 条件、YARA-lite、Aho-Corasick 索引一致性、ATT&CK 映射、实体评分、攻击链关联): ``` cd server npm test ``` ## 架构 ``` server/ server.mjs Express backend: streaming .evtx parser, /api/* endpoints, multi-case management, server-side detection + analytics store.mjs SQLite layer (node:sqlite): case catalog, chain of custody, per-case event index + FTS5 search engine.cjs Detection engine (heuristics + Sigma + YARA + ATT&CK + correlation) public/index.html Single-file UI ("Vigil DFIR") - engine is inlined for offline use test/ engine regression harness (npm test) Dockerfile Alpine image (node:22, pure-JS, no native build) docker-compose.yml data/ catalog.db cases list + SHA-256 chain of custody cases// events.jsonl (bodies) · events.idx · index.db (SQLite+FTS) · meta/dets/flags ``` 关键 endpoint:`/api/upload`、`/api/search`(SQLite/FTS,支持分页)、`/api/bodies`(滚动获取)、`/api/detect`、`/api/detections`、`/api/dashboard`、`/api/evidence`、`/api/entity`、`/api/timeline`、`/api/cat`(Firewall/VPN),以及案件管理(`/api/cases`、`POST /api/cases`、`POST /api/cases/:id/activate`、`DELETE /api/cases/:id`)。 ## 安全说明 - 服务器**没有身份验证** - 仅在受信任的主机/网络上运行,切勿将其直接暴露在互联网上。 - 可选的 **AI 支持** 功能会将所选数据(一个事件、检测结果或案件概述)的摘要发送给你配置的 AI 提供商(**Claude / ChatGPT / Gemini**)。Key 保存在服务端被 git 忽略的 `data/settings.json` 文件中(或通过 `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` / `GEMINI_KEY` 环境变量提供),并且永远不会返回给浏览器。如果你有不能对外共享的数据,请勿使用此功能。 - **威胁情报富化** 功能是可选项,仅在你点击某个指示器时才会运行。它会将该单一的 IP/哈希发送给 **AbuseIPDB / VirusTotal**。API key 保存在服务端被 git 忽略的 `data/settings.json` 文件中(或通过 `ABUSEIPDB_API_KEY` / `VIRUSTOTAL_API_KEY` 环境变量提供),并且永远不会返回给浏览器。 - **案件数据、监视列表和 API key 永远不会被提交** - `data/` 目录已被 git 忽略。请将真实的突发事件数据排除在版本控制之外。 ## 状态 正在积极开发中。检测引擎、ATT&CK、关联分析、实体配置档案、超级时间线、证据和报告功能均已实现,并由测试套件覆盖。Firewall/VPN 部分可显示导入的日志;专门的 Firewall/VPN 分析功能已在路线图中。 ## 许可证 Vigil DFIR 是免费软件,基于 **GNU General Public License v3.0** (GPL-3.0) 许可证授权。你可以根据该许可的条款使用、学习、分享和修改它;有关完整文本,请参阅 [`LICENSE`](LICENSE) 文件。 Copyright (C) 2026 geezsecurity.
标签:IP 地址批量处理, MITM代理, PE 加载器, URL发现, Windows事件日志, XXE攻击, YARA, 云资产可视化, 后端开发, 安全检测, 库, 应急响应, 模拟器, 请求拦截