lidless-labs/intel-workbench

GitHub: lidless-labs/intel-workbench

浏览器原生、离线优先的网络威胁情报分析工作台,将 ACH 竞争性假设分析、MITRE ATT&CK 标记和认知偏差检查等结构化分析技术整合为零后端单页应用。

Stars: 1 | Forks: 0

intel-workbench banner

Intel Workbench

用于网络威胁情报的结构化分析技术。

在线演示

CI status React 18 TypeScript 5 Vite 7 MIT License

Intel Workbench 是一款交互式的竞争性假设分析(ACH)工具,将严谨的情报方法论引入浏览器。针对假设对证据进行评分,将发现映射到 MITRE ATT&CK,识别认知偏差,并导出结构化评估。零后端,完全离线能力,以及八种独特的视觉主题。 ## 🚀 快速开始 ### 前置条件 - **Node.js** ≥ 18 - **npm** ≥ 9 ### 安装与运行 ``` git clone https://github.com/lidless-labs/intel-workbench.git cd intel-workbench npm install npm run dev ``` 在浏览器中打开 [http://localhost:5173](http://localhost:5173)。 ### 生产环境构建 ``` npm run build npm run preview ``` ### 运行测试 ``` npm test # vitest, single run npm run test:watch npm run typecheck ``` CI 会在每次推送时运行类型检查 + 测试 + 生产环境构建 (`.github/workflows/ci.yml`)。 ## ✨ 功能 - **ACH 矩阵** :交互式的证据与假设网格,具备一致性评级(C/I/N/NA)、加权评分和自动首选假设识别 - **MITRE ATT&CK 标记** :使用 Enterprise ATT&CK 矩阵中的技术(691 项技术,14 项战术)对证据和假设进行标记。支持按 ID、名称或战术搜索。本地内置,使工作台保持离线优先 - **认知偏差清单** :Heuer & Pherson 分类法,涵盖认知、分析和社交三大类别中的 12 种偏差;记录每种偏差的缓解说明 - **评分可视化** :实时归一化评分条,显示假设支持水平,并带有颜色编码的置信度指示器 - **ICD 203 估计性语言** :根据 ODNI 分析标准,选择带有规范 1-5%/5-20%/.../95-99% 范围的似然带(从“几乎不可能”到“几乎肯定”);首选假设会在矩阵和 Markdown 导出中显示概率带 - **证据加权** :可信度和相关性评级(高/中/低),计入加权不一致性分数 - **导出与导入** :完整的 JSON 导出/导入用于备份和共享;Markdown 导出用于报告生成(包含 ATT&CK 技术 ID) - **8 种视觉主题** :Langley、Terminal、Analyst's Desk、Stratcom、Cyber Noir、Casefile Atlas、Ops Floor 和 Blacksite Minimal - **应用内引导教程** :首次访问时由 driver.js 提供支持的演练,突出展示每个主要功能 - **内置文档** :涵盖 ACH 方法论、评分、偏差意识和键盘快捷键的综合帮助页面 - **离线优先** :所有数据持久化保存在 localStorage 中;无需任何服务器即可工作 - **键盘可访问** :在整个矩阵网格中进行完整的键盘导航 ## 🏗️ 架构 Intel Workbench 是一个**单页 React 应用**,没有后端依赖: ``` Browser └─ React 18 (SPA, React Router v6) ├─ Zustand Store ← persist middleware → localStorage ├─ ThemeContext (per-variant color tokens) ├─ Pages: Home / ACH / Bias / Export / Docs └─ 8 Variant Layouts (lazy-loaded) ``` - **状态管理:** Zustand 使用 `persist` 中间件将数据写入 `localStorage` 的 `intel-workbench-projects` 键下 - **路由:** React Router v6 具有嵌套的变体路由(`/v1/*`, `/v2/*`, …, `/v8/*`, `/default/*`),并在 `/` 处提供变体选择器 - **主题:** `ThemeContext` 为每个变体提供颜色令牌;组件通过 `useTheme()` 读取它们 - **代码分割:** 变体布局使用 `React.lazy()` 加载,以保持初始包的小体积 ## 🛠️ 技术栈 | 层级 | 技术 | 用途 | |-------|-----------|---------| | **框架** | React 18 | 组件 UI | | **语言** | TypeScript 5 | 类型安全 | | **样式** | Tailwind CSS 3 | 实用优先的 CSS | | **状态** | Zustand 4 | 全局状态 + 持久化 | | **路由** | React Router 6 | 客户端导航 | | **图标** | Lucide React | 一致的图标集 | | **打包工具** | Vite 7 | 开发服务器 + 构建 | | **引导** | driver.js 1.3 (CDN) | 引导式入门指南 | ## 📁 项目结构 ``` intel-workbench/ ├── index.html # Entry point + CDN links ├── package.json ├── vite.config.ts ├── tailwind.config.js ├── tsconfig.json ├── public/ │ └── vite.svg └── src/ ├── main.tsx # React root ├── App.tsx # Router + variant routes ├── index.css # Tailwind layers + component classes ├── components/ │ ├── ach/ │ │ ├── ACHMatrix.tsx # Interactive hypothesis matrix │ │ └── ACHScoreBar.tsx │ ├── bias/ │ │ └── BiasChecklist.tsx │ ├── layout/ │ │ └── AppShell.tsx # Default sidebar layout │ └── GuidedTour.tsx # driver.js onboarding tour ├── contexts/ │ └── ThemeContext.tsx # Theme color provider ├── data/ │ ├── biasData.ts # Cognitive bias catalog │ └── sampleProject.ts # Sandworm sample data ├── pages/ │ ├── HomePage.tsx # Project list & creation │ ├── ACHPage.tsx # Matrix workspace │ ├── BiasPage.tsx # Bias review │ ├── ExportPage.tsx # JSON/Markdown export │ ├── DocsPage.tsx # In-app help & documentation │ └── VariantPicker.tsx # Theme selector landing ├── store/ │ └── useProjectStore.ts # Zustand store (persisted) ├── types/ │ └── index.ts # TypeScript interfaces ├── utils/ │ ├── achScoring.ts # Scoring algorithms │ ├── id.ts # ID generator │ └── useBasePath.ts # Variant-aware navigation └── variants/ ├── v1/Layout.tsx # Langley (intel agency) ├── v2/Layout.tsx # Terminal (hacker) ├── v3/Layout.tsx # Analyst's Desk (clean) ├── v4/Layout.tsx # Stratcom (military) ├── v5/Layout.tsx # Cyber Noir (cyberpunk) ├── v6/Layout.tsx # Casefile Atlas (evidence desk) ├── v7/Layout.tsx # Ops Floor (live cell) └── v8/Layout.tsx # Blacksite Minimal (brutalist) ``` ## 🎨 8 种变体 每种变体都将相同的核心页面包裹在独特的视觉标识中: | 变体 | 主题 | 风格 | |---------|-------|-----------| | **v1 : Langley** | 情报机构 | 深海军蓝,金色点缀,衬线字体,机密印章 | | **v2 : Terminal** | 黑客 / OSINT | 纯黑,矩阵绿,扫描线叠加,等宽字体 | | **v3 : Analyst's Desk** | 干净专业 | 浅色背景,蓝色点缀,内容优先的布局 | | **v4 : Stratcom** | 军事指挥 | 橄榄绿,琥珀色点缀,网格图案,军用时间 | | **v5 : Cyber Noir** | 赛博朋克 | 霓虹青 + 品红,发光效果,玻璃拟态 | | **v6 : Casefile Atlas** | 证据台 | 暖纸色,红线证据板,重衬线字体档案 | | **v7 : Ops Floor** | 实时单元 | 密集的指挥中心布局,青色信号线,琥珀色状态块 | | **v8 : Blacksite Minimal** | 粗野主义 | 严肃的单色,酸橙色强调,边缘硬朗的控件 |

