emerygiles/nex

GitHub: emerygiles/nex

NEX 是一款基于安全微调 LLM 的 Splunk 自主紫队工具,自动发现、证明并修复安全检测覆盖盲区。

Stars: 1 | Forks: 0

# 用于 Splunk 的 NEX 自主紫队 NEX 是一款为 **Splunk Agentic Ops 黑客松(安全赛道)** 打造的智能体安全解决方案。它会像漏洞赏金猎人一样攻击你*自己的* Splunk 数据,**证明**存在检测覆盖盲区(运行 SPL,获得零命中),接着运行自我怀疑机制以抑制误报,然后**编写并部署**填补该盲区的检测规则——同时生成 SPL 保存搜索和可移植的 Sigma 规则。 它不是一个仅仅*描述*问题的聊天机器人。它闭环了整个流程:**发现 → 证明 → 修复 → 验证。** ## 为什么它很重要 每个 SOC 都有检测盲区。发现这些盲区是一个缓慢、手动的,且高度依赖分析师具备攻击者思维的过程。NEX 通过以下方式实现了该闭环的自动化: - **Splunk MCP Server** — 智能体的双手:枚举知识对象、运行 SPL、部署保存搜索。 - **Splunk 托管模型** (`Foundation-sec-1.1-8b-instruct`) — 智能体的大脑:针对攻击者 TTP 和检测逻辑进行安全微调的推理。 - **MITRE ATT&CK** — 智能体用于推理的覆盖图。 ## 智能体闭环 1. **侦察** — 通过 MCP 枚举索引、sourcetype 和现有检测规则。 2. **攻击思考** — Foundation-sec 选择一个极可能绕过当前覆盖范围的 ATT&CK 技术。 3. **证明盲区** — 通过 MCP 生成并运行候选 SPL;**0 命中 = 确认的盲区**。 4. **怀疑机制关卡** — 第二轮尝试*反驳*该盲区(已有现成规则?缺失数据?)。以此消除误报。 5. **发布修复** — 输出 SPL + Sigma + 严重程度 + ATT&CK ID,并通过 MCP 部署保存搜索。 ## 可见性覆盖 —— “盲区之下的盲区” 规则覆盖范围仅对那些你确实收集了遥测数据的技术有意义。NEX 还会运行 **数据源覆盖**检查:它将高价值的 ATT&CK 技术映射到甚至*观察*它们所需的数据源上, 并标记出你**完全没有遥测数据**的那些技术 —— 这些技术不会显示为“未覆盖”, 它们显示为*一片空白*。检测覆盖范围 = 规则覆盖范围 × 数据源覆盖范围。 (包含 `GET /visibility`、**Visibility** 视图以及闭环中的一个侦察步骤。) ## 生产安全性 - **SPL 命令白名单** — 任何由智能体运行或部署的 SPL,如果包含写入/窃取/执行命令 (`delete`、`outputlookup`、`sendemail`、`script`、`collect` 等),都将被拒绝。 检测工具只读取遥测数据;它永远不会执行删除或通过 shell 调用。 - **人工介入部署** — 设置 `AUTO_DEPLOY=false`,NEX 会*提议*检测规则并 等待分析师批准(`POST /deploy` 或 **Approve & deploy** 按钮),而不是自行部署。 模型负责提议;分析师负责决定。 - **有据可查的证明** — 盲区是通过该技术在真实遥测数据中的存在情况来证明的, 而不是通过模型的候选规则,因此孱弱的 SPL 永远不会被判定为“无盲区”。 ## 两种运行模式 | 模式 | 数据平面 | 用途 | |---|---|---| | **Sandbox** | 内置的 mock MCP + 捆绑的 APT 数据集 | 评委可在**零 Splunk 配置**的情况下运行 | | **Live** | 官方 Splunk MCP Server (`:8089/services/mcp`) | 在你的实例上进行真实的检测盲区分析 | 相同的智能体代码;仅通过配置切换 MCP 端点。 ## 快速开始 ### Sandbox(无需 Splunk) ``` # Backend cd backend python -m venv .venv && . .venv/Scripts/activate # Windows; use bin/activate on *nix pip install -r requirements.txt cp .env.example .env # MODE=sandbox is the default uvicorn app:app --reload --port 8800 # Frontend (新终端) cd frontend npm install npm run dev # http://localhost:5173 ``` ### Live(通过 REST 连接真实 Splunk) — `MODE=splunk_rest` 这会针对真实的 Splunk 实例运行智能体:真实的知识对象枚举、 真实的 SPL 搜索,以及真实部署的保存搜索。 1. **摄取演示攻击数据集**(通过 HEC 创建 `nex` 索引数据): python scripts/ingest_demo_data.py --token 2. **创建基线 'existing detections'**(覆盖 T1110/T1059.001/T1078.004,但不包含数据窃取): python scripts/setup_detections.py --user --password 3. 在 `backend/.env` 中: MODE=splunk_rest SPLUNK_REST_URL=https://localhost:8089 SPLUNK_USER= SPLUNK_PASSWORD= SPLUNK_INDEX=nex AI_PROVIDER=foundation_sec # 通过本地 Ollama 使用 Foundation-Sec-8B;或使用 'scripted' 4. 启动后端。`POST /reset` 会在多次演示运行之间重新打开盲区。 ### Live(Splunk MCP Server) — `MODE=mcp` 通过位于 `:8089/services/mcp` 的官方 **Splunk MCP Server** (#7931) 进行等效传输。 需要加密的 MCP token,这需要一个健康的 KV Store。(在 Splunk Enterprise 10.4 上,内置的 MongoDB/OpenSSL-3 组合可能无法读取其 TLS 密钥,从而阻止 token 创建; 上述 REST 数据平面在功能上是等效的,且不受此影响。) ### AI 大脑选项 `foundation_sec`(Cisco Foundation-Sec-8B-Instruct,本地 Ollama),`anthropic`(开发中)或 `scripted`(确定性,零依赖)。实时模型调用具有确定性的安全底座和 grounding 防护机制,因此小模型也不会产生偏离目标或幻觉的结果。 ## 架构 请参阅 [ARCHITECTURE.md](ARCHITECTURE.md) 和 [docs/architecture.mmd](docs/architecture.mmd)。 ## 技术 React + TypeScript + Vite + Tailwind + shadcn/ui + React Flow + Framer Motion · Python + FastAPI · Splunk MCP Server · Foundation-sec-1.1-8b · SPL + Sigma。 ## 许可证 [MIT](LICENSE)。
标签:AI安全智能体, AI风险缓解, DLL 劫持, SIEM自动化, 大语言模型, 检测规则生成, 紫队, 逆向工具