Otrivinish/dfir-fenrir-v2
GitHub: Otrivinish/dfir-fenrir-v2
一个自托管的容器化数字取证与应急响应平台,覆盖事件全生命周期并符合 NIST CSF 2.0、SP 800-61 R3 等行业标准。
Stars: 0 | Forks: 0
# 🐺 DFIR-FENRIR v2
### 一个容器化的**数字取证与应急响应**平台
*运行整个事件生命周期 — 检测 → 分析 → 遏制 → 恢复 → 报告*
       
## 📑 目录
- [为什么选择 FENRIR](#-why-fenrir)
- [截图](#-screenshots)
- [核心亮点](#-highlights)
- [架构](#-architecture)
- [技术栈与依赖](#-tech-stack--dependencies)
- [快速开始 (setup.sh)](#-quick-start)
- [手动安装](#-manual-installation)
- [配置](#-configuration)
- [功能概览](#-feature-overview) · *(完整列表 → [FEATURES.md](FEATURES.md))*
- [标准对齐](#-standards-alignment)
- [主题](#-themes)
- [安全态势](#-security-posture)
- [文档](#-documentation)
## 🎯 为什么选择 FENRIR
大多数应急响应工具要么是希望将你的证据存放在别人云端的 SaaS,要么是一堆没有监管链的脚本。FENRIR 是一个**单一的自托管平台**,它能够:
- 将**证据保留在你拥有的基础设施上**,使用 AES-256-GCM 进行静态加密。
- 生成**防篡改、哈希链化的审计日志**和**可用于法庭的执法机构包**。
- 提供一个没有网络路径的**物理隔离恶意软件分析 worker**。
- 是 **API 优先**的 — 每个功能不仅可以在浏览器中使用,还可以通过 `curl` 或 MCP 客户端使用。
- **按标准构建**:符合审计员关注的标准,如 NIST CSF 2.0、SP 800-61 R3、CISA playbooks、ISO/IEC 27037/27041。
## 📸 截图
| | |
|---|---|
|        
**运营仪表盘** — 投资组合 KPI(未解决 / 严重 / 逾期,MTTA · MTTR)、活跃阶段和严重程度细分、30 天趋势图表以及实时活动流。 | 
**事件登记册** — 可筛选的案例列表;每一行都带有其 NIST SP 800-61 R3 阶段、严重程度和 TLP 标记。 | | 
**事件时间线** — 带有 MITRE ATT&CK 技术标签和一键 CSV / HTML 导出的按时间顺序排列的事件日志。 | 
**实体 — 表格** — 主机、用户、服务和 IP,带有严重性和被入侵标志,以及批量 CSV 导入。 | | 
**实体 — 图表** — 交互式关系图,将实体关联起来(例如*与之通信*)并高亮显示入侵情况。 | 
**入侵指标** — 哈希、IP 和域名,带有置信度评分、富化、无害化处理和批量导入。 | | 
**证据与监管链** — SHA-256 哈希、完整的监管链日志、照片、完整性重新验证和密封传输。 | 
**取证工件** — 隔离工件浏览器,具有用于物理隔离静态分析的十六进制 / 字符串查看功能。 | | 
**邮件分析器** — 离线钓鱼分诊:SPF / DKIM / DMARC、接收跳链、提取的 URL 和附件,可提升为证据。 | 
**OSINT 查询** — 被动富化(GeoIP、ASN、WHOIS、rDNS、DNS 记录),支持一键提取指标。 | | 
**主机收集** — 签名的、事件范围的端点收集包,具有按主机配置的配置文件和可验证的结果。 | 
**MITRE ATT&CK 覆盖范围** — 跨事件观察到的战术和技术的企业矩阵,支持按技术下钻。 | | 
**响应看板** — 遏制 / 消除 / 恢复看板,带有记录的决策记录。 | 
**预案** — 与 CISA 对齐的、基于 800-61 阶段的检查清单,具有逐步状态和模板应用。 | | 
**合规截止日期** — 法定通知和违规报告义务的实时倒计时器。 | 
**事件后活动** — 关闭检查清单、经验教训捕获和报告生成。 |

***生成的报告*** — 包含严重性 / TLP / 阶段指标和完整事件详情的执行摘要,随时可导出。以 **Aurora Night** 主题显示 — 这是可从顶栏切换的三个运行时主题(Mission Control · Nordic Calm · Aurora Night)之一。
## ✨ 核心亮点
| | 能力 | 它的作用 |
|---|---|---|
| 🔗 | **监管链与证据完整性** | 静态 AES-256-GCM 加密、按项目的监管链时间线、哈希链审计日志、签名审计日志导出 (Ed25519)、一次性加密下载、法庭级执法机构包 |
| 📦 | **签名的离线收集器** | 事件范围、签名的 Velociraptor 收集包 (Windows + macOS ARM64)。响应者在物理隔离环境中运行;输出自动解析到时间线中 |
| 🧭 | **原生标准 IR** | 800-61 R3 阶段推进器、CSF 2.0 标记、11 个内置预案(NIST、CISA、勒索软件、网络钓鱼、DDoS、BEC 等)以及一个 4 列响应看板 |
| 🔬 | **取证分析管道** | 多格式时间线导入(EVTX/XML/CSV/JSON + syslog/journald + macOS 统一日志)、进程树可视化、11 种静态分析工具、YARA、PCAP/DNS 侦察、邮件头分析器 |
| 🌐 | **威胁情报** | 跨事件 IOC/实体关联、8 个威胁情报源、25 个与 MITRE 同步的威胁行为者(含 TTP 评分)、7 个 OSINT 来源、将 IOC 导出为 7 种 EDR/防火墙格式 |
| 📊 | **报告与指标** | 6 个报告模板、执行/完整模式、修复路线图、MTTD/MTTR/MTTC、监管截止日期倒计时(GDPR、NIS2、DORA、HIPAA、CCPA、PCI-DSS) |
| 🔌 | **API 优先与集成** | OpenAPI 作为唯一事实来源、Bearer token + cookie 认证、SMTP/Graph 邮件、Teams/Slack webhooks、入站 SIEM (Splunk/Sentinel/Elastic)、syslog 转发 (TLS 1.3 / mTLS) |
| 🛡️ | **设计安全** | TLS 1.3 边缘、强化的 CSP/HSTS、非 root 只读容器、物理隔离分析网络、基于 Redis 的速率限制、TOTP 2FA、argon2id 密码 |
➡️ 完整的、分类的功能清单位于 **[FEATURES.md](FEATURES.md)** 中。
## 🏗 架构
它通过 Caddy 作为纯 TLS 终结反向代理提供服务。React SPA 由一个专门的强化版 **nginx** 容器提供;API 是 FastAPI **后端**。一切都只能通过 Caddy 到达边缘。
```
┌─────────────────────────────────────────────────────────────────┐
│ Internet / Browser │
└────────────────────────────┬────────────────────────────────────┘
│ HTTPS :443 (TLS 1.3, HSTS, CSP)
┌─────────▼──────────┐
│ Caddy │ TLS termination + reverse proxy ONLY
│ (pure proxy) │
└────┬──────────┬────┘
/ (SPA) │ │ /api/* · /download/* · WS
┌─────────▼──┐ ┌───▼─────────┐
│ Frontend │ │ Backend │ FastAPI async
│ nginx :3000│ │ :8000 │
│ static SPA │ └──┬───────┬──┘
│ non-root, │ │ │
│ read-only │ ┌───▼──┐ ┌──▼──────┐
└────────────┘ │ PG16 │ │ Redis 7 │ (sessions · rate-limit · cache)
│ data │ └─────────┘
└───┬──┘
┌───────────────┼──────────────────┐
┌─────▼─────┐ ┌─────▼───────┐ ┌──────▼────────┐
│ Backup │ │ Audit │ │ (evidence │
│ daily │ │ monitor │ │ vol, ro) │
│ pg_dump │ │ tamper anchor│ └───────────────┘
└───────────┘ └─────────────┘
── fenrir-analysis network (internal=true — NO internet) ──────────────
┌─────────────────────────┐
│ Analysis Worker │ air-gapped · caps dropped · noexec /tmp
│ (malware tooling) │ reachable only from Backend
└─────────────────────────┘
```
## 🧰 技术栈与依赖
### 运行时(宿主机)
| 要求 | 说明 |
|---|---|
| Windows 或 Linux(建议 4vCPU,8GB 内存和 60GB 磁盘)
| **Docker** + **Docker Compose v2** | 必需 |
| `openssl` *或* `python3` | 运行 `setup.sh` 所需 |
| `curl` *(可选)* | 被 `setup.sh` 用于启动后的健康轮询。 |
### 后端 — Python 3.12 / FastAPI
后端依赖项(backend/requirements.txt)
| 包 | 用途 |
|---|---|
| `fastapi` · `uvicorn[standard]` · `python-multipart` | 异步 API 服务器 |
| `pydantic[email]` · `pydantic-settings` | 验证与类型化配置 |
| `sqlalchemy[asyncio]` · `asyncpg` | ORM + 异步 Postgres 驱动 |
| `redis` | 会话、速率限制桶、缓存 |
| `argon2-cffi` | argon2id 密码哈希 |
| `cryptography` | Fernet(静态 TOTP 密钥)、AES-256-GCM 证据加密 |
| `pyotp` · `qrcode[pil]` | RFC 6238 TOTP + 配置 QR 码 |
| `httpx` · `pyyaml` | LOLBAS/GTFOBins 同步,威胁情报源拉取 |
| `python-evtx` | Windows EVTX 二进制日志解析 |
| `pyzipper` | 受 AES-256 密码保护的 ZIP 下载 |
| `python-magic` | MIME 检测(封装了 `libmagic1`) |
| `reportlab` | 签名审计日志导出 PDF |
| `rfc3161ng` | RFC 3161 受信时间戳(延迟加载;仅在设置了 `TSA_URL` 时) |
| `extract-msg` | 用于邮件分析器(离线)的 Outlook `.msg` 解析 |
前端依赖项(frontend/package.json)
| 包 | 用途 |
|---|---|
| `react` · `react-dom` (19) | UI |
| `react-router-dom` (7) | SPA 路由 |
| `react-markdown` | Markdown 渲染(描述、报告) |
| `@xyflow/react` | 实体 / 资产关系图 |
| `vite` (8) · `@vitejs/plugin-react` | 构建工具(`node:20-alpine` 构建 → `nginx-unprivileged` 服务) |
分析 worker 工具(analysis-worker/Dockerfile)
**系统工具:** `tshark` (PCAP)、`binutils` (`strings`)、`libimage-exiftool-perl`(元数据)、`libmagic1` (MIME)、`libyara-dev` (YARA 引擎)。
**Python 工具:** `pefile` (PE)、`oletools`(Office 宏)、`pdfminer.six` (PDF)、`yara-python`、`exifread`、`python-magic`。
以非 root uid `1002` 运行,所有 capabilities 均已丢弃,`/tmp` 挂载为 `noexec`,处于**没有互联网路由**的网络上。隔离区以只读方式挂载。
setup.sh 自动化的步骤
```
# 1. 创建你的 env file
cp .env.example .env
# 2. 生成密钥并将其粘贴到 .env 中
# (EVIDENCE_KEK 和 AUDIT_SIGNING_KEY 是 MANDATORY 的 — backend
# 没有它们将拒绝启动。)
openssl rand -hex 24 # → POSTGRES_PASSWORD
openssl rand -hex 24 # → REDIS_PASSWORD
openssl rand -hex 64 # → SECRET_KEY
openssl rand -hex 32 # → EVIDENCE_KEK (32 bytes = AES-256 KEK)
./scripts/generate-audit-key.sh # → AUDIT_SIGNING_KEY (Ed25519 seed, base64)
# 3. 生成本地 TLS 证书(仅限 self-signed 模式)
./generate-certs.sh
# 4. 构建并启动
docker compose up -d --build
# 5. 验证
curl -sk https://localhost/api/health
# {"status":"ok","service":"fenrir-v2-backend"}
# 6. 获取首次运行令牌,然后访问 https://localhost/setup
docker compose logs backend | grep -i token
```
事件管理
带有过滤器的游标分页事件列表 · 创建/编辑并带有行内验证 · 带有已审计转换的 800-61 R3 阶段推进器 · 严重程度(内部 低/中/高/严重 → 报告时的 NCISS) · TLP 2.0 标记 · CSF 2.0 功能标签 · 受影响的系统 → 提升为实体 · 带有防护的关闭/重新打开 · 基于事件和团队的访问控制 · 运营深色模式切换。调查与取证
**时间线**(垂直轴、MITRE 级联下拉菜单、CSV/HTML 导出、进程树可视化) · **取证时间线导入**(EVTX/XML/SQLite/CSV/JSON + Linux syslog/journald + macOS 统一日志、36-EID 分类引擎、分诊表、批量提升) · **IOCs**(去重、置信度、跨事件关联、批量导入、导出为 7 种 EDR/防火墙格式、威胁情报源匹配、富化) · **实体**(关系、react-flow 图表、资产日志、批量导入) · **工件**(拖拽、MD5/SHA256/SHA512、11 种静态分析工具、AES-ZIP 下载) · **YARA 检测** + SIEM 查询生成 · **LOLBins** (LOLBAS + GTFOBins) · **PCAP** (tshark、7 标签结果、DNS 侦察) · **OSINT**(7 个来源) · **威胁行为者归因**(25 个 MITRE 同步的攻击者、TTP 评分) · **MITRE ATT&CK 覆盖矩阵** · **邮件头分析器**(离线钓鱼分诊)。证据与监管链
数字 + 物理证据模型 · 静态 AES-256-GCM(如果没有 `EVIDENCE_KEK` 则快速失败) · 传输/检查/验证/处置监管时间线 · 一次性 24 小时加密下载 token · 导出包(文件 + CoC JSON + 审计摘录 + SHA-256 清单 + 解密方案) · 监管日志 · 按需审计链验证 · ISO 27037/27041 收集向导、SOP 和工作副本账本 · 合规保留标记 · 受信的 RFC 3161 时间戳。响应与恢复
11 个内置预案模板(NIST 800-61、CISA 联邦 IR 和漏洞响应、勒索软件、撞库、钓鱼、数据外泄、OAuth 撤销、内部人员外泄、DDoS、BEC) · 4 列响应看板(遏制/消除/恢复/决策),包含 42 个动作模板、还原工作流和自动时间线记录 · 决策日志 · 关闭检查清单 · 经验教训 · 响应分析 (TTD/TTC/TTR) · 成本跟踪 · 业务影响评估 · 监管截止日期倒计时。报告与跨事件分析
6 个报告模板(Mission Control / Executive / Nordic Calm / Forensic / Compact / Tactical),包含执行/完整模式、修复路线图、审计级历史记录和重新下载 · **执法机构包**(AES-256 ZIP、HMAC 清单、完整性文件、解密证据 + 监管 CSV、完整审计追踪) · 带有 7 个 KPI 卡片 + 趋势图 + 工作负载 + 活动流的仪表盘 · 全局 ⌘K 搜索 · 关联 · 威胁情报中心 · 投资组合指标。协作与通信
评论 · 带外通信日志(密码、渠道、暗操作切换) · WebSocket 作战室(实时聊天 + 在线状态) · 实时通知(铃铛 + toasts) · 利益相关者联系人目录。管理与 API
哈希链审计日志(全局 + 每个事件查看器) · 签名的审计日志导出 (Ed25519、加密 ZIP、一次性下载) · 会话管理 · 存储/卷监控 · 备份状态与触发 · Fernet 加密的 API-key 保险库 · 主题与时区选择器 · 用户/团队/角色 · OpenAPI 文档 (Swagger/ReDoc) · API token (Bearer) · CSP/HSTS · Redis 速率限制 · 已认证的 WebSockets · 集成(SMTP/Graph 邮件、Teams/Slack webhooks、入站 SIEM、syslog 转发)。标签:AV绕过, Docker, FastAPI, PostgreSQL, React, Syscalls, 安全防御评估, 库, 应急响应, 搜索引擎查询, 数字取证, 版权保护, 自动化脚本, 自定义脚本