Spica581/Cloud-Native-Threat-Hunting
GitHub: Spica581/Cloud-Native-Threat-Hunting
基于 Splunk Cloud 的云原生威胁狩猎案例,通过自定义 SPL 和运行时正则解析 Sysmon 日志来检测 LSASS 凭据转储攻击。
Stars: 0 | Forks: 0
# 云原生威胁狩猎:在 Splunk 中调查 LSASS 凭据转储
## 项目概述
本项目演示了如何从资源受限的本地环境转向云原生 SIEM (Splunk Cloud),以接入、解析和分析高级对抗战术。使用 Splunk Attack Range 数据集中的真实遥测数据,我作为 SOC 分析师,成功追踪到了映射至 **MITRE ATT&CK 框架 (T1003.001 - LSASS Memory Dumping)** 的凭据窃取技术。
### 展示技能:
* **云 SIEM 管理:** 在 Splunk Cloud 中接入和管理数据。
* **高级 SPL (Search Processing Language):** 编写针对性查询以过滤噪声。
* **Regex 集成 (`rex`):** 实时从未解析的 XML 字符串日志中动态提取隐藏字段。
* **威胁取证分析:** 识别针对 Windows 子系统的未授权进程内存访问。
## 架构与数据接入
我没有在本地运行沉重的 Windows 和 Linux 虚拟机,而是直接从威胁研究库获取原始取证事件数据 (`windows-sysmon.log`),并将其接入到云托管的 Splunk 实例中。
由于原始日志是作为单行文本数据源导入的,因此无法使用传统的开箱即用字段提取功能。这要求直接在搜索控制台中编写运行时字段提取。
## 威胁狩猎与取证调查阶段
### 阶段 1:初始日志验证
为了验证云实例已成功索引遥测数据,对数据集进行了广泛的索引搜索。

*确认已成功将攻击范围日志文件接入默认索引的广泛搜索。*
### 阶段 2:通过 Regex 提取克服未解析字段问题
接入的数据存储在嵌套于原始字符串中的 XML 数据库格式中,这意味着 `EventID` 或 `SourceImage` 等字段无法自动交互。
为了解决这个问题,我使用正则表达式提取 (`rex`) 编写了自定义的 Splunk 搜索查询,以隔离 Sysmon 事件代码并实时跟踪进程操作:
```
index="main" "lsass.exe"
| rex field=_raw "(?\d+) "
| rex field=_raw "(?[^<]+) "
| search EventCode=10
| table EventCode SourceImage
```

*使用正则表达式将原始数据源动态解析为结构化表格,以揭示诸如 WmiPrvSE.exe 之类的自动化系统活动。*
### 阶段 3:捕获核心攻击(任务管理器滥用)
攻击者经常利用受信任的 Microsoft 二进制文件来绕过安全控制。在此阶段,狩猎目标是 Sysmon Event ID 10 (Process Access),专门寻找读取本地安全机构子系统服务 (lsass.exe) 内存空间的企图。
我执行了最终优化后的狩猎查询:
```
index="main" "lsass.exe"
| rex field=_raw "(?\d+) "
| rex field=_raw "(?[^<]+) "
| rex field=_raw "(?[^<]+) "
| table EventCode SourceImage TargetImage
```

*Splunk 明确隔离了 Sysmon Event ID 10,显示 taskmgr.exe 非法打开句柄以读取 lsass.exe 的内存空间,从而转储系统哈希。*
## 故障排除与工程突破
在构建本项目时,遇到了几个基础设施和数据解析障碍。以下是如何解决这些工程挑战的文档记录:
### 1. 存储限制的转型(本地虚拟机失败)
* **问题:** 尝试使用 VirtualBox 在本地构建传统的 SOC 实验室导致了严重的存储耗尽。由于笔记本电脑可用内存空间为零,虚拟磁盘映像 (`.vdi` 文件) 损坏并缩小到 2 MB 的基准,从而中断了本地 Windows 传感器的部署。
* **突破:** 我没有放弃该项目,而是将整个架构转向了**云原生模型**。通过启动云托管的 Splunk 实例,将繁重的处理和多 GB 的存储需求转移到了云架构上,使得项目仅凭标准的 Web 浏览器就能继续进行。
### 2. 克服 JSON Schema 中未解析 XML 的限制
* **问题:** 对于此实例,Splunk Cloud 的数据接入向导限制了手动文本文件上默认的 Windows 事件日志解析模板 (`XmlWinEventLog`)。盲目上传数据集导致 Splunk 将日志读取为无格式的单行文本字符串块,破坏了传统的字段下拉功能 (`EventCode`、`SourceImage` 等)。
* **突破:** 我没有依赖自动化的 GUI 向导,而是使用**正则表达式提取 (`rex`)** 在搜索应用内实现了运行时字段定义。通过将自定义 regex 匹配模式动态写入 SPL pipeline,我迫使 SIEM 引擎切入原始字符串块,并实时映射出高保真的安全数据:
* 捕获隐藏事件类型:`| rex field=_raw "(?\d+) "`
* 暴露恶意执行路径:`| rex field=_raw "(?[^<]+) "`
这成功绕过了接入限制,并将无组织的原始字符串转换为可交互、具有实操性的安全表格。
## 关键要点与缓解措施
防御可见性:虽然传统的防病毒程序通常会忽略任务管理器活动,因为它是原生的 Windows 工具,但 Sysmon 跟踪 (Event ID 10) 可以立即捕获内存篡改行为。
SIEM 灵活性:安全分析师不能总是依赖预配置的解析器。掌握如何使用 SPL 动态操作原始字符串,能让团队在实际的事件响应过程中,立即对新出现的或冷门的日志源进行调查。
标签:安全, 数字取证, 自动化脚本, 超时处理