Otrivinish/fenrir

GitHub: Otrivinish/fenrir

一个容器化的数字取证与事件响应平台,覆盖事件全生命周期并支持离线取证协作。

Stars: 0 | Forks: 0

# DFIR-FENRIR ### 数字取证与事件响应情报平台 **重要提示:** 本项目处于 Alpha 阶段,完全由 Claude Code 构建。请在生产环境中使用前进行彻底审查和测试。 DFIR-FENRIR 是一个为安全团队构建的本地容器化事件响应平台。它涵盖了完整的事件生命周期——从初始检测到遏制、取证分析、合规报告以及事件后复盘——通过单个可离线部署实现。设计易于部署并邀请外部协作者。有关截图,请参见 [ABOUT.md](ABOUT.md)。 ## 架构 ``` ┌─────────────────────────────────────────────────┐ │ Internet / Browser │ └──────────────────────┬──────────────────────────┘ │ HTTPS (443) ┌───────▼────────┐ │ Caddy │ TLS termination, reverse proxy │ (TLS + proxy) │ Let's Encrypt / DuckDNS / BYO cert └──┬─────────┬───┘ │ │ ┌────────▼──┐ ┌───▼──────┐ │ Frontend │ │ Backend │ FastAPI async │ (React) │ │ (Python) │ └───────────┘ └──┬────┬───┘ │ │ ┌───────▼┐ ┌▼────────┐ │Postgres│ │ Redis │ │ (Data) │ │(Session)│ └────────┘ └─────────┘ │ ┌────────▼──────────┐ │ Analysis Worker │ ← Air-gapped (no internet) │ (malware tools) │ Isolated Docker network └───────────────────┘ ``` 所有服务均以 Docker 容器运行。分析工作器在设计上**无互联网访问**。 ## 结构 ``` fenrir/ ├── .github/ GitHub Actions workflows + issue templates ├── about/ Architecture diagrams (SVG) ├── assets/ Screenshots for documentation ├── core/ Application source + Docker deployment │ ├── backend/ FastAPI application │ │ ├── core/ Config, database session, startup │ │ ├── models/ SQLAlchemy ORM models │ │ ├── routers/ API route handlers (one file per domain) │ │ ├── scripts/ DB migration SQL + demo seed script │ │ ├── services/ Business logic (auth, metrics, IOC extraction, etc.) │ │ ├── main.py FastAPI app entrypoint │ │ ├── requirements.txt Python dependencies │ │ └── Dockerfile │ ├── frontend/ React SPA (Vite 8 + React 19) │ │ ├── src/ │ │ │ ├── pages/ Top-level page components │ │ │ ├── components/ Shared UI (layout/, modules/) │ │ │ ├── hooks/ React hooks (auth, notifications, websocket) │ │ │ └── utils/ API client, timezone, theme helpers │ │ ├── public/ Static assets (logos) │ │ ├── package.json │ │ ├── vite.config.js │ │ └── Dockerfile │ ├── analysis-worker/ Air-gapped malware analysis container │ │ ├── worker.py │ │ └── Dockerfile │ ├── docker/ │ │ ├── caddy/ Caddy Dockerfile + entrypoint (TLS auto-selection) │ │ ├── postgres/ Database init SQL │ │ └── backup/ Daily pg_dump script │ ├── certs/ TLS certificates (CA + server) — gitignored │ ├── logos/ Application logos │ ├── docker-compose.yml Full stack deployment │ ├── generate-certs.sh Self-signed CA + server certificate generator │ ├── .env.example Environment variable template │ └── .env Your config (gitignored — never commit) ├── ABOUT.md Platform overview with screenshots ├── DEMO.md Demo data seeding guide ├── INSTALL.md Step-by-step installation guide ├── LICENSE Apache 2.0 ├── README.md This file └── SECURITY.md Vulnerability reporting policy ``` ## 快速开始 请参阅 [安装指南](INSTALL.md) 获取完整的安装说明,包括所有先决条件。 ``` git clone cd fenrir/core cp .env.example .env Edit .env — set POSTGRES_PASSWORD, REDIS_PASSWORD, SECRET_KEY at minimum ./generate-certs.sh # generate self-signed CA + server cert docker compose up -d --build ``` 访问 `https://localhost` → 首次运行设置向导 → 创建管理员账户。 若要从局域网中的其他机器访问,请设置 `DOMAIN=192.168.x.x`、`ALLOWED_HOSTS=*`、`CORS_ORIGINS=*` 到 `.env`,然后运行 `./generate-certs.sh` 并将 `certs/ca.crt` 导入浏览器。 ## 功能概览 ### 事件管理 | 模块 | 描述 | |------|------| | **仪表板** | 活动事件、严重性分布、IR 流程视图、最近活动 | | **事件** | 完整事件生命周期——严重性、TLP、IR 阶段、类型、受影响的系统、检测方法、执行摘要、遏制/根除/恢复、影响评估、根本原因、MITRE 攻击链、修复计划 | | **时间线** | ISO 8601 时间戳事件日志,带 MITRE ATT&CK 战术/技术映射 | | **IOC** | IP、域名、哈希、电子邮件、URL 指标,支持 VirusTotal / AbuseIPDB / Shodan / URLScan / HIBP 丰富化、标签和内联编辑 | | **证据** | 带有 SHA-256 完整性哈希的安全上传、证据链、下载时完整性验证、AES-256 加密 ZIP | | **实体** | 身份、设备、进程、文件、网络、云实体,带 D3.js 关系图 | | **工件** | 隔离区中的恶意软件上传、自动 IOC 哈希创建、加密 ZIP 下载、分析员笔记 | | **剧本** | CISA/NIST IR 阶段,带任务跟踪和时间戳 | | **遏制** | 快速遏制清单(隔离、阻断 IP、重置凭据、禁用账户)——每项操作自动记录到时间线和审计 | | **决策日志** | 关键决策的结构化记录,包含推理依据——与评论分离,用于法律和事后复盘 | | **合规** | GDPR / NIS2 / DORA 合规截止日期跟踪器,从检测时间自动初始化 | | **通信** | 事件通信日志,带 9 个模板、渠道跟踪、负责人分配、状态流程 | | **场外通信(OOB)** | 安全场外通道管理——加密通行短语生成、暗操作模式、利益相关者联系人 | | **MITRE(每个事件)** | 每个事件的 ATT&CK 热力图——突出显示时间线事件中标记的技术 | | **战情室** | 实时协作视图——谁在处理事件、持久的实时聊天、@提及、吐司通知 | | **评论** | 每个事件的线程化分析师讨论 | | **交接队列** | 结构化交接班——当前假设、排除的线索、待办事项、置信度等级 | | **经验教训** | 结构化事后复盘:根本原因、有效性评分、险些发生事件、响应时间指标、行动项、控制改进——可导出 HTML | | **IR 人员配置** | 每个事件的操作角色分配——事件指挥官、首席取证、记录员等 | | **报告** | 完整的 HTML 事件报告——12 个部分自动从事件数据填充,带 TLP 横幅、打印就绪 | ### 威胁狩猎 | 模块 | 描述 | |------|------| | **OSINT** | Whois / LDAP、DNS 记录、子域名枚举(crt.sh)、反向 DNS、地理位置、ASN 查询、SSL/TLS 证书透明度、DNSBL/RBL 检查、被动 DNS | | **YARA 规则** | 上传和管理全局 YARA 规则;扫描上传的工件与所有活动规则;查看匹配项的字符串/偏移详情 | | **Sigma 规则** | 上传和管理 Sigma 检测规则;扫描事件时间线与活动规则;按严重性查看匹配项 | | **PCAP 分析器** | 上传网络捕获——提取会话、DNS、HTTP、TLS 证书、可疑模式;将 IP 添加到事件 IOC | | **IP 情报** | 批量 IP 查询——反向 DNS、地理位置、ISP/ASN、AbuseIPDB 信誉;添加恶意 IP 到 IOC | | **取证时间线** | 导入并规范化来自多个来源的取证工件到统一时间线 | | **关联** | 跨事件 IOC 相关性——识别在多个事件中出现的 IOC 值 | | **LOLBins / GTFOBins** | 驻留式二进制文件数据库(232 个 LOLBAS + 478 个 GTFOBins);扫描时间线事件中的 LOLBin 引用 | | **威胁情报** | 威胁源管理——MISP、AlienVault OTX、Abuse.ch、OpenPhish;全局 IOC 搜索;自动标记事件 IOC | | **威胁行为体** | MITRE ATT&CK 组织概况——从上游 STIX 包同步;将事件链接到已知威胁行为体 | | **MITRE ATT&CK** | 完整的交互式 ATT&CK 企业矩阵——全部 14 个战术、200 多项技术 | ### 工件分析(离线环境) 所有分析在无互联网访问的隔离分析工作器容器中运行。 | 工具 | 功能 | |------|------| | **哈希值** | MD5、SHA1、SHA256、SHA512、SSDEEP、TLSH | | **文件类型** | MIME 检测、扩展名不匹配警告 | | **字符串** | ASCII + Unicode 提取、可疑 Windows API 检测、Base64 解码 | | **IOC 提取** | 自动提取 IP、URL、域名、电子邮件、哈希、CVE、注册表键、文件路径 | | **熵值** | 分块熵可视化、打包/加密检测 | | **PE 分析** | 头信息、节区、导入、导出、资源、版本信息、怀疑度评分 | | **Office / 宏** | OleID 指标、VBA 提取、自动执行检测、宏 IOC 提取 | | **PDF 分析** | JavaScript / OpenAction / Launch / 嵌入文件检测、文本 IOC 提取 | | **EXIF/元数据** | 完整元数据提取、敏感字段高亮(GPS、作者、公司) | | **十六进制转储** | 可导航的十六进制查看器,支持偏移导航 | ### 导出与检测 | 模块 | 描述 | |------|------| | **检测导出** | 为 Microsoft Defender KQL、Elastic EQL、Splunk SPL、Cortex XDR XQL、CrowdStrike Falcon 生成调查查询——下载为 ZIP 包 | | **IOC 导出——防火墙** | 导出屏蔽列表,适用于 Palo Alto Networks (PAN-OS XML + EDL)、Fortinet FortiGate、Microsoft Defender for Endpoint | | **执法数据包** | AES-256 加密 ZIP——完整事件报告、时间线 CSV + HTML、IOC 列表、证据清单、证据链、SHA-256 清单 | ### 组织与平台 | 模块 | 描述 | |------|------| | **团队** | 团队与用户管理,基于角色的访问控制(管理员 / 分析员) | | **值班** | 周值班表、临时覆盖、自动事件创建时分配 | | **活动流** | 所有事件操作的实时动态 | | **审计日志** | 完整的系统审计追踪——每个操作记录时间戳、用户和 IP | | **会话管理** | 查看并撤销活跃会话;管理员可见所有用户,分析员仅见自身 | | **篡改监控** | 定期验证证据完整性——重新校验 SHA-256 哈希,触发篡改告警 | | **帮助** | 应用内可搜索的帮助中心,含文章、常见问题与分类浏览 | ## 身份验证 | 方法 | 启用方式 | |----------------| | **本地(bcrypt)** | 默认,始终可用 | | **TOTP / 双因素认证** | 在“设置 → 选项 → 2FA 设置”中为每个用户启用 | | **(实验性) Entra ID (Azure AD) SSO** | 设置 `ENTRA_ENABLED=true` 并配置 `ENTRA_TENANT_ID`、`ENTRA_CLIENT_ID`、`ENTRA_CLIENT_SECRET` 到 `.env` | ## TLS 模式 | 模式 | 使用场景 | |------|----------| | **自签名证书**(默认) | 本地或局域网部署——运行 `./generate-certs.sh`,并将 `certs/ca.crt` 导入浏览器 | | **通过 DuckDNS 使用 Let's Encrypt** | 家庭实验室 / 远程访问——免费,自动续期 | | **使用您自己的证书** | 企业 PKI 或任意外部 CA | 请参阅 [安装指南 — TLS 配置](INSTALL.md#tls-configuration) 获取完整设置说明。 ## 丰富化 API 所有选项均为可选;缺少密钥将优雅地禁用对应功能。建议通过 GUI 设置以加密方式存储密钥(设置 → 选项),或通过 `.env` 以明文形式设置: | 变量 | 服务 | |------|------| | `VT_API_KEY` | VirusTotal — IP、域名、哈希 | | `ABUSEIPDB_API_KEY` | AbuseIPDB — IP 信誉、批量查询 | | `SHODAN_API_KEY` | Shodan — 主机情报 | | `URLSCAN_API_KEY` | URLScan.io — URL 分析 | | `HIBP_API_KEY` | HaveIBeenPwned — 电子邮件泄露检查 | ## 安全模型 - **隔离卷**:仅后端可写,分析工作器只读——文件永不执行 - **分析工作器**:零互联网访问,所有 Linux 能力被丢弃,非 root 用户,`noexec` tmpfs - **证据完整性**:上传时存储 SHA-256 哈希,每次下载时验证,由篡改监控器重新校验 - **下载**:密码保护的 AES-256 ZIP(密码:`infected`——是的,是的) - **审计日志**:每次创建、更新、删除、登录、上传、导出和丰富化操作均记录时间戳、用户和 IP - **TLS**:所有连接强制通过 Caddy,TLS 1.2+ 仅 ## API - Swagger UI:`https://localhost/api/docs`(需身份验证) - OpenAPI JSON:`https://localhost/api/openapi.json` - 认证:`Authorization: Bearer ` — 通过 `POST /api/auth/token` 获取 ## 部署选项 | 选项 | 说明 | |------|------| | **本地 / 裸金属** | 任意 Linux 主机上的 Docker Compose——请参阅 [安装指南](INSTALL.md) | | **(即将发布) Azure (IaC)** | `terraform/` 中的 Terraform — 虚拟机、磁盘、Key Vault、备份、GitHub Actions OIDC | *DFIR-FENRIR*
标签:Alpha阶段, ASN信息, BYO证书, Caddy, CIDR输入, DInvoke, Docker, DuckDNS, HTTPS, IR平台, Let's Encrypt, NIDS, PostgreSQL, Redis, 互联网浏览器, 全生命周期, 前端React, 协作平台, 反向代理, 合规报告, 后端FastAPI, 安全团队, 安全运营, 安全防御评估, 容器化, 平台, 开源, 快速部署, 扫描框架, 搜索引擎查询, 数字取证, 测试用例, 生产环境, 自动化脚本, 自定义脚本, 自托管, 请求拦截, 逆向工具, 隔离环境