abdelrahman-28m/Windows-Event-Log-Threat-Hunting
GitHub: abdelrahman-28m/Windows-Event-Log-Threat-Hunting
基于 Splunk 的 Windows 事件日志威胁狩猎实验项目,提供完整的 SPL 查询模板、MITRE ATT&CK 映射和可视化仪表板构建方法。
Stars: 0 | Forks: 0
# Windows-Event-Log-Threat-Hunting# 🔎 Windows Event Log 威胁狩猎实验
## 📌 概述
在本次实验中,我使用 Splunk 对 Windows Event Logs 执行了**高级威胁狩猎**。目标是通过开发复杂的 SPL 查询,并围绕关键的 Windows Event ID 构建检测逻辑,从而识别隐藏在 30,000 多个事件中的恶意活动。
## 🎯 目标
- 在 Splunk 中接收并索引 Windows Security Event Logs
- 开发高级 SPL 查询以猎捕恶意活动
- 调查可疑的 PowerShell 执行和进程创建
- 检测未经授权的访问和权限提升尝试
- 监控审核策略更改和权限修改
- 构建仪表板以可视化用户行为中的异常
## 🧰 使用的工具
| 工具 | 用途 |
|------|---------|
| **Splunk Enterprise** | 用于日志分析和威胁狩猎的 SIEM 平台 |
| **SPL** | 高级 Search Processing Language 查询 |
| **Windows Event Logs** | 主要日志来源(Security、System、PowerShell) |
| **MITRE ATT&CK** | 用于映射检测到的技术的框架 |
## 🔬 监控的关键 Windows Event ID
| Event ID | 描述 | 重要性 |
|----------|-------------|----------------|
| **4624** | 成功登录 | 检测未经授权的访问和横向移动 |
| **4625** | 登录失败 | 检测暴力破解尝试 |
| **4688** | 进程创建 | 检测恶意进程执行 |
| **4698** | 计划任务创建 | 检测持久化机制 |
| **4907** | 审核策略更改 | 检测对安全日志记录的篡改 |
| **4720** | 用户帐户创建 | 检测未经授权的帐户创建 |
## 🚀 逐步演练
### 步骤 1:日志接入
配置 Splunk 以从多个来源接入 Windows Security Event Logs:
```
[WinEventLog://Security]
index = windows_logs
disabled = false
[WinEventLog://System]
index = windows_logs
disabled = false
[WinEventLog://Microsoft-Windows-PowerShell/Operational]
index = windows_logs
disabled = false
```
### 步骤 2:高级 SPL 威胁狩猎
#### 🔍 狩猎 1 — 可疑登录活动 (Event ID 4624)
```
index=windows_logs EventCode=4624
| stats count by Account_Name, Logon_Type, src_ip
| where count > 20 AND Logon_Type=3
| sort - count
```
检测到具有异常数量网络登录的帐户——这是横向移动的指标。
#### 🔍 狩猎 2 — 恶意进程创建 (Event ID 4688)
```
index=windows_logs EventCode=4688
| search Process_Command_Line="*powershell*" OR Process_Command_Line="*cmd*" OR Process_Command_Line="*wscript*"
| stats count by Account_Name, New_Process_Name, Process_Command_Line
| sort - count
```
识别出可疑的 PowerShell 执行,并将恶意命令与合法的 Windows Update 进程区分开来。
#### 🔍 狩猎 3 — 审核策略篡改 (Event ID 4907)
```
index=windows_logs EventCode=4907
| stats count by Account_Name, Object_Name, New_Sd
| sort - count
```
检测到对对象审核策略的未经授权修改——这是攻击者掩盖踪迹的常用技术。
#### 🔍 狩猎 4 — 暴力破解检测 (Event ID 4625)
```
index=windows_logs EventCode=4625
| stats count by Account_Name, src_ip, Failure_Reason
| where count > 5
| sort - count
```
识别出从同一源 IP 进行多次登录失败尝试的帐户。
### 步骤 3:过滤 30,000 多个事件
开发了复杂的 SPL,在海量数据集中过滤信号以消除噪音:
```
index=windows_logs EventCode=4688
| search NOT (Process_Command_Line="*MoUsoCoreWorker*" OR Process_Command_Line="*Windows Update*")
| search Process_Command_Line="*-enc*" OR Process_Command_Line="*bypass*" OR Process_Command_Line="*hidden*"
| table _time, Account_Name, New_Process_Name, Process_Command_Line
| sort - _time
```
此查询过滤掉已知的合法进程,并仅显示可疑的编码或混淆命令。
### 步骤 4:仪表板与可视化
构建了交互式 Splunk 仪表板,包括:
- **登录异常时间表** — 每小时登录活动的峰值
- **热门进程** — 各用户执行最多的进程
- **失败登录地图** — 失败次数最多的源 IP
- **审核更改追踪器** — 安全策略修改的时间线
## 🧠 MITRE ATT&CK 映射
| 技术 | ID | Event ID | 描述 |
|-----------|----|----------|-------------|
| 暴力破解 | T1110 | 4625 | 反复的登录失败尝试 |
| 横向移动 | T1021 | 4624 | 异常的网络登录 |
| PowerShell 执行 | T1059.001 | 4688 | 可疑的 PowerShell 命令 |
| 计划任务 | T1053 | 4698 | 通过计划任务实现持久化 |
| 指标移除 | T1070 | 4907 | 审核策略修改 |
## 🔍 关键发现
| 发现 | 详情 |
|---------|---------|
| 分析的事件总数 | 30,000+ |
| 可疑的 PowerShell 执行 | 带有 `-enc` 标志的编码命令 |
| 检测到的登录异常 | 异常的 Logon Type 3 (Network) 激增 |
| 检测到的审核篡改 | 工作时间之外的 Event 4907 修改 |
| 过滤的误报 | 排除了 Windows Update、MoUsoCoreWorker |
## 📚 我学到了什么
- 编写复杂的 SPL 查询以分析大容量的 Windows 事件日志
- 区分恶意活动与合法的系统进程
- 使用 Event ID 作为威胁狩猎的检测基元
- 构建 Splunk 仪表板以实现安全运营可视化
- 将检测到的行为映射到 MITRE ATT&CK 技术
- 通过定向排除过滤器减少误报
## 👤 作者
**Abdelrahman Mohamed Hussein** — SOC Analyst
[LinkedIn](https://www.linkedin.com/in/abd-el-rahman-mohamed-hussein-a6071b256) | [GitHub](https://github.com/abdelrahman-28m)
标签:Cloudflare, Conpot, MITRE ATT&CK, OpenCanary, PoC, PowerShell安全, SPL查询, ThreatHunting, Windows安全, 事件ID, 协议分析, 安全运营, 实验室, 审计策略, 扫描框架, 攻击溯源, 数字取证, 暴力破解, 权限提升, 横向移动, 漏洞靶场, 编程规范, 网络安全, 自动化脚本, 防御检测, 隐私保护