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, 安全团队, 安全运营, 安全防御评估, 容器化, 平台, 开源, 快速部署, 扫描框架, 搜索引擎查询, 数字取证, 测试用例, 生产环境, 自动化脚本, 自定义脚本, 自托管, 请求拦截, 逆向工具, 隔离环境