Garzajulius21/iris
GitHub: Garzajulius21/iris
一款本地 AI 驱动的事件响应报告生成器,将原始取证数据转为 CISO 标准的 7 页 PDF。
Stars: 0 | Forks: 0
# IRIS — 事件响应情报摘要







## 概述
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绕过, 结构化报告, 网络资产管理, 自动化代码审查, 自定义脚本, 逆向工具