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安全, 内核驱动漏洞利用, 域名收集, 大语言模型, 威胁情报, 开发者工具, 数据泄露, 本地存储, 测试用例, 知识管理, 离线应用, 端点安全, 网络安全, 自动化攻击, 自动化攻击, 蓝队分析, 补丁管理, 请求拦截, 调查笔记, 隐私保护