acaballero13/cribl-intel-hub

GitHub: acaballero13/cribl-intel-hub

为 Cribl Search 打造的一体化威胁狩猎工作台,集成检测管理、AI 查询翻译、威胁源订阅与多源 IOC 丰富。

Stars: 0 | Forks: 2

# Cribl Intel Hub 一款专为 Cribl Search 设计的威胁狩猎工作台。支持以下功能: 跨多个公共目录构建检测库,将 SPL / Sigma / 自然语言的检测逻辑 翻译为 Cribl Search KQL,管理精选威胁源,利用主要情报提供商丰富 指标信息,并支持从丰富结果直接返回查询工作台。 Cribl Intel Hub 作为应用运行于 Cribl Cloud 或本地部署工作区中。它是 **平台独占版** — 没有独立运行模式。所有的持久化存储、身份认证以及 外部 API 代理均由 Cribl 平台处理。 **当前发布版本:v0.17.9**(简化 Hunt pivot-query)。详细的版本发布说明请参阅 [`docs/RELEASE_NOTES.md`](docs/RELEASE_NOTES.md),关于至 1.0 版本的后续规划请参阅 [`docs/ROADMAP.md`](docs/ROADMAP.md)。 ## 板块 应用的七个顶级板块,按左侧导航栏顺序排列。Hunt、Audit Log 和 Settings 始终开启;Detections、AI Translator、Threat Feeds 和 Intel Sources 可在 **Settings → Sections** 中切换。 ### 1. Hunt — 查询工作台、已保存的 Hunts、IOC 丰富 在应用内编写并执行 Cribl Search KQL 查询。工作台 支持数据集选择、时间范围控制,以及表格形式的结果检查 (带有固定表头及上限为 100 行的滚动视口,确保在任何结果规模下 底部工具栏始终可见)。 - 页面标题下方的**控制台状态栏**显示当前的搜索组 (`default_search`)、实时状态点、已选数据集数量,以及 上次运行的事件总数。 - **IOC 丰富面板。** 粘贴 IP、域名、文件哈希或 URL。应用 将并行展开至每个配置的情报源和威胁源 并直接在行内展示结果。各源状态 (`ran`, `no-key`, `unsupported`, `error`, `configured-unwired`) 保持行内容清晰可读;出错的 源会被明确标出 (`errors: shodan, greynoise`) 而非显示令人费解的数字。 - **查询工作台**提供代码编辑器界面(浅色左侧边槽,翡翠绿 等宽字体,聚焦高亮)。工具栏提供 Run / Cancel / **Translate** / **Open in Cribl Search**。Search 的交接非常明确:剪贴板复制 + Search 主页 URL + 明确的 toast 提示 ("Query copied — paste it into Cribl Search."),因为 Cribl Search 不支持查询深链接。 - **Saved Hunts** 侧边栏是一个真正的库 — 支持按名称或从已保存查询中 提取的 `dataset="…"` 进行搜索,支持按 **Newest / Name** 排序, 状态点卡片(当 events > 0 时为翡翠绿,事件为 0 时为锌色),数据集标签, 事件计数,相对时间。每次运行都会追加到该 Hunt 有界限的运行 历史记录中(最新优先;上限 25 条),以便进行纵向审查。 - **Pivot 到 KQL。** 从任何已丰富的指标,生成一个 预绑定该指标的 Cribl Search 查询。v0.17.9 将 `buildPivotQuery` 重写为 经过验证的快速结构:一个**管道前搜索时过滤器**(在扫描 时下推,而不是扫描后的 `| where`),作用于真实的 VPC flow 字段名 IP 对应的 `srcaddr`/`dstaddr`,以及针对 域名/哈希(模式无关)下推的裸词。使用单个 `=`(搜索时过滤语法), 没有 `| project`,且以 `limit` 封顶。探针数据: [`docs/v0_17_9_pivot_probe_results.json`](docs/v0_17_9_pivot_probe_results.json)。 参见 `src/lib/kql.ts:buildPivotQuery`。 - **提升为 Detection。** 将 Hunt 的查询发送到 Detection 编辑器,并 预填目录来源、名称和标签。 ### 2. Detections — 库 + 多源目录浏览 检测库是安全检测的读/写存储, 按 MITRE ATT&CK 战术和技术组织。 - **12 个内置检测**涵盖了所有主要战术 — 不可变,始终 存在,随应用捆绑。 - **自定义检测** — 从零开始创建,从任何内置或 自定义检测复制、编辑、删除。由位于 `detections/` 下的 KV 存储支持。 - **MITRE 树状视图**具有战术 → 技术 → 检测的手风琴折叠功能, **Recently edited**(最近编辑)置顶板块(最多 5 个非内置检测, 支持过滤),以及针对空战术的 "Create one →" 引导链接。树状 展开状态按用户持久化。 - **过滤**支持按战术、严重程度、来源和标签,以及全文搜索。 - **Run in Workbench** 只需点击一下,即可将检测的查询直接发送至 Hunt。 - **Browse Catalog** 从三个社区源拉取 — **SigmaHQ Core** (DRL-1.1, 3000+ 规则)、**Splunk ESCU** (Apache-2.0) 以及 **MITRE CAR** (Apache-2.0)。该目录按 **platform**(而非战术)分组 — Sigma 对应 `windows/process_creation`,ESCU 对应 `endpoint`/`cloud`/`network`, CAR 对应 `CAR-2019`/`CAR-2020` — 这与源代码仓库的 自身组织方式一致。目录在首次展开时延迟加载。导入的检测通过 `catalogProvenance` 字段携带许可证和来源。 - **通过 AI Translator 导入。** 当目录规则需要翻译时(确定性模板无法处理的 Splunk SPL、无 Splunk 实现的 MITRE CAR、自动转换失败的 Sigma 规则),导入将通过 启用了自动运行的 AI Translator 进行,并预填原始源。 目录元数据(名称、战术、严重程度、来源、标签)在翻译为 已保存检测的过程中会被保留。导入按钮反映了具体意图: AI 路径为 **Translate and Import**(紫色), 直接保存为 **Import to Library**(琥珀色)。 ### 3. AI Translator — SPL / Sigma YAML / 自然语言 → KQL 跨越三种输入模式的实时翻译,以**扁平的顶级标签页**展示, 首先是**自然语言**(加载时默认),然后是 SPL,最后是 Sigma YAML。每次翻译首先运行确定性 SPL→KQL 模板层 (`src/lib/splTranslator.ts`);超出模板范围的情况将 落入 AI 路径。 - **Cribl AI 是默认提供商** — 托管式,无需设置,无需 API key。调用 `ai.cribl.cloud/api/chat`(Copilot 界面),并保留 `/api/kql` 作为 传输失败的后备。宽松的 `extractKql` 级联处理带标签的 代码块、纯代码块和纯 KQL。 - **BYOK 提供商** — Anthropic、OpenAI、兼容自定义 OpenAI。在 **Settings → LLM Providers** 下配置(在 v0.17.6 中移至此处)。 Translator 在输入下方显示一个**active-provider(当前提供商)标签**以及 *"change in Settings"* 链接。 - **纠正管道**在每次翻译后运行:dataset 子句 标准化、`by` 子句逗号标准化、`earliest()`/`latest()` → `min()`/`max()` 重写、Markdown 代码块剥离。每一项纠正 都显示为一个标签,使整个过程透明化。 - **澄清界面。** 当模型返回问题而非查询时, 页面会显示一条明显的青色非错误通知 ("No query returned"),并引用模型的问题 — 没有虚假结果,也没有红色 错误标签。 - **Compare with AI。** 当确定性路径成功时,可请求 第二意见。并排卡片带有结构化 KQL 对比 (`src/lib/kqlDiff.ts`):dataset、过滤器、聚合、by-clause、limit。 - **工作台选中翻译。** 突出显示 Hunt 查询文本区域中的任意文本 — 一个 "Translate selection (Nch)" 按钮(以及右键上下文菜单)将跳转 至 Translator,预填选中内容并启用自动运行。 - **Token 使用情况**显示在每个 BYOK 提供商的结果中 (`142↑/38↓`);Cribl AI 仅显示耗时。 - **翻译历史**基于 KV,FIFO 上限为 25,最新优先。可由 Audit Log 板块读取。 Cribl AI BYOK 端点已在 `config/proxies.yml` 中预先加入白名单: `ai.cribl.cloud`, `api.anthropic.com`, `api.openai.com`, `openrouter.ai`, `generativelanguage.googleapis.com`。 ### 4. Threat Feeds — 外部源订阅 管理外部威胁源订阅 (CSV、JSON、纯文本)。配置 同步计划、字段映射、TTL 和信任分数。成功同步后: - 源的指标将被**标准化**(小写 + 去除空格),上限为 50,000,并持久化存储在 `feed_indicators_` 下 — 驱动 Hunt 丰富的源命中查找 (`src/lib/feedIndex.ts`,通过 `id:lastSync` 签名进行模块级记忆化)。 - 源内容作为**查找表**写入 Cribl Search 的 Knowledge 视图,以便它们可以作为数据集进行查询。源 → Cribl Search 查找写入路径使用了 [`docs/lookup-update-patterns.md`](docs/lookup-update-patterns.md) 中记录的 内存中 create-or-update 模式。 在 v0.11.x → v0.15.x 版本迭代中得到了增强。 ### 5. Intel Sources — IOC 丰富提供商 跨三个类别配置丰富提供商的 API 凭据: - **声誉与恶意软件。** VirusTotal, AbuseIPDB, AlienVault OTX, Pulsedive, MalwareBazaar, URLhaus。 - **网络与基础设施。** Shodan, GreyNoise, IPinfo。 - **企业情报。** Recorded Future, Mandiant, CrowdStrike (configured- unwired — 凭据会持久化保存,但在提供商于后续版本中完全接入前 不会发起任何网络调用)。 **Add Source** (v0.15.5)。通过添加自定义源配置任何商业或自托管的情报 API。支持四种身份验证方式:**Bearer Token**、 **Custom Header**、**Query Parameter**、**Basic Auth**。自定义源 与内置源一起持久化,并在正确的类别标签页中渲染。 凭据作为 KV 条目存储,并在代理时由 `proxies.yml` 读取 — 它们永远不会出现在浏览器中。保存的值无法回读;UI 显示 `••••••••`,只有在输入新值时才会重新保存。 ### 6. Audit Log — 跨应用的事件流 始终可见的板块(在 v0.17.6 中作为外壳发布),将 现有的 `translationHistory` KV 重新构建为第一个已填充的事件流。每次 翻译都作为一个 **Translation** 事件显示,包含时间戳、模式、 生成端点 (`/api/chat` vs `/api/kql` 后备) 以及提供商/模型 — 支持搜索、展开、删除。 四个保留的类别过滤器 — **Detections**, **Feeds**, **Saved searches**, **Settings** — 渲染为禁用的占位符,带有 *"ships with the audit logger"* 工具提示。它们不是按钮;目前它们背后没有 事件存储、模式或生产者。完整的审计日志记录器(真正的 事件存储 + 各板块生产者 + JSON 导出)将在 **v0.26.0** 中于此外壳后正式落地。 ### 7. Settings - **Sections。** 打开/关闭 Detections、AI Translator、Threat Feeds 和 Intel Sources。Hunt、Audit Log 和 Settings 始终开启(标有 "Always On" 徽章)。 - **LLM Providers** *(v0.17.6)*。提供商单选(默认为 Cribl AI;BYOK Anthropic / OpenAI / 兼容自定义 OpenAI),BYOK 密钥 + 端点 输入,以及各提供商的测试按钮。Cribl AI 测试会探测 **both** `/api/chat` 和 `/api/kql` 并报告各端点的可达性 ("primary OK / fallback OK", "primary down, fallback OK" 等)。 - **Logging。** 各板块的日志记录偏好,将在 完整的审计日志记录器于 v0.26.0 发布时生效。Audit Log 板块外壳现已发布; 这将控制未来各生产者产生记录的内容。 - **Threat Feeds 默认设置。** 新源订阅的默认 TTL 和信任 分数。 - **About。** 版本、上游服务状态 (Cribl Search, KV store, pack proxy)、仓库链接以及功能摘要。 ## 构建和部署 通过 **Apps → Installed Apps → Add App → Import from File** 将 `build/cribl-intel-hub.tgz` 上传到您的 Cribl 工作区。包 ID 为 `cribl-intel-hub`。 安装后,请参阅 [`docs/VERIFICATION.md`](docs/VERIFICATION.md) 查看 全新安装验证矩阵。 ## 在 Cribl 内部的工作原理 | 关注点 | 处理方式 | |---|---| | **KV 持久化** | 读写均通过位于 `/api/v1/a/cribl-intel-hub/kvstore/` 的平台 KV 代理进行。自定义检测、已保存的 Hunts、源配置、源指标、翻译历史、设置和情报源凭据各自具有不同的键前缀 (`detections/`, `hunts/`, `feeds/`, `feed_indicators_*`, `translation_history`, `settings_*`, `intel_*`)。 | | **Auth** | 平台通过 `getCriblAuthHeaders()` 注入。浏览器中无凭据。在 iframe 内,该辅助函数返回 `{}`,由平台代理在服务端附加凭据。 | | **外部 API 调用** | 重写为 `/api/v1/a/cribl-intel-hub/proxy/...` 并由 `config/proxies.yml` 分发。API 密钥在代理时从 KV 中提取。BYOK Cribl AI 端点(`ai.cribl.cloud`, Anthropic, OpenAI, OpenRouter, Google AI)已预先加入白名单。 | | **Cribl Search 集成** | 通过 `src/lib/criblSearch.ts` 进行作业提交、已保存的搜索、笔记本以及查找表创建/更新。查找写入使用 `docs/lookup-update-patterns.md` 中记录的内存中 create-or-update 模式。 | | **路由** | 使用带有 `basename={window.CRIBL_BASE_PATH}` 的 `BrowserRouter`。平台通过 `CRIBL_NAV` postMessage 机制同步 iframe URL 与父级外壳。 | | **Iframe 沙箱** | `sessionStorage` 和 `localStorage` 在 pack iframe 内都会抛出 `SecurityError`;请勿引入这两者。任何持久化都需要使用 KV 存储。 | | **数据集感知** | Cribl AI 提供商发送活动的数据集列表 (`getCachedDatasetIds`,会话记忆化,上限为 100),以便模型可以在输出的 KQL 中建议相关的数据集。 | ## 项目结构 ``` src/ App.tsx Router + context provider setup main.tsx Entry point components/ Layout.tsx Fixed w-56 sidebar — Hunt / Detections / AI Translator / Threat Feeds / Intel Sources / Audit Log / Settings ConfirmDialog.tsx Shared confirm modal icons.tsx Shared section + sub-section icon module (v0.17.7) detections/ CatalogBrowser, DetectionCard, DetectionEditModal hunt/ QueryWorkbench, ResultsTable, SavedHuntsRail, SaveHuntModal, DatasetPicker, TimeRangePicker, PromoteFromHuntModal, SavedHuntDrawer intel/ AddSourceModal (v0.15.5) settings/ LLMProvidersSettings (v0.17.6 — Cribl AI + BYOK configuration relocated from AITranslatorPage) ThreatFeeds/ FeedLibrary, FeedCard, FeedList, AddFeedModal, FeedPreviewModal, LookupTableModal, feedService contexts/ DetectionContext.tsx Merged built-in + custom detection store HuntContext.tsx Workbench state, saved hunts, dataset list IntelSourcesContext.tsx KV-backed credential store (built-in + custom) FeatureToggleContext.tsx Section + logging toggles hooks/ useFeedSubscription.ts Feed sync lifecycle + state useHuntJob.ts Search job create / poll / cancel lib/ cribl.ts Platform helpers (getCriblApiUrl, isInsideCribl, getCriblSearchHomeUrl) criblPlatformClient.ts HTTP client for the platform API criblSearch.ts Search job / saved-search / notebook / lookup client kv.ts KV client (text/plain serialization) kql.ts buildPivotQuery (v0.17.9 pre-pipe filter on srcaddr/dstaddr), datasetClause, replaceDatasetClause kqlDiff.ts Structural deterministic-vs-AI side-by-side diff detections.ts Detection KV CRUD + generateDetectionId savedHunts.ts Hunt KV CRUD + generateHuntId detectInputType.ts IOC classifier (ip / domain / hash / url) + extractHost enrichAdapters.ts IOC enrichment adapter pipeline (v0.17.0): VT, AbuseIPDB, Shodan, GreyNoise, IPInfo, OTX, Pulsedive + custom source probes feedIndex.ts Persisted feed-indicator index (v0.17.0), module-memoized by id:lastSync featureToggles.ts Section + logging toggle persistence translator.ts AI provider config (Cribl AI + BYOK) and Test canaries (Cribl AI two-endpoint, Anthropic, OpenAI, custom). Live since v0.16.0. translationEngine.ts Live engine — runCriblAI (chat + kql fallback, lenient extractKql cascade, clarification surface), runAnthropic, runOpenAICompatible, correction pipeline translationHistory.ts KV-backed translation history (read by Audit Log) mitre.ts ENTERPRISE_TACTICS, TECHNIQUE_TO_TACTIC mapping (v0.18.0 will pin to ATT&CK v19 with tactic split) rateLimit.ts Per-domain request rate limiting catalog/ CatalogAdapter interface + sigma / splunk-escu / mitre-car adapters (platformFromPath grouping) splTranslator.ts SPL → KQL deterministic template layer (10 templates; needs_ai discriminator routes overflow to the AI path in translationEngine.ts) types.ts Shared domain types (Detection, EnrichmentResult, HuntResult/Run/IOCSnapshot, CatalogProvenance, CustomIntelSource, SourceStatus, …) data/ builtinDetections.ts 12 immutable bundled detections pages/ HuntPage.tsx Workbench + IOC enrichment + Saved Hunts rail DetectionLibraryPage.tsx MITRE tree + Recently edited + Browse Catalog AITranslatorPage.tsx Flat tabs (NL / SPL / Sigma) + Compare with AI AuditLogPage.tsx Translation event stream + reserved category filters (shell over translationHistory, v0.17.6) FeedManagerPage.tsx Feed Library + Lookup Table modal IntelProvidersPage.tsx Reputation / Network / Enterprise + Add Source (internal symbol; user-visible H1 is "Intel Sources") SettingsPage.tsx Sections / LLM Providers / Logging / Threat Feeds / About config/ proxies.yml External-domain proxy allowlist + key injection docs/ ROADMAP.md Forward-looking plan through 1.0 CHECKPOINTS.md Historical record + retrospectives RELEASE_NOTES.md Per-release user-facing notes RELEASE_VERIFICATION.md Cribl Search integration verification protocol VERIFICATION.md Fresh-install verification matrix lookup-update-patterns.md In-memory + disk-based lookup workflows translation-mappings.md SPL→KQL and Sigma→KQL operator mappings (traps + RE2) api/cribl-ai-endpoints.md Verified /api/kql + /api/chat contracts v0_17_9_pivot_probe_results.json buildPivotQuery probe (v0.17.9) v0_17_3_api_chat_probe_results.json Cribl AI /api/chat probe (v0.17.3) v0_14_0_ai_endpoint_probe_results.json Cribl AI initial connectivity probe v0_13_1_kv_delete_probe_results.json KV delete-semantics probe v0_14_3_delete_probe_results.json KV delete follow-up v0_11_1_probe_results.json Lookup-write path probe v0_11_5_b2_verify_results.json Lookup-write verification scripts/ package.mjs Cribl pack archive builder pkgutil.mjs Manifest whitelist helper for the pack build_catalog.py Sigma catalog build harness (offline) export-probe-results.mjs Probe-results exporter ``` ## 版本历史 按版本迭代分组。详细的版本发布说明请参阅 [`docs/RELEASE_NOTES.md`](docs/RELEASE_NOTES.md),架构记录 + 经验教训请参阅 [`docs/CHECKPOINTS.md`](docs/CHECKPOINTS.md)。 | 版本 | 迭代 | 发布内容 | |---|---|---| | **v0.19.2** | 检测管理演进 — git auth 接缝 | 全新的 **Settings → Detections** 标签页。精细化的 GitHub PAT 存储在 KV 中,并在调用时由应用代码注入(镜像 BYOK 提供商密钥模型);`src/lib/git.ts` 中的 `getGitAuthHeaders()` 是通往 GitHub-App 最终状态(在 UI 中已声明但被禁用)的单一替换点。针对 `GET /rate_limit` 的测试 Canary 能够区分无效 token / token-not-applied / authenticated。`proxies.yml` 中新增了一行白名单。目前尚无仓库连接 — 将在 v0.19.3 中实现。 | | **v0.19.1** | 检测管理演进 — 文档 + 表面修补 | 路线图重新围绕锁定的生命周期优先的 0.19.x 演进(git 读取 + 提交 → Saved Search 提升 → 调优 → 发布)进行规划;多仓库、第三方仓库接入、转换器编写、漂移核对以及覆盖范围/ATT&CK 表面被重新安排在主干之后。覆盖范围被重新定位为一种操作辅助工具,绝不会作为提升的门槛 — 这是一个安全工作台,而不是一个治理应用。Browse Catalogs 打开时所有源节点均折叠,以便配置的源以列表形式显示。 | | **v0.19.0** | 检测管理演进 — 托管对象基础 | 开启了 **0.19.x 检测管理演进**。`Detection` 成为具有生命周期意识的托管对象:`status` 枚举 (`draft \| testing \| curated \| production`,其中 `curated`/`production` 在编辑器中为派生且禁用状态),`upstreamContentHash` 分歧基准(基于规范查询的 FNV-1a,编辑时带有 `modifiedFromUpstream` 徽章),预留的 git + Saved-Search 接缝 (`gitPath`, `lastPublishedHash`, `savedSearchId`, `scheduleEnabled`)。`detections/_index` 摘要索引将列表加载转变为单次 GET,并以 `rebuildIndex()` 作为修复路径。Detections 页面上的三个标签页:**Detection Workbench**(默认)/ **My Library**(静止外壳)/ **Browse Catalogs**。尚未上线 — 该演进将在 v0.19.x 结束时部署。 | | **v0.18.1** | Hunt UX + Settings 清理 | Hunt 结果面板始终渲染(具有预运行的空状态,其中禁用的 Save Hunt / Promote to Detection / Export CSV / Open in Cribl Search 按钮会在成功运行后亮起),从而使 Run → 结果 → **Promote to Detection** 工作流在首次进入时即可见。移除了 Settings 的 "Sections" 标签页;左侧导航无条件渲染所有七个板块;Settings 默认在 LLM Providers 打开。`featureToggles` 和 `FeatureToggleContext` 予以保留 — 仅删除了切换 UI 界面。 | | **v0.18.0** | 目录与分类时效性 | ATT&CK 锁定在 **v19.0** (`ATTACK_VERSION` / `ATTACK_VERSION_RELEASED`,战术树上的应用内戳记)。Defense Evasion 拆分为 **Stealth (TA0005)** + **Defense Impairment (TA0112)**;`TECHNIQUE_TO_TACTIC` 从经过验证的 v19 交叉映射中重新映射(T1562 家族被撤销 → **T1685** / **T1685.001**,保留旧版 v18 ID 指向 Defense Impairment,以确保标记为 v18 的规则仍然能够解析)。`extractMitreTags` 优先选择通过 `tacticForTechnique()` 获取的由技术推导出的战术,仅在无法确定时回退到模糊的战术标签。Sigma 关联规则在导入时即被检测,并通过保留原始 `correlation` 区块进行如实标记,而不是降级为 `dataset="main"` 存根。 | | **v0.17.9** | Hunt pivot-query | `buildPivotQuery` 重写为基于 `srcaddr`/`dstaddr` 的管道前搜索时过滤器(单个 `=`,无 `\| project`,使用 `limit` 而非 `take`);域名/哈希使用下推的裸词。针对 1000 行数据的暂存探针耗时约 3.4s。旧的四字段 `\| where src/dest/src_ip/dest_ip` 既错误(VPC 流日志中不存在这些字段)又缓慢(扫描后执行,无下推)。 | | **v0.17.8.1** | Hunt UX 补丁 | 移除损坏的 Saved Hunts 侧边栏折叠功能;侧边栏始终保持展开渲染。 | | **v0.17.8** | Hunt UX 清理 | 命名出错的丰富源,展示真实的搜索作业错误文本 + 新的 `timeout` 分类,将结果限制在固定高度滚动条中的 100 行内,带有粘性表头 + 可达工具栏,在工作台中提供 Open-in-Search(预运行/翻译后),通过明确的 toast 进行剪贴板交接,Saved Hunts 增加名称/数据集搜索 + Newest/Name 排序,将 *last run · N events* 移至结果标题中。 | | **v0.17.7** | 表面美化 | 页面间标题图标对称,Hunt 控制台重新设计,AI Translator 体验提升(自然语言优先,代码编辑器输入,入→出提示,精美的对比卡片)。仅涉及标记/className/SVG;`src/lib/` 未受影响。 | | **v0.17.6** | IA 重构 | LLM 设置移至 Settings → LLM Providers,翻译历史移至新的始终可见的 Audit Log 板块(位于 `translationHistory` 之上的外壳;预留类别被禁用),AI Translator 标签页折叠为顶级的 SPL / Sigma YAML / 自然语言。 | | **v0.17.5** | splTranslator 热修复 | 将替换后的 `by` 子句标准化为逗号分隔(多字段 stats 检测正在发出无法解析的 KQL)。 | | **v0.17.4** | Cribl AI 提取热修复 | 宽松的 `extractKql` 级联(带标签代码块 → 纯代码块 → 纯文本),`CRIBL_AI_STRICT` 与解析器对齐,明确的澄清文案。 | | **v0.17.3** | Cribl AI /api/chat 迁移 | Cribl AI 迁移至 `/api/chat`(Copilot 界面);`/api/kql` 保留作为传输失败的后备;澄清路径;Settings 中的双端点 Canary;端点来源信息关联至历史记录条目中。 | | **v0.17.0–v0.17.2** | Hunt 丰富 | 适配器管道(GreyNoise、IPInfo、AlienVault OTX、Pulsedive 以及 VT/Shodan/AbuseIPDB),持久化的源指标索引,SavedHuntDrawer GreyNoise 列,URL 输入类型 + VT 端点路由,Cribl AI 数据集负载修复,确定性模板 8–10 (`rename`, `fields`, `sort`)。 | | **v0.16.0–v0.16.6** | AI 翻译引擎 | 实时 Cribl AI / Anthropic / OpenAI / 兼容自定义 OpenAI 调用,带有 `needs_ai` 溢出的确定性 SPL→KQL 模板层,翻译历史,确定性对比 AI 的结构差异,通过 AI Translator 统一目录导入并保留元数据,平台树状目录浏览器,MITRE CAR 伪代码通过自然语言路由。 | | **v0.15.0–v0.15.5** | 检测库 | 多源 Browse Catalog (SigmaHQ Core, Splunk ESCU, MITRE CAR),`CatalogAdapter` 模式,MITRE 树,基于 KV 的展开状态,最近编辑,Add Source (4 种身份验证样式),`buildPivotQuery` 准确性改进。 | | **v0.11.x–v0.14.x** | 源同步 + Search 查找 | 源 → Cribl Search 查找写入路径,内存中 create-or-update 工作流,KV 删除语义探针,AI 端点连通性探针,纵向 Hunt 运行历史。 | | **v0.10.x 及更早版本** | 基础架构 | Hunt 工作台,检测库 (12 个内置检测,自定义 CRUD),IOC 丰富,威胁源管理,Intel Sources 凭据存储。 | ## 下一步计划 v0.17.x 的 UX / IA 优化随着 v0.17.9 pivot-query 的简化而结束,并且 v0.18.0–v0.18.1 带来了目录时效性以及 Hunt / Settings 清理。当前的 重点是 **0.19.x 检测管理演进**:一条连续的 主线 — 托管对象 → git 读取 + 提交 → Saved Search 提升 → 调优 → 发布 — 在基于冻结的 v0.18.1 分支上向前构建,并且只有在 完整的 Draft→Production 生命周期功能从端到端完全实现后,才会部署到实时环境。 没有阶段划分,演进过程中也没有按章节进行实时发布。完整的规划请参阅 [`docs/ROADMAP.md`](docs/ROADMAP.md)。 ### v0.19.x — 检测管理演进(进行中) - **v0.19.0 — 托管对象基础(已发布)。** `Detection` 成为具有 生命周期意识的托管对象,具有 `status`、`upstreamContentHash` 分歧基准,以及预留的 git + Saved-Search 接缝;`detections/_index` 摘要索引将列表加载转变为单次 GET;Detections 页面上发布了三个 标签页 (Workbench / My Library / Browse Catalogs)。 - **v0.19.1 — 文档重新规划 + 表面修补(已发布)。** 路线图围绕 锁定的生命周期优先的演进重新规划;Browse Catalogs 打开时所有源 节点均折叠。 - **v0.19.2 — Settings → D 标签页 + git auth 接缝(已发布)。** 精细化的 PAT 存储在 KV 中并由应用代码注入,其中 `getGitAuthHeaders()` 作为通往 GitHub-App 最终状态(已声明但被禁用)的单一替换点。 所有 git I/O 的先决条件。 - **v0.19.3 — My Library git 层:托管格式读取 + 提交。** 连接一个 客户拥有的仓库。该仓库存储 **Intel Hub 托管检测 格式** — 序列化的 `Detection` 各自作为一个 YAML 文件(易于人工对比以 便于 PR 审查),携带规范的 Cribl KQL 查询以及保留的上游 元数据、分歧基准和预留的 Cribl 接缝。在 Workbench 检测上执行 **Commit** 操作 (允许从 Draft 或 Testing 状态执行)会将其写入 仓库并设置 `status: 'curated'`,将其从 Workbench 视图移至 My Library。首次提交会在仓库为空时搭建仓库结构;应用是 git *客户端*,永远不是主机。保留许可证/署名。 - **v0.19.4 — Search 提升:Curated → Production。** Slice 0 是一个探针, 以确认 Saved Search API 契约。在 My Library 中对 Curated 检测执行 "Promote to Production" 操作会 创建 Saved Search 并设置 `status: 'production'`;应用管理整个生命周期(计划、启用/禁用、 删除)。状态是当前派生的,而不是不可逆的 — 删除 Saved Search 会在下次加载时 恢复为 Curated。 - **v0.19.5 — 端到端调优 + 生产发布。** 走通完整的 Draft→Testing→Curated→Production 循环,调优接缝,并将该演进部署到 实时环境 — 这是自 v0.18.1 以来的首次正式发布。 ### 演进之后 - **v0.20.0 — 多仓库 + 第三方仓库接入。** 将 v0.19.3 中的单仓库循环推广到无处不在的 "Add Repo" — My Library 上的多个 客户拥有的托管格式仓库(MSSP / 多业务单元场景), 以及 Browse Catalogs 上任意第三方 *source* 仓库(Elastic, Panther, 非 Sigma 格式)作为只读导入源。第三方接入是 延迟加载的,镜像目录浏览 — 连接时无需 批量翻译。 - **v0.21.0 — 确定性转换器编写。** Settings 将 "LLM Providers" 重命名为 **"AI Translator"**,带有一个确定性翻译面板, 显示哪些内容被确定性转换了,哪些被发送给了 AI。编写部分 使确定性层变为数据驱动(声明式映射规范, RE2 安全,作为 KV 对象存储),以便用户可以派生内置的 SPL/Sigma 规范以支持新的仓库格式 — 能够抵消重复同步 AI 成本。 - **v0.22.0 — 上游漂移核对。** 当一个已导入的规则 在上游发生变化 *并且* 本地副本也发生了分歧时,提供一个核对 视图(上游已更改 / 您的已更改 / 两者皆已更改),并带有差异对比和明确的 选择。 - **v0.23.0 — 检测 → 数据集覆盖盲区(操作辅助,非治理)。** 一个读侧的工作台辅助工具,回答 "我是否有运行此检测的遥测数据?" — 在每个检测映射的数据集上进行 `listDatasets()` 连接。这只是一个辅助工具,绝不会 作为提升的门槛。 - **v0.24.0 — ATT&CK 覆盖图 + Navigator 层导出。** 操作 覆盖视图,按技术显示检测计数,外加 Navigator 层 JSON 导出 — 纯粹的 `JSON.stringify` + blob 下载,无需新的依赖项。 - **v0.25.0 — 审计日志。** v0.17.6 Audit Log 外壳背后的真实 事件存储 + 各板块生产者。 - **v0.26.0 — 加固 + 1.0 就绪。** 面向用户的审计,错误路径审查, 待上游 null-body 204 垫片修复后移除 `deleteTolerant` 超时变通方法, 以及面向演示的细节打磨。 - **v1.0.0 — 正式发布。** 检测管理系统 — 浏览、 翻译、策展、在 git 中进行版本控制、在 Cribl Search 中投入运营,具备 覆盖可见性 — 功能完备,并能够毫不逊色地向 CISO 进行演示。 ## 许可证与署名 Cribl Intel Hub © Albert Caballero。通过 Browse Catalog 分发的检测内容受其 源许可证管辖: - **SigmaHQ Core** 规则受 [检测规则许可证 1.1 (DRL-1.1)](https://github.com/SigmaHQ/Detection-Rule-License) 管辖。 - **Splunk ESCU** 和 **MITRE CAR** 受 [Apache 许可证 2.0](https://www.apache.org/licenses/LICENSE-2.0) 管辖。 导入的检测带有 `catalogProvenance.licenseId`,因此署名在 整个生命周期中都得到保留。
标签:Cribl, IOC富化, IP 地址批量处理, KQL, 威胁情报, 安全运营, 开发者工具, 扫描框架, 网络信息收集, 自动化攻击