教程总览:《21天实战 Splunk AI 威胁狩猎插件开发》

0 阅读7分钟

🚀 教程总览:《21天实战 Splunk AI 威胁狩猎插件开发》

课程目标:指引零基础或有一定 Python 基础的安全运营人员,跨越 Splunk 底层架构的壁垒,开发出一款具备依据PEAK威胁狩猎原理,多轮自主推导、API成本追踪、极简高管大屏的企业级 AI 安全应用,并最终将其开源至 GitHub 及提交至 Splunkbase 官方插件商店。


🟢 第一阶段:环境初始化与大模型接入 (第 1-5 天)

本阶段目标:搭建开发环境,打通 Splunk 与大模型的“任督二脉”,完成插件的骨架建设。

  • Day 1:兵马未动,粮草先行 —— 搭建极客开发环境

  • 安装 WSL (Windows Subsystem for Linux) 或 Linux 虚拟机。

  • 在 Linux 下通过命令行安装并启动 Splunk Enterprise 开发者环境。

  • *注册 Splunk 开发者账号并导入License。

  • 达成目标:本地浏览器成功访问 Splunk Web 界面。

  • Day 2:神器降临 —— 掌握 Splunk Add-on Builder (AOB)

  • 下载并安装 AOB,理解 Splunk 插件的目录结构 (default vs local)。

  • 创建你的第一个插件项目,设定版本与基本信息。

  • 达成目标:AOB 中成功生成插件的底层架构骨架。

  • Day 3:打通 AI 经脉 —— 大模型 API 基础与测试

  • 获取大模型 API Key(OpenAI、Ollama 或国内模型代理)。

  • 在外部编写 Python 脚本,测试请求大模型 API 的连通性。

  • 达成目标:熟悉大模型的入参 (messages) 与出参 (JSON) 结构。

  • Day 4:安全第一 —— 配置插件全局凭证 (Setup Parameters)

  • 学习 AOB 的 UI 坑点:如何在 Data Input 界面正确切换到 Setup 页面。

  • 配置 base_url, model_name 和加密的 api_key 输入框。

  • 达成目标:掌握 Splunk 底层的加密密码保险箱机制。

  • Day 5:任务调度器 —— 建立后台数据输入流 (Data Inputs)

  • 精简前端 UI:去掉多余字段,巧妙“劫持”系统默认的 Index 作为日志查询源。

  • 配置时间窗口 (Interval)、目标写入索引 (Target Index) 等核心调度参数。

  • 达成目标:配置出清爽且符合原生逻辑的用户操作界面。


🔵 第二阶段:注入安全灵魂与多轮迭代逻辑 (第 6-10 天)

本阶段目标:将安全狩猎方法论转化为可执行的 Python 代码,让 AI 具备“思考与查询”的能力。

  • Day 6:连接数据之源 —— Splunk SDK for Python 实战

  • 通过 Context 获取 session_key

  • 编写 SPL,利用 jobs.oneshot 接口在特定时间窗口内拉取真实日志的随机样本。

  • 达成目标:Python 脚本成功读取出作为基线的 5 条 Raw Log。

  • Day 7:植入顶级大脑 —— PEAK 框架与 ABLE 假设提示词工程

  • 设定严酷的 System Prompt(专家人设,强制输出格式)。

  • 编写 Prepare 阶段的 Prompt,引导大模型基于样本生成 ABLE 假设和初始 SPL。

  • 达成目标:大模型首次能够独立编写出符合规范的探索性 SPL。

  • Day 8:自主狩猎循环 —— Execute 阶段代码编写

  • 编写 For 循环,解析大模型生成的 SPL 并扔回给 Splunk 执行。

  • 将查询结果截取后喂给大模型,让其验证假设并生成下一条 SPL。

  • 达成目标:跑通 AI 智能体的“查询-分析-再查询”飞轮。

  • Day 9:成果落地 —— Act 阶段最终报告生成

  • 编写最后一轮跳出逻辑,强制大模型总结战果。

  • 产出包含执行摘要、风险打分 (Score: XX/100) 和检测工程建议的威胁狩猎报告。

  • 达成目标:AI 具备给出确定性结论和高价值安全交付物的能力。

  • Day 10:初次落盘与痛点遭遇 —— 直面 JSON 截断问题

  • 使用 helper.new_event 将大模型的完整分析过程打包成复杂 JSON 写入 Splunk。

  • 排坑实战:发现长文本导致大模型触发字数上限,JSON 结尾括号丢失导致无法解析。

  • 达成目标:定位长文本嵌套 JSON 的致命缺陷,为重构埋下伏笔。


