TiltedLunar123/triagelens

GitHub: TiltedLunar123/triagelens

TriageLens 是一款 SOC 日志分诊引擎,结合确定性规则检测与 AI 叙述生成,帮助安全分析师将原始日志快速转化为带 MITRE 映射和风险评分的分析报告。

Stars: 1 | Forks: 0

# TriageLens TriageLens 是一个真实的日志分析引擎,并在其之上叠加了 AI 层,而不是一个仅仅围绕 prompt 包装的聊天机器人。该引擎通过简单且可测试的代码完成检测工作:它解析日志,将活动映射到 MITRE ATT&CK,并对风险进行评分。AI 层将这些结构化的发现转化为可读的摘要、针对单个发现的注释以及确定优先级的后续步骤,就像 Tier 1 分析师撰写警报报告一样。 它开箱即用,**无需任何设置和 API key**,使用内置的基于规则的 provider,并可以通过**本地模型 (Ollama)** 或 **Claude** 升级以获得更丰富的分析。 ## 为什么开发这个项目 Tier 1 SOC 的工作主要是分诊:阅读警报,弄清楚发生了什么,决定其是否重要,并将其记录下来。TriageLens 端到端地模拟了这一闭环,并展示了推理过程,而不是将其隐藏在模型调用背后。结构化的检测是可审计的,MITRE 映射是明确的,AI 只负责添加描述性的文字。 ## 功能 - **多格式解析**,将 Windows Security (4688)、Sysmon (Event 1)、Linux SSH `auth.log` 和任意 JSON 标准化为统一的事件模型。 - **基于规则的检测**,用于识别常见的攻击者行为(编码的 PowerShell、恶意文档链、LOLBins、从 temp 目录执行、日志清除、SSH 暴力破解以及暴力破解后的失陷)。 - **MITRE ATT&CK 映射**,带有可点击的技术徽章,链接至 attack.mitre.org。 - **综合风险评分** (0-100) 以及整体的严重性评估。 - **可插拔的 AI provider**:一个无需设置的 demo provider,一个本地 Ollama provider(日志永远不会离开您的机器),以及一个通过 serverless 代理运行的 Claude provider。 - 内置**示例日志**,因此您一打开它就能生成报告。 ## 工作原理 ``` flowchart LR A[Raw logs] --> B[Format detection + parsers] B --> C[Normalized events] C --> D[Detection rules] D --> E[Findings + MITRE mapping] E --> F[Risk scoring] F --> G[AI provider: demo / Ollama / Claude] G --> H[Triage report] ``` 解析、检测和评分是确定性的,且与 provider 无关。只有最终的分析叙述来自所选的 AI provider,因此无论您选择哪个 provider,结构化的结果都是相同的。 ## 快速开始 ``` npm install npm run dev ``` 打开 Vite 打印的本地 URL。系统会预加载一条示例日志,只需点击 **Analyze** 即可。默认的 **Demo** provider 不需要 API key。 ## 分析 provider | Provider | 设置 | 数据离开本机 | 备注 | | --- | --- | --- | --- | | **Demo**(默认) | 无 | 否 | 基于规则的摘要和注释。随时可用。 | | **Ollama**(本地) | 安装 [Ollama](https://ollama.com),`ollama pull llama3.1`,在 Provider 设置中配置 URL/模型 | 否 | 私密、免费,在您的硬件上运行模型生成的分析。 | | **Claude**(云端) | 配置服务器 `ANTHROPIC_API_KEY` 或在 Provider 设置中提供 key;使用 `netlify dev` 运行 | 是 | 最高质量的分析叙述。通过服务器环境变量或应用内设置面板提供 key。 | ### 应用内 provider 设置 点击顶部的 **Provider setup** 即可配置 provider,无需编辑环境变量文件。设置将保存在您的浏览器中 (localStorage)。 - **Ollama**:设置 base URL 和模型,然后使用 **Test connection** 确认 Ollama 可访问且模型已拉取。 - **Claude**:根据需要粘贴 API key 并选择模型,或者将 key 留空以使用服务器端的 key。 ### 使用 Claude provider Claude 通过 serverless 函数 (`netlify/functions/analyze.mjs`) 运行,因此它需要在本地运行 `netlify dev` 或进行 Netlify 部署。有两种提供 key 的方式: - **服务器 key(推荐用于部署)。** 在环境中设置 `ANTHROPIC_API_KEY`。浏览器永远不会看到它。 cp .env.example .env # 将你的 ANTHROPIC_API_KEY 添加到 .env npm i -g netlify-cli netlify dev - **自带 key(方便进行共享演示)。** 在 Provider 设置中输入 key。它仅存储在您的浏览器中,并通过 HTTPS 转发到该函数,永远不会被提交到代码库中,因此其他人可以使用他们自己的 key 来尝试您的实时演示。 ## 支持的日志格式 | 格式 | 示例 | 如何被检测到 | | --- | --- | --- | | Windows Security JSON | 4688 进程创建 | `Provider` 包含 "Security-Auditing" 或 `EventID` 为 4688 | | Sysmon JSON | Event ID 1 进程创建 | `Provider` 包含 "Sysmon" | | Linux SSH `auth.log` | `Failed password ... from ` | syslog `sshd` 行 | | 通用 JSON | SIEM / 转发器导出 | 任何其他 JSON 对象或数组 | 粘贴单个对象或包含记录的数组。Windows 和 Sysmon 示例遵循常见的 `Get-WinEvent | ConvertTo-Json` 结构(包含 `Provider`、`EventID`、`Computer` 和 `EventData` 块)。 ## 检测规则和 MITRE ATT&CK 覆盖范围 | 规则 | 严重性 | 技术 | | --- | --- | --- | | 混淆或编码的 PowerShell | High | T1059.001, T1027 | | Office 应用程序生成子进程 | High | T1566.001, T1204.002 | | 执行了 LOLBins (Living-off-the-land binary) | Medium | T1218, T1105 | | 从临时目录执行的进程 | Medium | T1059 | | Windows 事件日志被清除 | High | T1070.001 | | SSH 暴力破解尝试 | High | T1110 | | 暴力破解活动后成功登录 | Critical | T1110, T1078 | 规则以经过单元测试的普通函数形式存在于 [`src/lib/detections/rules.ts`](src/lib/detections/rules.ts) 中。添加一个规则只需进行微小且独立的修改。 ## 项目结构 ``` src/ lib/ parsers/ format detection and per-source parsers detections/ detection rules and the rule runner mitre/ curated ATT&CK technique map llm/ provider interface + demo, ollama, anthropic risk.ts composite scoring analyze.ts the full parse -> detect -> score -> enrich pipeline components/ React UI (input, report, findings, badges) data/ built-in sample logs netlify/functions/analyze.mjs serverless proxy for the Claude provider ``` ## 脚本 ``` npm run dev # start the dev server npm run build # production build npm run typecheck # tsc --noEmit npm run lint # eslint npm test # vitest run ``` ## 路线图 - [ ] 原生 `.evtx` 二进制解析(目前需要将 EVTX 导出为 JSON) - [ ] 更多检测规则(计划任务、服务创建、DCSync、可疑的父进程链) - [ ] 导入 Sigma 规则,以便使用标准格式编写检测规则 - [ ] IOC 提取与丰富(hash、IP、domain) - [ ] 可导出的事件报告(Markdown / PDF) - [ ] 用于分析多个文件的批处理模式 ## 安全和范围说明 - TriageLens 是一个分析师辅助工具和学习项目,而不是生产级的 SIEM。它不能替代经过调优的检测内容或人工判断。 - 分析在 Demo 和 Ollama provider 的本地运行;不会向任何地方发送数据。Claude provider 会通过您自己的 serverless 函数将事件数据发送到 Anthropic API。 - 该工具仅读取和分析日志文本。它永远不会执行其解析的日志中的任何内容。 ## 许可证 [MIT](LICENSE)
标签:AI辅助分析, AI风险缓解, Cloudflare, DNS 反向解析, MITRE ATT&CK, React, SOC告警分诊, Syscalls, TypeScript, 子域名变形, 安全插件, 安全运营, 扫描框架, 知识库安全, 自动化攻击