SecurityRonin/tl
GitHub: SecurityRonin/tl
一个基于 Rust 构建的快速取证分流时间线生成器,能够从 Velociraptor 采集的 25 种以上 Windows 取证文件中自动提取、关联并生成统一时间线,同时内置 Sigma 检测引擎进行威胁发现。
Stars: 1 | Forks: 0
# tl - 快速取证分流时间线
[](https://www.rust-lang.org/)
[](https://opensource.org/licenses/MIT)
[](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
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, 可视化界面, 库, 应急响应, 数字取证, 网络流量审计, 自动化脚本, 通知系统