lidless-labs/intel-workbench
GitHub: lidless-labs/intel-workbench
浏览器原生、离线优先的网络威胁情报分析工作台,将 ACH 竞争性假设分析、MITRE ATT&CK 标记和认知偏差检查等结构化分析技术整合为零后端单页应用。
Stars: 1 | Forks: 0
Intel Workbench
用于网络威胁情报的结构化分析技术。
在线演示
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** | 粗野主义 | 严肃的单色,酸橙色强调,边缘硬朗的控件 |
所有变体共享相同的 Zustand 存储和页面组件。切换主题是即时的:只需导航回 `/` 处的变体选择器即可。
## 🎯 MITRE ATT&CK 集成
使用 **MITRE ATT&CK Enterprise** 矩阵中的技术对证据和假设进行标记。按技术 ID(`T1059`)、名称(`Phishing`)搜索,或按战术(初始访问、执行、横向移动等)过滤。标记会持久化保存在 JSON 导出中,并在 Markdown 报告中呈现为可点击的引用。

完整的 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), 网络安全, 自动化攻击, 隐私保护