Outlook PST 邮件取证分析完全指南:标准、工具链与实战工作流(Anthropic-Cybersecurity-Skills)
【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, 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
导读
Microsoft Outlook 的 PST(Personal Storage Table)与 OST(Offline Storage Table)文件是数字取证、事件响应与法律电子发现(e-discovery)中最关键的证据来源之一。本指南以 standards.md 为骨架,系统讲解 PST 取证所涉及的行业标准(MS-PST、MS-OXMSG、NIST SP 800-86)、开源工具链(libpff/pffexport、pypff)与关键取证工件(邮件头、已删除邮件、附件等)。读完本文,你将掌握从证据获取、哈希固定、邮件导出、邮件头解析到重建通信时间线的完整实战流程,并了解该项目中对应 SKILL.md 的源码级实现。
PST/OST 文件格式与取证价值
PST(Personal Storage Table)与 OST(Offline Storage Table)是 Microsoft Outlook 基于 MAPI(Messaging Application Programming Interface)属性系统存储的专有二进制格式文件。PST 存储邮件、日历事件、联系人、任务与便笺,OST 则是 Exchange 邮箱的离线缓存副本。对取证人员而言,PST 分析的价值体现在四个方面:
- 恢复已删除邮件:从 Recoverable Items(可恢复项目 / dumpster)文件夹中提取;
- 追踪邮件路由:解析邮件头中的 Received 链、X-Originating-IP 等字段;
- 分析附件:定位恶意载荷或被窃取的数据;
- 重建通信模式:还原调查对象的人际网络与时间线。
格式层面的关键差异是:现代 PST 采用 Unicode 格式,使用 4KB 页(page)组织数据,单文件最大可达约 50GB;而旧版 ANSI 格式仅支持最大 2GB。这一差异直接决定了取证工具选择与提取策略。
从底层结构看,PST 文件由三个逻辑层构成(详见 api-reference.md):
| 层 | 说明 |
|---|---|
| NDB 层(Node Database) | 底层原始数据存储,负责节点的分配与管理 |
| LTP 层(Lists/Tables/Properties) | 消息属性、列表与表的组织层 |
| Messaging 层 | 面向用户的文件夹、邮件、附件等逻辑对象 |
理解这三层结构有助于排查提取失败或数据损坏的场景——例如 Recoverable Items 中已删除邮件往往位于 NDB 层中未被覆盖的数据块内。
核心取证标准
standards.md 明确了三类必须遵循的标准,它们分别对应"文件格式规范"、"邮件格式规范"与"取证过程规范":
| 标准 | 定位 |
|---|---|
| MS-PST:Outlook Personal Folders (.pst) File Format | 定义 PST 二进制容器格式的完整规范,是解析器(如 libpff)实现的基础 |
| MS-OXMSG:Outlook Item Message File Format | 定义单封邮件对象的序列化格式,用于理解 .msg 级数据的属性布局 |
| NIST SP 800-86:Guide to Integrating Forensic Techniques | 定义从证据固定、保全链(chain of custody)到分析的取证流程方法论 |
MS-PST 与 MS-OXMSG 由微软开放规范(Open Specifications)维护,是 libpff 等开源解析器逆向实现所对照的权威依据;NIST SP 800-86 则是取证过程的"宪法",指导如何在保证证据合法性与完整性的前提下开展分析。
工具链概览
standards.md 列出了四类工具,本项目的 SKILL.md 与 scripts/agent.py 则给出了开源路线(libpff/pypff)的完整实操示例:
| 工具 | 类型 | 用途 |
|---|---|---|
| libpff / pffexport | 开源 | 底层 PST/OST 解析器与命令行导出工具 |
| pypff | 开源 | libpff 的 Python 绑定,便于编写脚本化分析 |
| MailXaminer | 商业 | 电子邮件取证分析软件 |
| PST Walker | 商业 | 邮件调查软件 |
| Kernel Outlook PST Viewer | 免费 | 快速查看 PST 内容 |
证据获取:PST 文件的典型存放位置
在 SKILL.md 中给出了 Windows 环境下的 PST/OST 默认路径,取证人员应优先检查这些位置:
| 来源 | 路径 |
|---|---|
| Outlook 2016+ 默认 | %USERPROFILE%\Documents\Outlook Files\*.pst |
| Outlook 旧版本 | %LOCALAPPDATA%\Microsoft\Outlook\*.pst |
| OST 缓存 | %LOCALAPPDATA%\Microsoft\Outlook\*.ost |
| 归档文件 | %USERPROFILE%\Documents\Outlook Files\archive.pst |
注意:归档 PST(archive.pst)往往覆盖更长的时间跨度,且常被用户视为"无关紧要"而疏于加密,在取证中价值极高。
实战工作流:从证据获取到报告
workflows.md 给出了标准取证流程,这也是全文的骨架:
获取证据中的 PST/OST 文件 ↓ 对原始文件计算 SHA-256 哈希(固定证据) ↓ 使用 pffexport 导出(items + recovered) ↓ 解析邮件头以还原路由 ↓ 提取附件并计算哈希 ↓ 跨邮件检索关键词 ↓ 构建通信时间线 ↓ 记录发现并维护保全链每一步都应记录操作者、时间、工具版本与输出路径,形成可审计的保全链文档。
libpff / pffexport 命令行导出
SKILL.md 给出的 pffexport 核心用法如下:
# 导出 PST 文件中的全部条目 pffexport -m all evidence.pst -t exported_pst # 仅导出邮件消息 pffexport -m items evidence.pst -t exported_emails # 导出已恢复/已删除条目 pffexport -m recovered evidence.pst -t recovered_items # 查看 PST 文件信息 pffinfo evidence.pst配合 api-reference.md 中的参数说明,pffexport的常用选项可归纳为:
| 选项 | 说明 | 示例 |
|---|---|---|
-m all | 导出所有消息类型 | pffexport -m all mailbox.pst |
-m items/-m recovered | 分别导出常规条目 / 已恢复条目 | pffexport -m recovered evidence.pst |
-t target_dir | 指定导出目标目录 | pffexport -t target_dir mailbox.pst |
-f text | 以文本格式导出 | pffexport -f text mailbox.pst |
导出后的目录结构通常按邮件文件夹镜像组织:
Export/ Inbox/ Message001/ Message.txt Attachment001.pdf Sent Items/ Deleted Items/如果环境中同时具备 libpst 工具集,还可以使用readpst作为互补方案:
readpst -o output_dir mailbox.pst # 提取到指定目录 readpst -e mailbox.pst # 仅提取附件 readpst -r mailbox.pst # 递归提取 readpst -j 4 mailbox.pst # 4 线程并行 readpst -S mailbox.pst # 每封邮件单独成文件Python 深度分析:pypff 与自动化脚本
pypff 安装与基础 API
api-reference.md 提供了 pypff 的完整用法:
pip install libpff-pythonimport pypff # 打开 PST 文件 pst = pypff.file() pst.open("mailbox.pst") root = pst.get_root_folder() # 遍历文件夹 for i in range(root.number_of_sub_folders): folder = root.get_sub_folder(i) print(f"{folder.name}: {folder.number_of_sub_messages} messages") # 提取单封邮件 msg = folder.get_sub_message(0) print(msg.subject) print(msg.sender_name) print(msg.delivery_time) print(msg.transport_headers) print(msg.plain_text_body) print(msg.html_body) # 提取附件 for i in range(msg.number_of_attachments): att = msg.get_attachment(i) print(f"Name: {att.name}, Size: {att.size}") data = att.read_buffer(att.size)仓库自带取证分析脚本
本项目在 scripts/agent.py 中提供了一个可直接运行的取证分析 Agent,它完成了从哈希固定到可疑邮件检测的完整链路:
- 哈希固定:
compute_hash()以 64KB 分块流式计算 SHA-256,避免大文件一次性读入内存; - 递归遍历:
walk_folders()递归遍历全部文件夹并保留目录路径上下文; - 邮件地址提取:
extract_email_addresses()用正则[\w.+-]+@[\w-]+\.[\w.-]+从发件人与邮件头中抽取全部邮箱地址并去重排序,用于关系网络还原; - 可疑邮件检测:
detect_suspicious_emails()针对两类攻击指标给出告警:- 可疑附件扩展名(HIGH):
.exe、.scr、.bat、.cmd、.ps1、.vbs、.js、.hta、.lnk、.iso、.img; - 钓鱼诱导关键词(MEDIUM):
urgent、immediate action、password expired、verify your account、suspended、click here等。
- 可疑附件扩展名(HIGH):
运行方式:
python3 agent.py <mailbox.pst> # 无参数时以演示模式打印 pypff 可用性: python3 agent.py脚本输出包含文件 SHA-256、文件夹结构与消息数统计、唯一邮箱地址 Top 20 以及全部可疑发现的结构化 JSON 报告,适合直接对接后续 SIEM 或案件管理系统。
可复用的完整分析器类
SKILL.md 还给出了一个更完整的PSTForensicAnalyzer类,其设计要点包括:
- 元数据采集:对每封邮件记录
folder、subject、sender_name、creation_time、delivery_time、modification_time、附件数量、纯文本/HTML 正文大小; - 邮件头解析:通过
email.message_from_string(headers)将transport_headers拆解为 From、To、Date、Message-ID、X-Originating-IP 与 Received 列表; - 附件安全导出:
save_attachments(max_size_mb=100)对文件名做白名单字符清洗(仅保留字母数字与.-_),并限制单附件最大 100MB,避免磁盘耗尽与路径穿越风险; - 报告生成:
generate_report()输出pst_forensic_report.json,含统计、前 500 条消息与前 200 个附件,并打印消息总数、附件总数与解析错误数。
邮件头分析:还原路由与定位真实来源
邮件头是取证中还原邮件真实来源的核心工件。SKILL.md 给出了关键头的取证价值对照表:
| 邮件头 | 取证价值 |
|---|---|
| Received | 邮件路由链(从下往上阅读) |
| X-Originating-IP | 发件人真实 IP 地址 |
| Message-ID | 关联多封邮件的唯一标识 |
| Date | 发送时间戳 |
| Return-Path | 退信地址(可能与 From 不同) |
| DKIM-Signature | 域名身份验证签名 |
| Authentication-Results | SPF、DKIM、DMARC 验证结果 |
| X-Mailer | 使用的邮件客户端 |
实战中,X-Originating-IP配合Received链的底部条目可以定位发件主机;而 SPF/DKIM/DMARC 三者中任一 FAIL 或 NONE,都是判定钓鱼邮件的强信号。
关键取证工件与 MAPI 属性
standards.md 归纳的取证工件可进一步映射到 MAPI 属性层面:
| 取证工件 | 说明 |
|---|---|
| 邮件头 | Received、X-Originating-IP、Message-ID 等路由证据 |
| 已删除项目 | Recoverable Items 文件夹中的可恢复邮件 |
| 附件 | 恶意软件或外泄数据 |
| 日历、联系人、任务 | 通信模式与计划安排的旁证 |
api-reference.md 补充了对应关键 MAPI 属性标签,便于在底层解析时精准定位:
| 属性 | MAPI 标签 | 描述 |
|---|---|---|
| Subject | PR_SUBJECT (0x0037) | 邮件主题 |
| Sender | PR_SENDER_NAME (0x0C1A) | 发件人显示名 |
| From | PR_SENT_REPRESENTING_EMAIL (0x0065) | 发件人邮箱 |
| Delivery Time | PR_MESSAGE_DELIVERY_TIME (0x0E06) | 投递时间 |
| Headers | PR_TRANSPORT_MESSAGE_HEADERS (0x007D) | 完整 SMTP 邮件头 |
案例输出解读
SKILL.md 给出了一个极具代表性的案例输出,展示了对jsmith_archive.pst(2.3 GB)的分析结果,关键发现包括:
- 钓鱼邮件(初始入侵向量):邮件 #8923,发件人
"IT Support" <it-support@c0rporate-help.com>,X-Originating-IP 为203.0.113.55,SPF FAIL、DKIM NONE、DMARC FAIL,附件为带宏的Password_Reset_Form.xlsm(245 KB,SHA-256:7a3b8c9d...e1f2a3b4); - 数据外泄迹象:邮件 #9102/#9103 在凌晨 3 点向个人邮箱
j.smith.personal8842@protonmail.com分卷发送加密 7z 附件(总计约 67.2 MB); - 关键词命中:
"confidential"45 封、"delete evidence"1 封(邮件 #9200),为销毁证据意图提供了时间锚点。
这类输出可直接用于事件响应报告中的"初始访问 → 数据外泄"攻击链证据呈现。
框架映射与检测覆盖
该技能在项目中被映射到多个安全框架(见 SKILL.md 的 YAML 前置元数据):
- MITRE ATT&CK:T1114.001(邮件收集 - 本地邮件收集)、T1564.008、T1070.008;其中 T1114(Email Collection)的覆盖关系记录在 mappings/mitre-attack/coverage-summary.md 中;
- NIST CSF:RS.AN-03(分析)、DE.AE-02(异常事件)、RS.MA-01(缓解);
- NIST AI RMF:MANAGE-2.4、MANAGE-3.1、MEASURE-3.1。
这意味着该技能既可指导人工取证,也可作为 AI Agent 在事件响应场景下执行邮件取证分析的结构化能力单元(符合 agentskills.io 规范,兼容 Claude Code、GitHub Copilot、Codex CLI 等平台)。
取证注意事项与最佳实践
综合 api-reference.md 与 workflows.md,取证实践中需注意:
- 先哈希后分析:在读取 PST 内容前先计算 SHA-256,确保证据完整性可与后续复核比对;
- 优先导出 Recoverable Items:用户"删除"的邮件通常仍保存在可恢复项目(dumpster)中,需要
-m recovered专门导出; - 不要忽略日历与联系人:约会、会议与联系人列表可能包含目标人物关系与行程等关键旁证;
- Journal 条目是时间线证据:日记条目可作为通信时间线的重要补充;
- 保持保全链:记录每一步操作的工具版本、命令、输出路径与操作时间,确保证据在法庭或审计中可被采信。
总结
Outlook PST 取证是一门"格式规范 + 工具链 + 取证流程"三位一体的工作。以 standards.md 为索引,MS-PST/MS-OXMSG/NIST SP 800-86 提供了规范依据,libpff/pffexport 与 pypff 提供了开源实现,而本仓库的 SKILL.md、workflows.md、api-reference.md 与 agent.py 则提供了可直接落地的完整方案——从证据获取、哈希固定、邮件导出、邮件头解析到可疑邮件自动检测与报告生成。无论是安全事件响应、法律电子发现,还是日常的内部调查,这套方法论都能帮助你从 Outlook 归档中可靠地重建事实。
【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, 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),仅供参考