sltcnb/CherryPick
GitHub: sltcnb/CherryPick
跨操作系统数字取证采集代理,从实时主机或磁盘映像中收集数字证据并打包为经过签名的内容寻址捆绑包,支持 YARA 扫描与远程交付。
Stars: 0 | Forks: 0
# triager
一个全面、跨操作系统的取证采集代理。它可以遍历主机(实时)、已挂载的卷、pytsk3 磁盘映像(E01/dd/vhd)或原始设备(BitLocker),并将工件收集到一个**经过签名、内容寻址的捆绑包**中——这与 Citadel 的 Talon 生成的契约相同——同时保留 Triager 的优势(pytsk3 映像、YARA、多线程)以及每个收集器一个文件的模块化设计。
## 演示
| bundle.sha256`,符合内置的 `contracts/bundle_manifest.schema.json`;清单在封装前会进行 schema 验证。`--output-format {zip,bundle,both}`。
- **能力目录** — `capabilities.yaml` 是可收集内容的唯一事实来源(可渲染为 UI)。它的选项 `value` 是 `--collect` 键,在启动时根据收集器注册表进行验证。
- **自动发现注册表** — 收集器按类自动注册;添加一个收集器只需一个新文件(不再需要三处派发表)。Talon 类别键(`evtx`、`network_cfg`、...)可作为别名使用。
- **统一的源抽象** (`sources/`) — 一个收集器主体可针对实时 FS、已挂载的卷、pytsk3 映像或原始设备+BitLocker(disloader→cryptsetup,ntfs-3g)运行。
- **死盒** — `--path `,`--disk --bitlocker-key `,以及现有的 `--image-path`。
- **IOC 扫描** — `--fetch "mimikatz*" --fetch "re:\.(ps1|hta)$" --fetch-root C:\Users`。
- **远程交付** — gRPC/mTLS 代理,AES-256-GCM 分块可恢复上传,S3/MinIO presigned + Citadel case API(`--api-url/--case-id/--api-token`,`--presigned-url`)。均为可选/延迟导入。
- **已完成的收集器** — `hashing`(MD5/SHA256 清单),`file_listing`(递归 MACB),`yara`(规则扫描 → 匹配 JSONL)已实现。
- **测试** — `pytest tests/`(分块器、安全上传、注册表一致性、源+捆绑包 schema、存根收集器)。
## 功能
- **两种操作模式**:
- 实时系统模式:从正在运行的 Windows 机器上收集
- 死盒模式:从已挂载的 dd 映像中收集
- **三个收集级别**:
- `small`:快速分类,收集价值最高的工件
- `complete`:全面收集所有常见工件
- `exhaustive`:具有高级功能的完整取证收集
- **50 多个工件类别**:
- 注册表配置单元和用户配置文件
- 事件日志(Security、System、Application、PowerShell、Sysmon 等)
- 文件系统工件($MFT、$UsnJrnl、ADS)
- 执行工件(Prefetch、Superfetch、SRUM、Amcache、Shimcache、BAM)
- 持久化机制(Autoruns、计划任务、服务、WMI)
- 网络配置和历史记录
- USB 设备历史记录
- 浏览器工件(Chrome、Firefox、Edge、IE)
- 电子邮件数据(Outlook、Thunderbird)
- 消息应用程序(Teams、Slack、Discord、Signal、WhatsApp、Telegram)
- 云存储(OneDrive、Google Drive、Dropbox)
- 远程访问工具(AnyDesk、TeamViewer、RDP、SSH)
- 凭据和身份验证数据
- 杀毒软件/EDR 日志
- 以及更多...
- **确定性输出结构**:每个文件都放置在可预测的路径中,以便进行自动化分析
- **并行收集**:多线程收集以实现更快的分类
- **全面的清单**:JSON 和 CSV 清单跟踪所有收集的文件及其哈希值
- **ZIP 输出**:自动创建受密码保护的 ZIP 档案(支持 ZIP64 以处理 >4GB 的文件)
## 安装
```
# Clone 或下载 tool
cd triager
# 安装 dependencies
pip install -r requirements.txt
```
### 可选依赖项
为了获得完整功能,请安装可选依赖项:
```
pip install yara-python regipy pytsk3 pyewf pycryptodome pyzipper pywin32
```
- `yara-python`:YARA 规则扫描
- `regipy`:离线注册表解析
- `pytsk3`:原始 NTFS 访问
- `pyewf`:E01/EWF 映像支持
- `pycryptodome`:加密操作
- `pyzipper`:受密码保护的 ZIP
- `pywin32`:Windows API 访问(仅限 Windows)
## 用法
### 基本示例
```
# Live triage - small 级别(快速)
python triager.py --mode live --level small
# Live triage - complete 级别
python triager.py --mode live --level complete
# Dead-box 针对已挂载的 image
python triager.py --mode image --image-path E:\ --level complete
# 收集特定类别
python triager.py --mode live --level complete --categories registry,eventlogs,browser_all
# 使用密码保护的 ZIP
python triager.py --mode live --level complete --zip-password "S3cur3P@ss!"
# 带 YARA scanning 的 Exhaustive 模式
python triager.py --mode image --image-path E:\ --level exhaustive --yara-rules ./rules/
```
### 命令行选项
```
usage: triager.py [-h] (--mode {live,image} | --image-path IMAGE_PATH)
[--level {small,complete,exhaustive}]
[--categories CATEGORIES]
[--include-users INCLUDE_USERS]
[--output-dir OUTPUT_DIR]
[--zip-password ZIP_PASSWORD]
[--keep-unzipped] [--no-zip]
[--threads THREADS]
[--yara-rules YARA_RULES]
[--collect-pagefile] [--collect-hiberfil]
[--collect-swapfile] [--config CONFIG]
[--quiet] [--max-file-size MAX_FILE_SIZE]
Triager - Comprehensive Forensic Triage Tool
options:
-h, --help show this help message and exit
--mode {live,image} Collection mode: live system or mounted image
--image-path IMAGE_PATH
Path to mounted dd image (implies --mode image)
--level {small,complete,exhaustive}
Collection level (default: complete)
--categories CATEGORIES
Comma-separated list of categories to collect
--include-users INCLUDE_USERS
Comma-separated list of usernames to collect
--output-dir OUTPUT_DIR
Output directory (default: ./output)
--zip-password ZIP_PASSWORD
Password for ZIP encryption
--keep-unzipped Keep uncompressed output directory
--no-zip Skip ZIP creation
--threads THREADS Number of parallel threads (default: 4)
--yara-rules YARA_RULES
Path to YARA rules file or directory
--collect-pagefile Collect pagefile.sys
--collect-hiberfil Collect hiberfil.sys
--collect-swapfile Collect swapfile.sys
--config CONFIG Path to configuration file (default: config.yaml)
--quiet Suppress stdout output
--max-file-size MAX_FILE_SIZE
Maximum file size in MB (0 = no limit)
```
### 配置文件
创建一个 `config.yaml` 文件以设置默认值:
```
mode: live
level: complete
categories: []
output_dir: ./output
threads: 4
zip_password: null
keep_unzipped: false
hash_collected: true
max_file_size_mb: 0
```
CLI 参数会覆盖配置文件中的值。
## 输出结构
```
Triager_HOSTNAME_YYYYMMDD_HHMMSS/
├── metadata/
│ ├── collection_manifest.json
│ ├── collection_log.txt
│ ├── system_info.json
│ ├── config_used.yaml
│ └── errors.log
├── registry/
│ ├── SYSTEM
│ ├── SOFTWARE
│ ├── SAM
│ ├── SECURITY
│ └── users/
│ └── /
│ ├── NTUSER.DAT
│ └── UsrClass.dat
├── eventlogs/
│ ├── Security.evtx
│ ├── System.evtx
│ └── ...
├── filesystem/
│ ├── $MFT
│ ├── $LogFile
│ └── ...
├── execution/
│ ├── prefetch/
│ ├── superfetch/
│ └── ...
└── ... (50+ categories)
```
## 收集级别
### Small
快速分类(约 5-15 分钟):
- 注册表配置单元
- 关键事件日志
- Prefetch
- Amcache
- Shimcache/BAM
- SRUM
- PowerShell 历史记录
- 基本浏览器历史记录
- 计划任务
- 服务
- Windows Defender 日志
### Complete
全面收集(约 30-90 分钟):
- Small 中的所有内容,加上:
- 所有事件日志
- 完整的 $MFT
- 所有用户配置单元
- 完整的浏览器配置文件
- 电子邮件工件
- 消息应用程序
- 云存储
- 远程访问工具
- SSH/FTP 配置
- 凭据存储
- 杀毒软件/EDR 日志
- IIS 日志
- 启动工件
- 以及更多...
### Exhaustive
完整取证收集(数小时):
- Complete 中的所有内容,加上:
- 完整的 pagefile/hiberfil/swapfile
- 卷影副本提取
- YARA 扫描
- 熵分析
- 完整的卷文件列表
- 所有可执行文件的哈希
- 已删除 MFT 条目雕刻
## 类别快捷方式
在 `--categories` 中使用这些快捷方式:
- `browser_all`:Chrome + Firefox + Edge + IE
- `email_all`:Outlook + Thunderbird + 其他
- `messaging_all`:Teams + Slack + Discord + Signal + WhatsApp + Telegram
- `cloud_all`:OneDrive + Google Drive + Dropbox + 其他
## 系统要求
- Python 3.8+
- Windows 7/8/10/11 或 Server 2012-2022
- 实时收集需要管理员/SYSTEM 权限
- 足够的磁盘空间以存放收集的工件
## 注意事项
### 实时收集
- 需要管理员或 SYSTEM 权限
- 某些文件可能被锁定(pagefile、注册表配置单元)
- 在可用时使用卷影副本
### 映像收集
- 使用 FTK Imager、Arsenal Image Mounter 或类似工具挂载 dd 映像
- 建议以只读方式访问
- 所有文件都应该可以访问
### 确定性命名
每个收集的文件都遵循确定性的命名约定,以便下游分析工具可以仅通过路径定位文件。
## 许可证
MIT 许可证
## 贡献
欢迎贡献!请先阅读 CONTRIBUTING.md。
## 免责声明
此工具仅供授权的取证分析使用。在从任何系统收集数据之前,请确保您拥有合法的权限。

标签:Python, Python工具, YARA, 云资产可视化, 库, 应急响应, 数字取证, 无后门, 磁盘镜像, 自动化脚本, 身份验证滥用, 逆向工具