peterhanily/threatcaddy
GitHub: peterhanily/threatcaddy
一款本地优先的威胁调查工作台,支持 IOC 管理、时间线构建、实体图谱可视化及 AI 辅助分析,数据可完全存储在浏览器端。
Stars: 0 | Forks: 0
# ThreatCaddy
威胁调查工作区。笔记、IOC、时间线和图谱。无需服务器。无跟踪。
**在线访问 [threatcaddy.com](https://threatcaddy.com)**
立即试用:[threatcaddy.com/?demo=1](https://threatcaddy.com/?demo=1) 会加载一个示例调查,并附带引导式演练。
## 功能
### 笔记与编辑器
- **Markdown 笔记** — 使用 Markdown 编写,支持实时预览、分屏编辑器和 20 多种语言的语法高亮
- **ThreatCaddyLink** — 输入 `[[笔记标题]]` 即可创建笔记间的可点击链接,支持自动补全、不区分大小写匹配和断链提示
- **斜杠命令** — 输入 `/` 打开类似 Notion 风格的命令菜单,包含格式化、区块、威胁情报模板(IOC 表格、MITRE 参考引用、TLP 标头)和快速插入(日期、标注、维基链接)
- **笔记注释** — 为任何笔记添加带时间戳的评论和注释
- **Defang/Refang 切换** — 一键以去除危害形式(如 `hxxps://`、`example[.]com`)预览网络 IOC
- **快速收集** — 通过按类别分组(常规、威胁情报、调查)的 10 个模板,快速收集文章、书签、代码片段、引文和会议记录
### 任务管理
- **任务管理器** — 支持优先级、截止日期、状态,提供列表和看板视图
- **任务评论** — 任务上的线程化评论
### AI / LLM 聊天
- **多提供商** — 支持 Anthropic (Claude)、OpenAI (GPT-4o)、Google Gemini、Mistral 和本地模型(Ollama / LM Studio / vLLM)
- **聊天线程** — 持久化对话线程,自动生成标题
- **工具调用** — 代理循环 (Agentic loop),提供搜索笔记、读取笔记、列出任务/IOC/时间线事件、创建实体、提取 IOC 和获取 URL 的工具
- **斜杠命令** — `/fetch`、`/search`、`/note`、`/task`、`/iocs`、`/summary`、/`timeline` 用于快速操作
- **自动标题** — 线程根据第一条用户消息自动命名;首次交互后,后台 LLM 调用会优化标题
### 威胁情报与分析
- **IOC 提取** — 自动从笔记内容中提取 IPv4、IPv6、域名、URL、电子邮件、哈希 (MD5/SHA-1/SHA-256)、CVE、MITRE ATT&CK ID、YARA 规则、Sigma 规则和文件路径
- **独立 IOC** — 独立创建和管理 IOC,包含类型、置信度、分析师备注、归因和分类
- **类型约束子类型** — 按 IOC 类型限定 IOC 子类型(例如 IP 的 "C2 Server",域名的 "Phishing Domain"),提供内置默认值和自定义覆盖
- **多对多关系** — 使用类型化、有向的关系链接 IOC(例如域名 "解析至" IP,哈希 "利用" CVE),包含源/目标类型约束,以及用于检测规则的 `detected-by` 和 `alerts-on`
- **实体图谱视图** — 将 IOC、笔记、任务和时间线事件可视化为交互式图谱,支持力导向、圆形和广度优先布局,节点/边过滤和详情面板
- **图谱拖拽链接** — 按住 Alt 键并在图谱节点间拖拽,直接在画布上创建 IOC 关系或实体链接
- **IOC 统计仪表板** — 所有 IOC 的聚合视图:类型/置信度分布、主要行为者、时间线、频率表和来源细分
- **归因与分类** — 为 IOC 标记威胁行为者、分类级别和状态
- **TLP/PAP 分类** — 为实体和调查分配交通灯协议 和允许操作协议 级别,并提供屏幕共享安全的过滤功能
- **IOC 导出** — 将 IOC 下载为 JSON、CSV(分组或扁平化)或 STIX 2.1 包;推送至 OCI 对象存储
### 时间线与白板
- **事件时间线** — 将事件映射到 MITRE ATT&CK 战术,包含时间戳、置信度、关联 IOC 和多时间线支持
- **时间线地图** — 在交互式 Leaflet 地图上查看具有地理位置的时间线事件,支持聚合标记
- **智能数据导入** — 粘贴或拖放来自 SIEM 和 EDR 工具的 CSV、TSV、JSON 或 NDJSON;自动检测格式,自动映射列(Splunk、CrowdStrike、Elastic),批量创建时间线事件和 IOC
- **白板** — 集成 Excalidraw 的自由绘图功能
- **活动日志** — 跟踪笔记、任务、时间线和 IOC 中的所有操作
### 组织管理
- **调查** — 彩色编码的调查,具有活动/已关闭/已归档生命周期、范围化实体计数和批量归档/删除操作
- **调查关闭** — 关闭调查时标记解决方案:已解决、误报、已升级、重复或无结论
- **实体交叉链接** — 使用可搜索的链接器将笔记、任务和时间线事件相互链接
- **标签** — 彩色编码标签,支持重命名和删除
- **全文搜索** — 即时搜索所有笔记、任务、时间线事件和白板,支持保存搜索和调查范围过滤
- **统一回收站与归档** — 在一个视图中管理所有实体类型的已删除和已归档项目,回收站项目 30 天自动删除
### 安全与备份
- **静态加密** — 基于密码的 AES-256-GCM 加密 IndexedDB 数据,使用 PBKDF2 密钥派生(60 万次迭代),支持可配置的会话时长和恢复短语
- **云端备份** — 多提供商云备份,通过预认证 URL 支持 OCI Object Storage、AWS S3、Azure Blob Storage 或 Google Cloud Storage
- **导出与导入** — 完整的 JSON 备份/恢复,包含所有实体类型;支持按调查导出
### 团队服务器
- **Docker 部署** — `docker compose up` 即可启动团队服务器 (Hono + Node.js) 和 PostgreSQL
- **认证** — 基于 Ed25519 JWT 的认证,支持用户角色(管理员、分析师、查看者)
- **实时同步** — 推送/拉取同步,带有版本跟踪和冲突检测
- **WebSocket 在线状态** — 查看谁在线以及他们正在查看的视图
- **团队动态** — 社交信息流,包含帖子、反应、 threaded 回复、提及和通知
- **调查共享** — 邀请团队成员,按调查进行基于角色的访问(所有者、编辑者、查看者)
- **审计跟踪** — 服务器端活动日志,用于合规性
- **服务器端 LLM** — 通过团队服务器代理 LLM 请求,共享 API 密钥
- **文件存储** — 在调查中上传和共享文件
### 平台
- **快速链接仪表板** — 可配置的快捷方式磁贴,用于威胁情报工具(VirusTotal、Shodan、AbuseIPDB、Forensicate.ai、OpenSlaw.ai 等),作为默认主页视图
- **可共享演示链接** — 访问 `?demo=1` 自动加载示例调查,弹出欢迎模态框,提供探索、导览或全新开始选项
- **深色与浅色模式** — 默认深色模式,可随时切换
- **导览教程** — 突出关键功能的交互式入门导览
- **浏览器导航** — 后退/前进按钮在视图间导航;导航状态在页面刷新后保持不变
- **独立 HTML** — 下载可在 `file://` 下离线工作的单文件版本
- **浏览器扩展** — Chrome 和 Firefox 扩展,可将网页内容直接剪辑到 ThreatCaddy,支持智能剪辑(选区或整页)和 LLM API 代理
- **键盘快捷键** — Ctrl+N(新建笔记)、Ctrl+K(搜索)、Ctrl+S(备份)、Ctrl+E(切换预览)等
- **OCI 同步** — 通过 Oracle Cloud 对象存储预认证请求的可选同步
## 技术栈
### 客户端
- React 19 + TypeScript 5
- Vite 7
- Tailwind CSS 4
- Dexie.js (IndexedDB)
- Cytoscape.js (实体图谱可视化)
- Excalidraw (白板)
- Leaflet + react-leaflet (时间线地图)
- Papa Parse (CSV/TSV 解析)
- marked + highlight.js + DOMPurify
- nanoid (ID 生成)
- pako (压缩)
- lucide-react
### 服务器 (团队服务器)
- Hono (HTTP + WebSocket 框架)
- drizzle-orm + PostgreSQL
- argon2 (密码哈希)
- jose (JWT 签名/验证)
- Docker + Docker Compose
## 开发
```
pnpm install
pnpm dev # Dev server at localhost:5173
pnpm test:run # Run test suite
pnpm test:coverage # Run tests with coverage report
pnpm lint # Run ESLint
pnpm tsc -b # Type check
```
## 构建
```
pnpm build # Production build → dist/
pnpm build:single # Standalone HTML → dist-single/index.html
```
## 浏览器扩展
`extension/` 目录包含用于 Chrome 和 Firefox 的浏览器扩展。有关构建和安装说明,请参阅 [extension/README.md](extension/README.md)。
## 部署
### 客户端 (GitHub Pages)
`dist/` 输出已配置为使用自定义域名 (`threatcaddy.com`) 的 GitHub Pages。推送到 `main` 分支,并通过指向 `dist/` 目录的 GitHub Pages 设置或 GitHub Actions 工作流进行部署。
### 团队服务器 (Docker)
```
cd server
cp .env.example .env # Configure JWT keys and optional LLM API keys
docker compose up -d # Starts Hono server + PostgreSQL
```
在 `.env` 中设置 `JWT_PRIVATE_KEY` 和 `JWT_PUBLIC_KEY` (Ed25519)。可选择添加 `ANTHROPIC_API_KEY`、`OPENAI_API_KEY` 或 `GEMINI_API_KEY` 以启用服务器端 LLM 代理。
## 隐私
所有数据均保存在本地。无账户、无跟踪、无 Cookie。API 密钥存储在您的浏览器中,仅发送给您选择的 LLM 提供商。请查看完整的 [隐私政策](https://threatcaddy.com/privacy.html)。
## 许可证
MIT
标签:AI助手, Cloudflare, Defang, DLL 劫持, IndexedDB, IOC分析, IP 地址批量处理, Markdown编辑器, MITRE ATT&CK, ThreatCaddy, TLP标记, Web安全, 内核驱动漏洞利用, 域名收集, 大语言模型, 威胁情报, 开发者工具, 数据泄露, 本地存储, 测试用例, 知识管理, 离线应用, 端点安全, 网络安全, 自动化攻击, 自动化攻击, 蓝队分析, 补丁管理, 请求拦截, 调查笔记, 隐私保护