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, 协议分析, 安全运营, 实验室, 审计策略, 扫描框架, 攻击溯源, 数字取证, 暴力破解, 权限提升, 横向移动, 漏洞靶场, 编程规范, 网络安全, 自动化脚本, 防御检测, 隐私保护