Langley variant Terminal variant

Analyst's Desk variant Stratcom variant

Cyber Noir variant

所有变体共享相同的 Zustand 存储和页面组件。切换主题是即时的:只需导航回 `/` 处的变体选择器即可。 ## 🎯 MITRE ATT&CK 集成 使用 **MITRE ATT&CK Enterprise** 矩阵中的技术对证据和假设进行标记。按技术 ID(`T1059`)、名称(`Phishing`)搜索,或按战术(初始访问、执行、横向移动等)过滤。标记会持久化保存在 JSON 导出中,并在 Markdown 报告中呈现为可点击的引用。 ![ATT&CK 技术标记器](https://static.pigsec.cn/wp-content/uploads/repos/cas/f0/f0f0cf903ab4338422a83fadba21a4a496d287613827f4ee758ea6de060bf029.png) 完整的 ATT&CK Enterprise 数据集(691 项技术,14 项战术)本地内置在 `src/data/attack-enterprise.json` 中,并采用延迟加载,以保持初始包的小体积。要在新的 ATT&CK 版本发布后进行刷新: ``` curl -sL https://raw.githubusercontent.com/mitre/cti/master/enterprise-attack/enterprise-attack.json \ | jq -f scripts/slim-attack.jq > src/data/attack-enterprise.json ``` ## 📊 ACH 方法论 **竞争性假设分析**(ACH)是由中央情报局(CIA)的 Richards J. Heuer Jr. 开发的一种结构化分析技术。ACH 不再寻找证据来*证实*首选假设,而是迫使分析师: 1. **列举所有合理的假设** 2. **列出所有重要的证据和论点** 3. **将每个证据项与每个假设进行评级**,分为一致(C)、不一致(I)、中立(N)或不适用(NA) 4. **对不一致性进行评分**:加权不一致性*最少*的假设是最受支持的 5. **识别并缓解可能扭曲分析的认知偏差** 关键的洞察在于:**证伪而非证实。** 一个强烈的不一致性可以排除一个假设,而仅凭一致的证据并不能证实一个假设。 ### 评分公式 ``` Score = Σ (weight × rating_value) where: rating_value: I = +2, N = 0, C = −1 weight: credibility_multiplier × relevance_multiplier multipliers: High = 1.5, Medium = 1.0, Low = 0.5 ``` 较低(更偏负数)的分数表示更强的支持度。分数最低的假设将被标记为**首选**。 ## 📄 许可证 MIT:有关详情,请参阅 [LICENSE](LICENSE)。
标签:React, Syscalls, Vite, 分析工具, 威胁情报, 开发者工具, 竞争性假设分析(ACH), 网络安全, 自动化攻击, 隐私保护