omarbabba779xx/CyberTwin-SOC-v2
GitHub: omarbabba779xx/CyberTwin-SOC-v2
一个全栈开源 SOC 平台,集检测工程、对抗模拟、SOC 工作流和云安全态势管理于一体,帮助团队高效运营安全中心。
Stars: 0 | Forks: 0
# CyberTwin SOC
**开源安全运营中心平台**
对抗模拟 | MITRE ATT&CK(622 种技术)+ ATLAS | OCSF 实时接入 | 云态势(CSPM)| SOC 工作流 | 多租户 | Helm/K8s | 独立可执行文件
CyberTwin SOC 是一个全栈、生产级开源 SOC 平台,专为检测工程、对抗模拟和安全运营而构建。该平台集成了 4,393+ 条检测规则(650 条自定义规则 + 3,743 条 SigmaHQ 规则 + MITRE CAR + Elastic detection-rules),完整覆盖 MITRE ATT&CK 企业矩阵(622 种技术)以及针对 AI/ML 威胁的 MITRE ATLAS 映射、无代理云态势管理(CSPM)支持 AWS/Azure/GCP、实时 OCSF 遥测接入管道、带有 SLA 约束的 SOC 案件工作流、通过 Atomic Red Team 和 Stratus Red Team(云攻击模拟)实现紫队自动化、多租户 RBAC 结合 AES-256-GCM 字段加密、防篡改 SHA-256 审计链、OpenTelemetry 可观测性、SOAR 集成(TheHive + Cortex)、Grafana + Loki 可观测性堆栈、Helm/Kubernetes 部署,以及适用于 Windows 和 Linux 的单二进制独立构建——所有这些都由零已知 CVE 的 CI 管道强制执行。
[](https://github.com/omarbabba779xx/CyberTwin-SOC-v2/actions)
[](#quality--testing)
[](#quality--testing)
[](#security)
[](https://python.org)
[](https://react.dev)
[](docs/proof/mitre-coverage-snapshot.md)
[](https://schema.ocsf.io/)
[](deploy/helm)
[](LICENSE)
[快速开始](#quick-start) |
[架构](#architecture) |
[特性](#features) |
[安全](#security) |
[CI/CD](#cicd-pipeline) |
[文档](#documentation)
## 目录
- [为什么选择 CyberTwin SOC?](#why-cybertwin-soc)
- [项目概览](#project-at-a-glance)
- [架构](#architecture)
- [特性](#features)
- [快速开始](#quick-start)
- [OCSF 实时接入](#ocsf-live-ingestion)
- [检测覆盖中心](#detection-coverage-center)
- [SOC 工作流](#soc-workflow)
- [安全](#security)
- [CI/CD 管道](#cicd-pipeline)
- [生产部署](#production-deployment)
- [质量与测试](#quality--testing)
- [文档](#documentation)
- [贡献](#contributing)
## 为什么选择 CyberTwin SOC?
CyberTwin SOC 是一个集成的安全运营中心平台,它闭环了成熟 SOC 所需的四个循环:
```
SIMULATE --> DETECT --> RESPOND --> MEASURE
| |
+------------ continuous improvement -----+
```
| 问题 | 答案所在位置 |
|---|---|
| 我的 SOC 目前能检测出 622 种 ATT&CK 技术中的哪些? | 检测覆盖中心——8 种状态 |
| 过去 30 天内规则的误报率是多少? | SOC 工作流——分析师反馈循环 |
| 我们能否在数据外泄前捕获 SolarWinds 式攻击? | 运行场景 apt_campaign,阅读报告 |
| 是哪个检测工程师的更改破坏了检测? | 版本化规则存储 + 基准比较 |
| 分析师执行分类的速度有多快?SLA 违规率是多少? | 带有 SLA 计时器和关闭时间统计的 SOC 案件 |
## 项目概览
| 指标 | 数量 | 备注 |
|---|---:|---|
| 后端 Python | 18,000+ 行代码 | 20+ 个包:api, detection, soc, ingestion, db, auth, crypto, middleware, observability |
| 前端 React | 13,000+ 行代码 | 27 个页面,Vitest 测试套件,Recharts,ReactFlow |
| 单元测试 | 855 | 后端 pytest —— 运行方式:`python -m pytest tests/ --ignore=tests/integration` |
| 集成测试(端到端) | 42 | 认证流程 · 检测管道 · 紫队 · AI 分类 · MITRE API |
| REST + WebSocket 端点 | 90+ | 按租户:用户限速,RBAC 作用域 |
| MITRE ATT&CK 技术 | 622 | 完整 ATT&CK 企业矩阵,100% 规则映射,14 种战术,TAXII 2.1 |
| 检测规则总数 | 4,393+ | 650 条自定义规则 + 3,743 条 SigmaHQ 规则 + MITRE CAR + Elastic detection-rules |
| 攻击场景 | 11 | SolarWinds, ProxyShell, Log4Shell, 内鬼, 勒索软件, 云攻击, DDoS... |
| RBAC 角色 / 权限 | 12 / 30+ | 3 个传统角色 + 9 个企业角色 + 数据库中按租户动态角色 |
| 连接器 | 20+ | Splunk, Sentinel, TheHive, MISP, abuse.ch, AbuseIPDB, Stratus, CALDERA, Wazuh, YARA |
| 已知 CVE | 0 | 由 pip-audit --strict 和 npm audit 验证 |
| 数据库表 | 11+ | Alembic 迁移,外键约束,ORM 优先(SQLite 开发回退) |
## 架构
### 组件概览
```
Client tier
React 18 + Vite SPA (27 pages, Recharts, ReactFlow)
|
| HTTPS + JWT
v
Edge
nginx-unprivileged (uid 101) -- CSP, HSTS, X-Frame-Options
|
v
API tier -- FastAPI 0.136
Middleware: RequestID, Metrics, Audit, CORS, RateLimit, CSP, SecurityHeaders
18 Routers: auth, simulation, detection, ingestion, coverage, soc,
soar, mitre, purple-team, beacon, d3fend, virustotal, shodan
Shared: JWT (jti+refresh), 12-role RBAC, slowapi rate limiter
|
v
Core domain
Simulation -- 11 scenarios, 28 techniques
Detection -- 4,393 rules (650 custom + 3,743 SigmaHQ)
SOC Workflow -- cases, SLA, feedback, suppressions
Coverage Center -- 8-state machine
Purple Team -- Atomic Red Team runner
AI Analyst -- Ollama + NLG fallback, PII redaction
ML Anomaly -- IsolationForest, UEBA
|
v
Data tier
PostgreSQL / SQLite (11+ ORM tables, Alembic migrations)
Redis (cache, jti denylist, rate-limit, Streams, sessions)
External integrations
SOAR: TheHive 5 + Cortex 3
Threat intel: VirusTotal, Shodan, MISP, abuse.ch, AbuseIPDB, GreyNoise
TAXII 2.1: MITRE ATT&CK sync
SIEM connectors: Splunk, Sentinel, Elastic, Jira
Purple team: Atomic Red Team, Stratus Red Team, CALDERA
Detection rules: SigmaHQ, MITRE CAR, Elastic detection-rules
Observability: Grafana 10 (10-panel SOC dashboard), Loki, Prometheus
```
### Token 生命周期
```
LOGIN -> access token (1h, jti_1) + refresh token (7d, jti_2)
CALL -> verify jti_1 not in Redis denylist -> 200 OK
REFRESH -> revoke jti_2 in Redis, issue jti_3 + jti_4
LOGOUT -> revoke jti_3 in Redis, log to audit_log
```
## 特性
### 对抗模拟引擎- 11 个现成场景:SolarWinds, ProxyShell, Log4Shell, 内鬼, 横向移动, 挖矿软件, 水坑攻击, 离地攻击, 勒索软件, 云攻击, DDoS
- 28 种内置攻击技术,每个生成事件附有 MITRE ATT&CK ID
- 逼真的时间线生成器:正常用户活动与对抗行为交错
- 防路径遍历的场景构建器,带有严格 ID 验证
### 多源检测引擎
- 650 条自定义规则:Windows 事件 ID, Sysmon, Linux 审计, Web 访问, DNS, 网络, AWS CloudTrail, Azure 活动, Office 365
- 3,743 条 SigmaHQ 社区规则在启动时加载(rules + emerging-threats + threat-hunting 目录)
- MITRE CAR 分析:9+ 个捆绑分析,兼容 SIGMA 条件匹配
- Elastic Detection Rules: 针对 Elastic 安全检测规则仓库的 TOML/JSON 加载器
- 基于源索引的规则分发:`O(n_events × relevant_rules)` 而非 `O(n_events × 4390)`
- SIGMA 条件解析器:递归下降求值器(`not > and > or`),支持完整括号
- Sigma 加载器:运行时上传 `.yml` 规则,ReDoS 加固(256 KB 上限)
- 严重性分级 + 置信度加权 + 战术多样性奖励
- 事件关联:从告警到事件(杀伤链聚合,多主机 pivot 检测)
### MITRE ATT&CK 覆盖中心
每种技术 8 种覆盖状态:
```
NOT_COVERED -> RULE_EXISTS -> RULE_UNTESTED -> TESTED_DETECTED (validated)
-> TESTED_FAILED (regression)
-> MUTED (suppressed, noisy)
-> DEPRECATED (replaced)
-> LOG_MISSING (data gap)
```
每种技术的度量:检测时间、严重度加权置信度、各战术风险评分。
### 紫队自动化
- Atomic Red Team 执行器:在实时检测管道上执行技术
- Stratus Red Team:云攻击模拟(AWS, Azure, GCP, Kubernetes),生成合成事件
- 默认 dry-run 模式(`PURPLE_TEAM_LIVE=1` 开启真实执行)
- 批量执行:顺序执行多种技术,聚合检测评分
- MITRE D3FEND 集成:针对每种技术的防御性对策建议
- 运行历史持久化,用于趋势分析
### 威胁情报丰富
- VirusTotal:IP、域名、URL 和文件哈希丰富(v3 API,缓存支持)
- Shodan:针对观测到的 IP 进行互联网暴露和开放端口查询
- abuse.ch:ThreatFox, URLhaus, MalwareBazaar — 实时 IOC 源,无需 API 密钥
- AbuseIPDB:众包 IP 声誉评分,可配置可疑阈值
- C2 / Beacon 检测:到达时间间隔变异系数分析
- MISP:将实时 IOC 源拉入检测管道
- 威胁情报同步:后台 Arq 定时任务将 AbuseIPDB, GreyNoise, abuse.ch, MISP IOC 同步到 `data/intel/`
### AI/ML 威胁覆盖(MITRE ATLAS)
- MITRE ATLAS 映射,针对 AI/ML 系统的对抗威胁:模型规避、数据投毒、模型窃取、成员推断、LLM 提示注入和越狱
- ATT&CK -> ATLAS 桥接:传统告警自动继承 AI/ML 威胁上下文,子技术回退到父技术
- 告警丰富(单个 + 批量)、按技术查询和战术覆盖统计
- 完全离线查询 — 无需外部 API 调用
- 端点位于 `/api/atlas/*`
### 无代理云态势(CSPM)
- 针对 AWS、Azure 和 GCP 的内置错误配置检查,直接对原始资源配置进行评估 —— 无需外部二进制、SDK 或云凭证
- 覆盖范围包括:公开 S3/GCS 存储桶、开放安全组/NSG(SSH/RDP 全开放)、通配符 IAM 策略、无 MFA 的控制台访问、未加密卷、禁用的 CloudTrail、公共存储账户、原始 GCP 角色等 —— 每条映射到 CIS Benchmark 控制项
- 返回按严重性排序的发现项、每次扫描的态势分数以及修复建议
- 补充外部 Prowler / ScoutSuite 报告解析器;此引擎完全离线工作
- 端点位于 `/api/cspm/*`
### AI 分析师模块
- 兼容 Ollama(Llama 3, Mistral, Qwen),自动回退到确定性自然语言生成
- 以证据为先的叙事:每个声明基于告警 ID 或日志时间戳
- 提示注入加固:去敏 AWS/GCP/JWT/PEM 密钥、邮箱、密码,中和注入标记,提示长度硬上限 32 KB
- IOC 提取:IP、域名、URL、MD5/SHA1/SHA256 哈希、邮箱、被入侵账户
- 30+ 对抗性测试:提示注入、PII 去敏、APT 归因保护、IOC 完整性
### ML 异常检测和 UEBA
- 基于正常遥测训练的 IsolationForest 基线
- 按用户的行为漂移评分,可配置污染率
- 通过 joblib 实现跨重启的模型持久化(`data/ml_model.pkl`)
- 重新训练时热启动
### SOC 工作流
```
Alert -> Case
NEW -> IN_PROGRESS -> RESOLVED -> CLOSED
-> FALSE_POSITIVE -> CLOSED
```
- 基于 PostgreSQL:状态转换、评论、证据、按严重级别的 SLA、级联外键
- 分析师反馈(true_positive / false_positive)更新规则置信度
- 按主机/用户的作用域抑制,带 TTL
- SQL 注入加固的 UPDATE(列白名单 + 标识符正则)
### SOAR 集成
- `docker compose --profile soar` 启用 TheHive 5 + Cortex 3
- TheHive 5:自动创建案件,附加可观测项
- Cortex 3:运行分析器,丰富 IOC
- 双向 Webhook
### 企业 RBAC
12 个静态角色 × 30+ 作用域权限 + 数据库中按租户动态角色。
| 权限 | analyst | tier1 | senior | manager | det_eng | hunter | auditor | platform_admin |
|---|---|---|---|---|---|---|---|---|
| simulation:run | Y | | Y | Y | Y | Y | | Y |
| case:read/write | Y | Y | Y | Y | Y | Y | R | Y |
| case:assign | Y | | Y | Y | | | | Y |
| rule:create | | | | | Y | | | Y |
| rule:approve | | | Y | Y | Y | | | Y |
| ingestion:write | Y | | Y | Y | | Y | | Y |
| audit:read/export | | | | Y | | | Y | Y |
Y = 授予,R = 只读,空白 = 拒绝。
租户通过存储在 `tenant_roles` 数据库表中的动态角色覆盖权限。
## 快速开始
### 选项 A —— Docker Compose(推荐)
```
git clone https://github.com/omarbabba779xx/CyberTwin-SOC-v2.git
cd CyberTwin-SOC-v2
cp .env.example .env
# 编辑 .env: 设置 JWT_SECRET (>= 64 字符) 和 AUTH_*_PASSWORD 值
docker compose up -d
```
| 服务 | URL |
|---|---|
| 前端 | http://localhost |
| API + OpenAPI 文档 | http://localhost:8000/docs |
| Prometheus 指标 | http://localhost:8000/api/metrics |
| 深度健康检查 | http://localhost:8000/api/health/deep |
| Grafana 仪表盘 | http://localhost:3000(admin / $GRAFANA_PASSWORD) |
| Prometheus | http://localhost:9090 |
| Loki | http://localhost:3100 |
### 选项 B —— 本地开发
```
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
# 可选:通过 DATABASE_URL 使用 PostgreSQL + Alembic 迁移
export DATABASE_URL=postgresql+psycopg2://user:pass@host:5432/cybertwin
alembic upgrade head
uvicorn backend.api.main:app --reload --port 8000
# 前端
cd frontend && npm ci && npm run dev
```
### 选项 C —— 通过 Helm 部署到 Kubernetes
已预先配置 runAsNonRoot、drop ALL caps、存活/就绪/启动探针,以及用于 kube-prometheus-stack 的 ServiceMonitor。
### 选项 D —— 独立桌面应用(全栈,无需安装)
将整个平台(FastAPI 后端、预构建的 React 仪表盘、嵌入的 SQLite 数据库)打包成一个自包含的单一二进制文件。启动后弹出**原生桌面窗口**(无需终端),运行完整图形平台;所有功能均可在此窗口中使用。运行模式:
```
cybertwin # native desktop window (default)
cybertwin --browser # serve + open your system browser instead
cybertwin --no-browser # headless: serve only, no window (servers, CI)
```
在 Linux 上,桌面窗口需要 `webkit2gtk`(`sudo apt-get install -y gir1.2-webkit2-4.0 python3-gi`);若未安装,应用会回退到在默认浏览器中打开 `http://127.0.0.1:8000`。
```
# Linux / Ubuntu
./packaging/build-linux.sh
./dist/cybertwin
# Windows (PowerShell)
powershell -ExecutionPolicy Bypass -File packaging\build-windows.ps1
.\dist\cybertwin.exe
```
PyInstaller 不支持交叉编译:在 Windows 上构建 `.exe`,在 Linux/Ubuntu 上构建 Linux 二进制文件(Ubuntu 是 Linux 发行版,因此一个 Linux 构建即可覆盖所有发行版)。推送 `v*` 标签会触发 **Build Standalone Executable** GitHub Actions 工作流,该工作流在每个运行器上构建单文件二进制文件,对 Linux 构建进行冒烟测试,并将两者作为 **GitHub Release** 资源发布(`cybertwin-windows.exe` 和 `cybertwin-linux`)——与首页下载按钮链接的文件相同。
独立二进制文件可在离线状态下运行核心 SOC 工作流;可选的 Grafana / Loki / PostgreSQL 堆栈是外部的,不嵌入二进制文件中。
预构建下载:
## OCSF 实时接入
```
# 单个 Windows 登录事件
curl -X POST http://localhost:8000/api/ingest/event \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"source": "windows_security", "event_id": 4625, "host": "WIN-DC-01", "user": "alice"}'
# NDJSON 批量上传 (最大 25 MB)
curl -X POST http://localhost:8000/api/ingest/upload \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/x-ndjson" \
--data-binary @sample.ndjson
# 对摄取缓冲区运行检测
curl -X POST http://localhost:8000/api/ingest/detect \
-H "Authorization: Bearer $TOKEN"
```
接入路径使用与模拟管道相同的 4,393 条规则引擎。
模拟和实时检测之间零重复。
加固措施:`ingestion:write` 作用域权限,每条事件 64 KB 上限,syslog 5,000 行 × 8 KB 上限,`_approx_size()` 总大小保护,单次 600 请求/分钟,批量 60 请求/分钟。
## 检测覆盖中心
```
curl http://localhost:8000/api/coverage -H "Authorization: Bearer $TOKEN" | jq '.summary'
```
```
{
"catalog_total": 622,
"validated": 0,
"untested": 40,
"rule_mapped": 40,
"not_covered": 582,
"high_risk_gaps": 293,
"rule_mapped_pct": 100.0
}
```
只有当某个场景执行了该技术并且规则被触发时,规则才会被验证——而不是仅仅因为规则存在于目录中。
最新快照:docs/proof/mitre-coverage-snapshot.md
## SOC 工作流
| 方法 | 路径 | 权限 | 用途 |
|---:|---|---|---|
| POST | /api/cases | case:write | 从告警创建案件 |
| GET | /api/cases | case:read | 带过滤器和 SLA 状态列表 |
| PATCH | /api/cases/{id} | case:write | 更新状态/责任人 |
| POST | /api/cases/{id}/comments | case:write | 添加评论 |
| POST | /api/cases/{id}/evidence | case:write | 附上证据制品 |
| POST | /api/cases/{id}/close | case:close | 附带关闭原因关闭 |
| POST | /api/alerts/{id}/feedback | feedback:write | 向规则提供 TP/FP 反馈 |
| POST | /api/suppressions | suppression:create | 添加带 TTL 的作用域抑制 |
## 安全
| 表面 | 控制措施 |
|---|---|
| 认证 | bcrypt 12 轮,JWT HS256(64 字符密钥),jti 拒绝列表(Redis),刷新令牌轮换 1h/7d,OIDC/SSO,算法白名单 |
| 会话 | 并发会话限制,通过 /api/auth/revoke-all 强制登出,Redis 会话跟踪 |
| API | 按租户:用户限速,严格 CORS,12 角色 RBAC + 数据库中按租户动态角色 |
| 加密 | AES-256-GCM 字段级加密,按租户 HKDF 密钥派生 |
| HTTP 头 | CSP, HSTS, X-Frame-Options, Cache-Control: no-store, X-Content-Type-Options |
| 文件操作 | _safe_path() + 路径解析检查,强制 FORENSICS_IMAGES_DIR(若未设置返回 503) |
| Sigma 加载器 | YAML safe_load,最大 256 KB,ReDoS 防护的 globbing |
| SQL | 参数化查询,动态 UPDATE 的列白名单,SQLAlchemy 2.0 ORM |
| 子进程 | 所有子进程调用使用 shlex.split() + shell=False,extra_args 白名单 |
| 审计 | 防篡改 SHA-256 链式审计日志,PostgreSQL 仅追加 |
| 容器 | nginx-unprivileged(uid 101),runAsNonRoot,drop ALL caps,多阶段构建 |
| 连接器 | 断路器(CLOSED/OPEN/HALF_OPEN)+ 指数退避重试,MISP URL 的 SSRF 防护 |
| 合规 | SOC 2 Type II 准备就绪,ISO 27001:2022 Annex A,GDPR 数据处理文档 |
### 持续安全检查
| 工具 | 范围 | 阻塞 CI |
|---|---|---|
| pip-audit | Python 依赖 CVE | 是 —— 零 CVE |
| npm audit | 前端依赖 CVE | 是 —— 零高危 |
| Gitleaks | 全 Git 历史密钥扫描 | 是 —— 零泄露 |
| Bandit | Python 静态安全分析 | 否 —— 零高危 |
| Semgrep | 多语言 SAST | 否 |
| Trivy | 文件系统 + 容器漏洞扫描 | 否 |
| Checkov | IaC 扫描(Dockerfile + Helm) | 否 |
| CycloneDX | SBOM(Python + npm) | 否 —— 仅上传制品 |
## CI/CD 管道
11 个并行作业 —— 质量门在失败时阻止合并:
```
git push / PR
|
+-- Backend Tests pytest 855 unit tests, cov >= 71% [blocking]
+-- Integration Tests 42 E2E tests (auth/detect/pipeline) [blocking]
+-- PostgreSQL Migration upgrade / downgrade / idempotency [blocking]
+-- Frontend Build vite + Playwright E2E [blocking]
+-- Code Quality flake8, 0 errors [blocking]
+-- Security Scans pip-audit, npm audit, gitleaks [blocking]
+-- Docker Build compose smoke + healthcheck [blocking]
+-- Helm Chart Validation lint + render + offline YAML check [blocking]
+-- Checkov IaC scan (Dockerfile + Helm) [non-blocking]
|
v
quality-gate --> Merge allowed / Blocked
```
## 生产部署
### Docker Compose
```
docker compose --profile soar up -d # Full stack including SOAR
docker compose up -d # SOC core only
```
| 服务 | 端口 | 用途 |
|---|---:|---|
| frontend | 80->8080 | nginx-unprivileged React SPA |
| backend | 8000 | FastAPI uvicorn(uid 1000,非 root) |
| worker | -- | Arq 后台 Worker(Redis 消息代理) |
| redis | 6379 | 缓存、Streams、会话、任务、jti 拒绝列表 |
| prometheus | 9090 | 指标采集(后端 + 系统) |
| grafana | 3000 | 仪表盘 —— 10 面板 SOC 概览 |
| loki | 3100 | 日志聚合(30 天保留期) |
| thehive | 9000 | 仅 SOAR 配置 |
| cortex | 9001 | 仅 SOAR 配置 |
### Helm
```
helm upgrade --install cybertwin deploy/helm/cybertwin-soc \
--set image.backend.tag=v3.2.0 \
--set ingress.host=soc.example.com \
--set ingress.tls.enabled=true \
--set serviceMonitor.enabled=true
```
### 数据库迁移
```
export DATABASE_URL=postgresql+psycopg2://user:pass@host:5432/cybertwin
alembic upgrade head # apply all migrations
alembic downgrade -1 # roll back one migration
```
## 项目结构
```
CyberTwin-SOC/
|-- backend/ Python 3.12 -- 19,000+ LoC
| |-- api/ 21 routers + main.py + deps.py + errors.py
| |-- detection/ 650 rules (by tactic) + Sigma + MITRE CAR + Elastic rules
| |-- coverage/ 8-state machine + gap analyser
| |-- soc/ cases, feedback, suppressions
| |-- ingestion/ Redis Streams + pipeline
| |-- mitre/ 622 techniques, TAXII sync, D3FEND
| |-- purple_team/ Atomic Red Team runner
| |-- auth/ JWT, OIDC, RBAC store, sessions
| |-- observability/ Prometheus, OpenTelemetry, JSON logs
| |-- db/ SQLAlchemy ORM, TenantRepository
| |-- crypto/ AES-256-GCM field encryption, HKDF
| |-- connectors/ abuse.ch, AbuseIPDB, YARA, CALDERA, Stratus Red Team, circuit breaker
| |-- threat_intel/ VirusTotal, Shodan, GreyNoise, MISP, OpenCTI, AbuseIPDB, VT Hunting
| +-- jobs/ Arq worker + task registry + intel_sync + data retention
|-- frontend/ React 18 + Vite -- 13,000+ LoC -- 27 pages
|-- tests/ 855 unit + 42 integration (E2E) -- all passing
| +-- integration/ conftest, test_auth_flow, test_detection_pipeline,
| test_scenario_e2e (MITRE, Sigma, telemetry, AI triage)
|-- data/
| +-- iocs/ 53 C2 IPs, 52 malicious domains, 30 malware hashes,
| 32 CVE-MITRE mappings (public threat intel sources)
|-- alembic/ Migrations 0001-0005 (all tables, indexes, FK, RBAC)
|-- deploy/
| |-- helm/ Helm chart + ServiceMonitor
| |-- grafana/ Grafana provisioning + 10-panel SOC dashboard
| +-- loki/ Loki config (boltdb-shipper, 30-day retention)
|-- scenarios/ 11 attack scenario JSON files
|-- docs/
| |-- getting-started.md Install, first login, first scenario
| |-- user-guide-soc-analyst.md Dashboard, alerts, triage, cases
| |-- detection-engineering.md Writing rules, Sigma format, testing
| |-- purple-team-guide.md Purple team API, scoring, grading
| |-- deployment.md Docker, Helm/K8s, env vars, hardening
| |-- pipeline.md Full ingest→detect→alert→SOAR pipeline
| +-- proof/, compliance/, operations/
+-- .github/workflows/ ci.yml -- 11 jobs + quality gate
```
## 质量与测试
```
# 完整后端测试套件
python -m pytest tests/ -v
# 附带覆盖率报告 (门槛 >= 71%, 目标 80%+)
python -m pytest tests/ --cov=backend --cov-report=term-missing
# CI-equivalent lint
flake8 backend/ --max-line-length=120 --ignore=E501,W503,E402,E241,E231,E704
# 安全扫描
pip-audit -r requirements.txt --strict
bandit -r backend/ -ll --skip B101,B104
# 前端 E2E
cd frontend && npm ci && npm run test:e2e
```
master 分支当前状态:
```
855 unit tests -- 0 failed (python -m pytest tests/ --ignore=tests/integration)
42 E2E tests -- 0 failed (python -m pytest tests/integration/)
flake8: 0 errors
pip-audit: 0 CVE
npm audit: 0 high
gitleaks: 0 leaks
coverage: ~80% (gate >= 71%)
```
## 文档
### 用户与运维指南
| 文档 | 用途 |
|---|---|
| [docs/getting-started.md](docs/getting-started.md) | 前置条件、安装、首次登录、首次场景 |
| [docs/user-guide-soc-analyst.md](docs/user-guide-soc-analyst.md) | 仪表盘导航、告分类、案件、紫队 |
| [docs/detection-engineering.md](docs/detection-engineering.md) | 编写规则、Sigma 格式、使用遥测测试 |
| [docs/purple-team-guide.md](docs/purple-team-guide.md) | 紫队 API、评分模型、等级定义 |
| [docs/deployment.md](docs/deployment.md) | Docker Compose、Helm/K8s、环境变量表、加固检查清单 |
| [docs/pipeline.md](docs/pipeline.md) | 完整 ingest→detect→alert→SOAR 管道及 curl 示例 |
### 证明与合规
| 文档 | 用途 |
|---|---|
| [docs/proof/audit-report.md](docs/proof/audit-report.md) | 安全审计,7 个领域评分 |
| [docs/proof/mitre-coverage-snapshot.md](docs/proof/mitre-coverage-snapshot.md) | 622/622 100% 规则映射 |
| [docs/proof/security-scan-summary.md](docs/proof/security-scan-summary.md) | pip-audit、Bandit、Gitleaks、Trivy 结果 |
| [docs/proof/benchmark-results.md](docs/proof/benchmark-results.md) | 管道 EPS 和延迟 |
| [docs/proof/docker-validation.md](docs/proof/docker-validation.md) | Compose + Docker 构建证明 |
| [docs/operations/backup-recovery.md](docs/operations/backup-recovery.md) | 备份/灾难恢复手册 |
| [docs/compliance/soc2-readiness.md](docs/compliance/soc2-readiness.md) | SOC 2 Type II 准备就绪 |
| [docs/compliance/iso27001-readiness.md](docs/compliance/iso27001-readiness.md) | ISO 27001:2022 Annex A 控制映射 |
| [docs/compliance/gdpr-data-processing.md](docs/compliance/gdpr-data-processing.md) | GDPR 数据类别、保留、数据主体权利 |
| [CHANGELOG.md](CHANGELOG.md) | 版本化变更日志 |
| [SECURITY.md](SECURITY.md) | 漏洞披露策略 |
| [CONTRIBUTING.md](CONTRIBUTING.md) | 如何贡献 |
## 贡献
欢迎提交 PR。要求:
1. `pytest tests/ --ignore=tests/integration` 通过(855+),`pytest tests/integration/` 通过(42+),当涉及 UI 时 `npm run test:e2e` 通过
2. 使用 CI 标志的 `flake8` 干净
3. 新端点需要包含单元测试和作用域权限(resource:action)
4. 新 ATT&CK 技术需添加到 `backend/mitre/attack_data.py`
5. 无密钥、无硬编码凭证、无易受路径遍历攻击的字符串操作
6. 安全扫描(pip-audit, npm audit, gitleaks)必须保持通过——否则阻塞 CI
在提出 PR 之前,请阅读 CONTRIBUTING.md 和 CODE_OF_CONDUCT.md。
许可证:MIT —— 见 LICENSE。
为网络安全社区而构建。
[Star 项目](https://github.com/omarbabba779xx/CyberTwin-SOC-v2)
标签:AES256加密, AI风险缓解, AMSI绕过, Atomic Red Team, CIDR查询, Cloudflare, Cortex, CSPM, GET参数, GPT, Grafana, Helm, Loki, MITRE ATLAS, MITRE ATT&CK, OCSF, OpenTelemetry, Python, RBAC, React, SHA256审计链, SigmaHQ, SLA, SOAR, SOC平台, Stratus Red Team, Syscalls, TheHive, TinkerPop, 云安全态势管理, 云攻击模拟, 云计算, 全栈开源, 前端应用, 参数枚举, 威胁检测, 子域名突变, 安全工具集合, 安全工程, 安全运营中心, 对手模拟, 搜索引擎查询, 数据展示, 数据泄露检测, 无后门, 案例工作流, 检测规则, 测试用例, 漏洞管理, 独立可执行文件, 紫队, 红队, 网络映射, 网络资产发现, 自定义请求头, 规则引擎, 请求拦截, 逆向工具, 邮件枚举, 零CVE