dawei2077/AI-Enhanced-SIEM-Pipeline-for-Living-off-the-Land-LotL-Detection-in-Splunk

GitHub: dawei2077/AI-Enhanced-SIEM-Pipeline-for-Living-off-the-Land-LotL-Detection-in-Splunk

将 Google Gemini AI 集成到 Splunk SIEM pipeline 中,自动分析和分诊 Living-off-the-Land 威胁日志,加速 SOC 团队的事件响应流程。

Stars: 0 | Forks: 0

# AI 增强的威胁检测 SIEM **作者:** David Liu **联系方式:** liudavid469@gmail.com | [LinkedIn](https://linkedin.com/in/david-liu-796b41382) | [GitHub](https://github.com/dawei2077) ## 目录 1. [项目摘要](#1-project-summary) 2. [技术栈](#2-technology-stack) 3. [架构与拓扑](#3-architecture-and-topology) 4. [工程技术深入解析](#4-engineering-deep-dive) 5. [AI SOC](#5-ai-soc) 6. [挑战与经验](#6-challenges--takeaways) 7. [未来的缓解策略](#7-future-mitigation-strategies) 8. [部署指南(逐步操作)](#8-deployment-guide-step-by-step) ## 1. 项目摘要 * **问题所在:** SOC 分析师在调查复杂的“无文件攻击”(LotL)威胁时,面临着严重的告警疲劳和响应延迟。 * **解决方案:** 构建了一个 SIEM pipeline,通过 Splunk AI Toolkit 集成 Google 的 Gemini AI,用于分析日志并制定遏制策略。 * **成果影响:** 消除了手动分类瓶颈,大幅加快了整体的事件响应时间。 ## 2. 技术栈 * **SIEM 和分析:** Splunk Enterprise 9.3.13、Splunk AI Toolkit、搜索处理语言(SPL) * **Agent 和遥测:** Splunk Universal Forwarder、Microsoft Sysmon(SwiftOnSecurity 基线) * **AI 模型:** Google Gemini 2.5 Flash API * **操作系统和基础设施:** Windows Server 2022、Ubuntu Linux(VirtualBox Type-2 Hypervisor) ## 3. 架构与拓扑 ![从日志生成到 AI 威胁分类的数据流架构](https://raw.githubusercontent.com/dawei2077/AI-Enhanced-SIEM-Pipeline-for-Living-off-the-Land-LotL-Detection-in-Splunk/main/data_flow.png) *图 1:从日志生成到 AI 威胁分类的数据流架构。* 1. **Windows Server 2022 / Sysmon(受害者):** 为所有后台系统活动创建高度详细的日志。 2. **Splunk Universal Forwarder(安全传输):** XML 日志通过端口 9997 传输到无头 Ubuntu 服务器进行索引。 3. **Splunk AI Toolkit 和 Gemini API(分析与分类):** 根据 SPL 提取原始日志,并向 AI 查询以进行分析。 4. **Splunk Enterprise(输出):** Splunk 接收 AI 的响应并将其格式化为表格。 ## 4. 工程技术深入解析 ### 遥测架构与日志摄入 部署了 SwiftOnSecurity Sysmon 配置,以过滤无害的后台噪音,仅记录高价值事件。由于严格的本地安全机构限制,Universal Forwarder 的权限被提升至“Local System”账户,从而授予了内核级别的读取和转发访问权限。 `inputs.conf` 文件经过精心配置,能够原封不动地捕获原始 XML 数据: ``` [WinEventLog://Microsoft-Windows-Sysmon/Operational] disabled = false renderXml = true index = main ``` ### 威胁模拟 模拟了一个入侵后场景,攻击者试图从 Windows 内存库(`lsass.exe`)中进行凭据转储。为了绕过标准的杀毒软件,使用内置的 Windows 二进制文件 `rundll32.exe` 在虚拟环境中执行转储: ``` rundll32.exe C:\windows\System32\comsvcs.dll, MiniDump C:\temp\lsass.dmp full ``` ## 5. AI SOC ![对 lsass.exe 凭据转储尝试的实时检测](https://raw.githubusercontent.com/dawei2077/AI-Enhanced-SIEM-Pipeline-for-Living-off-the-Land-LotL-Detection-in-Splunk/main/spl_prompt_output.png) *图 2:通过 Gemini API 生成的带有自动分析的实时检测。* 原始 XML 日志中包含的双引号破坏了 Splunk 的搜索处理语言(SPL)。为了解决这个问题,在将日志传递给 LLM prompt 进行实时威胁检测和事件响应之前,使用了 `eval` 和 `replace` 命令对日志进行清理: ``` index=* "*comsvcs.dll*" "*MiniDump*" | eval clean_raw = replace(_raw, "\"", "") | ai prompt="You are a SOC Analyst triage AI. Analyze the following raw event log: {clean_raw}. Identify any suspicious behavior, determine the attacker's likely objective and technique, and outline immediate endpoint containment protocols. Provide your analysis in one concise paragraph." provider="Gemini" model="gemini-2.5-flash" | rename ai_result_1 AS ai_response | table _time, ai_response ``` ## 6. 挑战与经验 * **硬件指令障碍:** 由于宿主机操作系统(Windows 11)的 AVX 硬件指令阻塞,Splunk 10.4 无法保存 LLM 配置。通过降级到 Splunk 9.3.13 成功进行了转换,在不影响宿主机内核安全的情况下,解决了 MongoDB kvstore 崩溃的问题。 * **Microsoft 障碍:** 试图在访问内存库(事件 ID 10)时立即触发 Splunk 告警,但由于 Windows Server 内置的保护措施(如攻击面缩减(ASR)规则和 EDR 传感器)而失败。该策略随后转为检测实际的命令执行(事件 ID 1)。 * **经验总结:** 获得了处理网络路由、Windows 内置防御以及为 LLM 处理进行复杂数据格式化的实践经验,同时成功将虚拟机联网,以模拟真实的企业环境。 ## 7. 未来的缓解策略 * 通过 Splunk webhook 实施 SOAR 机制(安全编排、自动化和响应),以触发自动更新 Windows 防火墙规则的脚本。 * 部署网络入侵检测系统(NIDS),如 Zeek 或 Suricata。 * 测试替代 LLM,以对响应速度和质量进行基准测试。 ## 8. 部署指南(逐步操作)
阶段 1:基础设施与网络
**前置条件:** * 最新版本的 Oracle VirtualBox * 镜像文件:Windows Server 2022 和最新版 Ubuntu Server LTS * 软件:Splunk Enterprise v9.3.13(以绕过现代 AVX 硬件限制)、Splunk Universal Forwarder 和 Splunk AI Toolkit * Google Gemini API 密钥 **构建自定义 NAT 网络:** 1. 打开 VirtualBox 并导航到 File > Tools > Network Manager。 2. 在 NAT Networks 标签页下点击“Create”。 3. 将网络命名为“SIEM Network”,并确保 IPv4 Prefix 设置为标准的私有网段(例如 `10.0.2.0/24`)。确保勾选了“Enable DHCP”。 **Ubuntu SIEM 索引器:** 1. 使用 Ubuntu Server ISO 创建一个名为“Ubuntu-SIEM”的新虚拟机。取消勾选“Proceed with Unattended Installation”。 2. **硬件:** 4096 MB 内存,2 个 CPU 核心。**存储:** 最少 50 GB。 3. **网络:** 连接到 NAT Network -> “SIEM Network”。 4. 启动并安装。出现提示时,勾选安装 OpenSSH Server 的复选框。 **Windows Server 2022 目标机:** 1. 使用 Windows Server 2022 ISO 创建一个名为“Windows-Target”的新虚拟机。取消勾选“Proceed with Unattended Installation”。 2. 将硬件和网络设置与 Ubuntu 服务器相匹配。 3. 在安装时选择“Windows Server 2022 Standard Evaluation (Desktop Experience)”。 4. 通过 Devices > Optical Drives 安装 VirtualBox Guest Additions。 **端口转发:** 1. 在 VirtualBox 中,转到 Network > Port Forwarding。 2. **规则 1:** 宿主机端口 `2222` 到客户机端口 `22`。(允许对 Ubuntu 进行 SSH 访问)。 3. **规则 2:** 宿主机端口 `8000` 到客户机端口 `8000`。(将本地浏览器映射到 Splunk Web UI)。 **Splunk Enterprise:** 1. 启动 Ubuntu。从宿主机通过 SSH 登录服务器(`ssh username@localhost -p 2222`)。 2. 下载并安装 Splunk Enterprise v9.3.13。 3. 在宿主机上,导航到 `http://localhost:8000` 并登录。 4. 转到 Settings > Forwarding and Receiving > “Receive data”,并将其配置为监听**端口 9997**。
阶段 2:遥测与 Forwarder 配置
**Sysmon 安装与降噪:** 1. 在 Windows Server 上下载 Sysmon。 2. 下载 SwiftOnSecurity Sysmon 配置(`sysmonconfig-export.xml`)并将其放在解压后的文件夹中。 3. 以管理员身份打开 CMD 并安装:`sysmon64.exe -i -n` 4. 应用基线配置:`sysmon64.exe -c sysmonconfig-export.xml` **Universal Forwarder:** 1. 将 Splunk Universal Forwarder 下载到 Windows Server。 2. 将“Receiving Indexer”设置为 Ubuntu 虚拟机的 IP 地址,并指定**端口 9997**。 3. 打开 `services.msc`,找到 SplunkForwarder 服务,并打开“Properties”。 4. 在“Log On”标签页中,选择“Local System Account”。重启该服务。 **数据摄入路由:** 1. 导航到:`C:\Program Files\SplunkUniversalForwarder\etc\system\local\inputs.conf` 2. 添加以下内容:
[WinEventLog://Microsoft-Windows-Sysmon/Operational]

disabled = false

renderXml = true

阶段 3:AI 集成
**Splunk AI Toolkit 和 MLTK:** 1. 下载 Splunk AI Toolkit 和 Python for Scientific Computing(Linux 版本)。 2. 通过 SSH 传输:`scp -P 2222 .tgz @127.0.0.1:~` 3. 通过 Ubuntu 终端安装:`sudo /opt/splunk/bin/splunk install app ~/.tgz` 4. 重启 Splunk:`sudo /opt/splunk/bin/splunk restart` **AI 配置:** 1. 在 Splunk Web UI 中,导航到 Settings > Roles,确保您的用户拥有 `mltk_admin` 角色。 2. 从 Google AI Studio 获取 API 密钥。 3. 在 Splunk AI Toolkit 应用中,为“Gemini”添加一个新的“LLM”连接。 4. 输入 API 密钥并选择 **Gemini 2.5 Flash** 模型。
阶段 4:模拟执行
**LotL 执行:** 1. 在 Windows Server 中以管理员身份打开 CMD。 2. 找到 LSASS PID:`tasklist /fi "imagename eq lsass.exe"` 3. 执行转储(替换 ``):`rundll32.exe C:\windows\System32\comsvcs.dll, MiniDump C:\temp\lsass.dmp full` 4. 验证 Sysmon 中是否创建了事件 ID 1。*(注意:如果提示“Access Denied”,请暂时禁用 Windows Defender 实时保护)。* **Splunk 检测:** 1. 在 Splunk 中打开“Search and Reporting”应用。 2. 粘贴自定义的 SPL 查询(在第 5 节中提供)并将时间范围设置为“All Time”。 3. 验证 AI 响应是否生成了遏制策略表。
标签:AI辅助分析, Gemini, 安全运营中心, 库, 应急响应, 网络映射