🟣 第三阶段:企业级重构与极致优化 (第 11-15 天)

本阶段目标:解决截断痛点,优化数据结构,追踪成本,打造坚不可摧的底层逻辑。

  • Day 11:对症下药 —— 强制约束与 max_tokens 优化

  • 在 requests 参数中加入 max_tokens: 2048 提供安全冗余。

  • 重构 Prompt,加入极简指令 (Max 50 words, Bullet points max)。

  • 达成目标:有效压榨大模型水分,提升运行速度与格式稳定性。

  • Day 12:重塑数据模型 —— 扁平化日志 (Flat Events) 革命

  • 抛弃巨大嵌套的 JSON 数组。

  • 引入 uuid 生成 session_id,将每一次查询和最终报告拆分为独立的 Event 落盘。

  • 达成目标:彻底解决截断问题,使数据天生适配 Splunk 检索和高亮。

  • Day 13:成本追踪 —— 提取大模型 API Token 消耗

  • 解析大模型返回头中的 usage.total_tokens

  • 编写兼容各种大模型(官方与本地)的 Token 提取函数。

  • 达成目标:将每轮 Token 和总会话 Token 消耗量永久记录进日志中。

  • Day 14:打造“防弹衣” —— 极限容错与异常处理

  • 拦截非 200 HTTP 响应和 list index out of range 错误。

  • 编写中途崩溃时的补救逻辑,确保必定生成带有错误信息的最终报告。

  • 达成目标:面对网络断流或 API 限流,任务也能优雅退出并保留现场。

  • Day 15:底层大一统 —— 代码 Review 与数据校验

  • 确保所有写入日志指定 sourcetype="_json" 以激活 Splunk 语法高亮。

  • 在 Search 界面对最新产生的一批数据进行跨阶段的结构验证。

  • 达成目标:后台核心引擎达到完美封版状态。


🟠 第四阶段:极客大屏开发与自动化运维 (第 16-18 天)

本阶段目标:绕过可视化局限,为管理层打造直观的战报大屏,建立一键恢复机制。

  • Day 16:降维打击 —— 管理层视角 Dashboard 设计

  • 利用 Subsearch 和 rex 提取分数,抛弃繁杂的中间 SPL 细节。

  • 构建“最近 3 次威胁狩猎报告汇总”表格面板,突出分数、耗时与成本。

  • 达成目标:完成符合 SOC 负责人审美的 Dashboard XML 代码编写。

  • Day 17:绕过 AOB 前端霸权 —— 底层文件注入术

  • 理解为什么 AOB 会覆盖 UI 文件。

  • 学习在 WSL 环境中使用 vi 编辑器的 :set paste 模式安全粘贴 XML,避免转义错误。

  • 达成目标:成功将大屏和顶层导航栏 (Nav) 强行注入系统。

  • Day 18:从开发者到运维人 —— Shell 自动化脚本

  • 编写 backup_ui.sh 将配置文件备份出系统目录。

  • 编写 restore_ui.sh 脚本,实现一键覆盖并带鉴权刷新 _reload 缓存。

  • 达成目标:实现 UI 环境配置的秒级“满血复活”。


🔴 第五阶段:开源、打包与官方发布 (第 19-21 天)

本阶段目标:将个人资产转化为公共资产,推向开源社区与官方插件商店。

  • Day 19:安全第一的纯净打包法

  • 解析 AOB 打包报错 could not connect to App Certification 的网络原因。

  • 使用 Linux tar 命令,严格 --exclude 掉包含密钥的 local 目录和隐藏文件。

  • 达成目标:手动产出无毒无害、干净标准的 TA-llm_analyzer-1.0.0.spl 安装包。

  • Day 20:拥抱开源 —— GitHub 仓库建设与发布

  • 在本地初始化 Git 仓库,编写 .gitignore 忽略无用文件。

  • 撰写极具专业度的 README.md (包含架构图、安装指引、功能特性)。

  • 达成目标:推送代码至 GitHub,发布 v1.0 Release 版本供全球开发者下载。

  • Day 21:进军殿堂 —— Splunkbase 上架与 AppInspect 认证

  • 学习使用 Splunk 官方的 AppInspect 工具(CLI版)在本地进行合规性扫描。

  • 在 Splunkbase 填写插件元数据、上传图标,并提交官方安全与代码质量审核。

  • 达成目标:完成所有上架流程,等待插件在官方应用商店正式上线!