Yash-Patil-1/SOCLearn
GitHub: Yash-Patil-1/SOCLearn
SOCLearn 是一个交互式 SOC 分析师培训平台,通过结构化课程、检测规则库、SIEM 查询、Playbooks 和测验引擎帮助用户系统学习安全运营中心的各项核心技能。
Stars: 1 | Forks: 0
# 🛡️ SOCLearn — SOC 操作学习平台




## 🖼️ 截图
| 仪表盘与连击 | 课程查看器 | 测验引擎 |
|:--:|:--:|:--:|
|  |  |  |
| 检测规则 | SIEM 查询 | Playbooks |
|:--:|:--:|:--:|
|  |  |  |
## ✨ 功能
| 功能 | 描述 |
|---------|-------------|
| 📖 **引导式课程** | 10 个章节,40 节课程,涵盖 SOC 基础、威胁情报、检测工程、SIEM、事件响应等 |
| 🧠 **测验引擎** | 涵盖 10 个主题领域的 500 道测验题,包含评分、提示和章节级评估 |
| 🎯 **检测规则** | 300 条带有 MITRE ATT&CK 映射的真实场景检测规则 |
| 🔍 **SIEM 查询** | 200 条 SIEM 查询语句,涵盖 Splunk、Elastic、QRadar、Sentinel 等 |
| 📋 **Playbooks** | 100 个事件响应 Playbooks,包含详细的操作步骤 |
| 📡 **日志源** | 150 种日志源,提供事件 ID、字段映射和收集指南 |
| 📚 **术语表** | 420 个 SOC 和网络安全术语,包含定义和分类 |
| 🔎 **统一搜索** | 对检测规则、SIEM 查询、Playbooks、日志源、术语表和课程进行全文搜索 |
| 📊 **进度追踪** | XP、等级、连击、每日目标以及逐章节的完成进度追踪 |
| 🏆 **游戏化** | 等级(最高 10 级)、连击、每日目标和 XP 奖励让您保持学习动力 |
| 🎨 **Ferrari 主题** | 暗色主题 —— 碳黑、钛金、Ferrari 红、银色 |
## 📊 平台统计数据
| 指标 | 数量 |
|--------|-------|
| 章节 | 10 |
| 课程 | 40 |
| 检测规则 | 300 |
| SIEM 查询 | 200 |
| Playbooks | 100 |
| 日志源 | 150 |
| 术语表词汇 | 420 |
| 测验问题 | 500 |
## 🚀 快速开始
### 前置条件
- Python 3.10+
- Node.js 18+
- npm
### 安装
```
# Clone 仓库
git clone https://github.com/Yash-Patil-1/SOCLearn.git
cd SOCLearn
# Backend 设置
cd backend
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# Frontend 设置
cd ../frontend
npm install
```
### 运行应用
```
# Terminal 1 — Backend
cd backend
./venv/bin/python app.py # Starts on http://localhost:8003
# Terminal 2 — Frontend
cd frontend
npm run dev # Starts on http://localhost:5176
```
打开 **http://localhost:5176**
## 🏗️ 技术栈
| 层级 | 技术 |
|-------|-----------|
| 前端 | React 18, Vite 8, Tailwind CSS v4, Lucide Icons, React Router 6, Axios, react-markdown |
| 后端 | Flask 3.0+, Python 3.10+ |
| 数据库 | JSON 文件(所有数据) |
| 设计 | **Ferrari** —— 碳黑 (#0A0A0C)、钛金 (#1A1A1E)、Ferrari 红 (#E80020)、银色 (#C0C0C8) |
## 🔌 API 端点
| 方法 | 端点 | 描述 |
|--------|----------|-------------|
| GET | `/` | 平台信息 |
| GET | `/health` | 健康检查 |
| GET | `/api/search?q=` | 跨所有资源的统一搜索 |
| GET | `/api/course` | 列出所有章节(含进度) |
| GET | `/api/chapter/{id}` | 包含课程的章节详情 |
| GET | `/api/lesson/{chapter_id}/{lesson_id}` | 完整的课程内容 |
| GET | `/api/detection_rules` | 列出检测规则 |
| GET | `/api/detection_rules/{id}` | 检测规则详情 |
| GET | `/api/siem_queries` | 列出 SIEM 查询 |
| GET | `/api/siem_queries/{id}` | SIEM 查询详情 |
| GET | `/api/playbooks` | 列出 Playbooks |
| GET | `/api/playbooks/{id}` | Playbook 详情 |
| GET | `/api/log_sources` | 列出日志源 |
| GET | `/api/log_sources/{id}` | 日志源详情 |
| GET | `/api/glossary` | 列出术语表(支持可选的 `?q=` 过滤) |
| GET | `/api/quiz/next` | 获取下一道测验题 |
| POST | `/api/quiz/answer` | 提交测验答案 |
| GET | `/api/quiz/stats` | 测验表现统计 |
| GET | `/api/streak` | XP、连击、等级、每日目标 |
| POST | `/api/lesson/complete` | 标记课程完成(奖励 XP) |
| POST | `/api/quiz/chapter/{id}/submit` | 提交章节测验 |
## 📁 项目结构
```
SOCLearn/
├── backend/
│ ├── app.py # Flask application
│ ├── requirements.txt # Python dependencies
│ ├── data/
│ │ ├── chapters.json # 10 chapters, 40 lessons (~59k words)
│ │ ├── detection_rules.json # 300 detection rules
│ │ ├── siem_queries.json # 200 SIEM queries
│ │ ├── playbooks.json # 100 playbooks
│ │ ├── log_sources.json # 150 log sources
│ │ ├── glossary.json # 420 glossary terms
│ │ ├── quiz.json # 500 quiz questions
│ │ ├── stats.json # User progress, streak, XP
│ │ └── assemble_chapters.py # Chapter assembler script
│ └── services/
│ ├── quiz_engine.py # Question selection + validation
│ └── stats.py # XP, level, streak logic
├── frontend/
│ ├── src/
│ │ ├── components/ # React components (Sidebar, StreakBadge, etc.)
│ │ ├── pages/ # Page views (Dashboard, Course, Quiz, etc.)
│ │ ├── hooks/ # Custom hooks (keyboard shortcuts)
│ │ └── styles/ # Tailwind CSS with Ferrari theme tokens
│ ├── index.html
│ ├── package.json
│ └── vite.config.js
├── docs/
│ ├── screenshots/ # UI screenshots
│ └── ... # Design docs, PRD, TRD, plans
├── .gitignore
├── LICENSE
└── README.md
```
## 🧪 测试
```
cd backend
./venv/bin/python -m pytest tests/ -v
```
## 📖 课程大纲
| # | 章节 | 课程 |
|---|---------|--------|
| 1 | SOC 简介 | SOC 概述、角色、服务、指标 |
| 2 | 威胁情报 | 威胁情报生命周期、TTPs、情报源、分析 |
| 3 | 日志管理 | 日志类型、收集、存储、保留 |
| 4 | SIEM 基础 | SIEM 架构、关联、规则、仪表盘 |
| 5 | 检测工程 | 检测设计、Sigma 规则、测试、调优 |
| 6 | 事件响应 | 事件响应生命周期、分类、遏制、根除 |
| 7 | 数字取证 | 证据收集、分析、证据监管链 |
| 8 | 威胁狩猎 | 假设、数据源、技术、自动化 |
| 9 | SOC 运营 | 轮班交接、升级、报告、指标 |
| 10 | 进阶主题 | 云 SOC、MITRE ATT&CK、Purple Teaming |
## 🎨 设计
**Ferrari 设计语言:**
- 采用碳黑 (#0A0A0C) 背景的 **暗色主题**
- **Ferrari 红** (#E80020) 作为主要品牌色
- **钛金** (#1A1A1E) 用于表面/容器背景
- **银色** (#C0C0C8) 用于主要文本
- **Orbitron** 用于标题(科技/赛车感)
- **JetBrains Mono** 用于代码和技术内容
- 干净、高对比度的间距和充足的填充
- 流畅的悬停过渡和微交互
## 🔒 重要提示
这是一个**教育平台**。它不会:
- 连接到真实的 SIEM 系统
- 执行实际的安全监控
- 取代专业的 SOC 工具
- 调用外部 AI API
- 需要云或虚拟机
它旨在教授 SOC 概念,解释检测技术,并建立您的理解。一切均在本地运行。
## 👤 作者
**Yash Patil** — B.Tech IT | CEH
🌐 [yashpatil.online](https://www.yashpatil.online/) · 🐙 [GitHub](https://github.com/Yash-Patil-1) · 💼 [LinkedIn](https://www.linkedin.com/in/yash-patil-997357330/)
## 📄 许可证
该项目基于 MIT 许可证授权 —— 详情请参阅 [LICENSE](LICENSE) 文件。
标签:Flask, Homebrew安装, SOC培训, 在线教育平台, 威胁情报, 安全运营, 库, 应急响应, 开发者工具, 扫描框架, 自定义脚本, 逆向工具