Anthropic-Cybersecurity-Skills 实战:使用 Autopsy 与 The Sleuth Kit 对磁盘镜像进行全流程取证分析
【免费下载链接】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
导读
本技能(analyzing-disk-image-with-autopsy)来自 Anthropic-Cybersecurity-Skills 开源技能库(digital-forensics 子领域),面向 AI 安全 Agent 与取证分析人员,提供一套基于 Autopsy 4.x 与 The Sleuth Kit(TSK)的结构化磁盘取证工作流:从案件创建、镜像校验、Ingest 模块配置,到删除文件恢复、关键词搜索、时间线重建与可视化报告生成,全程可用 GUI 或 CLI(乃至仓库内置的 Python 自动化脚本)执行。读完本文,你将掌握对 raw(dd)、E01、AFF 格式磁盘镜像做端到端取证分析的标准操作,并能把结果输出为可供法律、管理层等非技术干系人直接使用的结构化报告。
一、技能定位:何时使用本工作流
根据本技能前部元数据(name: analyzing-disk-image-with-autopsy)的声明,本技能适用于以下典型情境:
- 手头有取证磁盘镜像,需要对其内容进行结构化、可复现的分析;
- 调查过程中需要删除文件恢复、关键词检索与时间线分析;
- 非技术干系人(法务、管理层、执法部门)需要基于取证证据的可视化报告;
- 需要检查文件系统元数据、已删除文件与内嵌工件(Artifact);
- 需要将多张磁盘镜像组织为同一案件(Case)进行综合研判。
技能元数据中还将本技能映射到了两个主流安全框架,便于在监管合规语境下引用:
| 框架 | 映射项 | 含义 |
|---|---|---|
| NIST CSF 2.0 | RS.AN-03(分析) | 对检测到的活动进行深入分析以理解影响与范围 |
| NIST CSF 2.0 | DE.AE-02(异常与事件分析) | 分析事件与异常,评估其潜在影响 |
| NIST CSF 2.0 | RS.MA-01(缓解) | 实施遏制与缓解措施并记录结果 |
| MITRE ATT&CK | T1005(本地数据收集)、T1074.001(本地暂存)、T1070.004(文件删除日志清理)、T1083(文件与目录发现) | 覆盖攻击者数据收集、暂存、反取证与信息发现行为 |
这意味着:本技能既是一份取证操作手册,也是组织在建设 NIST CSF 2.0 响应能力、识别 ATT&CK 对抗行为时的可复用知识资产。
二、前置条件与运行环境
在开始任何分析前,先确认环境满足本技能列出的前提:
| 条件 | 要求 | 说明 |
|---|---|---|
| Autopsy | 4.x(Windows 版)或 4.x + TSK(Linux 版) | GUI 分析平台,底层依赖 TSK |
| 磁盘镜像 | raw(dd)、E01(EnCase)或 AFF 格式 | 本技能全部命令以 raw 镜像为例 |
| 内存 | 最低 8GB,大镜像建议 16GB | 决定 Ingest 与时间线渲染的流畅度 |
| Java | JRE 8+ | Autopsy GUI 运行依赖 |
| 磁盘空间 | 案件数据库约为镜像体积的 2~3 倍 | Autopsy 会构建 SQLite 数据库与索引 |
| 哈希库 | NSRL、known-bad 哈希集 | 用于文件已知/恶意识别与过滤 |
注意:所谓"案件数据库体积为镜像的 2~3 倍"是本技能给出的经验基准,实际占用取决于 Ingest 模块开启数量与文件总量;大镜像分析前请务必预留充足磁盘空间。
三、安装 Autopsy 与配置环境
3.1 Linux 安装(apt)
# 安装 Sleuth Kit 与 Autopsy sudo apt-get install autopsy sleuthkit3.2 Linux 手动安装 Autopsy 4.x GUI 版
# 从官方发布渠道获取 Autopsy 4.x 压缩包(以下为示例命令,URL 请以官方 releases 页面为准) wget <autopsy-4.x-release.zip-url> unzip autopsy-4.x.zip -d /opt/autopsy # 启动 Autopsy(--nosplash 跳过启动画面,便于脚本化/远程场景) /opt/autopsy/bin/autopsy --nosplash3.3 Windows 安装
Windows 下运行官方 MSI 安装包(源自 sleuthkit.org 发布渠道)即可,安装完成后从开始菜单启动 Autopsy。
3.4 关键点:Autopsy 与 TSK 的分工
Autopsy 是图形化的取证分析平台,而 The Sleuth Kit 是其底层的命令行工具集。两者互补:GUI 适合交互式深度分析与报告生成,CLI 适合脚本化、可重复的批量处理。本技能在 GUI 流程之外始终同步给出 TSK CLI 等价命令,而仓库配套脚本 scripts/agent.py 正是把这两者打通为一条自动化管线的实现,后续章节会结合源码展开。
四、创建案件并导入磁盘镜像
4.1 Autopsy GUI 建案流程
1. 启动 Autopsy > "New Case" 2. 填写案件名:CASE-2024-001-Workstation 3. 设置 Base Directory:/cases/case-2024-001/autopsy/ 4. 填写 Case Number、Examiner Name 5. 点击 "Add Data Source" 6. 选择 "Disk Image or VM File" 7. 浏览并选择:/cases/case-2024-001/images/evidence.dd 8. 选择原系统的时区(Time Zone) 9. 配置 Ingest 模块(见第五章)4.2 用 TSK CLI 先校验镜像再入库
在把镜像交给 Autopsy 之前,先用 CLI 验证镜像完整性与分区结构,可避免建案后发现镜像损坏的返工:
# 查看镜像基本信息(格式、大小、校验方式) img_stat /cases/case-2024-001/images/evidence.dd # 列出镜像内的分区表 mmls /cases/case-2024-001/images/evidence.dd # 输出示例(DOS 分区表,512 字节扇区) # DOS Partition Table # Offset Sector: 0 # Units are in 512-byte sectors # Slot Start End Length Description # 00: ----- 0000000000 0000002047 0000002048 Primary Table (#0) # 01: 00:00 0000002048 0001026047 0001024000 NTFS (0x07) # 02: 00:01 0001026048 0976771071 0975745024 NTFS (0x07) # 列出某分区(扇区偏移 2048)根目录下的文件 fls -o 2048 /cases/case-2024-001/images/evidence.dd4.2.1 分区偏移(-o)为什么如此关键
从上例可见mmls输出的每个分区都有明确的起始扇区号(Start)。后续所有 TSK 工具(fls、icat、istat、srch_strings、sigfind、mactime)都需要用-o <offset>指明目标分区的扇区偏移,否则工具会从镜像第 0 扇区(主引导记录/MBR 区域)开始解析,无法正确读取 NTFS 等文件系统。这一点在仓库脚本 scripts/agent.py 中体现得尤为直接:analyze_image遍历mmls解析出的分区列表,只对描述中包含NTFS或Linux的分区,取其start字段作为偏移量继续后续操作(对应 agent.py 第 160-194 行)。
4.2.2 mmls 的参考语法(详见 references/api-reference.md)
mmls <image_file> # 自动探测分区表类型 mmls -t dos <image_file> # 强制按 DOS 分区表解析 mmls -t gpt <image_file> # 强制按 GPT 分区表解析输出中Slot是分区槽位,Start/End/Length单位为扇区(512 字节),Description标注分区类型(如NTFS (0x07))。当镜像包含 GPT 分区表而工具自动探测失败时,-t gpt即可解决。
五、配置并运行 Ingest 模块
5.1 推荐启用的 Ingest 模块清单
Autopsy 的 Ingest 模块是在镜像导入时自动运行的插件,其分析质量直接决定后续检索与恢复能力。本技能推荐启用以下模块:
| Ingest 模块 | 功能 |
|---|---|
| Recent Activity | 提取浏览器历史、下载记录、Cookies、书签 |
| Hash Lookup | 与 NSRL 及已知恶意哈希集比对 |
| File Type Identification | 按文件签名(而非扩展名)识别类型 |
| Keyword Search | 对内容建立全文检索索引 |
| Email Parser | 从 PST、MBOX、EML 中提取邮件 |
| Extension Mismatch Detector | 找出扩展名与真实类型不符的文件 |
| Exif Parser | 提取图片 EXIF 元数据(GPS、相机、时间戳) |
| Encryption Detection | 识别加密文件与加密容器 |
| Interesting Files Identifier | 依据自定义规则集标记可疑文件 |
| Embedded File Extractor | 从 ZIP、Office 文档、PDF 中提取内嵌文件 |
| Picture Analyzer | 用 PhotoDNA 或哈希匹配对图片分类 |
| Data Source Integrity | 在 Ingest 期间校验镜像哈希 |
5.2 配置 NSRL 哈希集以过滤已知软件
NSRL(National Software Reference Library)是 NIST 维护的已知软件哈希库,可用于在结果中过滤掉操作系统自带文件,从而大幅缩小人工审查范围:
# 下载 NSRL RDS(官方地址见 NIST 软件质量组页面,以下为示例) wget <rds_modernm.zip-url> unzip rds_modernm.zip -d /opt/autopsy/hashsets/ # 导入 Autopsy: # Tools > Options > Hash Sets > Import > 选择 NSRLFile.txt # 将导入的哈希集标记为 "Known"(用于过滤已知的正常文件)同时可在 Autopsy 中导入自定义 known-bad 哈希集(如恶意软件样本哈希),Hash Lookup 模块会把命中结果直接标记出来,供后续按证据等级标签化。
六、文件系统分析与删除文件恢复
6.1 GUI 浏览与识别已删除文件
在 Autopsy 的树形结构中展开Data Sources > evidence.dd > vol2 (NTFS)即可浏览目录树;已删除文件会在文件名上以 X 标记。Autopsy 同时展示文件的元数据(时间戳、大小、inode),右键即可选择恢复或导出。
6.2 用 TSK CLI 进行定向恢复
# 递归列出已删除文件(-r 递归,-d 仅删除项) fls -rd -o 2048 /cases/case-2024-001/images/evidence.dd # 按 inode 恢复单个已删除文件(14523 为示例 inode) icat -o 2048 /cases/case-2024-001/images/evidence.dd 14523 > /cases/case-2024-001/recovered/deleted_document.docx # 将某目录下全部文件提取出来 tsk_recover -o 2048 -d /Users/suspect/Documents \ /cases/case-2024-001/images/evidence.dd \ /cases/case-2024-001/recovered/documents/ # 获取文件详细元数据 istat -o 2048 /cases/case-2024-001/images/evidence.dd 14523 # 输出包含:创建、修改、访问、MFT 变更四个时间戳,文件大小,数据区(data runs)位置6.2.1 fls 的参考语法与标记(详见 references/api-reference.md)
fls -o <offset> <image> # 列出根目录 fls -r -o <offset> <image> # 递归列出 fls -rd -o <offset> <image> # 仅列出已删除项(递归) fls -m "/" -r -o <offset> <image> # 以 bodyfile 格式输出(供 mactime 使用)| 参数 | 含义 |
|---|---|
-r | 递归列出 |
-d | 仅显示已删除条目 |
-D | 仅显示目录 |
-m "/" | 以 bodyfile 格式输出并指定挂载点 |
-o | 分区扇区偏移 |
fls输出中,*前缀表示已删除条目,d/表示目录,r/r表示常规文件,条目中包含 inode 编号。
6.2.2 istat 输出包含的信息(详见 references/api-reference.md)
- MFT 条目编号与序列号;
- 文件的创建(Born)、修改(Modified)、访问(Accessed)、MFT 变更(Changed)四时间戳;
- 文件大小与数据区(data runs)位置;
- NTFS 属性列表(
$STANDARD_INFORMATION、$FILE_NAME、$DATA等)。
四个时间戳的差异本身即是重要的取证线索:例如创建时间与修改时间差距过大、或 MFT 变更时间晚于修改时间,都可能暗示文件被篡改或移动。
6.2.3 icat 的扩展用法
icat -o <offset> <image> <inode> > recovered_file # 按 inode 提取文件内容 icat -r -o <offset> <image> <inode> > file # 连同 slack 空间一起恢复-r参数会将文件末尾到扇区边界的 slack 空间一并恢复,往往能捞出文件正式内容之外的残留数据(如被覆盖前的部分文本)。
6.3 仓库脚本中的恢复流程对照
仓库配套脚本 scripts/agent.py 将上述 CLI 流程封装成了可复用的 Python 函数,可作为 Agent 自动化取证的参考实现:
| 脚本函数 | 底层 TSK 工具 | 位置 |
|---|---|---|
get_image_info | img_stat | agent.py 第 21-31 行 |
list_partitions | mmls | agent.py 第 34-49 行 |
list_files | fls | agent.py 第 52-82 行 |
list_deleted_files | fls -rd | agent.py 第 85-94 行 |
recover_file | icat | agent.py 第 97-107 行 |
get_file_metadata | istat | agent.py 第 110-113 行 |
从源码结构看,list_files会解析fls输出的每一行,通过*前缀识别deleted状态,并从元数据中抽取 inode 编号,这正是把 CLI 文本输出转成结构化 JSON 数据的过程;recover_file则直接以二进制方式写回icat的输出流(agent.py 第 97-107 行),保证了恢复文件的字节级完整性。
七、关键词搜索与证据标记
7.1 GUI 关键词检索与正则
1. 打开 Keyword Search 面板 > "Ad Hoc Keyword Search" 2. 输入检索词:信用卡卡号模式、SSN 正则、邮箱地址等 3. 信用卡卡号正则示例:\b(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14})\b 4. SSN 正则示例:\b\d{3}-\d{2}-\d{4}\b 5. 审查结果 > 右键点击条目 > "Add Tag" 6. 建立标签体系:"Evidence-Critical"、"Evidence-Supporting"、"Requires-Review" 7. 为标记条目添加注释,记录其与案件的关联性7.2 CLI 关键词与签名搜索
# 提取可打印字符串并按关键词过滤(-a 提取 ASCII 字符串,-o 指定分区偏移) srch_strings -a -o 2048 /cases/case-2024-001/images/evidence.dd | \ grep -iE '(password|secret|confidential)' > /cases/case-2024-001/keyword_hits.txt # 在扇区层面搜索文件签名(25504446 = "%PDF" 头) sigfind -o 2048 /cases/case-2024-001/images/evidence.dd 25504446srch_strings支持-t d参数在输出中附带十进制的文件内偏移(references/api-reference.md),便于精确定位关键词出现在哪个扇区。仓库脚本中的 search_keywords(agent.py 第 141-151 行) 与 find_file_signature(agent.py 第 154-157 行) 分别封装了这两条命令,直接返回命中的字符串列表或签名搜索输出,方便 Agent 做进一步处理。
7.3 常用文件签名速查(详见 references/api-reference.md)
| Hex 签名 | 文件类型 |
|---|---|
FFD8FF | JPEG |
89504E47 | PNG |
25504446 | |
504B0304 | ZIP / DOCX / XLSX |
D0CF11E0 | OLE(DOC / XLS) |
这些签名与sigfind配合,可用于在未分配空间中定位被删除文档的残留头部,是文件雕刻(File carving)的基础。
八、时间线构建与报告生成
8.1 Autopsy Timeline 视图
1. 打开时间线:Tools > Timeline 2. 选择关注的时间范围(如事件发生窗口) 3. 按事件类型过滤:File Created / Modified / Accessed / Web Activity 4. 放大可疑时间段逐项检查 5. 将时间线事件导出为 CSV 供外部关联分析时间线是回答"什么时间发生了什么"这一核心取证问题的关键视图,尤其适合在案件初期快速锁定恶意活动窗口。
8.2 用 mactime 生成 CLI 时间线
# 生成 bodyfile(-m "/" 指定挂载点,供 mactime 解析路径) fls -r -m "/" -o 2048 /cases/case-2024-001/images/evidence.dd > /cases/case-2024-001/bodyfile.txt # 由 bodyfile 生成 CSV 时间线 mactime -b /cases/case-2024-001/bodyfile.txt -d > /cases/case-2024-001/timeline.csv # 按日期范围过滤,聚焦事件窗口 mactime -b /cases/case-2024-001/bodyfile.txt \ -d 2024-01-15..2024-01-20 > /cases/case-2024-001/incident_timeline.csv8.2.1 mactime 参考语法与输出列(详见 references/api-reference.md)
mactime -b <bodyfile> -d > timeline.csv # 基础时间线 mactime -b <bodyfile> -d 2024-01-15..2024-01-20 > filtered.csv # 按日期范围过滤 mactime -b <bodyfile> -z UTC -d > timeline_utc.csv # 指定时区(UTC)CSV 输出列为:
Date,Size,Type,Mode,UID,GID,Meta,File Name在跨时区案件中,务必用-z显式指定时区(如-z UTC),否则时间线中的时间戳会因时区默认值产生系统性偏差。
8.2.2 脚本化时间线管线
仓库脚本 agent.py 中,create_bodyfile(第 116-126 行)负责生成 bodyfile,generate_timeline(第 129-138 行)负责调用mactime生成 CSV,并支持传入start_date..end_date做窗口过滤——这与上文 CLI 流程一一对应,可在无人值守的自动化调查中复用。
8.3 生成可视化报告
1. Generate Report > HTML Report 2. 选择已标记的证据条目与数据源 3. 配置报告章节:文件列表、关键词命中、时间线 4. 导出到 /cases/case-2024-001/reports/HTML 报告是把取证结论交付给法务、管理层或执法机构的最终载体,建议在生成前完成全部证据标记与注释,保证报告内容与标签体系一致。
九、核心概念速览
| 概念 | 说明 |
|---|---|
| Ingest Modules | 数据源导入时自动运行的解析插件,负责工件提取与索引构建 |
| MFT(Master File Table) | NTFS 元数据主表,记录所有文件条目及其属性 |
| 文件雕刻(File carving) | 依据文件签名从未分配空间恢复文件 |
| 哈希过滤(Hash filtering) | 用 NSRL 或自定义哈希集排除已知正常文件、标记已知恶意文件 |
| 时间线分析 | 对文件系统与用户活动事件做时间顺序重构 |
| 删除文件恢复 | 恢复目录项已被移除但数据区仍存留的文件 |
| 关键词索引 | 基于全部文件内容(含 slack 空间)建立的全文检索索引 |
| 工件提取 | 自动化解析浏览器、邮件、注册表及操作系统特有工件 |
其中"关键词索引"与"文件雕刻"是 Autopsy 区别于普通文件浏览器的核心能力:前者保证即使在文件系统索引损坏的情况下仍可按内容命中数据,后者则是删除文件恢复的最后防线。
十、工具与系统清单
| 工具 | 用途 |
|---|---|
| Autopsy | 开源的 GUI 取证分析平台 |
| The Sleuth Kit(TSK) | Autopsy 底层的命令行取证工具集 |
| fls | 列出镜像中文件与目录(含已删除条目) |
| icat | 按 inode 号提取文件内容 |
| mactime | 由 TSK bodyfile 生成时间线 |
| mmls | 显示镜像分区布局 |
| NSRL | NIST 已知软件哈希库,用于识别已知文件 |
| sigfind | 在扇区层面搜索文件签名 |
十一、典型实战场景
场景 1:员工数据窃取调查导入员工工作站镜像,运行全部 Ingest 模块,搜索公司机密文件名与关键词,在 Recent Activity 中检查 USB 连接工件,核查云存储客户端痕迹,复查已删除文件中是否存在数据暂存(Data staging)证据,最终为法务团队生成 HTML 报告。
场景 2:恶意软件感染取证添加受害系统镜像,启用 Extension Mismatch 与 Encryption Detection 模块,检查 prefetch 目录中的执行痕迹,搜索已知恶意软件哈希,围绕感染窗口构建时间线,提取可疑可执行文件送往沙箱进一步分析。
场景 3:儿童剥削材料(CSAM)调查导入镜像时启用 PhotoDNA 与 Project VIC 哈希集,运行 Picture Analyzer 模块,将所有图片哈希与已知恶意数据库比对,按严重程度对命中项标记与分类,生成带监管链(Chain of custody)记录的执法报告。
场景 4:知识产权纠纷在同一案件中将多张员工磁盘镜像作为独立数据源导入,对专有术语与项目名做关键词检索,比较各数据源间的文件哈希,构建展示文件访问与传输模式的时间线,导出证据供法律审查。
十二、结构化输出模板
本技能定义了统一的案件分析摘要输出格式,便于 Agent 或分析师把大量调查结果收敛为一页可读摘要:
Autopsy Case Analysis Summary: Case: CASE-2024-001-Workstation Image: evidence.dd (500GB NTFS) Partitions: 2 (System Reserved + Primary) Total Files: 245,832 Deleted Files: 12,456 (recoverable: 8,234) Ingest Results: Hash Matches (Known Bad): 3 files Extension Mismatches: 17 files Keyword Hits: 234 across 45 files Encrypted Files: 5 containers detected EXIF Data Extracted: 1,245 images with metadata Tagged Evidence: Critical: 12 items Supporting: 34 items Review: 67 items Timeline Events: 1,234,567 entries (filtered to incident window: 892) Report: /cases/case-2024-001/reports/autopsy_report.html十三、仓库配套资源:参考文档与自动化脚本
围绕本技能,仓库提供了两份可直接引用的配套资源:
命令参考文档skills/analyzing-disk-image-with-autopsy/references/api-reference.md:对
mmls、fls、icat、istat、mactime、img_stat、sigfind、srch_strings的全部参数、输出格式与常见文件签名做了系统整理,是与本文配合的速查手册。自动化分析脚本skills/analyzing-disk-image-with-autopsy/scripts/agent.py:一个纯 Python 3 实现、仅依赖 TSK CLI 工具的取证 Agent,运行方式如下:
python3 skills/analyzing-disk-image-with-autopsy/scripts/agent.py <disk_image.dd> [case_directory]脚本核心流程analyze_image(agent.py 第 160-194 行)依次执行:img_stat读取镜像信息 →mmls枚举分区 → 对 NTFS/Linux 分区递归执行fls统计文件与删除项 → 生成 bodyfile →mactime生成时间线 → 最终把镜像信息、分区列表、文件统计、时间线路径汇总为analysis_summary.json输出到案件目录。未指定案件目录时,脚本默认使用环境变量AUTOPSY_CASE_DIR或系统临时目录下的autopsy_case(agent.py 第 206 行)。
从源码结构可以推断,该脚本的设计意图是让 AI Agent 无需 GUI 即可完成"镜像信息 → 分区 → 文件清单(含删除项统计)→ 时间线"的一站式初检,其 JSON 输出可直接被下游工具或大模型进一步分析,是 GUI 工作流的有力补充。
十四、技能本体文件
本技能的主体定义位于 skills/analyzing-disk-image-with-autopsy/SKILL.md,采用 agentskills.io 开放标准编写,frontmatter 中声明了技能名称、适用领域(digital-forensics)、标签(forensics、autopsy、disk-analysis、sleuth-kit、file-recovery、artifact-analysis)、版本(1.0)、作者与 Apache-2.0 许可证,并完成 NIST CSF 2.0 与 MITRE ATT&CK 的框架映射,可作为 Agent 技能包直接加载使用。
结语
本技能把"磁盘镜像取证"从零散的 CLI 操作整理为一条从建案、校验、Ingest、恢复、检索到时间线与报告的标准流水线,并同时覆盖 GUI 与 CLI 两条路径。配合仓库内的命令参考文档与自动化脚本,无论是人工调查还是 AI Agent 驱动的自动化取证,都能在保持证据链完整的前提下,快速产出结构化的可交付结论。分析务必只针对你拥有或获得明确书面授权的系统开展,并遵守所在地法律与取证规范。
【免费下载链接】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),仅供参考