Garzajulius21/iris

GitHub: Garzajulius21/iris

一款本地 AI 驱动的事件响应报告生成器,将原始取证数据转为 CISO 标准的 7 页 PDF。

Stars: 0 | Forks: 0

# IRIS — 事件响应情报摘要 ![状态](https://img.shields.io/badge/Status-Production--Ready-success?style=for-the-badge) ![技术栈](https://img.shields.io/badge/Stack-Python%20%2B%20React-blue?style=for-the-badge) ![AI](https://img.shields.io/badge/AI-Claude%20API-orange?style=for-the-badge) ![输入格式](https://img.shields.io/badge/Input-TXT%20%7C%20CSV%20%7C%20EML%20%7C%20DOCX-blueviolet?style=for-the-badge) ![输出](https://img.shields.io/badge/Output-7--Page%20CISO%20Brief-informational?style=for-the-badge) ![平台](https://img.shields.io/badge/Platform-macOS-lightgrey?style=for-the-badge) ![许可证](https://img.shields.io/badge/License-Private-red?style=for-the-badge) ## 概述 IRIS 是一个为 SOC 分析员和事件响应团队构建的本地 AI 工具。它摄取原始的、非结构化的事件数据——分析师笔记、端点告警、升级邮件、草稿报告——并生成一份结构化的专业 PDF 摘要,供 CISO 或高级管理层阅读。 遵循 **CrowdStrike、Mandiant 和 Unit 42** 的报告标准。报告采用倒金字塔结构:领导从上方的执行部分阅读,分析师参考下方的技术细节。 ## 报告结构 每次运行会生成一个包含 7 个部分的 PDF 摘要: | # | 章节 | 内容 | |---|---|---| | 1 | **执行摘要** | 叙事概述、攻击向量、业务影响 | | 2 | **事件快照** | 谁/什么/哪里/为什么/如何 网格,关键指标,检测与遏制状态 | | 3 | **攻击时间线** | 按时间排序的事件表格——已确认 ✓ 与疑似 ? | | 4 | **技术分析** | 按阶段分解:初始访问 → 执行 → 持久化 → 横向移动 → 渗出 | | 5 | **IOC 摘要** | 专用标签页——IP、域名、哈希、账号、文件路径,支持一键复制全部用于封禁 | | 6 | **影响评估** | 受影响系统、涉及数据、业务中断、合规风险 | | 7 | **建议** | 立即行动(0–30 天)与战略行动(30–90 天),指派给职能团队 | ## 输入格式 将任意组合的文件放入——IRIS 会自动处理多源摄取: | 格式 | 用途 | |---|---| | `.txt` | 分析师笔记、运行手册、调查日志 | | `.csv` | SIEM 导出、端点告警日志 | | `.eml` | SOC 升级邮件、通知线程 | | `.docx` | 草稿报告、IR 文档 | | 粘贴文本 | 直接输入或复制到界面的任何内容 | ## 技术栈 | 层 | 技术 | |---|---| | 前端 | React 19 + Vite 8 | | 后端 | Python 3 + Flask 3 | | AI 提取 | Anthropic Claude API — 6 个结构化工具调用 | | PDF 生成 | 纯 HTML/CSS 通过浏览器打印渲染 | | 缓存 | 本地 JSON 缓存,位于 `~/.iris_cache/` | ## 先决条件 开始前,请确保已安装: - **macOS** — 苹果硅或英特尔 - **Python 3.10+** → 验证:`python3 --version` - **Node.js 18+** → 验证:`node --version` - **Anthropic API 密钥** → 在 [console.anthropic.com](https://console.anthropic.com) 获取 ## 安装 ### 1. 克隆仓库 ``` git clone https://github.com/Garzajulius21/iris.git cd iris ``` ### 2. 配置 API 密钥 ``` cp backend/.env.example backend/.env ``` 打开 `backend/.env` 并添加你的密钥: ``` ANTHROPIC_API_KEY=sk-ant-... FLASK_PORT=3002 IRIS_MODEL=claude-opus-4-6 ``` ### 3. 使启动脚本可执行 ``` chmod +x start-iris.command ``` ### 4. 清除 macOS 安全隔离(仅首次) macOS 访达会阻止启动脚本和本地二进制文件首次运行。运行一次: ``` xattr -dr com.apple.quarantine /path/to/iris ``` ## 运行 IRIS 双击 **`start-iris.command`** 或从终端启动: ``` bash start-iris.command ``` 启动脚本会自动处理所有步骤: 1. 创建 Python 虚拟环境(仅首次运行) 2. 安装后端依赖项(仅首次运行,从 `requirements.txt`) 3. 安装前端依赖项(仅首次运行,通过 `npm install`) 4. 启动后端服务,地址为 `http://localhost:3002` 5. 启动前端服务,地址为 `http://localhost:5175` 6. 自动打开浏览器 按 `Ctrl+C` 干净地停止两个服务。 ## 使用方法 1. 打开 [http://localhost:5175](http://localhost:5175) 2. 将文件拖入上传区域或直接粘贴原始笔记 3. 点击 **生成报告** 4. IRIS 对 Claude 运行 6 次提取调用(30–60 秒) 5. 在浏览器中查看报告预览 6. 点击 **导出 PDF** 下载完成的摘要 **每次运行成本:** 约 $0.10–0.15。重复运行相同输入会命中本地缓存,不产生费用。 ## 项目结构 ``` iris/ ├── start-iris.command # One-click launcher (macOS) ├── backend/ │ ├── server.py # Flask API — port 3002 │ ├── requirements.txt # Python dependencies │ ├── .env # API key & config (not committed) │ ├── .env.example # Template for .env │ └── lib/ │ ├── extract.py # Claude API — 6 tool-use extraction calls │ ├── ingest.py # File parser (TXT, CSV, EML, DOCX) │ └── cache.py # Local JSON caching (~/.iris_cache/) ├── frontend/ │ ├── index.html │ ├── package.json │ └── src/ │ ├── App.jsx # Main application shell │ ├── components/ │ │ ├── UploadZone.jsx # File drop + paste input │ │ ├── ProcessingStatus.jsx # Live extraction progress │ │ ├── ReportPreview.jsx # In-browser report viewer │ │ └── ExportButton.jsx # PDF export trigger │ └── lib/ │ └── generateIrisPdf.js # Full 7-page PDF layout (HTML/CSS) └── sample-incident/ # Synthetic test data ├── analyst-notes.txt ├── endpoint-alerts.csv ├── soc-escalation-email.eml └── draft-incident-report.docx ``` ## 示例事件 `samples/` 文件夹包含用于测试的真实合成事件: | 文件 | 内容 | |---|---| | `analyst-notes.txt` | 从初始分类到遏制的完整调查日志 | | `endpoint-alerts.csv` | CrowdStrike 风格的端点检测导出 | | `soc-escalation-email.eml` | SOC 到事件响应的升级邮件线程 | | `draft-incident-report.docx` | 部分完成的草稿报告 | 一次性将四个文件全部放入 IRIS 以测试完整的多源提取运行。 ## 缓存机制 IRIS 将每次提取结果缓存为 `~/.iris_cache/` 中的 JSON 文件。缓存键由输入内容的哈希值派生——相同输入会复用缓存结果,不产生费用。 在修改 `extract.py` 中的提示后清除缓存: ``` rm ~/.iris_cache/*.json ``` ## 建议设计 建议始终指派给 **CISO 之下的职能团队**——SOC 负责人、IT 团队、网络工程、法务、人力资源、合规等。 CISO 阅读此报告以分配和跟踪工作,但不会被列为行动负责人。 ## 安全与隐私 | 关注点 | 详情 | |---|---| | 数据驻留 | 全部本地处理。仅 Claude API 调用离开你的机器。 | | 敏感数据 | 不要输入 PII、机密数据或客户记录,除非与 Anthropic 签订了适当的 DPA。 | | API 密钥 | 存储在 `backend/.env` 中,通过 `.gitignore` 排除,永不提交。 | | 服务器状态 | Flask 后端完全无状态——服务器端不保存任何内容。 | ## 故障排除 **`http proxy error: /api/health` 启动时报错** 后端未能启动。请检查终端输出。最常见原因:`backend/.env` 中缺少或无效的 `ANTHROPIC_API_KEY`。 **`start-iris.command` 被 macOS 阻止** ``` xattr -dr com.apple.quarantine /path/to/iris ``` **端口已被占用** ``` lsof -ti:3002 | xargs kill -9 lsof -ti:5175 | xargs kill -9 ``` **提取缓慢或失败** Claude API 调用在大输入时可能需要 30–60 秒。清除缓存后重试。验证你的 API 密钥是否有可用额度。 ## 许可证 私有——不得再分发。 *使用 Claude API 构建 · 遵循 CrowdStrike、Mandiant 和 Unit 42 报告标准*
标签:AI, CISO, Claude API, CSV, DOCX, EML, IR, meg, PDF生成, Python, React, SEO: AI安全工具, SEO: CISO简报, SEO: 事件响应报告, Syscalls, TXT, 人工智能, 企业安全, 信息安全, 威胁情报, 安全运营, 库, 应急响应, 开发者工具, 扫描框架, 数据转换, 文本处理, 文档生成, 无后门, 本地部署, 用户模式Hook绕过, 结构化报告, 网络资产管理, 自动化代码审查, 自定义脚本, 逆向工具