psteal 的定位
psteal 把 plaso 的采集与输出两步封装成一条命令:直接对镜像或日志目录运行,一次得到 CSV 时间线,省去先生成 .plaso 存储再导出的步骤。它适合中小镜像、或者在正式深挖之前先看一遍概览。代价是不保留中间存储——后续想换过滤条件必须重新解析原镜像,大容量镜像上这一步的代价很高,因此只建议用于粗看与快速验证。
基本信息
| 适用平台 | Linux/macOS 分析机(plaso 套件,需已安装 Python 环境) |
|---|---|
| 核心参数 | --source 指定镜像或日志目录、-o 输出格式、-w 输出文件 |
| 时间基准 | 与 plaso 一致按所选时区渲染,需显式指定 UTC |
| 产物 | CSV 时间线文件与采集统计信息 |
| 资源占用 | 解析期间对 CPU 与磁盘空间要求较高,大镜像需预留空间 |
| 替代方案 | log2timeline.py 加 psort.py 两步走,保留可反复查询的存储 |
典型使用场景
- 接到镜像后先跑一遍概览,判断有没有值得深挖的时间段
- 中小镜像的快速时间线交付,避免多步操作
- 验证镜像本身可解析:能出事件说明文件系统结构完好
- 临时抽查某个应用日志目录的事件分布
- 给不熟悉 plaso 两步流程的同事一个上手入口
- 在现场时间紧张时先产出可用结果,后续再补精细分析
快速时间线
快速时间线
# 一条命令得到 CSV:源为镜像,输出格式为 l2tcsv
psteal.py --source /evidence/disk.E01 -o l2tcsv -w quick.csv
# 也可以直接指向日志目录,适合只看应用日志的场景
psteal.py --source /var/log -o l2tcsv -w logs.csv
# 确认产物可用:表头、行数与时间范围
head -3 quick.csv
wc -l quick.csv
# 需要反复换条件时,改用两步走以保留可查询的存储
log2timeline.py --timezone UTC --storage-file case.plaso /evidence/disk.E01
psort.py -o l2tcsv case.plaso -w timeline.csv命令要素逐项
| 参数 | 作用 | 使用要点 |
|---|---|---|
| --source | 指定镜像或日志目录 | 目录会递归解析,范围过大时耗时显著增加 |
| -o | 输出格式 | l2tcsv 便于表格处理,dynamic 便于数据库查询 |
| -w | 输出到文件 | 不写文件时结果直接输出到终端,长列表容易刷屏 |
| 时间设置 | 事件时间的渲染基准 | 显式指定 UTC,避免默认值带来整体偏移 |
| (无 storage 参数) | 不保留中间存储 | 后续换条件需重新解析,大镜像上代价高 |
一次性输出不保留中间存储。把导出的 CSV 当作最终结果之后,若要按新的时间窗或字段重新筛选,只能回到原镜像再跑一遍;大容量镜像上这一步可能耗费数小时。
不同 plaso 版本对 psteal 的支持状态不一样:较早版本曾不包含该工具,需要改用 log2timeline 与 psort 两步。执行前先确认本机环境里是否存在该命令及其参数。