MVulcansTrace/VulcansTrace-Web

GitHub: MVulcansTrace/VulcansTrace-Web

一款零构建、纯浏览器端的防火墙日志威胁检测与网络取证分析工具,内置十种 MITRE ATT&CK 映射检测器和 DuckDB SQL 引擎,支持本地优先的即时日志分析与会报级演示文稿生成。

Stars: 0 | Forks: 0

# VulcansTrace-Web [![Deploy GitHub Pages](https://static.pigsec.cn/wp-content/uploads/repos/cas/56/56e27c6693757dc076d42c29835ebf032f2b2002645c425ae6a400e34f00562d.svg)](https://github.com/MVulcansTrace/VulcansTrace-Web/actions/workflows/deploy-pages.yml) [![实时演示](https://img.shields.io/badge/demo-GitHub%20Pages-2ea44f)](https://mvulcanstrace.github.io/VulcansTrace-Web/) [![许可证](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE) [![Node](https://img.shields.io/badge/node-%3E%3D20-339933)](package.json) [![Vanilla JS](https://img.shields.io/badge/frontend-vanilla%20JS-f7df1e)](components/main.js) [![DuckDB WASM](https://img.shields.io/badge/sql-DuckDB%20WASM-fff000)](vendor/duckdb/duckdb-esm.js) 基于浏览器的威胁检测平台。粘贴防火墙日志即可获取即时分析 —— 包含 10 个检测徽章、DuckDB SQL 引擎、自动化证据打包,以及一个适合在会议室展示的演示文稿。无需框架,无需构建步骤,在浏览器中进行本地优先分析。 旨在展示应用型网络安全知识:检测逻辑、MITRE ATT&CK 映射、网络取证和证据链处理。 ![演示 —— 粘贴日志,即时检测](https://raw.githubusercontent.com/MVulcansTrace/VulcansTrace-Web/main/samples/vt-demo-fullres.gif) ## 本地运行 无需构建步骤,也没有框架。签入的应用资源可以直接在本地开发服务器上运行。 ``` git clone cd VulcansTrace-Web node tools/serve.mjs ``` 然后在浏览器中打开 `http://localhost:7071`。仅本地开发服务器需要 [Node.js](https://nodejs.org/) —— 应用本身是纯 HTML/JS/CSS。 首次启动时,系统会提示您创建一个工作区(调查案件)。您可以随意命名,然后粘贴日志或运行“引导演示”以查看实际检测效果。 ## GitHub Pages 公共站点通过 GitHub Actions 部署至: ``` https://mvulcanstrace.github.io/VulcansTrace-Web/ ``` 每次推送到 `main` 分支时,都会发布来自 `index.html`、`assets`、`components`、`samples`、`styles` 和 `vendor` 中签入的浏览器资源。不涉及任何构建步骤。 ## 检测能力 | 检测器 | MITRE ATT&CK 技术 | 标记内容 | |---|---|---| | **Scanner** | T1595 Reconnaissance | 探测多个端口的源 IP | | **Flooder** | T1498 Denial of Service | 来自单一来源的大量 DROP 活动 | | **Egress Anomaly** | T1048 Exfiltration Over Alt Protocol | 异常的出站目标数量或流量 | | **Lateral Movement** | T1021 Remote Services | 内部主机在管理端口上访问多个内部目标 | | **Beacon** | T1071 Application Layer Protocol | 对相同目标:端口的周期性连接,且抖动极低(C2 模式) | | **Exfiltration** | T1048 Exfiltration Over Alt Protocol | 出站字节数超过阈值 | | **Brute Force** | T1110 Brute Force | 在滑动窗口内对管理端口(SSH、RDP、SMB)的快速重复连接 | | **Compromised Host** | 状态标签(无直接 ATT&CK 技术) | 交叉引用:被标记为暴力破解/扫描器目标,且同时表现出站活动的主机 | | **Attack Chain** | T1190 Exploit Public-Facing Application | 在链窗口内跨文件,在同一端口上先 DROP 后 ALLOW | | **Threat Intel** | 证据标签(无直接 ATT&CK 技术) | IP 与手动加载的已知恶意 IOC 列表匹配 | ### 敏感度配置 三种配置用于控制检测敏感度: - **高** —— 标记更多活动,阈值更低。能捕获隐蔽攻击,但在繁忙网络中可能会产生误报。 - **中** —— 平衡(默认)。为演示清晰度进行了调优。 - **低** —— 阈值更高。减少高流量生产日志中的噪音。 ## 支持的日志格式 | 格式 | 解析器 | 备注 | |---|---|---| | **Windows 防火墙** | `pfirewall.log` 解析器 | 同时处理简化版(8字段)和原生版(17列)格式。验证操作枚举、协议、IPv4/IPv6 格式地址以及端口范围。网络角色/风险分析以 IPv4 为主;非回环 IPv6 行可被解析,但在分析期间会被标记为无效。 | | **AWS VPC Flow** | VPC Flow 解析器 | 包含 AWS 账户 ID 和 ENI 前缀检测的 14+ 字段格式。 | | **AWS CloudTrail** | CloudTrail JSON 解析器 | 解析 API 审计事件。存储在 DuckDB 中以供 SQL 查询。不参与网络流风险评分(根据设计 —— CloudTrail 是 API 审计,而非网络流)。 | | **通用 W3C** | 强化的后备解析器 | 捕获与专用解析器不匹配的结构化日志。至少需要 6 个字段,验证操作、IP 和端口。 | 解析器会在粘贴时自动检测格式。无需配置。 ## 架构 - **纯 Vanilla JS ESM** —— 无框架,无构建步骤。每个组件都是一个导出 ES module 的 JS 类;DuckDB WASM 是唯一的 npm 依赖项,其浏览器资源被 vendored 在 `vendor/duckdb` 下。 - **本地优先分析** —— 默认的解析、检测、SQL、证据生成和演示均在浏览器中运行。无需 API 密钥或云服务。IndexedDB 用于存储工作区、数据集、查询、快照和记录。 - **DuckDB WASM** —— 用于临时日志追踪的浏览器内 SQL 引擎。针对内存中的 `flows`、`cloudtrail` 和 `datasets` 表,使用完整的 SQL 查询解析后的数据。 - **24 个测试文件中的 83 个单元测试** —— 涵盖解析器、检测器、MITRE 映射、代理技能、证据生成、自测。 - **演示文稿** —— 根据分析状态确定性地生成 6 页适合在会议室展示的输出(概述、快照、分流、差异分析、假设、修复方案)。 ## 阈值调优说明 VulcansTrace-Web 是一款**演示工具**,而非生产级 SIEM。检测器阈值的调优旨在保证清晰度和教育价值,并非为了在实时的企业网络中部署。 具体注意事项: - **Egress 阈值**(中等:6 个唯一目标,5 MB 字节)非常严格,繁忙的工作站或代理服务器可能会触发误报。在生产环境中,需要根据网络基线进行校准。 - **Exfil 与 Egress 重叠** —— 两者都使用出站字节/目标计数,因此真实的 Exfiltration 事件通常会同时触发这两个徽章。生产级工具会应用白名单和基线偏差,而不是固定的阈值。 - **Beacon 检测** 要求至少有 60 秒的跨度。这能正确过滤掉突发流量(正常浏览),但如果捕获窗口较短,可能会漏掉间隔超过 5 分钟的慢速 C2 通道。 - **Brute force 检测** 使用滑动窗口(中等:在管理端口上 30 秒内发生 5 次事件)。这适用于 SSH/RDP 暴力破解,但无法检测到缓慢的密码喷射攻击(数小时内每分钟 1 次尝试)。 - **Compromised host 检测** 会将暴力破解/扫描器目标与来自受攻击主机的出站活动进行交叉引用。它无法捕获这些目标注册表之外的攻击向量(例如网络钓鱼、漏洞利用工具包)引发的受损主机。 - **`rankRiskProfiles` 最多限制为 50 台主机。** 在包含数百个被标记 IP 的数据集中,排名 50 之后的主机将被排除在风险排名之外。这是有意为之,以保持 UI 和演示文稿的可读性。 低/中/高配置系统允许用户调整敏感度,但在真实环境中部署时,需要对每个网段进行统计基线分析,而不是依赖静态阈值。 ## 技术栈 | 层级 | 技术 | |---|---| | 前端 | Vanilla JavaScript (ES Modules), HTML5, CSS3 | | SQL 引擎 | DuckDB WASM (浏览器内) | | 存储 | IndexedDB (工作区、数据集、快照、记录) | | 服务器 | Node.js 本地开发服务器;可选的 localhost API 演示服务器 (`npm run dev:api`) | | 测试 | Node.js 内置测试运行器 | | 许可证 | Apache 2.0 |
标签:AMSI绕过, DuckDB, IP 地址批量处理, MITM代理, Vanilla JS, 威胁检测, 纯前端, 自定义脚本