Imbalancement/powershell-remoting-lateral-movement-detection
GitHub: Imbalancement/powershell-remoting-lateral-movement-detection
一个蓝队实验项目,模拟 Active Directory 环境下通过 PowerShell Remoting 进行横向移动,并使用 Wazuh 和 Windows 事件 ID 4104 脚本块日志完成检测验证。
Stars: 1 | Forks: 0
# PowerShell 远程处理检测实验
## 🚨 使用 PowerShell 远程处理 + Wazuh 进行横向移动检测
## 📌 概述
本实验模拟了在 Active Directory 环境中,从 Windows 10 工作站向 Windows Server 域控制器使用 PowerShell 远程处理进行横向移动的过程。随后使用 Windows 事件日志和 Wazuh 威胁狩猎查询检测到了该活动。
本实验的目的是了解 PowerShell 远程处理在防御者视角下的表现,以及 SOC 分析师如何利用端点遥测数据识别可疑的远程命令执行。
## 🎯 目标
- 使用 PowerShell 远程处理模拟远程命令执行
- 通过真实的横向移动技术生成 Windows 遥测数据
- 使用事件 ID `4104` 检测 PowerShell 脚本块活动
- 确认在 Wazuh 中的可见性
- 以清晰的 SOC 风格调查格式记录检测过程
## 🧠 展示的技能
- Active Directory 实验环境管理
- PowerShell 远程处理 / WinRM
- Windows 事件日志分析
- PowerShell 脚本块日志记录
- Wazuh 威胁狩猎
- 检测工程
- MITRE ATT&CK 映射
- SOC 风格的证据记录
## 🏗️ 实验环境
| 系统 | 角色 |
|---|---|
| `dc01` | Windows Server 域控制器 |
| `win10-lab` | 已加入域的 Windows 10 工作站 |
| `Wazuh Server` | SIEM / 日志分析平台 |
| `LAB.LOCAL` | Active Directory 域 |
## ⚔️ 模拟的技术
本实验重点关注 PowerShell 远程处理,攻击者可能会滥用该技术在 Windows 系统间进行横向移动。
**MITRE ATT&CK 映射:**
| 战术 | 技术 |
|---|---|
| 横向移动 | T1021.006 — Windows Remote Management |
## 🔎 检测重点
本实验的主要检测源是 PowerShell 脚本块日志记录。
| 日志源 | 事件 ID | 目的 |
|---|---:|---|
| Microsoft-Windows-PowerShell/Operational | `4104` | 捕获 PowerShell 脚本块活动 |
| Windows Security | `4624` | 成功登录活动 |
| Windows Security | `4688` | 进程创建活动 |
| Wazuh | N/A | 集中化检测与威胁狩猎 |
## 🧪 实验总结
在 Windows 工作站和域控制器上均启用了 PowerShell 远程处理。从 `win10-lab` 中,使用 `Invoke-Command` 对 `dc01` 执行了远程命令。
该命令成功返回了域控制器的远程主机名、用户上下文和网络配置。这在 `dc01` 上生成了 PowerShell 遥测数据,并在本地的事件查看器和 Wazuh 中得到了确认。
## ✅ 关键发现
最有价值的检测证据是 **事件 ID 4104**,它捕获了远程 PowerShell 脚本块:
```
whoami; hostname; ipconfig
```
## 📸 证据演练
### 步骤 1 — 在目标主机上启用 PowerShell 远程处理
在域控制器 `dc01` 上启用了 PowerShell 远程处理,以允许通过 WinRM 建立 PowerShell 远程连接。这为模拟从 Windows 10 工作站到域控制器的横向移动创造了必要的条件。
**使用的命令:**
```
Enable-PSRemoting -Force
```
### 步骤 2 — 从 `win10-lab` 验证 WinRM 连通性 🌐✅
启用 PowerShell 远程处理后,从 Windows 10 工作站测试了到域控制器的 WinRM 连通性。这确认了在运行任何远程命令之前,`win10-lab` 可以通过 Windows Remote Management 服务与 `dc01` 进行通信。
**使用的命令:** 🧪
```
Test-WSMan dc01
```
### 步骤 3 — 针对 `dc01` 执行远程命令 ⚔️💻
确认 WinRM 连通性后,从 `win10-lab` 向域控制器 `dc01` 执行了远程 PowerShell 命令。这模拟了使用 PowerShell 远程处理的横向移动。
**使用的命令:** 🧪
```
Invoke-Command -ComputerName dc01 -ScriptBlock { whoami; hostname; ipconfig }
```
### 步骤 4 — 在事件查看器中捕获的 PowerShell 事件 ID 4104 🪵🔍
执行远程命令后,使用事件查看器在 `dc01` 本地确认了该活动。PowerShell 脚本块日志在 **事件 ID 4104** 下捕获了远程命令。
**日志位置:** 🧭
```
Event Viewer
→ Applications and Services Logs
→ Microsoft
→ Windows
→ PowerShell
→ Operational
```
### 步骤 5 — Wazuh 收集了 PowerShell 检测证据 🛡️📊
在事件查看器中本地确认该活动后,在 Wazuh 中验证了相同的 PowerShell 遥测数据。这表明 `dc01` 的 Wazuh 代理成功将 PowerShell Operational 日志转发到了 SIEM,以便进行集中化威胁狩猎。
**Wazuh 搜索查询:** 🔎
```
agent.name:dc01 AND data.win.system.eventID:"4104"
```
### 🧠 关键要点
PowerShell 远程处理可能会被滥用于 Windows 系统间的横向移动。
可以使用 Test-WSMan 验证 WinRM 连通性。
Invoke-Command 可以远程执行命令并生成有用的检测证据。
事件 ID 4104 对于识别 PowerShell 脚本块活动具有极高的价值。
Wazuh 可以集中管理 PowerShell Operational 日志,用于 SOC 风格的调查。
### 🛡️ 防御价值
从防御者的角度来看,本实验展示了为什么 PowerShell 日志记录和 SIEM 可见性非常重要。即使 PowerShell 远程处理被合法使用,防御者也应监控异常的远程执行模式、可疑的脚本块以及针对域控制器等高价值系统的活动。
## ✅ 结论
本实验演示了如何使用 PowerShell 远程处理来模拟 Active Directory 环境中的横向移动,以及如何使用 Windows 事件日志和 Wazuh 检测该活动。通过启用 PowerShell 远程处理、验证 WinRM 连通性,以及从 `win10-lab` 向 `dc01` 执行远程命令,我成功生成了防御者可以调查的真实遥测数据。
### 步骤 2 — 从 `win10-lab` 验证 WinRM 连通性 🌐✅
启用 PowerShell 远程处理后,从 Windows 10 工作站测试了到域控制器的 WinRM 连通性。这确认了在运行任何远程命令之前,`win10-lab` 可以通过 Windows Remote Management 服务与 `dc01` 进行通信。
**使用的命令:** 🧪
```
Test-WSMan dc01
```
### 步骤 3 — 针对 `dc01` 执行远程命令 ⚔️💻
确认 WinRM 连通性后,从 `win10-lab` 向域控制器 `dc01` 执行了远程 PowerShell 命令。这模拟了使用 PowerShell 远程处理的横向移动。
**使用的命令:** 🧪
```
Invoke-Command -ComputerName dc01 -ScriptBlock { whoami; hostname; ipconfig }
```
### 步骤 4 — 在事件查看器中捕获的 PowerShell 事件 ID 4104 🪵🔍
执行远程命令后,使用事件查看器在 `dc01` 本地确认了该活动。PowerShell 脚本块日志在 **事件 ID 4104** 下捕获了远程命令。
**日志位置:** 🧭
```
Event Viewer
→ Applications and Services Logs
→ Microsoft
→ Windows
→ PowerShell
→ Operational
```
### 步骤 5 — Wazuh 收集了 PowerShell 检测证据 🛡️📊
在事件查看器中本地确认该活动后,在 Wazuh 中验证了相同的 PowerShell 遥测数据。这表明 `dc01` 的 Wazuh 代理成功将 PowerShell Operational 日志转发到了 SIEM,以便进行集中化威胁狩猎。
**Wazuh 搜索查询:** 🔎
```
agent.name:dc01 AND data.win.system.eventID:"4104"
```
### 🧠 关键要点
PowerShell 远程处理可能会被滥用于 Windows 系统间的横向移动。
可以使用 Test-WSMan 验证 WinRM 连通性。
Invoke-Command 可以远程执行命令并生成有用的检测证据。
事件 ID 4104 对于识别 PowerShell 脚本块活动具有极高的价值。
Wazuh 可以集中管理 PowerShell Operational 日志,用于 SOC 风格的调查。
### 🛡️ 防御价值
从防御者的角度来看,本实验展示了为什么 PowerShell 日志记录和 SIEM 可见性非常重要。即使 PowerShell 远程处理被合法使用,防御者也应监控异常的远程执行模式、可疑的脚本块以及针对域控制器等高价值系统的活动。
## ✅ 结论
本实验演示了如何使用 PowerShell 远程处理来模拟 Active Directory 环境中的横向移动,以及如何使用 Windows 事件日志和 Wazuh 检测该活动。通过启用 PowerShell 远程处理、验证 WinRM 连通性,以及从 `win10-lab` 向 `dc01` 执行远程命令,我成功生成了防御者可以调查的真实遥测数据。标签:Active Directory, AI合规, OpenCanary, Plaso, PowerShell Remoting, T1021.006, T1059.001, Terraform 安全, Wazuh, Windows 10, Windows Server, Windows事件日志, WinRM, 事件ID 4104, 域控安全, 安全实验室, 安全测试, 安全运营, 扫描框架, 攻击性安全, 攻击模拟, 数字取证, 横向移动, 端点遥测, 编程规范, 网络安全, 脚本块日志记录, 自动化脚本, 蓝军仿真, 防御视角, 隐私保护, 驱动签名利用