SecurityRonin/tl

GitHub: SecurityRonin/tl

一个基于 Rust 构建的快速取证分流时间线生成器,能够从 Velociraptor 采集的 25 种以上 Windows 取证文件中自动提取、关联并生成统一时间线,同时内置 Sigma 检测引擎进行威胁发现。

Stars: 1 | Forks: 0

# tl - 快速取证分流时间线 [![Rust](https://img.shields.io/badge/rust-stable-orange.svg)](https://www.rust-lang.org/) [![许可证: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![测试](https://img.shields.io/badge/tests-1743-green.svg)](https://github.com/SecurityRonin/tl) **作者:** Albert Hui ([@h4x0r](https://github.com/h4x0r)) 来自 [@SecurityRonin](https://github.com/SecurityRonin) 一个快速取证分流时间线生成器,能够提取 Velociraptor 收集的数据,并从 25 种以上的 Windows 取证文件类型中生成统一的、按时间顺序排序的时间线。它使用 Rust 构建,具备交互式 TUI、多种导出格式以及内置的 Sigma 检测引擎。 ## 工作原理 将 `tl` 指向一个 Velociraptor 收集文件(ZIP 或解压后的目录)。它会自动发现取证文件、并行解析、关联不同来源的条目,并呈现一个统一的时间线: ``` $ tl collection.zip Collection: WORKSTATION1 (2025-01-15T10:30:00Z) Source tool: Velociraptor Artifacts found: 847 total files $MFT: found $UsnJrnl: found Event logs: 142, Prefetch: 38, LNK: 12, Registry hives: 8 Parsing $MFT... 124,531 timeline entries from $MFT Parsing $UsnJrnl:$J... 45,892 USN records parsed MFT path resolver: 124,531 entries Parsing execution evidence... Parsing event logs... [*] Evaluating 2847 rules against 89,234 events... [!] 14 Sigma detections: [High] Mimikatz Usage | EID:4688 2025-01-14T22:15:03Z Security [Critical] Pass-the-Hash Activity | EID:4624 2025-01-14T22:15:08Z Security ``` ## 支持的取证文件 ### NTFS 文件系统 | 取证文件 | 解析器 | 提供的信息 | |----------|--------|-----------------| | `$MFT` | `mft_parser` | 文件创建/修改/访问/MFT修改时间戳、完整路径、文件大小、已删除文件 | | `$UsnJrnl:$J` | `usn_parser` | 更新日志(USN):文件创建、删除、重命名、关闭事件,并带有 MFT 路径解析 | | `$LogFile` | `logfile_parser` | 用于反取证的事务日志缺失检测 | ### 执行证据 | 取证文件 | 解析器 | 提供的信息 | |----------|--------|-----------------| | Prefetch (`.pf`) | `prefetch_parser` | 带有时间戳的程序执行记录、运行次数、加载的 DLL | | Amcache | `amcache_parser` | 应用程序执行和安装历史,包含 SHA1 哈希 | | ShimCache | `shimcache_parser` | 应用程序兼容性缓存:来自 SYSTEM hive 的执行证据 | | BAM/DAM | `bam_parser` | 后台活动 moderator:带有用户 SID 的近期执行记录 | | Services | `services_parser` | 来自 SYSTEM 注册表的 Windows 服务安装/配置 | | Scheduled Tasks | `schtask_parser` | 来自 XML 任务文件的任务创建和配置 | ### 用户活动 | 取证文件 | 解析器 | 提供的信息 | |----------|--------|-----------------| | LNK files | `lnk_parser` | 快捷方式目标、时间戳、卷信息、TrackerDataBlock | | Jump Lists | `jumplist_parser` | 自动/自定义目标:每个应用程序的最近文件 | | UserAssist | `userassist_parser` | 来自 NTUSER.DAT 的程序执行次数和最后运行时间(ROT13 解码) | | ShellBags | `shellbag_parser` | 来自 NTUSER.DAT 和 UsrClass.dat 的文件夹访问历史 | | Recycle Bin | `recycle_bin_parser` | 带有原始路径的已删除文件元数据(`$I` 文件) | | MRU Lists | `mru_parser` | 来自注册表的 RecentDocs、OpenSavePidlMRU、LastVisitedPidlMRU | | User Registry | `user_registry_parser` | 来自 NTUSER.DAT 的 WordWheelQuery、TypedPaths、TypedURLs | | PowerShell History | `posh_history_parser` | 每个用户的 `ConsoleHost_history.txt` 命令历史 | | Browser History | `browser_parser` | Chrome、Edge、Firefox 的 URL 历史记录及访问时间戳 (SQLite) | | Activities Cache | `activities_parser` | Windows 时间线(`ActivitiesCache.db`):应用使用情况、文档打开记录 | | RDP Bitmap Cache | `rdp_cache_parser` | 来自位图缓存切片的出站 RDP 会话证据 | ### 系统/网络 | 取证文件 | 解析器 | 提供的信息 | |----------|--------|-----------------| | Event Logs (`.evtx`) | `evtx_parser` | 所有 Windows 事件日志:Security、System、PowerShell、Sysmon 等 | | SRUM | `srum_parser` | 系统资源使用监视器:应用资源使用情况、网络连接、发送/接收的字节数 | | Autoruns | `autorun_parser` | 来自 Run/RunOnce 注册表键的持久化机制 | | WMI Persistence | `wmi_parser` | WMI 事件订阅 (MOF/OBJECTS.DATA) | | Network History | `network_parser` | NetworkList 注册表:已连接的网络名称、日期、类型 | ## Sigma 检测引擎 `tl` 包含一个内置的 Sigma 规则引擎,该引擎会根据解析后的事件日志条目评估规则。 ### 自动下载 SigmaHQ 社区规则 ``` tl collection.zip --sigma ``` 在首次运行时,这会浅克隆 [SigmaHQ](https://github.com/SigmaHQ/sigma) 仓库到 `~/.cache/tl/sigma-rules/`(或适用于当前平台的缓存目录)。后续运行将重用缓存,并在拉取更新前设置 24 小时的防抖间隔。 ### 自定义规则 ``` tl collection.zip --sigma-rules /path/to/rules/ ``` ### 两者结合 ``` tl collection.zip --sigma --sigma-rules /path/to/extra-rules/ ``` ### 引擎支持的功能 - **字段匹配**:精确匹配、`contains`、`startswith`、`endswith`、`re`(regex) - **修饰符**:`all`(所有值必须匹配),默认不区分大小写 - **条件**:`selection`、`selection and not filter`、`sel1 or sel2`、嵌套的 `AND`/`OR`/`NOT` - **级别**:informational、low、medium、high、critical - **递归规则加载**:遍历目录以查找 `.yml`/`.yaml` 文件 ## 交互式 TUI 默认模式会启动一个全屏终端界面: | 按键 | 操作 | |-----|--------| | `j`/`k` 或方向键 | 向上/向下导航 | | `J`/`K` | 跳转 10 个条目 | | `Ctrl-d`/`Ctrl-u` | 向下/向上半页 | | `Ctrl-f`/`Ctrl-b` | 向下/向上整页 | | `g`/`G` | 跳转到顶部/底部 | | `/` | 增量搜索 | | `n`/`N` | 下一个/上一个匹配项 | | `Enter` | 切换详情面板 | | `q` | 退出 | ## 导出格式 ``` # CSV (用于 Excel、Splunk、Timeline Explorer) tl collection.zip --export-csv timeline.csv # JSON (用于程序化分析、jq) tl collection.zip --export-json timeline.json # Bodyfile (mactime 格式,用于 Plaso/Sleuthkit 互操作) tl collection.zip --export-bodyfile timeline.body ``` ## 安装说明 ``` git clone https://github.com/h4x0r/tl cd tl cargo build --release # 二进制文件位于 ./target/release/tl ``` ### 前置条件 - Rust 1.70+ - `git`(仅当使用 `--sigma` 自动下载 SigmaHQ 规则时需要) ## 架构 ``` graph TB subgraph Input A[Velociraptor Collection
ZIP / Directory] end subgraph Collection Layer B[VelociraptorProvider] C[ArtifactManifest] B --> C end subgraph Parsers ["25+ Artifact Parsers"] D1[MFT / UsnJrnl / LogFile] D2[Prefetch / Amcache / ShimCache / BAM] D3[EVTX / SRUM / Services / SchedTasks] D4[LNK / JumpList / ShellBags / UserAssist] D5[Browser / PowerShell / RDP / WMI] end subgraph Core E[TimelineStore] F[Sigma Detection Engine] end subgraph Output G1[Interactive TUI] G2[CSV / JSON / Bodyfile] G3[Sigma Detections → stderr] end A --> B C --> D1 & D2 & D3 & D4 & D5 D1 & D2 & D3 & D4 & D5 --> E D3 -->|EvtxEntry| F E --> G1 & G2 F --> G3 ``` ## 事件类型 统一的时间线会将条目标准化为以下事件类型: `CREATE` `MOD` `ACC` `DEL` `REN` `MFT` `EXEC` `REG` `SVC_INSTALL` `SCHTASK` `LOGON` `LOGOFF` `PROC_CREATE` `NET_CONN` `BITS` `RDP` ## 测试 ``` cargo test # 1743 tests across all modules cargo test --lib # 1688 unit tests ``` ## 许可证 MIT
标签:Modbus, Rust, TUI, 可视化界面, 库, 应急响应, 数字取证, 网络流量审计, 自动化脚本, 通知系统