CuriosidadesDeHackers/IRISEvidenceIngestor

GitHub: CuriosidadesDeHackers/IRISEvidenceIngestor

面向事件响应团队的取证证据摄取与 BEC 关联后端,将原始证据转化为经分析师审核的结构化调查发现并同步至 DFIR-IRIS。

Stars: 0 | Forks: 1

IRIS Evidence Ingestor banner

IRIS Evidence Ingestor logo

IRIS Evidence Ingestor

取证证据摄取、BEC 关联以及分析师审核通过的 DFIR-IRIS 同步。

Backend Python Database Workers IRIS

## 功能说明 **IRIS Evidence Ingestor** 将原始的事件证据转化为可供 DFIR 和 SOC 团队使用的结构化调查材料。它会保留原件、对证据进行哈希计算、从电子邮件和云日志中提取事件、关联 BEC 模式、构建时间轴,并仅将分析师审核通过的调查结果同步到 DFIR-IRIS。 该工具专为注重可追溯性的工作流程而构建:每一个案例都可以从原始证据追踪到已解析的事件、调查发现、IOC、时间轴条目以及远程 IRIS 同步记录。 ## 操作流程 ``` Evidence originals | v Forensic intake + SHA256 hashing | v Format-aware parsing + normalization | v BEC / CEO-fraud correlation | v Findings, IOC, conversations and timeline | v Manual analyst review | v Approved sync to DFIR-IRIS ``` ## 核心功能 | 领域 | 功能 | | --- | --- | | 取证摄取 | 保留原件,计算 SHA256 哈希值,存储清单和案例哈希列表。 | | 安全提取 | 处理 ZIP 解压,并带有递归、成员数量、大小和压缩比限制。 | | 邮件解析 | 提取标头、线程元数据、收件人、接收跳转信息、URL、IBAN、附件及其哈希值。 | | 日志标准化 | 检测并标准化 Okta、Entra ID 登录、Microsoft 365 审计、Purview eDiscovery 和 Exchange 追踪记录。 | | BEC 关联 | 检测相似域名、Reply-To 更改、线程中断、新增 IBAN、异常登录、MFA 问题、邮箱规则、转发和附件替换。 | | 审核工作流 | 调查发现、IOC 和时间轴事件将保持草稿/待定状态,直到分析师批准或拒绝它们。 | | IRIS 同步 | 将批准的材料推送到 DFIR-IRIS,并带有稳定的 `external_ref` 值和本地幂等性账本。 | ## 支持的输入格式 | 格式 | 备注 | | --- | --- | | `EML` | 原生邮件解析和丰富的标头提取。 | | `MSG` | 通过 `extract-msg` 解析。 | | `PST` | 通过 `readpst` / `pst-utils` 解析。 | | `CSV` | 支持流式处理的表格数据摄取。 | | `JSON` / `JSONL` | 支持数组和 JSONL 样式记录的流式处理。 | | `XML` | 结构化事件提取。 | | `XLSX` | 在适用情况下进行流式工作簿读取。 | | `ZIP` | 带有防 zip 炸弹控制的安全递归解压。 | ## 调查对象 - 案例 - 证据文件 - 处理任务 - 事件 - 调查发现 - 指标 / IOC - 时间轴事件 - 对话 - 消息附件 - IRIS 同步账本记录 ## 技术栈 | 层级 | 技术 | | --- | --- | | API | FastAPI | | ORM | SQLAlchemy | | 数据库迁移 | Alembic | | Worker | Celery | | 队列 / broker | Redis | | 数据库 | PostgreSQL | | 运行时 | Python 3.12+ | | 打包 | Docker / Docker Compose | | IRIS 集成 | 远程 DFIR-IRIS API 客户端 | ## 快速开始 ``` cp .env.example .env ``` 为你的 IRIS 实例、数据库和存储路径编辑环境变量: ``` IRIS_API_URL=https://iris.local IRIS_API_KEY=change-me DATABASE_URL=postgresql+psycopg://postgres:postgres@db:5432/iris_evidence_ingestor REDIS_URL=redis://redis:6379/0 STORAGE_ROOT=/evidencias ``` 启动技术栈: ``` docker compose up --build ``` 运行数据库迁移: ``` alembic upgrade head ``` 运行测试: ``` python -m pytest -q tests -p no:cacheprovider ``` ## 主要 Endpoint | 工作流 | Endpoint | | --- | --- | | 健康检查 | `GET /health` | | 创建案例 | `POST /api/v1/cases` | | 删除案例 | `DELETE /api/v1/cases/{case_id}` | | 上传证据 | `POST /api/v1/cases/{case_id}/evidence` | | 处理证据 | `POST /api/v1/cases/{case_id}/process` | | 关联案例 | `POST /api/v1/cases/{case_id}/correlate` | | 同步至 IRIS | `POST /api/v1/cases/{case_id}/sync-to-iris` | | 任务状态 | `GET /api/v1/jobs/{job_id}` | | 证据列表 | `GET /api/v1/cases/{case_id}/evidence` | | 证据预览 | `GET /api/v1/cases/{case_id}/evidence/{evidence_id}/preview` | | 事件 | `GET /api/v1/cases/{case_id}/events` | | 时间轴 | `GET /api/v1/cases/{case_id}/timeline` | | 调查发现 | `GET /api/v1/cases/{case_id}/findings` | | 指标 | `GET /api/v1/cases/{case_id}/indicators` | | 对话 | `GET /api/v1/cases/{case_id}/conversations` | ## 审核 API | 对象 | 列表 | 操作 | | --- | --- | --- | | 调查发现 | `GET /api/v1/cases/{case_id}/review/findings` | `approve`, `reject`, `pending` | | 指标 | `GET /api/v1/cases/{case_id}/review/indicators` | `approve`, `reject`, `pending` | | 时间轴 | `GET /api/v1/cases/{case_id}/review/timeline` | `approve`, `reject`, `pending` | 操作 endpoint 遵循以下模式: ``` POST /api/v1/cases/{case_id}/review/{object_type}/{object_id}/{action} ``` ## 可追溯性模型 ``` case -> evidence_file -> event -> finding / indicator / timeline -> DFIR-IRIS external_ref -> iris_sync_ledger ``` 附加持久化存储: - `message_attachments` 存储提取的附件和哈希值。 - `iris_sync_ledger` 存储幂等同步状态。 - 仅限批准的同步机制可防止未经分析师验证的嘈杂自动调查结果进入 IRIS。 ## 安全说明 - 切勿将真实凭证提交到 Git 中。在本地使用 `.env` 文件,并且仅提交 `.env.example`。 - 在处理并发 worker 和类生产环境部署时,请使用 PostgreSQL。 - 将 `STORAGE_ROOT` 存放在受保护的持久化存储上。 - 尽可能针对 IRIS 验证 TLS。 - 将证据文件、清单、哈希值和预览视为敏感材料处理。 ## 已知限制 - PST 解析依赖于 `readpst`;在 Docker 之外,主机上必须存在该工具。 - PST 和 MSG 测试使用丰富的合成测试数据,而不是存储库中的真实 Outlook 二进制文件。 - JSON 流式处理支持数组和 JSONL 样式的记录;对于层级深度嵌套的任意 JSON,仍然存在实际限制。 - 附件 MIME 检测使用轻量级签名和文件名启发式方法,而非完整的 libmagic 分类。 - 内置的基础身份验证是可选的强化措施,并非完整的 IAM/RBAC 系统。 - SQLite 适用于实验室验证;生产环境应使用 PostgreSQL。 ## 路线图 - 高级分析师 UI。 - OCR 支持。 - 原生 PDF / Office 元数据和 URL 提取。 - ASN / GeoIP 富化。 - 生产级 PostgreSQL 迁移强化。 - 带 RBAC 的多用户身份验证。 - 针对海量证据集的分布式处理。

CuriosidadesDeHackers / DFIR 工具包
专为实用的事件响应、证据可追溯性以及受控的 IRIS 操作而构建。

标签:AV绕过, Celery, FastAPI, PB级数据处理, PostgreSQL, 威胁情报, 安全运维, 开发者工具, 搜索引擎查询, 数字取证, 测试用例, 自动化脚本, 请求拦截, 逆向工具