CyberClobber/Cybersecurity-Portfolio
GitHub: CyberClobber/Cybersecurity-Portfolio
一个基于 Wazuh 和 Sysmon 的 SOC 实验室项目,通过模拟攻击场景演示高级威胁检测与告警关联的完整流程。
Stars: 0 | Forks: 0
# 🛡️ SOC 实验室项目:使用 Wazuh 和 Sysmon 进行高级检测与 Threat Hunting
欢迎来到我的 SOC 实验室项目!在这个代码库中,我详细介绍了在受控环境中进行设计、实施和攻击模拟的过程。主要目标是部署一个使用 **Wazuh (SIEM/XDR)** 和 **Sysmon** 的集中式监控系统,以便在 **Windows Server (Active Directory)** 环境中 Hunting 真实的攻击技术。
除了安装步骤外,我还完全透明地记录了部署过程中出现的**真实技术问题**及其解决方法,以此为我自己和其他刚起步的分析师提供指南。
## 🗺️ 1. 实验室架构
该实验室由在 VMware Workstation 隔离环境中运行的三台虚拟机组成:
* **Wazuh Manager / SIEM:** 中央服务器,负责接收、关联安全日志并发出警报。
* **DC-01 (Windows Server - Active Directory):** 模拟管理员活动和攻击的目标服务器。安装了 Wazuh Agent 和 Microsoft Sysmon。
* **Kali Linux:** 攻击者机器,用于执行侦察和漏洞利用阶段。
```
graph TD
subgraph "Red Virtual Aislada (VMware)"
Kali[💻 Kali Linux
Máquina Atacante] -->|Simula Técnicas MITRE ATT&CK| DC01[🖥️ Windows Server: DC-01
IP: 192.168.10.10] DC01 -->|Envía Eventos de Sysmon EID 1 y 11| Wazuh[🛡️ Wazuh Manager
IP: 192.168.10.100] end style Kali fill:#ff9999,stroke:#333,stroke-width:2px style DC01 fill:#ffffcc,stroke:#333,stroke-width:2px style Wazuh fill:#ccffcc,stroke:#333,stroke-width:2px ``` ## 🚀 2. 分步实施说明 ### 步骤 A:部署 Wazuh Agent 在 Windows Server 域控制器上安装了 Wazuh Agent,以开始发送基本的系统安全日志。 ### 步骤 B:安装和配置 Sysmon 为了提高已执行命令的可见性(默认情况下,Windows 不会详细显示这些命令),我安装了 **Sysmon**,并使用了不带排除过滤器的配置,以记录此实验室中的所有活动。 1. 创建了配置文件 `config.xml`: ``` $config = @"
"@
Out-File -FilePath .\config.xml -InputObject $config -Encoding ascii
```
## 步骤 C:将 Sysmon 与 Wazuh 集成
为了指示 Wazuh Agent 读取 Sysmon 事件通道,编辑了位于以下位置的 Agent 配置文件:
```
C:\Program Files (x86)\ossec-agent\ossec.conf
```
在结束标签 `` 之前,添加了以下代码块:
```
Microsoft-Windows-Sysmon/Operational
eventchannel
```
保存更改后,从 PowerShell 重启了 Wazuh Agent 服务以应用新配置:
```
Restart-Service -Name Wazuh
```
# 🎯 3. 攻击模拟与检测
## 用例 1:侦察阶段 (`whoami /priv`)
### 攻击者目标
在攻陷帐户后,攻击者执行权限枚举命令以检查是否拥有诸如 **SeDebugPrivilege** 之类的关键权限,这可能有助于权限提升。
### 执行的命令
```
whoami /priv
```
### 在 Wazuh 中检测
Wazuh 正确记录了命令的执行情况,并生成了与进程启动相对应的警报。此事件验证了 SIEM 如何关联从命令行控制台启动的进程创建。

## 用例 2:本地管理员组枚举
### 攻击者目标
识别哪些用户属于本地管理员组,以计划可能的横向移动或权限提升。
### 执行的命令
```
cmd.exe /c "net localgroup administrators"
```
### 通过 Sysmon 检测 (Event ID 1)
Sysmon 记录了进程创建事件,提供的取证信息比 Windows 原生日志详细得多。
**记录的信息:**
- **创建的进程:**
```
C:\Windows\System32\net.exe
```
- **父进程:**
```
C:\Windows\System32\cmd.exe
```
- **命令行:**
```
net localgroup administrators
```
此信息允许重建进程的父子链,从而促进取证调查期间的分析。

## 用例 3:RDP 暴力破解攻击
### 攻击者目标
通过对 **Remote Desktop Protocol (RDP)** 服务发起字典暴力破解攻击,针对系统中权限最高的帐户,获取对域控制器的初始访问权限。
### 执行的命令
使用 **Hydra** 工具和自定义的密码字典,针对端口 **3389** 生成多次失败的身份验证尝试。
```
hydra -l administrator -P contras_fuerza_bruta.txt rdp://192.168.10.10 -vV -t 1
```
### 在 Wazuh 中检测
Wazuh 正确收集了 Windows 生成的与 **Event ID 4625 (Failed Logon)** 相对应的安全事件。
在极短的时间间隔内检测到多次失败的身份验证尝试后,关联引擎将各个事件分组,并生成了更高严重性的警报,将此模式识别为可能的暴力破解攻击。
### 检测到的证据
- **Windows 事件:** Event ID **4625** (Failed Logon)。
- **Wazuh 规则:** `rule.id: 60122`。
- **初始警报级别:** **5**。
- **关联警报:** **级别 10 (Critical Alert)**。
### 获得的取证信息
该警报提供了与事件分析相关的信息,其中包括:
- **MITRE ATT&CK 映射**
- **战术:** Credential Access
- **技术:** T1110 – Brute Force
- **攻击来源**
- **Workstation Name:** `kali`
- **Source Network Address:** 攻击者机器的 IP 地址。
- **合规性**
- 自动关联以下控制项:
- NIST 800-53
- GDPR
- HIPAA
### 警报证据

**图:** Wazuh 检测到针对 RDP 服务暴力破解攻击的关联警报。
# 🧠 4. 经验教训与故障排除
在实验室开发过程中,出现了真实 SOC 环境中常见的几个问题。解决这些问题使我们能够更好地理解 Wazuh 和 Sysmon 的工作原理。
## 挑战 1:不可见的警报 (Clock Drift)
### 问题
在 Windows Server 上执行命令后,警报并未立即出现在 Wazuh 的 **Live** 面板中。
### 原因
虚拟机出现时间偏差 (**Clock Drift**)。Windows Server 的时钟落后于 Kali Linux 的时钟。
由于 Wazuh Dashboard 默认仅显示过去 15 分钟内的事件,因此在 Windows 中生成的日志超出了时间范围,不可见。
### 解决方案
- 将 Dashboard 的时间过滤器更改为 **Last 7 days**。
- 在虚拟机中激活自动时钟同步。
## 挑战 2:无结果搜索 (Dashboard Query Language)
### 问题
当仅仅搜索:
```
net.exe
```
时,未获得任何结果。
### 原因
搜索引擎 **Dashboard Query Language (DQL)** 在输入纯文本时执行精确匹配。
由于 Sysmon 存储了可执行文件的完整路径:
```
C:\Windows\System32\net.exe
```
因此搜索不匹配。
### 解决方案
使用通配符或直接在特定字段上执行搜索。
示例:
```
win.eventdata.image:*net.exe*
```
这样,Wazuh 就能正确定位所有可执行文件以 **net.exe** 结尾的进程。
## 挑战 3:误报分析 (Event ID 11)
### 问题
生成了严重性为 **15 (Critical)** 的警报,描述为:
```
Executable file dropped in folder commonly used by malware
```
### 调查
在检查完整的警报 JSON 时,观察到:
- **Event ID:** 11 (文件创建)
- **负责的进程:** `sdiagnhost.exe`
该进程属于 Windows 操作系统本身,并且正在 **Temp** 文件夹中写入一个临时文件。
### 结论
确定该事件对应于操作系统的合法行为。
Windows 的内部服务经常使用临时目录来存储诊断任务期间的文件。
因此,该警报被归类为**误报**,从而避免了在 SOC 内部产生警报疲劳。

# 🛠️ 使用的工具
| 工具 | 描述 |
|------------|-------------|
| **SIEM/XDR** | Wazuh Manager v4.x |
| **主机遥测** | Microsoft Sysmon v15.x |
| **操作系统** | Windows Server 2022 |
| **监控系统** | Kali Linux |
| **基础设施** | Active Directory 实验 |
## 结论
Sysmon 与 Wazuh 的集成显著扩大化了对 Windows 系统活动的可见性。原生日志提供基本信息,而 Sysmon 提供有关进程创建、父子关系和完整命令行的详细数据,从而促进了在侦察和枚举阶段所用技术的检测。
同样,该实验室突出了操作方面的重要性,例如时间同步、正确使用 Wazuh 查询语言以及误报分析,这些都是安全运营中心 (SOC) 分析师必不可少的能力。
虚拟化:VMware Workstation。
Máquina Atacante] -->|Simula Técnicas MITRE ATT&CK| DC01[🖥️ Windows Server: DC-01
IP: 192.168.10.10] DC01 -->|Envía Eventos de Sysmon EID 1 y 11| Wazuh[🛡️ Wazuh Manager
IP: 192.168.10.100] end style Kali fill:#ff9999,stroke:#333,stroke-width:2px style DC01 fill:#ffffcc,stroke:#333,stroke-width:2px style Wazuh fill:#ccffcc,stroke:#333,stroke-width:2px ``` ## 🚀 2. 分步实施说明 ### 步骤 A:部署 Wazuh Agent 在 Windows Server 域控制器上安装了 Wazuh Agent,以开始发送基本的系统安全日志。 ### 步骤 B:安装和配置 Sysmon 为了提高已执行命令的可见性(默认情况下,Windows 不会详细显示这些命令),我安装了 **Sysmon**,并使用了不带排除过滤器的配置,以记录此实验室中的所有活动。 1. 创建了配置文件 `config.xml`: ``` $config = @"
标签:AI合规, Sysmon, Terraform 安全, Wazuh, Windows Server, 安全实验室