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, 合成遥测数据, 威胁情报, 安全分析师, 安全教育平台, 安全运营中心, 开发者工具, 数字取证, 漏洞修复, 端点安全, 网络安全培训, 网络映射, 自动化攻击, 自动化脚本, 蓝队训练, 补丁管理, 警报分流, 邮件网关, 项目化管理