morimori-dev/taotie

GitHub: morimori-dev/taotie

Taotie 是一款完全离线的 Windows 数字取证与应急响应桌面工作台,将多种取证痕迹自动提取、检测并关联为统一时间线。

Stars: 1 | Forks: 0

Taotie — Digital Forensics & Incident Response

本地优先的 DFIR 时间线与检测工作台,用于 Windows 取证痕迹分析 —— 完全离线,在您的本地机器上运行。基于 Tauri v2 + Svelte 5 + Rust 构建。

License: MIT OR Apache-2.0 release build

Taotie 接收一份应急响应收集数据,将其提取到本地 DuckDB 数据湖中, 并通过 sigma + 启发式检测、跨痕迹关联以及分析图表,将其转化为一条统一的时间线。 所有操作均在您的机器上运行 —— 案例数据绝不会离开主机。

Taotie overview dashboard

## 为什么选择 Taotie - **本地优先且完全离线。** 作为一个独立的桌面应用。证据会被解析到本地数据湖中; 不会上传任何数据。非常适合气隙隔离或高度敏感的操作环境。 - **将 19 种痕迹类型汇聚于一条时间线。** EVTX、`$MFT`、USN journal、Prefetch、 Amcache、Registry、SRUM、Defender 等,经过合并与时间归一化处理。 - **同时支持读取原始痕迹 *和* 工具导出数据。** 支持原生二进制文件(`$MFT`、`$J`、 `.evtx`、`.pf`、`Amcache.hve`、registry hives 等),以及来自 KAPE、MFTECmd、PECmd、hayabusa 等工具的 CSV/JSON 导出文件 —— 通过文件名、扩展名或内容进行自动分类。 - **多引擎检测,拒绝单次扫描。** sigma 规则 + 原生启发式 规则库 + IOC/YARA,并结合**跨痕迹关联链**,让孤立的事件串联成一个完整的攻击故事(`下载 → 执行 → 持久化`)。 - **可操作的检测结果。** 每一项检测都包含 ATT&CK 技术/战术 映射、日语详细解释、受影响的主机/用户/进程实体、评分 依据,以及建议的下一步操作。 - **在大型案件中依然流畅。** 列式 DuckDB/Parquet 数据湖可确保数十万至数百万条 事件保持敏捷响应。 - **架构设计上不内置 AI。** 默认无 AI 介入 —— 所有检测都是 确定且可复现的,确保在报告中经得起推敲。当您确实 需要调用模型时,Taotie 提供了一个只读的 [MCP server](#ask-your-own-ai-mcp), 您可以将 Claude(或任何 MCP 客户端)指向特定案件,同时确保证据 始终保留在您的主机上。 ## 工具对比 - **hayabusa** —— Taotie 可直接接入其输出结果,并补充了其他痕迹 类型、关联分析以及调查 UI。两者互补,而非竞争关系。 - **Timesketch** —— 基于服务器且支持多人协作;而 Taotie 是一个纯粹的本地 桌面应用。无需服务器,不上传任何数据。 - **EZ Tools + Timeline Explorer** —— Taotie 能够读取 EZ Tools 生成的 CSV,并增加了 内置检测、关联链,以及从图表穿透至事件的功能。 ## 截图 **可疑事件**

Suspicious events triage

**关联链**

Cross-artifact correlation chains

**事件浏览器**

Event explorer

**Defender**

Defender view

