Mousewarriors/SEIM-Project
GitHub: Mousewarriors/SEIM-Project
基于Next.js构建的SOC分析师培训平台,通过模拟真实工作流程和合成遥测数据,帮助安全人员掌握警报分拣、事件调查、端点取证等核心技能。
Stars: 1 | Forks: 0
# 🛡️ MouseWarriors SOC — SIEM & SOC 分析师培训平台
一个作为 Next.js Web 应用程序构建的完全交互式 **安全运营中心 (SOC)** 培训环境。旨在模拟真实世界的 SOC 分析师工作流程,包括警报分类、事件调查、端点取证、邮件网关分析和威胁情报 —— 所有这些都由逼真的合成遥测数据和 AI 驱动的调查助手提供支持。
## 🖥️ 截图
| Dashboard — Mission Control | Investigation View |
|---|---|
| Alert triage with sortable priority/date columns, inline expansion for alert details, severity badges, and real-time status tracking. | Event log analysis with dataset filtering, playbook progress tracking, IOC reference, and AI-assisted investigation. |
| Email Gateway | Threat Intelligence |
|---|---|
| Clickable email table with detail panel, filter tabs (All/Allow/Block), and sender/recipient metadata inspection. | IOC lookup with auto-detection (IP/Hash/Domain), VirusTotal integration, sighting timeline, and affected host correlation. |
| Endpoint Security | AI Assistant & Notepad |
|---|---|
| Host inventory with system info, tabbed log viewers (Processes, Network, Terminal, Browser) with proper padding and spacing. | Global AI assistant (Ollama-powered) and investigation notepad that persist across all pages via header toggle switches. |
## ✨ 核心功能
### 🎯 任务控制仪表板
- **警报队列**,带有可排序列(优先级、创建日期)和可视排序指示器
- **内联警报展开** —— 点击任何警报可直接在行下方查看触发原因、Playbook 步骤和命令行参数
- **严重性徽章**,带有颜色编码指示器(Critical, High, Medium, Low)
- **一键调查** —— “Investigate” 按钮启动完整的调查工作流程
### 🔍 调查工作流程
- **事件日志查看器** —— 可按数据集过滤(Network、Endpoint、Email、Terminal),支持全文搜索
- **可展开事件** —— 点击任何事件查看完整的原始 JSON payload
- **Playbook 进度追踪器** —— 清单式步骤及完成百分比条
- **IOC 参考面板** —— 已知的失陷指标显示为自动化证据
### 🤖 AI 驱动的调查助手
- 通过 API 代理 (`/api/ai-chat`) 进行 **Ollama 集成**,使用 `qwen2.5:14b` 模型
- **上下文感知** —— AI 在其系统提示中接收事件上下文(警报标题、严重性、IOC、主机信息)
- **全局持久性** —— 从页眉切换 AI 面板,它会跟随您跨越每个页面
- 通过 Zustand 状态管理将 **聊天历史保存在** localStorage 中
- 等待响应时带有动画点的 **加载指示器**
- 如果 Ollama 不可用时的 **优雅降级**
### 📝 调查记事本
- 可从页眉切换的 **全局记事本**,在所有页面间持久保存
- **等宽字体**,优化用于复制 IP、时间戳、哈希值和 MITRE 技术 ID
- **自动保存** 到 localStorage —— 永远不会丢失您的笔记
### ✉️ 邮件网关
- 带有固定表头和适当填充的 **专业邮件表格**
- **可点击的邮件** —— 打开包含主题、发件人/收件人、时间戳、源/目标 IP、状态徽章和原始事件 JSON 的详情面板
- **过滤标签** —— All, Allowed, Blocked
- **摘要统计** —— 一目了然的总数、允许和阻止计数
### 🌐 威胁情报
- 带有自动类型检测的 **IOC 搜索**(IP 地址、哈希、域名/URL、关键字)
- **VirusTotal 集成** —— 任何 IOC 的一键查询按钮
- **关联引擎** —— 搜索所有事件遥测数据以查找 IOC 目击记录
- **统计仪表板** —— 总目击次数、受影响主机、首次/最后出现时间戳
- **目击时间线** —— 用于匹配指标的按时间顺序的事件查看器
### 🖥️ 端点安全
- 带有 OS、用户和最后出现元数据的 **主机清单网格**
- **选项卡式日志查看器** —— Processes、Network、Terminal、Browser 和 Host Info 选项卡
- 带有清晰字段布局的 **系统和用户信息面板**
- 带有青色强调边框的 **悬停效果**
### 📋 Log Hunter
- 跨所有数据集的 **全事件搜索**
- 带有结果内搜索功能的 **数据集过滤**
- 带有 “Load More” 功能的 **分页结果**
## 🏗️ 架构
```
SIEM SOC Training/
├── soc-app/ # Next.js 16 application
│ ├── src/
│ │ ├── app/
│ │ │ ├── page.tsx # Dashboard (Mission Control)
│ │ │ ├── dashboard-client.tsx # Interactive dashboard with sorting & expansion
│ │ │ ├── investigate/[id]/ # Dynamic investigation pages
│ │ │ ├── email/ # Email Gateway
│ │ │ ├── endpoint/ # Endpoint Security (list + detail)
│ │ │ ├── intel/ # Threat Intelligence
│ │ │ ├── logs/ # Log Hunter
│ │ │ ├── api/ai-chat/ # Ollama proxy API route
│ │ │ ├── layout.tsx # Root layout with AppShell
│ │ │ └── globals.css # Design system & component styles
│ │ ├── components/
│ │ │ ├── Sidebar.tsx # Navigation sidebar
│ │ │ ├── Header.tsx # Header with AI/Notepad toggle switches
│ │ │ ├── AppShell.tsx # Client wrapper for global panel
│ │ │ ├── GlobalPanel.tsx # AI Assistant + Notepad (global)
│ │ │ └── LogViewer.tsx # Reusable log event viewer
│ │ └── lib/
│ │ ├── data.ts # Data layer (scenario + event loading)
│ │ ├── hosts.ts # Host/endpoint data
│ │ └── store.ts # Zustand state (alerts, AI chat, notepad)
│ └── package.json
├── scenarios/
│ ├── deep/ # 35 deep investigation scenarios (SCN-001..SCN-025 + ASN-401..ASN-410)
│ └── light/ # 25 light triage scenarios (SCN-101..125)
├── data/
│ ├── *.events.jsonl # Per-scenario event telemetry (ECS-like JSON)
│ ├── *.events.csv # Flattened CSV exports
│ ├── all.events.jsonl # Combined dataset
│ └── ioc_library_seed.csv # Offline IOC reference
├── opensearch/
│ ├── index-mapping.json # OpenSearch/Elasticsearch index mapping
│ └── bulk.ndjson # Bulk import for OpenSearch
└── scripts/
├── scoring_engine_reference.py # Reference scoring logic
└── ioc_fetcher.py # Real IOC fetcher (URLhaus, MalwareBazaar)
```
## 🛠️ 技术栈
| Technology | Purpose |
|---|---|
| **Next.js 16** | React framework with App Router, server components, dynamic routes |
| **React 19** | UI component library |
| **TypeScript** | Type safety across the entire codebase |
| **Zustand** | Lightweight state management with localStorage persistence |
| **Ollama** | Local LLM inference for the AI investigation assistant |
| **Lucide React** | Consistent icon set throughout the UI |
| **date-fns** | Date formatting and relative time calculations |
| **Recharts** | Dashboard chart visualisations |
| **CSS Custom Properties** | Design system with dark theme variables |
## 📊 场景内容
### 深度场景 (35)
包含丰富遥测数据、多种事件类型和综合 Playbook 的完整调查场景。每个场景包含 50–200+ 个跨网络、端点、邮件和终端数据集的关联事件。
- **混合深度场景 (25)** — SCN-001 到 SCN-025 涵盖本地/混合用例。
- **云原生深度场景 (10)** — ASN-401 到 ASN-410 侧重于现代云工具。
### 轻量场景 (25)
用于练习警报评估、优先级分类和基本 IOC 提取的快速分类场景。每个场景包含 10–50 个专注于单一攻击向量的事件。
### 事件遥测格式
所有事件遵循类似 ECS(Elastic Common Schema)的 JSON 结构:
```
{
"@timestamp": "2025-03-15T14:32:01.000Z",
"event": { "dataset": "endpoint", "action": "process_started" },
"host": { "name": "WKS-PC01", "ip": ["10.10.0.45"] },
"process": { "name": "powershell.exe", "command_line": "powershell -enc ..." },
"user": { "name": "jdoe" }
}
```
## 🎨 设计系统
该应用程序使用基于 CSS 自定义属性构建的自定义深色主题设计系统:
- **背景**: `--bg-primary` (最深) → `--bg-secondary` → `--bg-tertiary` → `--bg-elevated`
- **文本**: `--text-primary` → `--text-secondary` → `--text-muted` → `--text-accent`
- **强调色**: `--cyan` (主要操作), `--amber` (警告), `--red` (严重), `--green` (成功)
- **等宽字体**: JetBrains Mono / system monospace,用于日志数据、IOC 和时间戳
- **排版**: 通过 Google Fonts 加载的 Inter 字体家族
## 📈 展示技能
该项目展示了对以下方面的熟练程度:
- **SOC 运营**: 警报分类、事件调查工作流程、IOC 分析、MITRE ATT&CK 映射
- **安全工具**: SIEM 概念、日志分析、端点取证、邮件安全、威胁情报
- **全栈开发**: Next.js、React、TypeScript、API 路由、状态管理
- **AI/ML 集成**: 带有上下文感知提示的 LLM 驱动调查助手
- **UI/UX 设计**: 专业的深色主题设计系统、响应式布局、微交互动画
- **数据工程**: 符合 ECS 标准的遥测生成、OpenSearch 集成、批量数据管道
## 📝 重要说明
- 本项目 **不包含恶意软件二进制文件** —— 仅包含指标和模拟遥测数据
- IOC 数据包含对真实威胁情报源(URLhaus、MalwareBazaar)的引用以增加真实感
- AI 助手需要本地运行的 Ollama 实例,并且完全离线/私密
- 所有状态都存储在客户端的 localStorage 中 —— 不需要外部数据库或身份验证
## 📄 许可证
本项目是网络安全作品集的一部分。可随意将其作为您自己 SOC 培训环境的灵感来源。
## 🔒 安全加固
本项目已通过以下安全措施进行加固:
1. **环境变量**: 敏感配置(Ollama URL、模型)从 `.env.local` 加载,而不是硬编码。
2. **输入验证**: 对所有 API 输入(AI Chat)进行严格的类型检查和清理。
3. **安全标头**: 实施 HTTP 安全标头,包括:
- `X-DNS-Prefetch-Control`
- `Strict-Transport-Security` (HSTS)
- `X-Frame-Options` (Clickjacking protection)
- `X-Content-Type-Options` (MIME sniffing protection)
- `Referrer-Policy`
- `Permissions-Policy`
4. **“Powered By” 披露**: 禁用 `X-Powered-By: Next.js` 标头以减少信息泄露。
5. **安全依赖**: 建议定期更新依赖项。
6. **Ingest 加固**: `/api/ingest` 现在强制执行 `INGEST_API_KEY`、schema 验证、payload 大小/事件计数限制,以及对 `live.events.jsonl` 的防御性轮转。
7. **MITRE 转发**: ATT&CK 分析器代理现在委托给 `MITRE_ANALYZER_URL`,使本地 Python 服务可根据环境进行配置。
### 配置
在根目录下创建一个 `.env.local` 文件:
```
OLLAMA_API_URL=http://localhost:11434/api/chat
OLLAMA_MODEL=qwen2.5:14b
MITRE_ANALYZER_URL=http://localhost:8888/query
INGEST_API_KEY=local-ingest-key
```
`/api/ingest` 现在期望 `x-api-key: ` (或
`Authorization: Bearer `) 且 MITRE 转发器委托给
`MITRE_ANALYZER_URL`。
*由 Simon Wood 用 ☕ 和 🛡️ 构建*
标签:AI安全助手, AI风险缓解, Ask搜索, IOC分析, LLM评估, Ollama, SIEM模拟, SOC培训, VirusTotal, 合成遥测数据, 威胁情报, 安全分析师, 安全教育平台, 安全运营中心, 开发者工具, 数字取证, 漏洞修复, 端点安全, 网络安全培训, 网络映射, 自动化攻击, 自动化脚本, 蓝队训练, 补丁管理, 警报分流, 邮件网关, 项目化管理