Plaso 超时间线命令参考:基于 log2timeline、psort、pinfo 与 psteal 构建取证时间线的完整实战指南

Plaso 超时间线命令参考:基于 log2timeline、psort、pinfo 与 psteal 构建取证时间线的完整实战指南 Plaso 超时间线命令参考基于 log2timeline、psort、pinfo 与 psteal 构建取证时间线的完整实战指南【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-SkillsPlasoPlaso Langar Að Safna Öllu是驱动 log2timeline 的开源取证时间线引擎其四个 CLI 工具log2timeline.py、pinfo.py、psort.py、psteal.py配合 Timesketch可将磁盘镜像中的文件系统 MACB 时间、注册表、EVTX、浏览器历史、prefetch、LNK 等数百类痕迹融合为一条统一、按时间排序的「超时间线」Super Timeline用于重构受感染主机上的完整事件序列。本篇指南以本仓库building-super-timelines-with-plaso技能的命令参考文档api-reference.md为骨架完整讲解四个 CLI 工具的全部参数、典型用法、过滤表达式与 Timesketch 导入流程并结合仓库中的 SKILL.md 工作流与 agent.py 自动化封装源码帮助读者从命令级到原理级掌握超时间线构建能力。一、超时间线与 Plaso 四个核心 CLI 工具在数字取证与事件响应DFIR中单一数据源如仅看注册表或仅看文件系统时间往往无法还原攻击者的完整活动路径。Plaso 的价值在于将数百种 artifact 类型——文件系统 MACB 时间、注册表、EVTX 事件日志、浏览器历史、prefetch、LNK、$UsnJrnl、syslog 等——全部解析为统一格式的事件合并进同一条时间线中从而支持跨源关联分析。Plaso 随附四个 CLI 工具可以直接运行也可以通过官方 Docker 镜像log2timeline/plaso运行工具职责log2timeline.py提取从磁盘镜像、挂载点、目录或设备中提取事件写入.plaso存储文件pinfo.py检查报告.plaso文件的内容与处理元数据解析器、事件计数、警告psort.py后处理/导出过滤、去重、时区归一化并将存储文件导出为 CSV、JSONL、Elasticsearch、Timesketch 等格式psteal.py一站式封装一步完成「提取 导出」授权使用声明仅能基于你有权分析的证据构建时间线始终在取证镜像/副本上工作并保持证据链完整。该技能用于防御性取证分析对应的 MITRE ATTCK 映射反映的是超时间线最擅长检测的反取证对手行为。二、环境准备Docker 与 GIFT PPA 安装Plaso 的官方支持、可复现的安装方式是 Dockerdocker pull log2timeline/plaso # 运行某个工具将证据/输出目录挂载进容器 docker run -v /cases:/data log2timeline/plaso log2timeline.py --version也可以在 Ubuntu 上通过 GIFT PPA 安装sudo add-apt-repository ppa:gift/stable sudo apt-get update sudo apt-get install -y plaso-tools此外还需要一个 Timesketch 实例用于时间线分诊以及一份取证镜像E01/raw或已挂载的文件系统。使用 Docker 时注意容器内的路径会被映射到/data这与仓库 agent.py 中base_cmd()的实现一致——它将宿主机的data_dir挂载为容器内的/data再拼接log2timeline/plaso镜像名与工具名执行。三、log2timeline.py事件提取阶段log2timeline.py是超时间线构建的第一步负责把源.E01、raw 镜像、挂载点、目录或设备解析为.plaso存储文件。其核心参数如下参数用途--storage-file file指定输出的.plaso存储文件source数据源.E01、raw 镜像、挂载点、目录、设备--parsers list限定解析器范围预设如win7、webhist等!name表示排除--partitions spec选择分区如all--vss-stores spec处理卷影副本Volume Shadow Copies--hashers list计算文件哈希如sha256-z tz指定数据源时区--workers n提取工作进程数量最基础的提取命令log2timeline.py --storage-file timeline.plaso /cases/image.E01按解析器范围收窄、加快提取速度并聚焦相关 artifact预设win7代表一套面向 Windows 7 及以后系统的解析器组合!filestat表示在预设基础上排除filestat解析器log2timeline.py --parsers win7,!filestat --storage-file timeline.plaso /cases/image.E01参数含义与选择建议--parsers这是控制提取范围与速度的关键。可以使用预设名如win7、webhist也可以显式列出解析器名!前缀用于排除某个解析器。从源码封装看agent.py--parsers会被原样透传给log2timeline.py因此可以根据镜像类型灵活组合例如只处理浏览器历史的webhist预设或显式指定winevtx,prefetch,mft,usnjrnl,lnk,winreg等关键 artifact 解析器。--vss-stores all启用后处理镜像中的卷影副本可以还原被删除文件的早期版本、发现攻击者通过卷影副本进行的操作痕迹。仓库的自动化脚本以--vss布尔开关控制并映射为--vss-stores all。--hashers sha256在提取的同时计算文件哈希便于后续与威胁情报 IoC 比对。-z当镜像来自非 UTC 时区的系统时用该参数声明数据源时区避免时间线整体偏移。--workers多核机器上可提高解析吞吐量具体取值取决于宿主机 CPU 资源。四、pinfo.py检查存储文件提取完成后先用pinfo.py检查.plaso文件确认解析器是否按预期运行、事件计数是否非零、是否存在处理警告pinfo.py timeline.plaso # 摘要信息 pinfo.py -v timeline.plaso # 详细verbose模式-v会输出更详细的信息包括每个解析器/来源的统计与警告详情是排查「某个 artifact 为什么没出现在时间线里」的首选工具。在自动化脚本中对应info子命令agent.py它把存储文件路径直接追加到pinfo.py命令后执行。五、psort.py过滤、去重与导出超时间线psort.py是后处理阶段的核心它读取.plaso存储文件执行去重、时区归一化与事件过滤再导出为目标格式。其参数如下参数用途-o module输出模块l2tcsv、json_line、dynamic、elastic、timesketch等-w file将输出写入指定文件--output-time-zone tz归一化输出时区如UTCstorage输入.plaso文件filter事件过滤表达式作为末尾参数传入按日期范围过滤并导出为 CSVl2tcsv模块同时将时间戳归一化为 UTCpsort.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 Lines每行一个 JSON 事件psort.py --output-time-zone UTC -o json_line -w supertimeline.jsonl timeline.plaso要点说明--output-time-zone取证分析强烈建议统一到UTC避免跨时区协同分诊时产生时间歧义。-o输出模块选择l2tcsv适合 Excel/脚本二次分析json_line适合导入 Timesketch 或 SIEMelastic直接写入 Elasticsearchtimesketch模块与 Timesketch 平台对接。过滤表达式作为命令的末尾参数传入支持、、、contains等运算符与AND/OR组合配合datetime()函数构造时间范围。5.1 常用事件过滤字段psort.py过滤表达式可直接使用的常见字段如下字段示例datedate datetime(2026-01-01T00:00:00)data_typedata_type windows:evtx:recordparserparser contains winregtimestamp_desctimestamp_desc contains Creationdate按事件时间窗口过滤是还原「入侵时间窗口」最常用的字段。data_type按 artifact 类型过滤例如只看 EVTX 事件日志windows:evtx:record或文件系统统计fs:stat用于聚焦单一数据源做交叉验证。parser按解析器名模糊匹配例如parser contains winreg只看注册表相关事件。timestamp_desc按时间戳语义过滤例如contains Creation关注文件创建时间用于发现文件创建/重命名活动。六、psteal.py一步完成提取 导出当只需要快速分诊时psteal.py将「提取 CSV 导出」合并为一步psteal.py --source /cases/image.E01 -o l2tcsv -w supertimeline.csv它内部等价于依次执行log2timeline.py提取与psort.py导出适合在时间有限时先拿到一份完整 CSV 再做离线分析。在自动化封装中对应psteal子命令agent.py--output-module默认为l2tcsv。七、导入 Timesketch 并分诊超时间线通常体量巨大分析师依赖Timesketch基于 Web 的协作式时间线分析平台进行分诊。使用官方timesketch_importerCLI 将时间线上传到某个 sketch 中timesketch_importer \ --host http://127.0.0.1:5000 \ --username admin \ --timeline_name host01 \ --sketch_id 1 \ timeline.plasotimesketch_importer支持.plaso、.csv和.jsonl三种输入格式导入后 Timesketch 会分块、重组并建立索引。仓库的 agent.py 中import子命令对上述参数做了完整封装--host、--username默认admin、--timeline_name、--sketch-id、--file方便在流水线中一键导入。导入后在 sketch 界面中的典型分诊操作过滤到可疑时间窗口或特定data_type如windows:evtx:record、fs:stat对感兴趣的事件加星star、打标签tag并添加评论支持团队协作保存搜索saved searches运行自动分析器如浏览器时间范围、相似度、Sigma 规则扫描整条时间线跨 artifact 来源用相互印证的多个事件构建叙事narrative。八、源码级封装agent.py 的自动化视角仓库提供的 scripts/agent.py 是对上述四个 CLI 工具 Timesketch 导入的 Python 封装从源码可以看出完整的参数映射关系base_cmd(tool, use_docker, data_dir)agent.py决定以本机可执行文件还是 Docker 方式调用工具。Docker 模式下将data_dir挂载到容器内/data本机模式下用shutil.which()检查工具是否在 PATH 上缺失时给出--docker提示。extractagent.py构造log2timeline.py --storage-file storage [--parsers ...] [--vss-stores all] [--hashers ...] source。exportagent.py构造psort.py --output-time-zone tz -o module -w output storage [filter]其中时区默认UTC、输出模块默认l2tcsv。--dry-run只打印将要执行的命令而不真正执行便于在正式跑镜像前审查命令合法性。run()agent.py通过subprocess.run()执行命令并返回退出码FileNotFoundError时返回 127。由此可以看出本技能的命令行操作完全可以脚本化extract → info → export → import四个子命令与手动流程一一对应且全部支持--docker与--dry-run适合在 DFIR 取证工作中做成可复现的流水线。九、利用超时间线狩猎反取证行为统一时间线的最大优势是能暴露反取证行为时间戳伪造timestomping对比 MACB 时间戳与 $UsnJrnl 记录的矛盾若某文件被刻意改成特定时间二者会出现不一致。日志清除查找时间线中的时间空洞或EventLog cleared事件 ID 1102记录识别攻击者清除日志的时间点。删除后重建在统一时间线上观察文件被删除后又被重建的模式往往是攻击者投放工具或覆盖痕迹的信号。这些行为对应 MITRE ATTCKT1070Indicator Removal超时间线通过揭示 MACB 时间戳、USN 日志与事件日志之间的不一致来暴露指示器移除行为。同时该技能也映射了 NIST CSF 2.0 的RS.AN-03分析已执行以确定事件期间发生了什么以及根因——融合全部主机 artifact 的时序视图正是重建事件序列、定位根因的主要方法详见 standards.md。十、完整工作流与验证清单结合 SKILL.md 定义的目标一个完整的超时间线构建流程为提取log2timeline.py从镜像生成.plaso存储文件按需用--parsers收窄范围检查pinfo.py确认解析器运行与事件计数导出psort.py以 UTC 归一化 过滤表达式导出聚焦的超时间线CSV/JSONL导入timesketch_importer将时间线上传至 sketch分诊在 Timesketch 中过滤可疑窗口、打标签、运行分析器反取证检查核查 timestomping、日志清除等指标记录以跨源相互印证的事件构建发现文档。验证清单Validation Criteria已从源镜像产出.plaso存储文件pinfo确认预期解析器已运行且事件计数非零以 UTC 归一化和限定过滤条件导出超时间线时间线已导入 Timesketch sketch 并完成索引可疑时间窗口已通过标签/加星/保存搜索完成分诊已核查反取证指标timestomping、日志清除发现结果以跨源事件相互印证的方式记录关键命令速查命令用途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过滤并导出 CSVpsort.py -o json_line -w out.jsonl out.plaso导出 JSONLpsteal.py --source img -o l2tcsv -w out.csv一步完成提取 导出timesketch_importer --host ... file导入 Timesketch从提取、检查、过滤导出到 Timesketch 分诊Plaso 的四个 CLI 工具构成了 DFIR 时间线分析的标准流水线结合仓库中的 命令参考、技能工作流 与 自动化封装脚本你可以快速上手并脚本化整套超时间线构建流程。【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考