tanmaymish/mini-soc
GitHub: tanmaymish/mini-soc
Mini SOC 是一个集成 SIEM 与 SOAR 能力的开源安全运营平台,通过混合检测引擎和自动化响应 playbook 实现实时威胁发现与遏制。
Stars: 0 | Forks: 0
## 🎯 项目概述
Mini SOC 是一个精英级的网络安全 pipeline,旨在摄取原始日志,使用威胁情报对其进行丰富,结合静态规则和统计异常检测来识别恶意行为,并自动执行遏制 playbook。
它为安全分析师提供了一个 **“单一视窗”** 的 React 仪表板,用于实时监控网络遥测数据,弥合了原始数据与可操作威胁情报之间的差距。
## 🏗️ 系统架构
Mini SOC 采用了高度模块化、解耦的 pipeline 架构,模仿了 Splunk、Datadog Security 或 Cortex XSOAR 等企业级平台。
```
graph TD;
subgraph "1. Data Ingestion & Enrichment Layer"
Logs[Raw Syslog & JSON App Logs] --> API(Ingestion API)
API --> Normalizer(Log Normalizer)
Normalizer --> |IP Lookup| TI{Threat Intel DB}
end
subgraph "2. Fast Data Storage"
Normalizer --> MongoDB[(MongoDB Events Volume)]
end
subgraph "3. Hybrid Detection Engine"
Normalizer --> Engine(Correlation & Detection Engine)
Engine -->|Threshold Based| Rule1(SSH Brute Force)
Engine -->|Velocity Based| Rule2(Horizontal Port Scanning)
Engine -->|Behavioral| Rule3(Privilege Escalation)
Engine -->|Statistical ML| Rule4(Isolation Forest Anomaly)
Engine -->|Reputation| Rule5(Threat Intel Matcher)
end
subgraph "4. Automated Response (SOAR)"
Rule1 --> Dispatcher(Event Dispatcher)
Rule2 --> Dispatcher
Rule3 --> Dispatcher
Rule4 --> Dispatcher
Rule5 --> Dispatcher
Dispatcher --> SOAR{SOAR Execution Engine}
SOAR --> |Ingestion Level Drop| Playbook1(Auto-Block Attacker IP)
SOAR --> |Account Quarantine| Playbook2(Lock Compromised User)
Playbook1 --> DB_M[(Active Mitigations)]
end
subgraph "5. Analyst Operations (Frontend)"
MongoDB --> Dashboard([Alert Feed & Telemetry])
DB_M --> Dashboard([Active Defense Monitoring])
end
```
## 📦 发布与打包
Mini SOC 的构建充分考虑了现代发布工程。
- **[v1.0.0-rc.1] (当前版本):** 稳定版本,包含完整的摄取、检测和 SOAR 自动化流程。
- **Docker 镜像:** 整个技术栈被打包到经过优化的多阶段 Docker 容器中。
- **微服务部署:** 将 React UI、python API 引擎和 MongoDB 分离到无状态容器中,允许检测引擎进行水平扩展,以适应高吞吐量网络。
## ⚡ 核心能力
### 1. 🔍 数据摄取与丰富
- 将不同的日志源(`auth.log`、结构化 JSON、syslog)标准化为统一的取证 schema。
- 使用 **威胁情报模块** 动态查询外部 IP,并使用信誉评分和行为者原型(例如 `TOR_EXIT_NODE`、`BOTNET`)标记传入的日志。
### 2. 🧠 混合威胁检测
采用多层方法进行威胁狩猎,每条规则都映射到一个
**MITRE ATT&CK 技术**:
| 规则 | 检测内容 | ATT&CK |
|------|---------|--------|
| `brute_force_ssh` | 一个 IP 在特定时间窗口内多次登录失败 | [T1110](https://attack.mitre.org/techniques/T1110/) |
| `port_scan` | 一个 IP 探测大量不同端口 | [T1046](https://attack.mitre.org/techniques/T1046/) |
| `privilege_escalation` | 认证失败后立即使用 `sudo` | [T1548](https://attack.mitre.org/techniques/T1548/) |
| `ml_behavioral_anomaly` | 统计异常值 (Isolation Forest) | [T1078](https://attack.mitre.org/techniques/T1078/) |
| `threat_intel_match` | 来自已知恶意 IP 的流量 | [T1071](https://attack.mitre.org/techniques/T1071/) |
| `web_attack` | Web 日志中的 SQLi、XSS、路径遍历、扫描器 | [T1190](https://attack.mitre.org/techniques/T1190/) |
| `admin_endpoint_abuse` | 未经授权的管理员访问 / 访问控制失效 | [T1548](https://attack.mitre.org/techniques/T1548/) |
| `graphql_abuse` | 内省、深度查询 DoS、mutations | [T1595](https://attack.mitre.org/techniques/T1595/) |
| `api_abuse` | API 速率滥用与 endpoint 枚举 | [T1595](https://attack.mitre.org/techniques/T1595/) |
| `token_anomaly` | 从新 IP 重用 token / 多租户访问 | [T1539](https://attack.mitre.org/techniques/T1539/) |
- **基于规则的触发:** 传统的横向移动(端口扫描)、高速攻击(暴力破解)和局部内部攻击(通过 `sudo` 进行权限提升)。
- **Web 攻击检测:** WAF 风格的特征签名可捕获 Nginx/Apache 访问日志中的 SQL 注入、XSS、路径遍历、命令注入和自动化扫描器(sqlmap、nikto、nuclei)。
- **API 安全:** 每个请求都映射到一个安全域(Auth / Admin / Identity / GraphQL Gateway / Payments)并具有基础风险,然后检查管理员控制平面滥用(访问控制失效)、GraphQL 内省与深度查询滥用、API 速率滥用与枚举,以及被盗 token / 多租户访问 (IDOR)。
- **机器学习 (Isolation Forests):** 离线训练的基线模型可检测网络行为中的统计异常,标记出那些试图在“雷达之下”飞行的攻击。
- **威胁情报匹配:** 即时标记来自已知恶意 IP 的传入日志。
### 2.5 🔗 关联引擎 → 事件
单个告警是数据点;**事件是完整的故事。** 关联引擎将行为者的多个独立微弱信号拼接成一个多阶段事件,包含综合严重程度和按 MITRE 排序的 **杀伤链叙事**(例如 `Reconnaissance → Credential Access → Privilege Escalation`)——相当于 QRadar 的 offenses 或 Splunk ES 的 notable events。通过 `/api/incidents` 提供服务,并在仪表板上实时显示。新的 SOAR playbook 会对 API 域做出响应:**速率限制**、**要求重新认证** 和 **禁用会话**。
### 3. 🤖 自动化修复 (SOAR)
当高严重性告警触发时,内置的 SOAR 引擎会立即执行响应 playbook。
- 在摄取层防火墙自动将攻击者 IP 加入黑名单,在分析之前丢弃其数据包。
- 隔离并锁定显示出被入侵迹象的内部用户账户。
## ⚡ 30 秒快速开始:SOC CLI
无需 Docker。无需数据库。无需服务器。`soc` CLI 直接针对你自己的日志文件运行平台使用的 **完全相同的检测引擎** —— 这样你就可以在几秒钟内对 `/var/log/auth.log` 中的威胁进行狩猎。
```
git clone https://github.com/tanmaymish/mini-soc.git
cd mini-soc
pip install -r requirements.txt
python scripts/train_model.py # build the baseline ML model (offline)
# 🔍 扫描 SSH/auth 日志 → 威胁报告 + 建议的防火墙封禁
python -m cli scan sample_logs/auth.log
# 🌐 扫描 Nginx/Apache 访问日志 → 捕获 SQLi、XSS、traversal、scanners
python -m cli scan sample_logs/access.log
# 📄 生成可共享、独立的 HTML 事件报告
python -m cli report sample_logs/access.log -o incident.html
# 📡 实时 tail 真实日志并观看检测实时触发
sudo python -m cli watch /var/log/auth.log
# 🌍 在 threat-intel 数据库中检查任意 IP
python -m cli ip 185.220.101.1
# 🎬 通过引擎触发所有内置攻击场景(非常适合演示)
python -m cli demo
```
`soc scan` **会自动检测日志格式**(syslog/auth *或* web 访问日志),报告每条被触发的规则并标记其 **MITRE ATT&CK 技术**,对产生最多告警的源 IP 进行排名,并打印可直接复制粘贴的 `iptables` 命令来遏制它发现的攻击者。在任何命令中添加 `--json` 即可将结果通过管道传递给你自己的工具。每条规则都映射到 ATT&CK,因此告警可直接链接到 `attack.mitre.org`。
## 🚀 完整技术栈 (Docker Compose)
整个应用程序都已容器化 —— API 引擎、React 仪表板和数据库 —— 可实现即时部署。
```
# 启动整个 pipeline(API + dashboard + MongoDB)
docker-compose up --build -d
# 打开 dashboard
open http://localhost:5173
# 生成逼真的攻击遥测数据并观察 SOC 做出反应
docker exec -it mini-soc-api python scripts/simulate_attack.py --mode all
```
倾向于使用 Serverless Postgres 而不是 Mongo?只需先导出连接字符串即可 —— 无需更改代码:
```
export DATABASE_URL="postgresql://USER:PASSWORD@HOST/DB?sslmode=require" # e.g. Neon
docker-compose up --build -d
```
## 🕹️ 模拟网络攻击
SOC 运行起来后,使用内置的攻击模拟器生成逼真的遥测数据,并观察 SIEM 的实时反应。
```
# 进入 Flask Container
docker exec -it mini-soc-api bash
# 模拟 SSH Brute Force Attack
python scripts/simulate_attack.py --mode brute_force
# 模拟 APT Port Scan
python scripts/simulate_attack.py --mode port_scan
# 模拟 ML Data Exfiltration Anomaly
python scripts/simulate_attack.py --mode anomaly
# 模拟 Known Threat Actor 攻击边界
python scripts/simulate_attack.py --mode threat_intel
# 一次性释放所有攻击以对 SOC 进行压力测试
python scripts/simulate_attack.py --mode all
```
## 🚀 部署
Mini SOC 完全托管在免费层上,分为静态仪表板和无状态 API。
| 层级 | 托管平台 | 方式 |
|-------|------|-----|
| **Dashboard** (React) | **GitHub Pages** | 每次推送到 `master` 时通过 `.github/workflows/deploy-pages.yml` 自动部署。附带一个 **交互式演示** —— 点击发起攻击,观看实时图表、流式日志控制台和自动遏制措施的实时反应。无需后端。实时访问地址:**[tanmaymish.github.io/mini-soc](https://tanmaymish.github.io/mini-soc/)**。 |
| **API + 引擎** (Flask) | **Render / Railway / Fly** | 通过随附的 `render.yaml` 一键部署。在 `gunicorn` 下运行。 |
| **数据库** | **Neon / Supabase** (Postgres) | 设置 `DATABASE_URL`,应用程序会自动从 Mongo 切换到 Postgres。 |
**启用 GitHub Pages**(一次性操作):在仓库的 **Settings → Pages → Source: GitHub Actions** 中设置。下一次推送就会部署仪表板。
**将实时仪表板指向你的 API:** 设置仓库/Actions 变量 `VITE_API_BASE_URL` 为你部署的 API 的 `/api` URL,并去掉 `VITE_DEMO_MODE`。
## 🛠️ 技术栈
- **后端:** Python 3.12, Flask, Gunicorn
- **机器学习:** Scikit-Learn (Isolation Forest), Pandas, NumPy
- **前端:** React 19, Vite, Tailwind CSS, Recharts, Lucide Icons
- **数据存储:** 可插拔 —— MongoDB *或* PostgreSQL / Neon (JSONB),API 接口相同
- **CLI:** 纯标准库 `soc` 命令 —— 离线日志狩猎,零配置
- **基础设施:** Docker, Docker Compose, GitHub Actions, GitHub Pages
为实用、下一代的安全工程而构建。
检测入侵。遏制威胁。自动化响应。
标签:AMSI绕过, Apex, Python, React, SOAR, Syscalls, 威胁检测, 安全运营中心, 无后门, 机器学习, 测试用例, 版权保护, 网络映射, 自动化响应, 请求拦截, 逆向工具