SaiPranav1420/Mini-SOC-Lab
GitHub: SaiPranav1420/Mini-SOC-Lab
一个使用Splunk和VirtualBox构建隔离SOC实验室的项目,帮助用户实践SIEM部署、日志收集和安全事件分析。
Stars: 0 | Forks: 0
# 使用 Splunk、Windows、Kali Linux 和 VirtualBox 构建迷你 SOC 实验室
## 项目概述
本项目展示了如何使用 VirtualBox、Splunk Enterprise、Ubuntu Server、Windows 和 Kali Linux 设计和实施一个完全隔离的安全运营中心 (SOC) 实验室环境。
该实验室的主要目标是模拟真实的蓝队监控环境,能够实现:
* 集中日志收集
* SIEM 部署
* Windows 事件监控
* 安全事件分析
* SPL (搜索处理语言) 实践
* 威胁监控
* 基础攻击模拟准备
实验室被刻意配置在一个完全隔离的内部网络中,以确保安全实验,不会将流量暴露到互联网或宿主机。
# 架构
## 使用的虚拟机
| 虚拟机 | 用途 |
| --------------- | --------------------------- |
| Ubuntu Server | Splunk Enterprise SIEM |
| Windows 10/11 | 受攻击机器 + 日志源 |
| Kali Linux | 攻击者机器 |
# 网络设计
所有虚拟机通过隔离的 VirtualBox 内部网络连接。
## 内部网络配置
```
Network Name: lab-net
Mode: Internal Network
```
## 静态 IP 配置
| 机器 | IP 地址 |
| ------------------- | ----------- |
| Ubuntu Splunk 服务器 | 10.10.10.10 |
| Kali Linux | 10.10.10.11 |
| Windows 机器 | 10.10.10.20 |
# 架构图
```
[ Kali Linux ]
Attacker
|
|
Internal Network
(lab-net)
|
----------------------------------------
| |
| |
[ Ubuntu Server ] [ Windows 10/11 ]
Splunk Enterprise Victim Machine
10.10.10.10 10.10.10.20
```
# 目标
本项目的目标是:
* 构建一个隔离的网络安全实验室
* 部署和配置 Splunk Enterprise
* 配置集中式日志摄入
* 使用 Splunk 监控 Windows 事件日志
* 实践 Splunk 搜索处理语言 (SPL)
* 了解 SOC 工作流和 SIEM 运作
* 为未来威胁狩猎和攻击模拟准备一个可扩展的环境
# 使用的技术
| 类别 | 技术 |
| ------------- | ---------------------------------- |
| 虚拟化 | VirtualBox |
| SIEM 平台 | Splunk Enterprise |
| 操作系统 | Ubuntu Server、Windows 10/11、Kali Linux |
| 日志转发 | Splunk Universal Forwarder |
| 查询语言 | SPL (搜索处理语言) |
| 网络 | VirtualBox 内部网络 |
| 脚本编写 | Bash、PowerShell |
# 硬件规格
## 宿主机
| 组件 | 规格 |
| ------ | --------------- |
| 内存 | 16 GB |
| CPU | 10 核 |
| 存储 | 推荐 SSD |
## 虚拟机资源分配
| 虚拟机 | CPU | 内存 |
| ----------------- | --------- | ---- |
| Ubuntu Splunk | 2–4 核 | 8 GB |
| Windows | 2 核 | 4 GB |
| Kali Linux | 2 核 | 4 GB |
# 阶段 1 — 实验室设置
## 步骤 1 — 安装 VirtualBox
在宿主机上安装了 Oracle VirtualBox,用于创建和管理虚拟实验室环境。
## 步骤 2 — 创建虚拟机
创建了三个独立的虚拟机:
* Ubuntu Server 虚拟机
* Windows 10/11 虚拟机
* Kali Linux 虚拟机

## 步骤 3 — 配置内部网络
每个虚拟机均配置了:
```
Adapter 1 → Internal Network → lab-net
```
这确保了:
* 虚拟机之间的通信
* 无互联网访问
* 无法与宿主机通信
* 安全的攻击模拟环境

## 步骤 4 — 配置静态 IP 地址
### Ubuntu
```
sudo nano /etc/netplan/01-netcfg.yaml
```
配置静态 IP:
```
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: no
addresses:
- 10.10.10.10/24
```
应用配置:
```
sudo netplan apply
```
### Kali Linux
配置静态 IP:
```
10.10.10.11
```
### Windows
手动配置静态 IP:
```
10.10.10.20
```