## 功能 - **提取** 应急响应收集数据(文件夹或文件)至 Parquet/DuckDB 数据湖, 支持自动识别痕迹类型。 - **时间线** 呈现按严重性堆叠的区间,支持点击钻取查看具体事件。 - **事件浏览器** —— 分页、可排序的网格视图,配备搜索 DSL、单事件详情, 并支持服务端全量过滤集的 CSV/JSONL 导出。 - **IOC 匹配** —— 全局扫描数据湖,查找 IP / URL / 哈希 / 路径 / 名称 指示器。 - **线索候选** —— 自动提取候选答案,涵盖每次 调查必问的核心问题(初始访问、执行、持久化、数据外泄等)。 - **应急响应工作流** —— 提供分类队列、书签、保存的搜索结果,以及针对单项结果的 审查状态。 - 此外还配有 **hex viewer**、**Defender 视图** 和 **风险视图**(按严重性划分 ATT&CK 技术)。 检测、关联和图表在下文有专门的章节进行说明。 ## 搜索 DSL 事件浏览器和全文搜索共享同一种查询语言。查询词 使用 AND 进行组合;包含空格的值请加上引号。 ``` finding:true severity:high channel:Security eid:4624 after:2023-05-01T00:00 path:"C:\Users" ``` | 过滤器 | 含义 | | --- | --- | | `after:` / `before:` | 时间窗口,UTC(也支持 `since:`/`until:`) | | `host:` `user:` `process:` `path:` | 实体与文件路径过滤器 | | `ip:` `url:` `hash:` | 指示器 | | `eid:` `channel:` `level:` `action:` `type:` | 事件日志字段、归一化动作、痕迹类型 | | `severity:` / `finding:true` | 检测严重性 / 仅显示有检测结果的事件 | | 自由文本 | 在所有消息和字段中进行全文匹配 | ## 询问您专属的 AI (MCP) Taotie 没有内置 AI —— 检测是确定性的,且每项发现都是 可解释的。但它内置了 `taotie-mcp`,这是一个**只读的 [Model Context Protocol](https://modelcontextprotocol.io) 服务器**,让您可以自带 模型,并用自然语言盘问案件。它通过 stdio 进行 JSON-RPC 通信,以只读模式打开案件(证据完整性不受影响),并公开 六个工具: `case_summary` · `search_events` (完整支持搜索 DSL) · `get_event_detail` · `list_findings` · `get_timeline` · `get_correlation_chains` 由于它运行在本地 stdio 且为只读模式,**案件数据绝对不会离开您的主机** —— 模型客户端运行在同一台机器上,只能获取它所请求查询的内容。 使用 Claude Code 注册: ``` claude mcp add taotie -- /path/to/taotie-mcp --case-root /path/to/your/case ``` 或使用 Claude Desktop / 任何 MCP 客户端 (`claude_desktop_config.json`): ``` { "mcpServers": { "taotie": { "command": "/path/to/taotie-mcp", "args": ["--case-root", "/path/to/your/case"] } } } ``` 然后您可以这样提问:*“有哪些关键发现?”*、*“搜索 2023-05-01 之后经过编码的 PowerShell”*,或者 *“梳理涉及 setuphost.exe 的关联链”*。`taotie-mcp` 二进制文件已附加在每个 [release](https://github.com/morimori-dev/taotie/releases) 中(并且打包在 Windows 便携版 zip 文件内)。 ## UI 语言 语言和字体大小可在 **Settings** 选项卡中切换。日语 (默认)和英语已完全适配;中文 / हिन्दी / Français / Deutsch 目前 覆盖了导航和设置界面,其他地方暂时回退到日语。内置的 检测说明目前暂为日语。 ## 支持的痕迹与输入格式 Taotie 会根据名称、扩展名或内容对每个文件进行分类,因此它同时支持接收 原始 Windows 痕迹和常见应急响应工具导出的 CSV/JSON 文件。 | 痕迹类型 | 典型源文件 / 日志 | | --- | --- | | Windows Event Logs (`evtx`) | `Security.evtx`, `System.evtx`, `Application.evtx`, Sysmon, PowerShell, TaskScheduler, TerminalServices, … (`.evtx`),以及 EVTX CSV/JSON 和 hayabusa 输出 | | NTFS MFT (`mft`) | `$MFT` (`.mft`), MFTECmd CSV | | USN Journal (`usn_jrnl`) | `$Extend\$UsnJrnl:$J`, USN CSV | | Prefetch (`prefetch`) | `*.pf` (`C:\Windows\Prefetch`), PECmd CSV | | Amcache (`amcache`) | `Amcache.hve`, Amcache CSV | | ShimCache (`shimcache`) | AppCompatCache (SYSTEM hive) / CSV | | Registry hives (`registry_hive`) | `SYSTEM`, `SOFTWARE`, `SAM`, `SECURITY`, `NTUSER.DAT`, `UsrClass.dat` | | SRUM (`srum`) | `SRUDB.dat` | | Microsoft Defender (`defender`) | MPLog, Operational log, detection history | | Shortcuts (`lnk`) | `*.lnk` | | Jump Lists (`jump_list`) | Automatic/Custom Destinations | | Browser history (`browser`) | Chrome/Edge/Firefox history (`places.sqlite`, `History`), CSV | | Web cache (`web_cache`) | `WebCacheV01.dat` | | OneDrive (`onedrive_log`) | OneDrive sync logs (`*.odl`) | | Scheduled tasks (`scheduled_task`) | Task definitions | | Windows Search (`windows_search_log`) | `Windows.edb` | | ESE databases (`ese`) | generic `.edb` / ESE stores | | Generic (`csv` / `jsonl` / `text_log`) | `.csv`, `.jsonl`, `.json`, `.txt`, `.log` 兜底解析 | ## 检测引擎 - **sigma** —— 24 条内置规则(LSASS 转储、事件日志清除、编码的 PowerShell、LOLBins、certutil/bitsadmin 下载、Defender 篡改等), 每条均附带描述、参考信息、误报说明及 ATT&CK 战术。 - **taotie-core** —— 原生启发式规则库:时间戳篡改(`$SI`/`$FN` 不匹配)、LOLBin/RAT/C2 执行盘点、哈希传递、密码 喷洒、暴力破解 → 成功、伪造 Kerberos 票据、特权账户 创建、服务安装、批量可执行文件删除、执行后删除、 非工作时间登录、RDP 源、更新程序伪装、用户可写路径 执行等。 - **ioc / yara** —— 对数据湖进行指示器与特征签名匹配。 **引入您专属的 sigma 规则。** 将路径指向 `TAOTIE_SIGMA_RULES` 目录, 其中所有的 `.yml`/`.yaml` 文件将递归加载并覆盖在 内置规则集之上。 支持的修饰符包括 `contains`/`startswith`/`endswith`/`all`/`re`/`windash`/`cased`; 无效规则将被跳过,不会导致系统崩溃。 ``` TAOTIE_SIGMA_RULES=/path/to/your/rules ./taotie-app ``` ## 关联分析 关联分析将孤立的事件转化为攻击故事。关联链基于 共享实体(主机 / 用户 / 进程 / 文件 / ip / hash)和时间窗口生成: `下载 → 执行`、`文件创建 → 执行`、`计划任务 / 服务 / 注册表持久化 → 执行`、`执行 → 删除`、`Defender 威胁 → 执行`,以及特定时间窗口内的多阶段入侵链。 ## 证据完整性 专为可能最终需要写入报告 —— 甚至对簿公堂的工作而设计: - **证据账本** —— 记录每个提取文件的尺寸和 SHA-256 哈希; 原始字节被原样保留。 - **保管链清单** —— 可导出的证据保管链清单,支持重新校验。 - **签名报告包** —— 使用每个工作区的独立密钥进行哈希和签名, 内置验证机制。 - **审批与审计日志** —— 交付物的审批状态,以及案例操作的 完整审计跟踪。 威胁模型详见 [docs/security.md](docs/security.md)。 ## 分析图表 分类漏斗、`$SI`/`$FN` 时间戳篡改散点图(偏离对角线的点即为 篡改嫌疑点)、ATT&CK 战术 × 小时热力图、进程树、USN 文件操作背离条形图,以及信标间隔直方图 —— 所有图表均支持 向下钻取至事件列表。 ## 架构 采用包含七个 crate 的 Rust 工作区(schema / storage / parsers / api / jobs / search / [mcp](crates/taotie-mcp))。底层由原始对象存储 + Parquet 读模型构成,上方由 **DuckDB** 查询层封装,通过 **SQLite** 作业队列驱动数据提取。前端为 Tauri v2 外壳搭配 Svelte 5 UI;sigma 规则在编译时嵌入。 MCP server 复用与桌面应用相同的查询层。 ## 下载与运行 针对每个标签版本的预构建程序包均可在 GitHub [Releases](https://github.com/morimori-dev/taotie/releases) 页面获取。无需 构建环境。 **Windows** - 便携版(免安装):下载 `taotie__x64-portable.zip`, 解压后双击 `taotie.exe`。需要 WebView2 运行环境,该环境 已预装在 Windows 11 及大多数 Windows 10 系统中 (若缺失可在此[下载](https://developer.microsoft.com/microsoft-edge/webview2/))。 - 安装版:下载 `taotie__x64-setup.exe`,运行后即可从 开始菜单启动 Taotie。安装程序会自动配置 WebView2。 **Linux** 1. 下载 `taotie__amd64.AppImage`,将其放置在任意位置并运行: chmod +x taotie__amd64.AppImage ./taotie__amd64.AppImage AppImage 是完全独立的(内置 WebKitGTK)—— 无需安装。 2. Debian/Ubuntu 备选方案:`sudo apt install ./taotie__amd64.deb` 发布版本由 [release workflow](.github/workflows/release.yml) 构建, 由推送 `v*` 标签触发。 **故障排除** - *AppImage 无法启动* —— type-2 AppImages 需要 FUSE 2 (在 Debian/Ubuntu 上执行 `sudo apt install libfuse2`),或者在不使用 FUSE 的情况下运行: `./taotie__amd64.AppImage --appimage-extract-and-run` - *Linux 上窗口空白* —— 某些 GPU/驱动组合会触发 WebKitGTK 渲染 问题;请尝试 `WEBKIT_DISABLE_DMABUF_RENDERER=1 ./taotie__amd64.AppImage` - *便携版 exe 在 Windows 10 上提示 WebView2 错误* —— 请安装一次 [WebView2 runtime](https://developer.microsoft.com/microsoft-edge/webview2/) ,或直接使用安装版程序,它会自动引导配置。 ## 从源码构建 **前置条件** - Rust (stable) 和 Node.js 18+。 - Linux: Tauri v2 系统依赖 (WebKitGTK 4.1 等) —— 详见 . **构建可分发的安装包** ``` cd ui npm install npm run taotie:build ``` 这将在 `src-tauri/target/release/bundle/` 下生成安装程序或打包文件 (Linux:AppImage + `.deb`;Windows:如果在 Windows 上构建则为 `.exe`)。 ## 工作流程 1. 创建/打开一个案例,并将其指向应急响应收集数据。 2. 提取数据 —— 痕迹被解析到数据湖中并构建读模型。 3. 审查 **overview** 和 **triage funnel**,然后查看 **suspicious events**。 4. 顺藤摸瓜查看 **correlation** 关联链,并从任意图表穿透至事件列表。 5. 导出过滤后的事件(CSV/JSONL)以备撰写报告。 ## 开发 ``` cd ui npm install npm run taotie:dev # Tauri dev (webview + Vite dev server at 127.0.0.1:5174) ``` 检查与测试: ``` cargo fmt --all cargo test --workspace cd ui && npm run check # svelte-check ``` ## 更多文档 - [docs/architecture.md](docs/architecture.md) —— crate 布局与数据流 - [docs/schema.md](docs/schema.md) —— 归一化事件 schema - [docs/security.md](docs/security.md) —— 证据处理与威胁模型 - [docs/adapter_contract.md](docs/adapter_contract.md) —— 添加解析器/适配器 - [docs/roadmap.md](docs/roadmap.md) —— 项目未来规划 ## 许可证 根据以下任一协议授权: - Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) 或 ) - MIT license ([LICENSE-MIT](LICENSE-MIT) 或 ) 由您自行选择。 ### 贡献 除非您明确声明,否则根据 Apache-2.0 协议的规定,您有意提交并包含在 本作品中的任何贡献,均应按上述方式 进行双重许可,无需附加任何额外的条款或条件。 ## 免责声明 Taotie 是一款防御性的 DFIR 工具,旨在用于经授权的应急响应以及对您被许可检查的系统进行取证分析。
标签:Rust, SBOM分析, Svelte, Tauri, 可视化界面, 库, 应急响应, 数字取证, 网络流量审计, 自动化脚本, 通知系统