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:初始日志验证 为了验证云实例已成功索引遥测数据,对数据集进行了广泛的索引搜索。 ![已加载 6 个事件](https://raw.githubusercontent.com/Spica581/Cloud-Native-Threat-Hunting/main/Data_Ingestion.png) *确认已成功将攻击范围日志文件接入默认索引的广泛搜索。* ### 阶段 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 ``` ![EventCode 10 以及正在运行的 WmiPrvSE.exe。](https://static.pigsec.cn/wp-content/uploads/repos/cas/6e/6ed82aa945e6d6bb81c7095ee31ffe1cc14f21d4283b20699de6b9776c559aa0.png) *使用正则表达式将原始数据源动态解析为结构化表格,以揭示诸如 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 ``` ![运行了 taskmgr.exe 和 lsass.exe 并完美填充在表格中。](https://static.pigsec.cn/wp-content/uploads/repos/cas/5e/5e445425ac94e0f8201246155de2d342f3f69e374e8478a0fbc07fdd89f2a264.png) *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 动态操作原始字符串,能让团队在实际的事件响应过程中,立即对新出现的或冷门的日志源进行调查。
标签:安全, 数字取证, 自动化脚本, 超时处理