3sk1nt4n/SOC-Sentinel-Splunk

GitHub: 3sk1nt4n/SOC-Sentinel-Splunk

SOC Sentinel 是一款接入 Splunk 的 AI 安全调查代理,通过三层确定性验证管线消除 LLM 幻觉,确保每个威胁发现均可追溯到真实日志数据。

Stars: 1 | Forks: 0

# 🛡️ SOC Sentinel - Splunk 的防幻觉调查代理 **赛道:安全** · Splunk Agentic Ops 黑客马拉松 2026 · 在运行时使用 **Splunk MCP Server** ![SOC Sentinel 架构](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/6df8eee1a9094501.png) ## 问题所在 将 LLM 指向你的 SIEM 并询问*“我被入侵了吗?”*,它会非常乐意地**编造** 一个攻击者 IP、一个主机名、一条“已确认”的横向移动链——而这些全都不在你的 数据中。在安全领域,这可不是什么小毛病,而是绝对的破坏者:**一个自信的错误答案 比没有答案更危险**——它会浪费事件响应时间、导致错误的升级, 并在追踪捏造威胁时错过真正的威胁。这就是 agentic SOC 工具 在生产环境中无法获得信任的最大原因。 ## 解决方案 | 原生“AI over SIEM”的问题 | SOC Sentinel 的应对方案 | |---|---| | **幻觉事实** - 凭空捏造的 IP、主机、“已确认”的入侵 | **Layer 1 追踪门控** - 每个声明都必须匹配真实的 Splunk 结果行,否则将被拦截。由代码决定,而非模型。 | | **缺乏来源** - 你无法验证 AI 声称的内容 | 每个确认的发现都链接到确切的 **SPL + 结果行**作为证明 - 几秒内即可重新运行 | | **置信度校准不当** | **Layer 3 校准** - 置信度来源于*独立来源的印证*(3+ sourcetypes = HIGH),而非模型的主观感觉 | | **不安全的访问 / prompt 注入** | 代理从不构建原始查询或 shell - 仅使用**强类型 MCP 工具和只读搜索** | | **告警疲劳** | 可验证的分级按印证程度排序,因此分析师会优先看到*真实*的威胁 | | **信任鸿沟阻碍了应用** | 报告不包含任何无法验证的内容 - 可以直接安全地交给 SOC | ## 工作原理(三层信任 pipeline) 防幻觉核心移植自经过实战检验的 DFIR 代理,并针对 Splunk 重新实现。AI 提出的每个候选发现都会经过三个确定性层级的处理: 1. **Layer 1 - 追踪门控。** 每个声明(`field = value`)都必须出现在真实的 Splunk 结果行中,否则将被标记为 `UNSUPPORTED` 并被拦截。*由代码检查 AI。* 2. **Layer 2 - 印证。** 计算支持该发现的**独立 sourcetypes** 数量(相当于 Splunk 中内存 + 磁盘 + 日志的交叉验证)。 3. **Layer 3 - 校准。** 基于证据的置信度:**3+ 个独立来源 = HIGH,2 = MEDIUM,1 = LOW。** 处置结果:`confirmed`(所有声明均可追踪)· `needs_review`(部分可追踪)· `rejected`(均不可追踪)· `inconclusive`(无声明)。置信度仅分配给已确认的发现。 查看完整的逐步流程 - *conductor 拥有每一步的所有权;AI 仅在 `⟦ AI ✦ ⟧` 括号内行动* - 请见 **[`docs/PIPELINE.md`](docs/PIPELINE.md)**: ![SOC Sentinel pipeline](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/fd76f38b6b094506.png) ## AI + Splunk 的使用方式(运行时) - **推理:** **Claude (Anthropic)** 驱动调查循环 - 形成假设,选择要运行的 SPL,读取结果,并提出带有明确声明的发现。 - **Splunk AI 能力:** **Splunk MCP Server**(Splunkbase 应用 7931,Splunk 官方支持)是运行时的桥梁 - 代理通过 `POST /services/mcp` 的 JSON-RPC 执行 `splunk_run_query` 和其他强类型 MCP 工具;它从不直接接触 Splunk。 - **护栏:** 三层验证器(`src/finding_validator.py`)根据真实的结果行对每个发现进行门控。 - **成本与缓存:** 代理使用 **Anthropic prompt caching**(静态系统 prompt + 工具定义 + 每轮移动的对话前缀断点,读取成本仅为 10%)以及 **工具结果记忆化**(相同的 SPL 不会被重复搜索)- 从而将主要 token 成本降低约 2-4 倍。**实测的**一次完整 Haiku 调查成本为 **$0.0886,缓存命中率为 76%**(约 9 美分);代理会打印真实的 token 使用量和每次运行的 `$` 成本。确定性的 `--hunt` 运行所有 42 个检测器只需 **$0**。详情:**[`docs/COST.md`](docs/COST.md)**。 有关完整数据流,请参见 [`architecture_diagram.md`](architecture_diagram.md)。 ## 快速开始 **前置条件:** 本地运行 Splunk Enterprise(管理 API 位于 `https://localhost:8089`),已安装 **Splunk MCP Server** 应用,以及 Python 3(客户端/验证器为**纯标准库** - 无需 pip;代理循环也通过标准库调用 Anthropic API)。 ### 🚀 一条命令(推荐) ``` ./soc-sentinel.sh ``` 一次引导式、色彩丰富的入门体验:它会检查你的 Splunk + MCP Server,提供注入演示数据的选项,在**带有实时验证的隐藏 prompt** 处接收你的 Anthropic 密钥(没有密钥?它会回退到免费的 hunt),然后运行调查并打印报告 + 该次运行的 $ 成本。 ### …或者分步执行 ``` cp .env.example .env # set SPLUNK_HOST / SPLUNK_USER / SPLUNK_PASSWORD # 1. 验证 MCP 集成(列出 10 个工具,运行真实搜索) python3 src/splunk_mcp.py # 2. 将可复现的 breach 注入 Splunk(index=soc_demo)- 无需 BOTS 下载 python3 src/seed_demo_index.py # 3. 差异化优势 - 基于真实安全数据的 3 层 gate,无需 API key python3 src/agent.py --demo # 3b. 通用 hunt - 跨 kill chain 运行 behavioural detection pack python3 src/agent.py --hunt # 4. 完整的 agentic loop(由 Claude 驱动)- 通过任意 4 种方式添加 key,然后: echo 'ANTHROPIC_API_KEY=sk-ant-...' >> .env # or env var / API_KEY.txt / hidden prompt python3 src/agent.py "Investigate suspicious authentication and outbound activity in index=soc_demo over the last 24h." ``` ### 第 3 步打印的内容(实时、确定性、无 LLM) ``` ✅ CONFIRMED [MEDIUM] External 203.0.113.66 ran a brute-force + web attack L1 trace gate: 1/1 claims trace to real Splunk rows L2 corroboration: 2 independent source(s): access_combined, linux_secure L3 calibration: confidence=MEDIUM (3+ sources=HIGH, 2=MEDIUM, 1=LOW) 🚫 REJECTED [NONE] C2 beacon to 8.8.8.8 (model-invented) L1 trace gate: 0/1 claims trace to real Splunk rows ``` 捏造的信标无法达到“confirmed”状态 - 它的 `dest_ip` 从未出现在任何 Splunk 结果行中。 这道门控正是阻止 AI 幻觉进入报告的关键。 ## 通用检测库 `src/detections.py` 提供了跨越 **7 个领域**和完整 ATT&CK kill chain 的 **42 个行为检测器**。每个检测器寻找的都是*结构或行为* - 绝非硬编码的 IP/主机/hash - 因此它们在未知环境中依然有效(`tests/test_detections.py` 强制执行了无标准答案规则)。其中包括移植到原生日志 Splunk 的 **Find-Evil 级别的高价值检测器**:**内存注入痕迹**(CreateRemoteThread、**ProcessTampering / hollowing**、反射式 DLL 加载 - 相当于 Sysmon 中的 Volatility `malfind`/`hollowprocess`)、凭证转储(SAM/LSASS)、侦察突发、PsExec/RDP 横向移动、WMI 事件订阅持久化、系统进程伪装、反取证(安全擦除)以及勒索软件准备阶段。示例: | 战术 | 技术 | 检测器 | |---|---|---| | Credential Access | T1110 | 来自单一来源的身份验证失败爆发 | | Initial Access | T1190 | Web 请求中的 SQLi / 路径遍历 | | Execution | T1059.001 | 编码 / 混淆的 PowerShell | | Execution | T1059 | Office 应用派生 shell | | Persistence | T1543.003 | 从 temp / 用户可写路径启动的服务 | | Privilege Escalation | T1078 | 被分配 SeDebug / SeTcb / SeLoadDriver 权限 | | Defense Evasion | T1070.001 | 安全 / 审计日志被清除 | | Lateral Movement | T1021 | 一个账户登录多台主机 | | Command & Control | T1071 | 低抖动的周期性信标 | | Exfiltration | T1567 | 出站流量异常 | | Exfiltration | T1530 | 云对象存储被设置为公开 | | Credential Access | T1110.004 | 云控制台登录失败 | `python3 src/agent.py --hunt` 通过 MCP server 运行整个检测包并验证每个命中;跨独立 sourcetypes 的印证能将真正的攻击者提升为 HIGH,并将单一来源的噪声保持在 LOW。 查看它能**[发现的前 5 名高级攻击](docs/CASES.md)** - 包含一个**[针对真实数据的 #1 攻击的逐步演示](docs/WALKTHROUGH.md)** - 以及**[成本与缓存分析](docs/COST.md)**(prompt caching + 工具记忆化;确定性的 `--hunt` 运行相同的 42 个检测器需 **$0**,实时代理运行只需几美分)。 ## 报告 每次 hunt/调查都会生成一份可直接交给分析师的**事件报告**(Markdown + 样式自包含的 HTML) - 包括执行摘要、**MITRE ATT&CK 覆盖矩阵**、颜色编码的发现表(置信度 + 印证程度),以及**针对各项技术的补救措施和证明每个发现的确切且可重新运行的 SPL**。示例:[`reports/incident_report.html`](reports/incident_report.html)。 ![事件报告](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/34ef35f8ab094514.png) 一份真实的 Claude (Haiku) 调查脚本 - 包含 30 多次 MCP 工具调用,所有发现均由验证器进行门控 - 保存在 [`artifacts/sample_investigation.txt`](artifacts/sample_investigation.txt)。 ## 布局 | 文件 | 用途 | |---|---| | `src/splunk_mcp.py` | Splunk MCP Server 客户端 - token 生成 + JSON-RPC (`initialize`/`tools/list`/`tools/call`) | | `src/agent.py` | 代理循环(基于 MCP 的 Claude) + 确定性门控演示 | | `src/finding_validator.py` | 三层信任 pipeline - **核心差异所在** | | `src/seed_demo_index.py` | 可复现的 SOC 数据集(一次完整的入侵供 hunt) | | `src/api_key.py` | “防卡壳”密钥输入:env → .env → `API_KEY.txt` → 隐藏 prompt | | `tests/test_validator.py` | 针对这 3 层的单元测试 | | `docs/architecture.png` | 架构图(见上文) | ## 合规性(防取消资格) - ✅ **运行时使用 Splunk AI** - 代理实时调用 Splunk MCP Server(非模拟 / 非规划) - ✅ **架构图** - `docs/architecture.png` - ✅ **新项目** - 所有提交均在黑客马拉松期间完成 - ✅ **OSI 许可证** - MIT([LICENSE](LICENSE)) - ✅ **公开仓库** - 见 About ## 许可证 MIT - 见 [LICENSE](LICENSE)。
标签:SOC分析, 安全运营, 扫描框架, 逆向工具, 防幻觉