关于 building-super-timelines-with-plaso
面向数字取证和事件响应分析人员,指导使用 Plaso 从取证映像或文件系统提取事件,构建统一时间线并在 Timesketch 中分析。内容包括筛选导出、时间标准化以及识别时间戳篡改和日志清除迹象。
主要功能
- 01从取证源提取事件至 .plaso 文件
- 02检查存储文件及处理信息
- 03筛选并导出 CSV 或 JSONL 时间线
- 04使用 psteal.py 一步提取并导出
- 05将时间线导入 Timesketch 协作分析
- 06检查时间戳篡改和日志清除迹象
适用场景
- 01重建受入侵主机的事件顺序
- 02关联多类取证来源中的活动
- 03调查时间戳篡改或日志清除
- 04在 Timesketch 中协作分诊时间线
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill building-super-timelines-with-plaso安装后在 Claude Code 中输入/building-super-timelines-with-plaso确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEreferences/api-reference.mdstandards.mdscripts/agent.py详细介绍
使用 Plaso 构建超级时间线
仅限授权用途: 仅根据获准分析的证据构建时间线。请使用取证镜像/副本,并维护证据保管链。
概述
Plaso(Plaso Langar Að Safna Öllu)是 log2timeline 背后的开源引擎,也是构建取证超级时间线的行业标准——它将数百种工件类型(文件系统 MACB 时间、注册表、EVTX、浏览器历史记录、预取文件、LNK、$UsnJrnl、syslog 等)融合为一个经过规范化的单一时间顺序视图。Plaso 有三个核心 CLI 工具:
- log2timeline.py — 使用其庞大的解析器/插件集,从来源(磁盘镜像、挂载点、目录或设备)提取事件,并写入
.plaso存储文件。 - pinfo.py — 报告
.plaso文件的内容和处理元数据。 - psort.py — 对存储文件进行后处理、筛选、去重、时区转换,并导出为输出格式(CSV、JSON-line、Elasticsearch、Timesketch 等)。
- psteal.py — 便捷封装工具,可一步完成提取和导出。
生成的时间线非常庞大,因此分析人员会在 Timesketch 中进行分诊——这是一个协作式、基于 Web 的时间线分析平台,可导入 .plaso 文件(或 CSV/JSONL),并支持筛选、标记、加星、保存搜索和自动化分析器。
适用场景
- 在事件响应期间重建受入侵主机上的完整事件顺序。
- 在一条规范化时间线上关联多个工件来源中的活动。
- 调查时间戳篡改或清除日志等反取证行为(这些行为会与 MACB 和日志证据形成明显矛盾)。
- 将整理后的时间线导入 Timesketch,供团队进行分诊。
先决条件
- 安装 Plaso(Docker 是受支持且可复现的方法):
也可以通过 GIFT PPA 在 Ubuntu 上安装:docker pull log2timeline/plaso # Run a tool, mounting your evidence/output directory docker run -v /cases:/data log2timeline/plaso log2timeline.py --versionsudo add-apt-repository ppa:gift/stable sudo apt-get update && sudo apt-get install -y plaso-tools - 一个 Timesketch 实例(通过 https://github.com/google/timesketch 中的 docker-compose 部署),用于分诊。
- 一个取证镜像(E01/raw)或已挂载的文件系统。
目标
- 从镜像中提取事件,并写入
.plaso存储文件。 - 使用 pinfo 检查存储文件。
- 使用 psort 筛选并导出重点超级时间线。
- 将时间线导入 Timesketch 并进行分诊。
MITRE ATT&CK 映射
| ID | 官方技术名称 | 与此技能的相关性 |
|---|---|---|
| T1070 | 指标移除 | 超级时间线可通过揭示 MACB 时间戳、USN 日志和事件日志之间的不一致,发现指标移除行为(清除日志、删除文件、时间戳篡改)。 |
Plaso 是一款防御性取证引擎;此映射反映了超级时间线非常适合检测的反取证对手行为。
工作流
1. 将事件提取到存储文件中
log2timeline.py 会从来源生成 .plaso 文件。--storage-file 用于指定输出文件名;来源可以是 .E01、raw 镜像、挂载点或目录。
log2timeline.py --storage-file timeline.plaso /cases/greendale/image.E01
使用 --parsers 指定解析器范围,以提升速度或聚焦相关内容(可选择 win7、webhist 等预设,或指定解析器名称):
log2timeline.py --parsers "win7,!filestat" --storage-file timeline.plaso /cases/image.E01
2. 检查存储文件
pinfo.py 会报告来源、使用的解析器、事件数量以及任何警告。
pinfo.py timeline.plaso
3. 导出筛选后的超级时间线(CSV)
psort.py 使用 -o 选择输出模块,使用 -w 写入文件,使用 --output-time-zone 规范化时区,并接受事件筛选表达式以限定日期范围。
psort.py --output-time-zone 'UTC' \
-o l2tcsv \
-w supertimeline.csv \
timeline.plaso \
"date > datetime('2026-01-01T00:00:00') AND date < datetime('2026-01-27T00:00:00')"
如需适用于 Timesketch 的 JSON 行格式,请使用 json_line 输出模块:
psort.py --output-time-zone 'UTC' -o json_line -w supertimeline.jsonl timeline.plaso
4. 使用 psteal 一步完成提取和导出
psteal.py 会同时运行提取和 CSV 导出,以便快速分诊。
psteal.py --source /cases/greendale/image.E01 -o l2tcsv -w supertimeline.csv
5. 导入 Timesketch
使用官方 timesketch_importer CLI 将 .plaso(或 CSV/JSONL)上传到一个 sketch。Timesketch 会对文件进行分块、重新组装并建立索引。
timesketch_importer \
--host http://127.0.0.1:5000 \
--username admin \
--timeline_name "greendale-host01" \
--sketch_id 1 \
timeline.plaso
6. 在 Timesketch 中进行分诊
在 sketch 界面中:
- 筛选可疑时间窗口或
data_type(例如windows:evtx:record、fs:stat)。 - 为感兴趣的事件加星标或添加标签,并添加评论以便协作。
- 保存搜索,并在时间线上运行分析器(例如浏览器时间范围、相似性、sigma)。
- 根据不同伪影来源中相互印证的事件构建叙事。
7. 搜寻反取证行为
查找与 $UsnJrnl 条目不一致的 MACB 时间戳(时间戳篡改)、缺失记录或 EventLog cleared(1102)记录,以及先删除后重建的文件——这些都能在统一时间线上查看。
工具和资源
| 资源 | 用途 | 链接 |
|---|---|---|
| Plaso (log2timeline) | 时间线引擎 + 工具 | https://github.com/log2timeline/plaso |
| Plaso 文档 | 工具用法和解析器 | https://plaso.readthedocs.io/ |
| Timesketch | 时间线分析平台 | https://github.com/google/timesketch |
| Timesketch 文档 | 部署、导入器、分析器 | https://timesketch.org/ |
| Plaso Docker 镜像 | 可复现的运行时环境 | https://hub.docker.com/r/log2timeline/plaso |
关键命令
| 命令 | 用途 |
|---|---|
log2timeline.py --storage-file out.plaso <source> | 提取事件 |
log2timeline.py --parsers <preset> ... | 限定解析器范围 |
pinfo.py out.plaso | 检查存储文件 |
psort.py -o l2tcsv -w out.csv out.plaso "<filter>" | 筛选并导出 CSV |
psort.py -o json_line -w out.jsonl out.plaso | 导出 JSONL |
psteal.py --source <img> -o l2tcsv -w out.csv | 一步完成提取和导出 |
timesketch_importer --host ... <file> | 导入 Timesketch |
验证标准
- 从源镜像生成
.plaso存储文件 - pinfo 确认预期的解析器已运行,且事件计数非零
- 导出经过 UTC 规范化并应用范围筛选的超级时间线
- 将时间线导入 Timesketch sketch 并完成索引
- 对可疑时间窗口完成分诊,并使用标签、星标和已保存的搜索
- 检查反取证指标(时间戳篡改、日志清除)
- 使用不同来源中相互印证的事件记录调查结果