mcpField
B
building-super-timelines-with-plaso

building-super-timelines-with-plaso

github.com/mukul975安全35.2k77 次安装8 周前更新
代码仓库

关于 building-super-timelines-with-plaso

面向数字取证和事件响应分析人员,指导使用 Plaso 从取证映像或文件系统提取事件,构建统一时间线并在 Timesketch 中分析。内容包括筛选导出、时间标准化以及识别时间戳篡改和日志清除迹象。

主要功能

  1. 01从取证源提取事件至 .plaso 文件
  2. 02检查存储文件及处理信息
  3. 03筛选并导出 CSV 或 JSONL 时间线
  4. 04使用 psteal.py 一步提取并导出
  5. 05将时间线导入 Timesketch 协作分析
  6. 06检查时间戳篡改和日志清除迹象

适用场景

  1. 01重建受入侵主机的事件顺序
  2. 02关联多类取证来源中的活动
  3. 03调查时间戳篡改或日志清除
  4. 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 外,安装时一起下载的参考资料和脚本。

LICENSE
references/
api-reference.md
standards.md
scripts/
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 是受支持且可复现的方法):
    docker pull log2timeline/plaso
    # Run a tool, mounting your evidence/output directory
    docker run -v /cases:/data log2timeline/plaso log2timeline.py --version
    
    也可以通过 GIFT PPA 在 Ubuntu 上安装:
    sudo 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 并完成索引
  • 对可疑时间窗口完成分诊,并使用标签、星标和已保存的搜索
  • 检查反取证指标(时间戳篡改、日志清除)
  • 使用不同来源中相互印证的事件记录调查结果

评论

支持 Markdown