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 如何关联从命令行控制台启动的进程创建。 ![Wazuh 面板中捕获的警报列表](https://static.pigsec.cn/wp-content/uploads/repos/cas/87/871aab36cc8f12c65ac0df6045c6cbfa3eca32a58f46d8b55c31e5fc66ef211b.png) ## 用例 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 ``` 此信息允许重建进程的父子链,从而促进取证调查期间的分析。 ![Sysmon Event ID 1 表格格式的取证详情](https://static.pigsec.cn/wp-content/uploads/repos/cas/a6/a6e9bfb25f0aedbb0002659973328477e94277c6e40607fb9e66b7baccece11c.png) ## 用例 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 ### 警报证据 ![暴力破解警报的取证详情和 MITRE ATT&CK 映射](https://static.pigsec.cn/wp-content/uploads/repos/cas/7e/7e57955c834d6a73be0407cb0271f7275b0f3df06850ac80bdf6e57faa21d6b9.png) **图:** 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 内部产生警报疲劳。 ![Wazuh 中误报警报的 JSON 结构](https://static.pigsec.cn/wp-content/uploads/repos/cas/fc/fcfe8d95f7f4e0486cfe3d21d3a0cf39efec4fd57d01f41775fd1e1b24e4157f.png) # 🛠️ 使用的工具 | 工具 | 描述 | |------------|-------------| | **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。
标签:AI合规, Sysmon, Terraform 安全, Wazuh, Windows Server, 安全实验室