mshermancyber/FraudVault
GitHub: mshermancyber/FraudVault
自托管的企业级恶意软件引爆与容器安全平台,在完全离线的 Docker 沙箱环境中完成动态分析、威胁情报提取和镜像漏洞扫描。
Stars: 0 | Forks: 0
# FraudVault
**控制。分析。定罪。**
企业级恶意软件引爆、威胁情报和行为分析平台。
[](https://www.gnu.org/licenses/gpl-3.0)
## 快速开始
```
# 生成 TLS 证书
bash nginx/generate-certs.sh
# 配置
cp .env.example .env
# 编辑 .env — 填写所有必需的 secrets(参见 .env.example 注释)
# 使用以下命令生成 secrets:openssl rand -hex 32
# 构建 sandbox 镜像(用于 dynamic analysis 所必需)
docker compose --profile build-only build scanboy-sandbox
# 启动全部 17 个服务
docker compose up -d
# 访问
open https://localhost
# 默认登录:admin@scanboy.local
# 设置 admin 密码 — 参见下方的首次登录
```
### 首次登录
管理员账户在首次启动时使用占位密码哈希创建。登录前,您必须设置一个真实密码:
```
# 为选择的密码生成 bcrypt hash
docker compose exec api-gateway node -e "require('bcrypt').hash('YOUR_PASSWORD_HERE',12).then(h=>console.log(h))"
# 更新 admin 用户
docker compose exec postgres psql -U scanboy -d scanboy -c \
"UPDATE users SET password_hash = '' WHERE email = 'admin@scanboy.local';"
```
## 功能简介
FraudVault 接收可疑文件,在强化的一次性 Docker 容器中引爆它们,并生成可操作的情报:威胁评分、IOC、MITRE ATT&CK 映射、检测规则以及可导出的报告。
### 恶意软件分析
- **动态沙箱** -- 在一次性容器中通过 strace、inotifywait、tcpdump、strings、readelf、objdump、xxd、unrar 进行基于 Wine 的 PE 执行
- **深度 PE 分析** -- 节区、Rich header、Load Config、.NET CLR、IAT 熵、资源语言、manifest
- **配置提取** -- 55+ 个恶意软件家族提取器(Cobalt Strike、Emotet、LockBit、BlackCat、Agent Tesla、Remcos、AsyncRAT、QakBot 等)
- **YARA 规则匹配** -- 来自 4 个公共 GitHub 来源的 20,000+ 条规则以及自定义规则
- **VirusTotal 集成** -- 对提取的可执行文件进行哈希查询
- **MITRE ATT&CK 映射** -- 基于观察到的行为映射技术与战术
- **IOC 提取** -- 网络指标、文件痕迹、注册表更改,并带有可信域名评分(自动将供应商/CA 基础设施与可疑 IOC 分离)
- **检测规则生成** -- Sigma、Suricata 和 Snort 规则
- **报告导出** -- PDF 和 STIX 2.1
### 容器镜像分析
- **CycloneDX 1.6 SBOM** -- 在沙箱内通过 syft 生成,可下载并验证
- **SBOM 漏洞扫描** -- 每个软件包均会使用 CVSS、EPSS 和 KEV 扩展数据对本地 OSV/NVD 源进行检查
- **22 项能力安全扫描器** -- 层差异、木马层检测、符号链接逃逸向量、ELF 二进制分析、CIS 基准检查、entrypoint 分析、Dockerfile 重构、证书分析、secrets 扫描、供应链验证
- **专家设计的评分模型** -- 7 个子分数(漏洞、配置、供应链、恶意、基础运维、结构、secrets),采用二次 CVSS 缩放,设置 KEV/挖矿木马/后门最低分下限
- **独立工作流** -- 3 步流水线(沙箱提取、SBOM 漏洞扫描、容器评分),独立于恶意软件评分
### 评分模型
两套经专家评审的评分模型,均由判定引擎驱动,生成带有置信度评级和证据链的结构化分类(恶意/可疑/良性/无法确定):
- **恶意软件**:12 种按可靠性加权的证据源类型。VT 检测(供应商分级信任)、YARA 命中、沙箱行为信号(覆盖最低分下限)、静态分析、CVE/KEV/EPSS 相关性(新颖性乘数)、配置提取、网络行为、证书验证、供应链检测。域名信任评分将供应商/CA 基础设施与可疑 IOC 分离。分类阈值:恶意 >= 60,可疑 >= 30,良性 <= 15。
- **容器**:7 个子分数,采用二次 CVSS 缩放、收益递减衰减、协同效应奖励、强制最低分(KEV=70,挖矿木马=90,木马=85,后门=90)。已知良好的基础镜像域名(软件包仓库)通过模式匹配进行降级处理。
### 离线漏洞源
所有富化操作均针对本地 SQLite 源运行——扫描期间不进行实时 API 调用。
| 源 | 覆盖范围 |
|------|----------|
| CISA KEV | 1,610 个已知被利用的漏洞 |
| EPSS | 337k 个漏洞利用概率评分 |
| NVD / cvelistV5 | 337k 个 CVE |
| CPE Match | 100 万+ 产品到 CVE 的映射 |
| OSV | 45 个生态系统建议数据库 |
| endoflife.date | 700+ 产品生命周期记录 |
漏洞源通过后台调度程序每日刷新。
## 架构
```
┌───────────┐
│ Nginx │ :443 (HTTPS) / :80 -> 443 redirect
└─────┬─────┘
┌──────────┼──────────┐
┌────▼───┐ ┌────▼────┐ ┌──▼────────┐
│Frontend│ │API Gate-│ │Swagger UI │
│ React │ │ way │ │ /api/docs │
└────────┘ └────┬────┘ └───────────┘
┌──────────────┼──────────────┐
┌────▼─────┐ ┌─────▼──────┐ ┌────▼───────────┐
│Orchestr- │ │Static │ │Dynamic Analysis│
│ator │ │Analysis │ │(Docker Sandbox)│
│(BullMQ) │ │(PE/ELF) │ │(strace/wine) │
└────┬─────┘ └────────────┘ └────────────────┘
┌────┼─────────────┬──────────────┐
┌──▼───┐ ┌──▼────┐ ┌──▼────────┐ ┌──▼────────┐
│Redis │ │Postgr-│ │Elastic- │ │MinIO │
│ 7 │ │eSQL 16│ │search 8 │ │(artifacts)│
└──────┘ └───────┘ └───────────┘ └───────────┘
```
17 个容器化服务。服务间认证通过 `INTERNAL_API_KEY` 进行。所有通信均通过 Docker 内部网络。**技术栈**:PostgreSQL 16、Redis 7、Elasticsearch 8、MinIO、BullMQ、React + Vite + TailwindCSS(暗色主题,蓝绿色强调)。
### 沙箱安全
每个沙箱容器均在深度防御隔离下运行:
| 控制 | 设置 |
|---------|---------|
| 文件系统 | `--read-only` rootfs |
| Capabilities | `--cap-drop ALL`,仅添加 `SYS_PTRACE` + `NET_RAW` |
| 网络 | `--network none`(默认) |
| 特权 | `--security-opt no-new-privileges` |
| Syscalls | 应用 seccomp profile |
| Init | PID 1 的 FD 重定向至 `/dev/null` |
| DNS 隔离 | 挂载只读的虚假 resolv.conf (8.8.8.8/4.4.4.4) |
| 已移除的二进制文件 | nsenter、mount、umount |
| 已剥离的 SUID | su、passwd、chfn、chsh、gpasswd、newgrp |
已通过涵盖 5 轮安全扫描(约 80 项修复)的 30 多次渗透测试场景进行验证,全部安全无虞。
## 配置
### 必需:`.env`
将 `.env.example` 复制到 `.env` 并填写所有必需的密钥。至少需要:
```
# 生成所有必需的 secrets
openssl rand -hex 32 # Use for JWT_SECRET, JWT_REFRESH_SECRET, INTERNAL_API_KEY
openssl rand -hex 16 # Use for POSTGRES_PASSWORD, REDIS_PASSWORD, etc.
# 可选但推荐
VIRUSTOTAL_API_KEY=your-key-here # Free tier: 4 lookups/min
```
### 沙箱网络控制
```
# 默认值:false(所有 sandboxes 完全隔离,--network none)
SANDBOX_ALLOW_NETWORK=false
```
当设为 `false`(默认值)时,无论 UI 中如何选择,每个沙箱都会在 `--network none` 下运行。仅在受控环境中观察 C2 回调行为时,才将其设置为 `true`。
### 可选集成
```
# AI 辅助分析(选择一项)
OPENAI_COMPATIBLE_URL=http://localhost:11434 # Ollama
OPENAI_COMPATIBLE_MODEL=llama3
ANTHROPIC_API_KEY= # Claude
OPENAI_API_KEY= # GPT-4
# SIEM 转发
FRAUDVAULT_WEBHOOK_URL=https://hooks.slack.com/...
FRAUDVAULT_SIEM_TYPE=splunk # splunk|sentinel|elasticsearch|webhook
FRAUDVAULT_SIEM_ENDPOINT=https://splunk:8088
FRAUDVAULT_SIEM_API_KEY=
# EDR hash 黑名单
FRAUDVAULT_EDR_TYPE=crowdstrike # crowdstrike|defender|sentinelone
FRAUDVAULT_EDR_ENDPOINT=https://api.crowdstrike.com
FRAUDVAULT_EDR_API_KEY=
```
### 高级设置
| 变量 | 默认值 | 描述 |
|----------|---------|-------------|
| `JWT_SECRET` | (必需) | JWT 签名密钥 -- 使用 64+ 字符的随机字符串 |
| `JWT_REFRESH_SECRET` | (必需) | 用于 refresh token 的独立密钥 |
| `JWT_EXPIRY` | `15m` | Access token 生命周期 |
| `JWT_REFRESH_EXPIRY` | `7d` | Refresh token 生命周期 |
| `WORKER_CONCURRENCY` | `5` | 最大并行分析任务数 |
| `SANDBOX_TIMEOUT_SECONDS` | `300` | 默认沙箱执行超时时间 |
VirusTotal 免费版:4 次请求/分钟,500 次请求/天。FraudVault 通过 16 秒的延迟对 VT 调用进行限速。如需大容量使用,请使用高级版密钥。
## 系统要求
| 资源 | 最低配置 | 推荐配置 |
|----------|---------|-------------|
| CPU | 4 核 | 8+ 核 |
| 内存 | 16 GB | 32 GB |
| 磁盘 | 100 GB | 500 GB (SSD) |
| 操作系统 | Linux (Docker host) | Ubuntu 22.04+ / Debian 12+ |
| Docker | 24+ | 29+ |
| Docker Compose | v2+ | v2.20+ |
## 维护
```
# 仅清除上传的文件(保留报告)
bash scripts/purge.sh
# 清除所有内容(文件 + analysis 数据)
bash scripts/purge.sh --all
# 恢复出厂设置(包括用户)
bash scripts/purge.sh --nuke
# 查看日志
docker compose logs -f orchestrator
docker compose logs -f dynamic-analysis
# 重启服务
docker compose restart api-gateway
```
## 文档
| 文档 | 描述 |
|----------|-------------|
| [用户指南](docs/USER.md) | 如何使用该平台 |
| [数据模型](docs/MODEL.md) | 数据库 schema 与数据流 |
| [交互式图表](docs/database/data-model-diagram.html) | 可视化数据库 schema 浏览器 |
| [功能](docs/FEATURES.md) | 完整功能列表 |
| [架构](docs/architecture/ARCHITECTURE.md) | 系统设计 |
| [威胁模型](docs/security/THREAT_MODEL.md) | 安全分析 |
| [信任边界](docs/security/TRUST_BOUNDARIES.md) | 网络分段与信任区域 |
| [安全审查](Scan.md) | 5 轮安全审计报告(68 项发现,已全部修复) |
| [离线漏洞源](docs/OfflineEngine.md) | 漏洞源流水线规范 |
| [故障排除](docs/INSTALL-TROUBLESHOOTING.md) | 安装与故障排除指南 |
| [差距分析](docs/GAP_ANALYSIS.md) | 遗留差距与技术债务 |
| [部署指南](docs/operations/DEPLOYMENT_GUIDE.md) | 安装说明 |
| [运维手册](docs/operations/RUNBOOK.md) | 运维操作流程 |
| [灾难恢复](docs/operations/DISASTER_RECOVERY.md) | DR 计划 |
| [API 文档](https://localhost/api/v1/docs) | 交互式 Swagger UI |
| [路线图](docs/ROADMAP.md) | 开发路线图 |
## 许可证
版权所有 (C) 2026 Mark Sherman
本程序为免费软件:您可以根据自由软件基金会发布的 GNU 通用公共许可证条款重新分发或修改它,许可证版本可选择第 3 版,或(由您自行选择)任何更高版本。
分发本程序的目的是希望它有用,但不提供任何保证;更不包含对适销性或特定用途适用性的暗示保证。有关更多详细信息,请参阅 [GNU 通用公共许可证](LICENSE)。
标签:DAST, DInvoke, Docker, MITM代理, SBOM漏洞扫描, Web截图, 动态沙箱, 威胁情报, 安全防御评估, 容器安全, 开发者工具, 恶意软件分析, 版权保护, 网络信息收集, 自动化攻击, 请求拦截