rnelsonmwg/Detection-Engineering-Home

GitHub: rnelsonmwg/Detection-Engineering-Home

一个将自然语言威胁描述转换为生产级 Splunk SPL 检测与狩猎包的原型工具,聚焦云与 CI/CD 威胁。

Stars: 0 | Forks: 0

# 全景之眼 — 威胁检测锻造场 *一个将自然语言威胁描述转换为生产级 Splunk SPL 检测与狩猎包的原型工具。* 专注于 **云控制平面** 与 **CI/CD 流水线** 威胁:凭据窃取、恶意代码植入、威胁 actor 持久化、供应链攻击、身份妥协及相关战术。 ## v3 — 离线锻造库扩展 离线锻造库现通过注册架构覆盖 **12 个模板家族** — 每个家族声明一个 `matches()` 谓词和一个 `produce()` 函数,返回检测、狩猎与数据源。多个家族可同时触发同一威胁(若威胁提及 GitHub + Terraform + AWS,将触发全部三个家族,生成 6+ 条检测)。 | 家族 | 覆盖范围 | |---|---| | `aws-iam` | IAM 用户/密钥创建、访问密钥地理异常、通过 PolicyAttach 的权限提升、罕见的 CloudTrail API 调用 | | `azure-entra` | 服务主体凭证添加、危险角色分配(GA、PRA、应用管理员)、条件访问篡改、异常同意授权 | | `gcp` | 服务账户密钥创建、所有者/编辑绑定添加、罕见管理员活动基线 | | `kubernetes` | Pod 执行、特权/HostPath Pod、跨命名空间密钥读取、Falco 容器内 Shell、服务账户令牌滥用 | | `github-cicd` | Actions 密钥添加、自托管 Runner 注册、pull_request_target 工作流修改、workflow-diff 泄露狩猎 | | `gitlab-ci` | 屏蔽变量修改、 rogue Runner 注册、部署密钥/令牌创建、CI_JOB_TOKEN 跨项目滥用 | | `jenkins-circleci` | Jenkins 脚本控制台、非工作时间插件安装、Cross-project 上下文读取、异常 Shell 调用 | | `iac` | 敏感 TFC 变量访问、破坏性非工作时间运行、首次使用 API 令牌地理分布、IAM/SG 差异(计划内) | | `oauth-saml` | 非法同意授权(M365)、高权限 API 权限、SAML 签名证书变更(Golden SAML)、企业应用基线 | | `okta-idp` | 不可能旅行会话、管理员 MFA 注册 | | `supply-chain` | 意外包注册表、安装时的 Runner 出站、新首用 API 令牌地理基线 | | `secrets-scanners` | 已验证的 TruffleHog/Gitleaks 发现、默认分支泄露、长期未轮换密钥 | | `generic` | 回退的身份广度基线 | **10 个预设威胁场景** 位于侧边栏 — 每个家族一个或多个。点击任意场景自动填充摘要。 **添加家族** 约需 50 行代码:将新对象推入 `TEMPLATE_FAMILIES`,包含 `id`、`label`、`matches(threat)` 与 `produce(threat, ctx) → {detections, hunts, dataSources}`。无需其他代码变更。 ## v2 — 从 v1 的变更 - **LLM 选择具有权威性。** 侧边栏中选定的模型即为运行模型。无静默回退至离线引擎。 - **显式模型横幅。** 每个生成的包顶部均标注生成模型、温度与耗时(毫秒),并排对比时不可忽略。 - **温度滑块。** 0.0(专注)→ 1.5(发散)。默认 0.7。通过 Anthropic、OpenAI 与 Gemini 传递。 - **强制离线切换**(离线模式,默认关闭)。开启时绕过所有 LLM,即使已选择模型。这是明确的可选操作,非默认路径。 - **回退提示响亮。** 若 LLM 调用失败(无密钥、网络错误、不可解析 JSON),工具回退至离线锻造并告知用户 — 显示红色横幅、原因与日志条目。 - **对比模型。** 勾选两个或多个提供方,点击 **⊞ Compare Models**,同一威胁摘要将并行发送至所有模型。输出在可滚动侧栏中呈现。可导出完整对比为 JSON 或 Markdown。 ## 每个威胁的输出内容 对自然语言描述的每个威胁,All Seeing Eye 生成: - **检测规则** — 告警 SPL,具备 CIM 感知能力,酌情使用 `tstats`,每条附带 `why` 理由与风险评级。 - **狩猎查询** — 使用 `stats` / `eventstats` / `streamstats` 的探索性 SPL,用于基线偏差狩猎。 - **分类处置流程** — SOC 分析师的编号处置步骤。 - **响应剧本** — 从 containment 到 lessons-learned 的清单格式 IR 行动。 - **MITRE ATT&CK 映射** — 附带战术的技术 ID。 - **数据源清单** — 包所依赖的索引与源类型。 - **SPL 校验** — 轻量静态检查:括号/引号平衡、识别 SPL 命令、空管道段、`index=*` 无 `tstats`、缺失时间范围、`tstats` 缺少 `datamodel=`。 导出为 **JSON**(工具友好)或 **Markdown**(人类友好,可直接放入运行手册仓库)。 ## 设计中立 该工具支持三种运行时模式,无需重启即可选择: 1. **离线锻造** — 基于规则的模板引擎,无网络调用、无 LLM。默认覆盖 AWS、GitHub、Okta 与供应链威胁。也可在 LLM 提供方列表中显式选择,或在设置中开启“强制离线”。 2. **云 LLM** — Claude(Anthropic)、ChatGPT(OpenAI)、Gemini(Google)。密钥在检查器中输入,仅存入浏览器 `localStorage`,仅发送至目标提供方。 3. **自定义/本地** — 任意 OpenAI 兼容端点(Ollama、LM Studio、vLLM、OpenRouter、Groq、Together、Azure OpenAI 等)。通过“+ 添加自定义/本地模型”按钮添加。 ## 对比模型 跨供应商检测质量研究是该工具的核心目的。检查器中操作如下: 1. 在 **Compare Targets** 下勾选两个或更多提供方(绿色圆点 = 就绪,琥珀色圆点 = 需 API 密钥)。 2. 按常输入威胁摘要。 3. 点击 **⊞ Compare Models** 而非 **▶ Forge**。 4. 观察各提供方并行运行的实时状态瓦片。 5. 侧栏并列展示各模型的检测 SPL、推理、MITRE 映射、狩猎、处置与响应。 6. 导出对比结果为 JSON 或 Markdown 用于撰写报告。 所有运行共享同一威胁摘要、相同温度,以及相同(可选导入的)参考 URL 上下文。输出差异完全归因于模型本身。 ## 两种部署类型 同一 `web/index.html` 为规范源。桌面构建仅为其封装,无代码复制。 ### 1. 浏览器(单 HTML 文件) 无需安装。在任意现代浏览器中打开 `web/index.html` 即可。 ``` # 可选:通过 HTTP 提供服务,以便 localStorage 分区行为可预测 cd all-seeing-eye npx http-server web -p 8080 -o ``` **关于 CORS:** 直接调用 `api.anthropic.com`、`api.openai.com` 与 `generativelanguage.googleapis.com` 通常被允许 — Anthropic 要求 `anthropic-dangerous-direct-browser-access: true`(已预设)。若公司代理屏蔽,改用桌面构建,其无此类限制。 ### 2. 桌面(Electron) ``` cd all-seeing-eye npm install npm start # launches the desktop app ``` 构建安装包: ``` npm run dist # builds for your current OS into ./dist ``` 桌面构建增加:原生菜单、原生另存为对话框、对 LLM 调用无 CORS 限制、UI 中的桌面模式标识。 ## 快速开始 1. 打开应用(浏览器或桌面)。 2. 在右侧 **LLM 提供方** 面板选择模型。默认 **离线锻造** 无需任何设置即可使用。 3. 在 **威胁摘要** 中用自然语言描述威胁。可选填代号、设定域,并粘贴参考 URL(MITRE、CVE、厂商公告、博客文章 — 工具可摄取以提供上下文)。 4. 点击 **▶ Forge Detection Package**。 5. 查看检测与狩猎结果。每项均含推理、CIM 映射与 SPL 校验。 6. **导出 JSON** 用于检测即代码仓库,或 **导出 MD** 用于运行手册。 ### 启动预设 侧边栏提供四个真实场景,可立即尝试: - Okta 会话令牌窃取(Evilginx 风格) - GitHub Actions 密钥泄露 - AWS IAM 持久化后门 - 恶意 NPM 依赖(托名包) ## 设置(右侧检查器) | 设置项 | 功能说明 | |---|---| | **强制离线(离线模式)** | 完全绕过所选 LLM,即使已配置密钥。适用于离线环境。默认关闭,所选模型具有权威性。 | | **获取参考** | 通过 `r.jina.ai` 公共代理获取 URL 内容以供 LLM 接地。离线模式下请禁用。 | | **CIM 数据模型感知** | 优先使用加速的 `tstats`,而非 `Authentication`、`Change`、`Network_Traffic` 数据模型。 | | **包含 tstats 查询** | 同时生成基于 `tstats` 的狩猎与原始事件搜索。 | | **MITRE ATT&CK 映射** | 在输出中包含技术 ID。 | | **LLM 温度** | 0.0(专注,近确定性)→ 1.5(发散)。默认 0.7。适用于 Anthropic、OpenAI、Gemini 及任意自定义端点。 | ## 架构 ``` all-seeing-eye/ ├── web/ │ └── index.html ← single-file app, canonical source ├── electron/ │ ├── main.js ← desktop shell, loads web/index.html verbatim │ └── preload.js ← contextBridge for native save dialogs ├── package.json └── README.md ``` **一份代码库,两个部署。** 对 `web/index.html` 的每一次修复都会同步到两者。 威胁库与 API 密钥存储在浏览器 `localStorage` 中 — 浏览器作用域为源,Electron 为用户数据目录。密钥永远不会传输至任何提供方之外。 ## SPL 校验规则(启发式) 原型对每个生成的查询运行轻量校验: - 括号 `()`、`[]`、引号 `""` 平衡 - 至少包含一条识别出的 SPL 命令 - 空管道段(`| |`) - 无 `tstats` 的 `index=*`(标记为昂贵) - 缺失时间范围(无 `earliest=`、`tstats` 或 `timechart`) - `tstats` 缺少 `datamodel=` 校验为 **启发式而非解析器** — 视作 linter 而非编译器。部署前务必在自有数据上复核查询。 ## 扩展原型 所有内容均位于 `web/index.html`。最可能需要修改的部分: - **`MITRE_LEXICON`** — 关键词到技术 ID 的映射。为关注的威胁添加条目。 - **`forgeSpl()`** — 领域感知 SPL 模板。原型已提供云(AWS)、CI/CD(GitHub)、身份(Okta)与供应链(NPM)模板。可自行添加。 - **`SYSTEM_PROMPT`** — 发送至云 LLM 的指令。可根据组织命名规范、索引名等调整。 - **`PRESETS`** — 侧边栏中的预设威胁。 ## 路线图想法 - 输出 Sigma 规则 alongside SPL - Splunk SOAR 剧本生成 - 带签名哈希的检测即代码 GitOps 导出 - 测试模式:粘贴样本事件,查看触发规则 - 内容包导入/导出(跨团队共享威胁库) ## 原型注意事项 - SPL 校验为启发式,非真实解析器。部署前请复核。 - 离线锻造模板覆盖四个演示域较好;边缘威胁可能需要 LLM 增强。 - URL 摄取使用 `r.jina.ai`(公共阅读代理)。对敏感威胁情报,请使用桌面构建并关闭 URL 抓取。 - 无遥测、无分析。仅在用户明确指示时发起网络调用(摄取 URL、调用 LLM)。
标签:AMSI绕过, AWS, Azure, CI/CD安全, CircleCI, DPI, GCP, GitHub Actions, GitLab CI, IAM, Jenkins, Llama, OAuth, PB级数据处理, SAML, SEO, SPL, StruQ, 云控制平面, 人体姿态估计, 供应链攻击, 后端开发, 多模态安全, 威胁检测, 威胁行为体持久化, 安全运维, 密钥窃取, 异常检测, 恶意代码植入, 数据可视化, 数据来源, 文档安全, 服务主体, 服务账户, 检测模板, 模板家族, 生产级检测, 离线库, 网络信息收集, 自动笔记, 规则匹配, 身份妥协