## 步骤 5 — 网络验证
进行了连接性测试。
### 示例
```
ping 10.10.10.10
```
结果确认:
* 虚拟机间通信成功
* 内部隔离正常
* 无互联网连接
# 阶段 2 — Splunk 部署与日志摄入
## 步骤 1 — 在 Ubuntu 上安装 Splunk Enterprise
### 更新 Ubuntu
```
sudo apt update && sudo apt upgrade -y
```
### 下载 Splunk
```
wget -O splunk.deb 'https://download.splunk.com/products/splunk/releases/9.2.1/linux/splunk-9.2.1-94b76f0b8db1-linux-amd64.deb'
```
### 安装 Splunk
```
sudo dpkg -i splunk.deb
```
### 启用开机启动
```
sudo /opt/splunk/bin/splunk enable boot-start
```
### 启动 Splunk
```
sudo /opt/splunk/bin/splunk start
```
在安装过程中配置了管理员用户名和密码。
# 步骤 2 — 访问 Splunk Web
从以下地址访问 Splunk Web:
```
http://10.10.10.10:8000
```

# 步骤 3 — 配置 Splunk 接收端口
在 Splunk Web 中:
```
Settings → Forwarding and Receiving
```
配置接收端口:
```
9997
```
此端口用于从 Windows 机器转发日志。

# 步骤 4 — 安装 Splunk Universal Forwarder
在 Windows 虚拟机上安装了 Splunk Universal Forwarder。
配置了 Splunk 服务器:
```
10.10.10.10:9997
```
# 步骤 5 — 配置 Windows 事件日志转发
配置了以下 Windows 事件日志进行转发:
* 安全日志
* 系统日志
* 应用程序日志

## PowerShell 命令
### 安全日志
```
& "C:\Program Files\SplunkUniversalForwarder\bin\splunk.exe" add monitor "WinEventLog://Security"
```
### 系统日志
```
& "C:\Program Files\SplunkUniversalForwarder\bin\splunk.exe" add monitor "WinEventLog://System"
```
### 应用程序日志
```
& "C:\Program Files\SplunkUniversalForwarder\bin\splunk.exe" add monitor "WinEventLog://Application"
```
### 重启 Universal Forwarder
```
Restart-Service SplunkForwarder
```
# 步骤 6 — 验证日志摄入
使用 Splunk 搜索来验证成功摄入。
## 安全日志
```
index=* source="WinEventLog:Security"
```
## 系统日志
```
index=* source="WinEventLog:System"
```
## 应用程序日志
```
index=* source="WinEventLog:Application"
```
# SPL (搜索处理语言) 实践
练习了多个 SPL 查询用于事件分析和监控。

## 查看所有日志
```
index=*
```
## 按主机搜索
```
index=* host="WINDOWS-VM"
```
## 失败的登录尝试
```
index=* EventCode=4625
```
## 成功的登录
```
index=* EventCode=4624
```
## 搜索 PowerShell 活动
```
index=* powershell
```
## 按源计数事件
```
index=* | stats count by source
```
## 按主机计数事件
```
index=* | stats count by host
```
## 主要事件代码
```
index=* | top EventCode
```
## 随时间推移的事件
```
index=* | timechart count
```
## 显示选定字段
```
index=* | table _time host source EventCode
```
# 展示的技能
## SIEM 与 SOC 技能
* SIEM 部署
* 日志摄入
* 事件监控
* Windows 日志分析
* SPL 查询
* 威胁监控
* 蓝队基础
## 基础设施技能
* 虚拟化
* 网络分段
* 静态 IP 配置
* Linux 管理
* Windows 管理
## 安全技能
* Windows 事件监控
* 事件分析
* 日志关联
* 内部网络隔离
* 安全遥测收集
# 遇到的挑战
在实施过程中遇到并解决了几个技术挑战:
* 内部网络配置问题
* Windows 防火墙限制
* Splunk 接收端口配置
* Universal Forwarder 配置问题
* Splunk 服务故障排除
* 事件转发验证
* 端口可访问性验证
# 未来改进
计划对本实验室进行的未来增强包括:
* 集成 Sysmon
* 威胁狩猎工作流
* 攻击模拟
* Splunk 仪表板
* 实施 Sigma 规则
* 集成 Suricata IDS
* Zeek 网络监控
* 自动化警报
* 映射 MITRE ATT&CK
# 截图
实施过程中的所有截图均已适当地嵌入到上文的相关部分中。原始文件存储在 `screenshots/` 目录中。
# GitHub 存储库结构
```
Mini-SOC-Lab/
│
├── README.md
├── screenshots/
├── configs/
├── scripts/
└── documentation/
```
# 结论
本项目展示了以下方面的实际动手经验:
* SIEM 部署
* Splunk 管理
* Windows 事件监控
* 日志摄入管道
* SPL 查询
* SOC 基础设施设置
* 安全监控工作流
该实验室为以下领域的未来工作奠定了坚实基础:
* 威胁狩猎
* 检测工程
* 蓝队运营
* 安全分析
* 事件响应
标签:AI合规, meg, OISF, SIEM实践, SIEM部署, SOC实验室, SPL编程, Ubuntu Server, VirtualBox, 信息安全, 威胁监控, 安全事件分析, 安全实验室, 安全运营, 应用安全, 扫描框架, 攻击模拟, 日志管理, 网络安全, 网络隔离, 蓝队实践, 蓝队监控, 虚拟机环境, 隐私保护, 隔离网络, 集中日志收集, 驱动签名利用