deepseyindark/SOCGPT
GitHub: deepseyindark/SOCGPT
SOCGPT 是一个企业级 AI 安全运营平台,能够摄取多种格式的安全日志、通过规则引擎自动检测威胁、映射 MITRE ATT&CK 并利用实时威胁情报丰富告警。
Stars: 0 | Forks: 0
# SOCGPT — 企业级 AI 安全 Copilot
这是一个全栈安全运营平台,能够摄取原始安全日志
(Windows Event Logs、Sysmon、CloudTrail、Azure Activity Logs 等),
自动检测威胁,将发现映射到 MITRE ATT&CK,利用实时威胁情报对其进行丰富,并且 —— 从 Phase 6 开始 —— 允许分析师请求 LLM 解释发生了什么以及该如何处理。
你可以把它看作是一个按比例缩小的、从零构建的 SIEM(Splunk/Sentinel)、EDR 控制台(CrowdStrike)和 AI 分析师助手的结合体,端到端地构建以理解这些工具实际工作方式的每一层。
**状态:Phases 1–5 已完成并测试。Phase 6(LLM 集成)是下一步。**
## 进度
| 阶段 | 增加的功能 | 状态 |
|---|---|---|
| 1 | 基础架构 — 身份验证、角色、仪表板外壳 | ✅ 完成 |
| 2 | 日志摄取 — 7 种格式,后台解析 | ✅ 完成 |
| 3 | 威胁检测 — 规则引擎,告警 | ✅ 完成 |
| 4 | MITRE ATT&CK 映射 + 覆盖范围视图 | ✅ 完成 |
| 5 | 威胁情报 — VirusTotal/AbuseIPDB/Shodan/OTX | ✅ 完成 |
| 6 | LLM 集成 — 自然语言告警解释 | 🚧 进行中 |
| 7 | 基于安全知识库(MITRE、NIST、CIS、OWASP 文档)的 RAG | 📋 计划中 |
| 8 | 对话记忆(针对告警的追问) | 📋 计划中 |
| 9 | 自动化事件报告生成(导出 PDF/Word) | 📋 计划中 |
| 10 | 多 agent pipeline(分析师 → MITRE → CVE → 编写者 → 补救) | 📋 计划中 |
| 11 | 部署 — Docker, CI/CD, Azure, 自定义域名 | 📋 计划中 |
| 12 | 完善 — 深色主题微调、通知、最终 UI 优化 | 📋 计划中 |
## 实际构建的内容(Phases 1–5)
**身份验证与平台**
- 基于三个角色(`admin`、`manager`、`analyst`)的 JWT 身份验证
- 显示真实数据而非 mock 数据的仪表板 — 已摄取的日志事件、按严重程度划分的未处理告警、最近的告警流
**日志摄取**
- 上传 Windows EVTX、Sysmon (EVTX)、CSV、JSON、纯文本/syslog、AWS CloudTrail 和 Azure Activity Log 文件
- 后台解析将每种格式标准化到相同的字段上(时间戳、主机名、用户、IP、进程、命令行、事件 ID)
- UI 中的实时状态轮询(排队 → 处理中 → 已完成/失败)
**威胁检测**
- 规则引擎(`app/detection/`)评估每个新摄取的事件:暴力破解登录(在同一主机/用户上,10 分钟窗口内 5 次以上失败登录)、混淆的 PowerShell、已知的凭证转储工具特征(例如 Mimikatz)、被清除的审计日志、可疑的服务安装
- 告警有其独立的概念 — 严重性、状态(open/acknowledged/resolved),并关联回触发它们的确切事件
- 重复抑制:针对相同规则+主机+用户的已开启告警不会重新触发,但已解决的告警可以重复出现
**MITRE ATT&CK 映射**
- 每个告警都标记有真实的技术 ID、名称和战术 — 经过 attack.mitre.org 验证,而非猜测(几条规则映射到特定的子技术,例如 Mimikatz 检测 → T1003.001 *LSASS Memory*,而不仅仅是父级 T1003)
- 专门的 **ATT&CK 覆盖范围**页面按战术对技术进行分组,并显示每种技术的真实告警数量,包括已覆盖但尚未触发的技术
**威胁情报**
- 来自四个真实提供商的按需 IP 丰富:VirusTotal、AbuseIPDB、Shodan、AlienVault OTX — 在任何告警的源 IP 上点击“Look up”
- 结果缓存在 Redis 中(24 小时 TTL),因此不会在严格的免费层级速率限制下重复查询相同的 IP
- 未配置 API 密钥的提供商将如实显示为“not configured”,而不是静默消失
## 架构
```
React + TypeScript (Vite, Tailwind)
│
FastAPI backend (JWT auth)
│
┌───────────────────────┼───────────────────────┐
│ │ │
PostgreSQL Redis (cache) External threat intel
(users, uploads, (IP enrichment (VirusTotal, AbuseIPDB,
events, alerts) 24h cache) Shodan, OTX)
│
│
┌─────┴──────┐
│ │
Parsers Detection engine → MITRE ATT&CK mapping
(EVTX, CSV, (rule-based)
JSON, TXT,
CloudTrail,
Azure)
```
## 技术栈
**前端** — React, TypeScript, Vite, Tailwind CSS, Recharts, React Router, Axios
**后端** — Python, FastAPI, SQLAlchemy, Pydantic, JWT (python-jose), bcrypt (passlib)
**数据** — PostgreSQL, Redis
**日志解析** — python-evtx(真实的 Windows Event Log 二进制解析)、自定义的 CSV/JSON/syslog 解析器
**威胁情报** — VirusTotal, AbuseIPDB, Shodan, AlienVault OTX(通过 httpx)
**部署(Phase 11)** — Docker, Docker Compose, GitHub Actions, Azure
## 快速开始
```
cd SOCGPT
cp backend/.env.example backend/.env # set SECRET_KEY: openssl rand -hex 32
docker compose up --build
```
打开 `http://localhost:5173`,注册,即可进入系统。威胁情报提供商无需任何设置即可工作(在你添加免费的 API 密钥之前,它们会显示“not configured”——参见 `backend/.env.example`)。
完整的手动(非 Docker)设置、每个功能的分步演练以及已知的简化项完整列表详见 [`SETUP.md`](./SETUP.md)。
## 测试方法
每个阶段在移交之前,都使用真实的 FastAPI TestClient 针对真实的数据库进行了集成测试 —— 而不仅仅是“导入没有报错”。这捕获了一些具体问题:
- 一个真实的 Windows 攻击样本 `.evtx` 文件(来自公共取证样本库)被端到端解析,以捕获合成测试文件永远无法发现的二进制格式错误 —— 这实际上是如何发现 EVTX 时间戳格式错误和 UUID 跨会话处理错误的过程。
- CloudTrail 的嵌套 `userIdentity` 对象在第一次尝试时没有被正确解包 —— 通过针对真实的 CloudTrail JSON 结构(而非理想化的结构)进行测试而发现。
- MITRE ATT&CK 技术 ID 对照 attack.mitre.org 进行了检查,而不是凭记忆信任。
- 威胁情报提供商响应解析已针对每个提供商官方文档化的 schema 进行了验证(VirusTotal、AbuseIPDB、Shodan、OTX 都有各自不同的、不仔细阅读文档就不知道的响应结构);Redis 缓存层已针对真实的本地 Redis 实例进行了验证,确认对相同 IP 的第二次查找确实是从缓存中提供的,并且不会再次请求(受速率限制的)提供商。
## 已知的简化项
在向任何人演示此项目之前值得阅读 —— 在 [`SETUP.md`](./SETUP.md#known-simplifications) 中查看带有上下文的完整列表。重点:
- 自助注册目前允许选择 `admin` —— 适合单人使用,但真正的多用户场景需要仅限邀请的流程。
- 目前还没有数据库迁移(`Base.metadata.create_all`);一旦 schema 稳定下来,Alembic 是一个直接的下一步。
- 后台作业处理在进程内(FastAPI `BackgroundTasks`)进行,而不是持久的队列 —— 如果这需要在作业执行中途能在进程重启后继续运行,已经部署到位的 Redis 可以随时升级为 RQ/Celery。
- 五条检测规则是一个真实且可扩展的引擎 —— 并不能达到生产级 SIEM 的覆盖范围。
## 下一步 — Phase 6:LLM 集成
第一个 AI 层。计划:
- 在告警详情视图中提供一个“Explain this alert”操作,它将告警及其匹配的事件发送给 LLM(OpenAI/Azure OpenAI),并返回结构化的响应:用通俗语言解释发生了什么、风险评估以及具体的补救步骤(例如:“在 2 分钟内针对 Administrator 账户的 5 次失败登录 → 可能是暴力破解 → 启用 MFA、阻止源 IP、强制重置密码”)
- 告警上已有的 MITRE 技术和威胁情报数据将作为上下文传入 prompt 中,因此模型不仅仅是基于原始日志进行推理
- 这为 Phase 7(基于 MITRE/NIST/CIS/OWASP 文档的 RAG)奠定了基础,这正是将这些解释从“听起来似是而非”转变为“有真实来源支撑”的关键,同时也为 Phase 8(对话记忆)做好了准备,允许分析师针对特定告警提出后续问题
## 简历项目描述
标签:AMSI绕过, DLL 劫持, 大语言模型, 威胁情报, 威胁检测, 安全运营中心, 开发者工具, 搜索引擎查询, 测试用例, 网络映射, 请求拦截, 逆向工具