raj-1819/Home-SOC-Lab-Splunk-SIEM
GitHub: raj-1819/Home-SOC-Lab-Splunk-SIEM
基于Splunk SIEM的家用SOC实验室,用于威胁检测和实战演练。
Stars: 0 | Forks: 0
# 🛡️ 家用 SOC 实验室 — 使用 Splunk SIEM 进行威胁检测







## 📋 目录
- [项目概述](#-project-overview)
- [实验室架构](#-lab-architecture)
- [使用的技术](#-technologies-used)
- [实验室指标](#-lab-metrics)
- [设置阶段](#-setup-phases)
- [检测规则](#-detection-rules)
- [MITRE ATT&CK 覆盖范围](#-mitre-attck-coverage)
- [项目截图](#-project-screenshots)
- [挑战与解决方案](#-challenges-and-solutions)
- [主要贡献](#-key-contributions)
- [许可证](#-license)
## 🎯 项目概述
该项目通过从头构建完整的威胁检测环境,展示了 SOC 分析员的实战技能。实验室包括:
- **3 个虚拟机**在隔离的内部网络(SOC-Lab)上
- **Splunk Enterprise SIEM** 消费 6,209+ 个实时事件
- **Sysmon v15.20** 收集详细的 Windows 遥测数据
- **4 个自定义 SPL 检测规则**映射到 MITRE ATT&CK
- **每 5 分钟运行一次的自动警报**
- **Splunk Dashboard Studio 中的 SOC 仪表板**带有实时面板
## 🏗️ 实验室架构
```
┌─────────────────────────────────────────────────────────┐
│ SOC-Lab Internal Network │
│ 192.168.10.0/24 │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Windows 10 Pro │ │ Kali Linux │ │
│ │ Victim │ │ Attacker │ │
│ │ 192.168.10.10 │ │ 192.168.10.20 │ │
│ │ │ │ │ │
│ │ ✅ Sysmon v15 │ │ ✅ Nmap │ │
│ │ ✅ Splunk UF │ │ ✅ Metasploit │ │
│ └────────┬─────────┘ └──────────────────┘ │
│ │ logs (port 9997) │
│ ▼ │
│ ┌──────────────────┐ │
│ │ Ubuntu Server │ │
│ │ Splunk SIEM │ │
│ │ 192.168.10.30 │ │
│ │ │ │
│ │ ✅ Splunk 10.2 │ │
│ │ ✅ Port 8000 │ │
│ │ ✅ Port 9997 │ │
│ └──────────────────┘ │
└─────────────────────────────────────────────────────────┘
```
## 🛠️ 使用的技术
| 工具 | 版本 | 目的 |
|------|---------|---------|
| VirtualBox | 7.0.20 | 虚拟化平台 |
| Windows 10 Pro | 22H2 | 目标/受害者机器 |
| Kali Linux | 2026.1 | 攻击模拟 |
| Ubuntu Server | 26.04 LTS | SIEM 主机操作系统 |
| Splunk Enterprise | 10.2.3 | SIEM 平台 |
| Splunk Universal Forwarder | 10.4.0 | 日志传输代理 |
| Sysmon | v15.20 | Windows 遥测 |
| SwiftOnSecurity Config | 最新版 | Sysmon 规则集 |
## 📊 实验室指标
```
╔══════════════════════════════════════════════════════╗
║ SOC LAB — KEY METRICS ║
╠══════════════════════════════════════════════════════╣
║ Total Events Ingested │ 6,209+ ║
║ Sysmon Events (index=sysmon)│ 2,167+ ║
║ Windows Security Events │ 4,042+ ║
║ Detection Rules Authored │ 4 ║
║ MITRE ATT&CK Techniques │ 4 (T1110/T1059/T1046)║
║ Scheduled Alerts │ 4 (every 5 min) ║
║ Dashboard Panels │ 3 ║
║ VMs Built │ 3 ║
║ Snapshots Taken │ 9 ║
╚══════════════════════════════════════════════════════╝
```
### 事件分布
```
Events by Source
════════════════════════════════════════
Windows Security ████████████████░░░░ 65% (4,042 events)
Sysmon Operational ████████████░░░░░░░░ 35% (2,167 events)
════════════════════════════════════════
Detection Coverage by MITRE Technique
════════════════════════════════════════
T1110 Brute Force ██████████ HIGH
T1059 Command Scripting ██████████ HIGH
T1059.001 PowerShell ██████████ HIGH
T1046 Network Scanning ████████░░ MEDIUM
════════════════════════════════════════
Sysmon EventCode Breakdown
════════════════════════════════════════
EventCode 1 Process Create ████████████████ 75%
EventCode 3 Network Connect ████░░░░░░░░░░░░ 10%
EventCode 13 Registry ███░░░░░░░░░░░░░ 8%
Other codes ███░░░░░░░░░░░░░ 7%
════════════════════════════════════════
```
## ⚙️ 设置阶段
### 第 1 阶段 — 实验室基础设施
| 步骤 | 操作 | 结果 |
|------|--------|--------|
| 1 | 安装 VirtualBox 7.0.20 | 虚拟化平台就绪 |
| 2 | 将 D:\SOC-Lab\VMs 配置为默认文件夹 | 所有虚拟机存储在 D 驱动器上 |
| 3 | 下载 3 个 OS ISO | Windows 10、Kali 2026.1、Ubuntu 26.04 |
| 4 | 创建并安装 3 个虚拟机 | 所有操作系统安装完成 |
| 5 | 安装 Guest Additions | 虚拟机性能流畅 |
| 6 | 设置内部网络 "SOC-Lab" | 隔离的实验室网络 |
| 7 | 分配静态 IP | .10、.20、.30 已确认 |
| 8 | 验证所有虚拟机之间的 ping | 网络连接已确认 |
| 9 | 拍摄快照 | 清洁基线已保存 |
### 第 2 阶段 — Splunk SIEM
| 步骤 | 操作 | 结果 |
|------|--------|--------|
| 1 | 将 Ubuntu 暂时切换到 NAT | 下载 Splunk 的互联网访问 |
| 2 | 修复 DNS(8.8.8.8) | 名称解析正常工作 |
| 3 | 下载 Splunk 10.2.3 .deb | 357MB 软件包已下载 |
| 4 | 安装 Splunk | dpkg -i 成功 |
| 5 | 创建管理员账户 | admin / Splunk@Lab1 |
| 6 | 创建 sysmon + windows 索引 | 索引就绪 |
| 7 | 启用端口 9997 接收 | Splunk 正在监听 |
| 8 | 切换回内部网络 | 实验室隔离已恢复 |
| 9 | 验证 192.168.10.30:8000 的 UI | Splunk 可访问 ✅ |
### 第 3 阶段 — 日志转发
| 步骤 | 操作 | 结果 |
|------|--------|--------|
| 1 | 安装 Sysmon v15.20 | 应用 SwiftOnSecurity 配置 |
| 2 | 安装 Splunk Universal Forwarder | 指向 .30:9997 |
| 3 | 创建 inputs.conf | 安全、系统、Sysmon 日志 |
| 4 | 更改为 LocalSystem 账户 | Sysmon 日志权限已修复 |
| 5 | 验证日志流 | 2,167 个 Sysmon + 4,042 个 Windows 事件 ✅ |
### 第 4 阶段 — 检测规则和仪表板
| 步骤 | 操作 | 结果 |
|------|--------|--------|
| 1 | 编写 4 个 SPL 检测规则 | 所有映射到 MITRE ATT&CK |
| 2 | 使用真实数据测试规则 | 结果已确认 |
| 3 | 保存为计划警报 | 5 分钟间隔 |
| 4 | 构建 SOC 仪表板 | Dashboard Studio 中的 3 个面板 |
## 🔍 检测规则
### 规则 1 — 暴力破解登录检测 | `T1110`
```
index=windows EventCode=4625
| bucket _time span=5m
| stats count as failed_logins by _time, Account_Name
| where failed_logins >= 2
| eval severity="HIGH"
| eval mitre_technique="T1110 - Brute Force"
| table _time, Account_Name, failed_logins, severity, mitre_technique
```
**检测:** 5 分钟窗口内多次失败的登录尝试(事件代码 4625)。
### 规则 2 — PowerShell 执行检测 | `T1059.001`
```
index=sysmon EventCode=1
| rex field=_raw "Image: (?[^\n]+)"
| rex field=_raw "CommandLine: (?[^\n]+)"
| search Image="*powershell*" OR CommandLine="*EncodedCommand*" OR CommandLine="*bypass*"
| eval severity="HIGH"
| eval mitre_technique="T1059.001 - PowerShell"
| table _time, ComputerName, Image, CommandLine, severity, mitre_technique
| sort -_time
```
**检测:** 由恶意软件和攻击者使用的 PowerShell 进程和编码命令执行。
### 规则 3 — 可疑进程创建 | `T1059`
```
index=sysmon EventCode=1
| rex field=_raw "Image: (?[^\n]+)"
| rex field=_raw "CommandLine: (?[^\n]+)"
| search Image="*cmd.exe*" OR Image="*whoami*"
| eval severity=case(
Image LIKE "%whoami%","HIGH",
Image LIKE "%cmd.exe%","MEDIUM",
1=1,"LOW")
| eval mitre_technique="T1059 - Command and Scripting"
| table _time, ComputerName, Image, CommandLine, severity, mitre_technique
| sort -_time
```
**检测:** 后渗透命令 — whoami、ipconfig、net user — 用于枚举系统。
### 规则 4 — 网络连接检测 | `T1046`
```
index=sysmon EventCode=3
| rex field=_raw "Image: (?[^\n]+)"
| rex field=_raw "DestinationIp: (?[^\n]+)"
| rex field=_raw "DestinationPort: (?[^\n]+)"
| where isnotnull(DestinationIp)
| stats count as connections by Image, DestinationIp, DestinationPort
| eval severity=case(
DestinationPort="4444","CRITICAL",
DestinationPort="443" OR DestinationPort="80","LOW",
1=1,"MEDIUM")
| eval mitre_technique="T1046 - Network Service Scanning"
| table Image, DestinationIp, DestinationPort, connections, severity, mitre_technique
| sort -connections
```
**检测:** 出站网络连接 — 捕获恶意软件 C2 通信和端口扫描。
## 🎯 MITRE ATT&CK 覆盖范围
| 技术 ID | 名称 | 规则 | 严重性 | 检测到的事件 |
|-------------|------|------|----------|-----------------|
| T1110 | 暴力破解 | 失败登录检测 | 🔴 高 | 6 个事件 |
| T1059.001 | PowerShell | PowerShell 执行 | 🔴 高 | 357 个事件 |
| T1059 | 命令脚本 | 进程创建 | 🟠 中-高 | 311 个事件 |
| T1046 | 网络扫描 | 网络连接 | 🟡 中 | 2 个事件 |
## 📸 项目截图
### 实验室基础设施
| 截图 | 描述 |
|-----------|-------------|
|  | 所有 3 个虚拟机同时在 SOC-Lab 网络上运行 |
|  | Windows 10 Pro 在 VirtualBox 中安装 |
|  | Kali Linux 图形安装程序 |
|  | VM 1 清洁安装后保存快照 |
|  | Windows 虚拟机已安装 VirtualBox Guest Additions |
### 网络配置
| 截图 | 描述 |
|-----------|-------------|
|  | Windows 虚拟机上的静态 IP 192.168.10.10 |
|  | Kali 虚拟机上的静态 IP 192.168.10.20 |
|  | Ubuntu 虚拟机上的静态 IP 192.168.10.30 |
|  | Kali 成功 ping Windows 虚拟机 |
|  | Ubuntu 成功 ping Windows 虚拟机 |
|  | 所有 3 个虚拟机的快照 — 网络配置 |
### Splunk 安装和访问
| 截图 | 描述 |
|-----------|-------------|
|  | Ubuntu 虚拟机具有互联网访问权限以下载 Splunk |
|  | Splunk Enterprise 安装正在进行中 |
|  | 从 Windows 虚拟机浏览器访问 Splunk 网页 UI |
### 实时日志摄入
| 截图 | 描述 |
|-----------|-------------|
|  | 2,167 个 Sysmon 事件在 Splunk 中(索引=sysmon) |
|  | 4,042 个 Windows 安全事件(索引=windows) |
### 检测规则在行动
| 截图 | 描述 |
|-----------|-------------|
|  | 规则 1 — 暴力破解检测(T1110) — 6 个事件 |
|  | 规则 2 — PowerShell 检测(T1059.001) — 357 个事件 |
|  | 规则 3 — 进程创建检测(T1059) — 311 个事件 |
|  | 规则 4 — 网络连接检测(T1046) |
|  | 所有 4 个检测警报已保存,每 5 分钟计划一次 |
|  | DETECT-T1110-BruteForce 警报在 Splunk 中触发 |
### SOC 仪表板
| 截图 | 描述 |
|-----------|-------------|
|  | SOC 检测仪表板 — 面板视图 1 |
|  | SOC 检测仪表板 — 面板视图 2 |
## ⚡ 挑战与解决方案
| # | 挑战 | 原因 | 解决方案 |
|---|-----------|-----------|----------|
| 1 | Ubuntu 没有互联网 | 内部网络有意隔离 | 暂时切换到 NAT,使用 8.8.8.8 修复 DNS,下载 Splunk,切换回 |
| 2 | Splunk 下载返回 HTML | 需要认证 URL — 直接链接会过期 | 使用 Splunk 网站登录后直接复制的带令牌的认证链接 |
| 3 | netplan 配置失败 | 文件权限太开放,YAML 语法错误 | 手动创建 /etc/netplan 目录,使用 chmod 600,正确的 2 个空格缩进 |
| 4 | 共享文件夹不工作 | Guest Additions v6.0.0 对于 Ubuntu 26.04 来说太旧 | 使用 NAT 下载方法代替 — 更简单且更可靠 |
| 5 | Splunk 中没有 Sysmon 事件 | 传输代理没有权限读取 Sysmon 日志 | 通过 sc.exe config SplunkForwarder obj= LocalSystem 将传输代理更改为 LocalSystem |
| 6 | SPL 规则返回 0 个结果 | Sysmon 字段存储在原始 _raw 字段中未解析 | 使用 rex field=_raw 与正则表达式从原始事件文本中提取 Image 和 CommandLine |
| 7 | 传输代理登录失败 | 传输代理具有与 Splunk 不同的单独管理员账户 | 使用 SPLUNKPASSWORD 参数重新安装,并直接配置 outputs.conf |
## 📝 主要贡献
- 在内部 VirtualBox 网络上构建了一个 3-VM 隔离的 SOC 实验室(Windows 10、Kali Linux、Ubuntu/Splunk),模拟真实的企业攻击和检测场景
- 部署了 Splunk Enterprise SIEM,实时消费 Sysmon 和 Windows 安全日志中的 6,000+ 个实时事件,通过 Splunk Universal Forwarder 转发
- 编写了 4 个自定义 Splunk SPL 检测规则,映射到 MITRE ATT&CK 技术T1110、T1059、T1046,每 5 分钟自动计划警报
- 在 Windows 终端上配置了 Sysmon v15.20,使用 SwiftOnSecurity 配置收集进程创建、网络连接和文件系统遥测数据
- 在 Splunk Dashboard Studio 中构建了 SOC 检测仪表板,实时可视化实验室环境中的失败登录、进程活动和网络连接
## 📄 许可证
本项目采用 MIT 许可证 — 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
## 👤 作者
**Rajkumar Jangam**
[
[](https://github.com/raj-1819)
[](https://raj-1819.github.io/Portfolio)
*作为网络安全组合作品的一部分构建,以展示在威胁检测、SIEM 操作、日志分析和 MITRE ATT&CK 框架应用方面的 SOC 分析员技能.*
标签:AMSI绕过, Cloudflare, MITRE ATT&CK, Splunk Dashboard Studio, Splunk SIEM, Sysmon, 事件收集, 威胁检测, 安全事件响应, 安全实验室, 安全运营中心, 开放策略代理, 插件系统, 生成式AI安全, 网络映射, 网络隔离, 自动化警报, 虚拟机, 速率限制