取证技能树与学习路径

很多人的入门路径是这样:跟着视频敲一遍 imager 做一个镜像,导入 GUI 看到一堆文件,觉得"我会了"。然后遇到真实案件——一个装满加密卷的笔记本、一台已锁机的手机、一台被入侵的服务器——完全无从下手。

最后更新 2026-10-09版本 v1.0维护 DigiForensics查看历史 0

关键词:知识地图、底层原理、工具链、学习路径、专项方向、复现能力 难度:入门 前置知识:无,本篇给出全局学习路线

一、概述

很多人的入门路径是这样:跟着视频敲一遍 imager 做一个镜像,导入 GUI 看到一堆文件,觉得"我会了"。然后遇到真实案件——一个装满加密卷的笔记本、一台已锁机的手机、一台被入侵的服务器——完全无从下手。

原因很简单:工具会变,原理不会。视频教程教的是"点哪里",真实工作需要的是"知道数据在哪、为什么在那里、怎么证明它在那"。前者是操作技能,后者是结构化知识。GUI 是效率工具,命令行是能力工具。GUI 遇到损坏文件、非常规分区表时经常直接报"损坏",而底层命令行工具加上你对结构的理解,往往能绕过这些限制。

能力分层解决的是流程开始之前的问题:你还没有能力执行流程。它与取证流程与原则是互补的两套组织方式——流程按阶段组织(保全、采集、检验、分析、报告),技能树按能力层次组织(L1 到 L5)。两者交叉起来才是完整的实践路径:某个阶段需要什么能力,到这张图里查该补哪一层。

这套分层是全库 108 篇文章的骨架。L1 底层三块(文件系统、编码、密码学基础)对应 filesystem/、crypto/ 与本板块的概念三篇;L3 操作系统的工件地图对应 computer/ 各板块;L4 专项对应 memory/、mobile/、server/。在本库里看到的一篇文章属于哪一层,决定了它在你能力结构里补的是哪一块。

学习材料与能力自评工具本身构成一套产出。

五层结构图给出 L1 文件系统 / 编码 / 密码学,L2 镜像 / 格式 / 解析 / 注册表 / 日志 / 数据库 / 内存 / 脚本,L3 Windows / Linux / macOS 三套工件地图,L4 五个专项方向,L5 报告与质证。各层的"学到了"判据比结构图更重要:L1 的标志是能手绘 MFT 记录结构,L3 的标志是"10 分钟内列出必查工件清单",L5 的标志是"让不懂技术的法官看懂"。Windows / Linux / macOS 三张必查工件表都是具体的文件与 hive 名称,不是抽象分类。

时间表分四段:1–2 月打地基、2–4 月工具链成型、4–8 月系统工件、第四阶段持续深入。CTF 与靶场作为贯穿全程的检验手段,与赛事与靶场配合。常见编码特征是 L1 里最容易被跳过的一块——ASCII / UTF-8 / GBK / UTF-16 的字节特征、Base64 / 十六进制 / URL 编码、压缩格式头,搜不到往往不是没有,是编码不对。

能回答的是这些:自己的能力卡在哪一层、每个层次的"学会了"标准是什么、该按什么顺序学、以及为什么跳过 L1 直接学工具是最贵的错误。

不解决的是这些:任何具体技术怎么做,这里只给路线不给操作,每一层的具体操作在对应专题文章里;哪条路线最快,时间区间是给"按顺序学"的人用的参考,不是保证;该选哪个 L4 专项,原则是"基于你的实际工作场景",不是基于哪个看起来高级;行业对从业者的资质要求,这里讲能力结构不讲执业门槛,后者见合规授权与法律边界。

能力分层的路线图是给零基础设计的入口,给的是路线图而不是坐标系——后者由取证概念与分类提供。

如果已经会一点东西(比如跟着教程做过一次镜像),先把各层判据那张表的自测做一遍:把现在的状态填进去,看看你以为在 L2 还是在 L3。多数人填完会发现自己在 L2,而误以为自己到了 L3。这个落差正是这套分层存在的理由。

这个自测还有第二个用法:每学完一层回来填一次,填不出"学到的标志"那一栏就说明还没过。这比"我把这一节读完了"可靠得多。还有第三种用法:给别人讲的时候用。那张表的每一行都是可检验的判据,"能教别人判断自己卡在哪一层"本身就是 L5 综合能力的最小单元。

二、核心原理

2.1 技能树五层结构

                    ┌─────────────────────────┐
         L5 综合能力 │  报告撰写 / 质证应辩 / 沟通 │
                    └────────────┬────────────┘
                                 │ 建立在
                    ┌────────────▼────────────┐
          L4 专项方向 │  WebShell / 容器 / 内存   │
                       │  移动 / 加密 / 反取证      │
                    └────────────┬────────────┘
                                 │ 建立在
                    ┌────────────▼────────────┐
          L3 操作系统 │  Windows / Linux / macOS  │
                       │  各自的工件地图            │
                    └────────────┬────────────┘
                                 │ 建立在
                    ┌────────────▼────────────┐
           L2 工具层 │  镜像 / 解析 / 时间线 / 脚本│
                    └────────────┬────────────┘
                                 │ 建立在
                    ┌────────────▼────────────┐
           L1 底层   │ 文件系统 / 编码 / 密码学    │
                    └─────────────────────────┘

关键认知:L1 是天花板。

L2–L5 都可以靠工具更新而快速跟进,但 L1 的理解深度决定了你遇到新工具时能不能自己判断它对不对。

2.2 各层的判断标准

"听说过"和"学会了"之间隔着一段可检验的距离。这张表就是那段距离。

层 学到的标志 没学到的表现
L1 底层 能手绘 NTFS 的 MFT 记录结构、说清 ext4 的间接块 只会用工具,工具报错就束手无策
L2 工具 知道每个工具适合什么场景、有什么局限 把工具当黑盒,换个场景就不会用
L3 操作系统 拿到一台陌生系统,能列出"必查工件清单" 只会查自己常用的那几个文件
L4 专项 在一个方向上有完整处置能力 什么都懂一点,什么都不深
L5 综合 能写出让不懂技术的法官看懂的报告 报告全是技术术语,无法采信

2.3 L1 底层:三块必须啃下来的硬骨头

模块 必学内容 为什么非学不可
文件系统 NTFS 的 MFT/ADS/$LogFile、ext4 的 inode/journal、FAT 的簇链、APFS 的容器与快照 决定数据在哪、哪些地方"没数据"其实是"没解析"
编码 ASCII/UTF-8/GBK/UTF-16 的字节特征、Base64/十六进制/URL 编码、压缩格式头 决定你搜关键字时能不能搜到——搜不到往往不是没有,是编码不对
密码学基础 对称/非对称、哈希、编码≠加密、密钥派生 决定你面对加密数据时是"解不开"还是"方法错了"

最容易被跳过、也最容易吃亏的是"编码"。

很多新手搜完关键字没结果就下结论"没有这个东西"。实际上对方用的是 GBK 或 UTF-16,工具按 UTF-8 搜自然搜不到。

三块里,文件系统和密码学都有明确的教材路径;编码没有。所以它是被跳掉的那一块,也是新手第一个假阴性结论的来源。

2.4 L2 工具层:按"能力"而非"产品"分类

能力 代表工具 必掌握程度
镜像制作 dcfldd、ddrescue、商业 imager 精通——这是基本功
格式处理 ewfinfo/ewfmount/ewfexport、X-Ways 熟练
文件系统解析 The Sleuth Kit(mmls/fsstat/fls/icat) 精通——命令行工具是最后兜底
注册表解析 reged、RegRipper、rip.exe 熟练
日志分析 evtx、Plaso/log2timeline 熟练
数据库 sqlite3、DBUtils 精通——现代取证大量数据在 SQLite 里
内存 Volatility 3 熟练
脚本 Python + 上述库 精通——决定你的效率上限

为什么强调命令行工具:GUI 工具在遇到边界情况(损坏文件、非常规分区表、手工拼接的文件)时经常直接报"损坏",而底层命令行工具 + 你对结构的理解,往往能绕过这些限制。

GUI 是效率工具,命令行是能力工具。

2.5 L3 操作系统层:工件地图思维

对每个操作系统,你要能回答一个问题:这台机器上,什么数据一定存在?

系统 必查工件(举例)
Windows NTFS 时间戳、Prefetch、ShimCache/Amcache、UserAssist、LNK/JumpList、事件日志、SRUM、浏览器、注册表各 hive、Recycle Bin、USN Journal
Linux /var/log 全部、shell history(含 zsh/HISTFILE)、/etc/passwd+shadow、crontab、systemd timer、SSH 痕迹、.bash_history 时间戳、audit 日志、已删除文件的 inode
macOS Unified Log、Spotlight(.mdfind)、plist 偏好、quarantine 事件、FSEvents、.DS_Store、Keychain、Time Machine 快照

判断"学会了"的标准:给你一台随机系统的镜像,你能在 10 分钟内列出一份检查清单,而不是"想到哪查到哪"。

2.6 L4 专项方向:深度 > 广度

专项方向别按"看起来高级"来选,按你实际会收到什么委托来选:

方向 适合谁 入门标志
Web/服务器 站点运维、安全服务人员 能读懂 Nginx 访问日志并判断攻击手法
内存 涉密、涉毒、勒索案件 能用 Volatility 跑通完整流程并解释结果
移动 涉诈、涉黄、位置核查 能独立完成一次 iOS 提取并解释数据来源
加密 涉密、数据恢复 能对 BitLocker/VeraCrypt 至少一条路径走通
容器与云 现代企业环境 能从 K8s 审计日志还原变更历史

建议:先深后广。选一个方向做到能独立办案,再横向扩展。只做广度的人每个方向都能说两句,但没有一个能真正落地。

2.7 L5 综合能力:最被低估的一层

技术做得再好,如果写不出可采信的报告,前面的工作都无法变现。这一层的核心是四项能力。

能力 具体要求
逻辑表达 能把"我看到了什么"讲成"这说明什么"
证据意识 知道哪句话必须有验证支撑
边界意识 主动写明局限性,不越界下结论
复核能力 自己的结论能被自己或他人独立复现

三、操作步骤

步骤 1:第一阶段(1–2 月):打地基

目标:建立 L1 底层能力,能看懂工具在做什么。

第 1-2 周  文件系统入门
  目标:能手绘 NTFS MFT 记录的基本字段;理解簇/块/扇区
  产出:装一台 Linux,用 mmls/fls/icat 手工还原一个被删文件

第 3-4 周  编码与字符
  目标:能识别 UTF-8/UTF-16/GBK 的字节特征;能处理 Base64
  产出:用 grep 跨编码搜索成功;能解释为什么某些关键字搜不到

第 5-6 周  密码学基础
  目标:分清编码/加密/哈希;理解对称非对称;知道密钥派生
  产出:写一个 Python 脚本解密 AES-CBC 数据并验证结果

第 7-8 周  镜像与格式
  目标:独立完成采集→验证→转换全流程
  产出:一个完整的 E01 镜像 + 三段哈希记录

验证方式:给你一份陌生的镜像,你能说出分区结构、文件系统类型,并手工提取一个文件。

第 3–4 周那段最值得放慢。编码是三块里唯一没有教材路径的,而它出的问题(假阴性)在很长时间里不会暴露出来。

步骤 2:第二阶段(2–4 月):工具链成型

目标:L2 熟练,能独立处理常规案件。

第 2 月  镜像与只读挂载
  工具:dcfldd / gddrescue / ewf* / losetup
  产出:掌握 losetup offset 挂载,能处理 E01 与 RAW

第 3 月  文件系统与数据库
  工具:The Sleuth Kit / sqlite3 / DBUtils
  产出:手工解析一个 NTFS 的 $MFT,导出并查询浏览器 History

第 4 月  脚本能力
  工具:Python(struct / binascii / sqlite3 / datetime)
  产出:写一个脚本,批量导出镜像中所有 PNG 并计算哈希

验证方式:不用任何 GUI 工具,纯命令行完成一次完整分析并出具结论。

这一阶段末尾就该把"写报告"练起来,而不是等到第五个月之后。

补充:blkls 属于 Sleuth Kit 套件(apt install sleuthkit),与 testdisk 不是同一个包。

步骤 3:第三阶段(4–8 月):系统工件

目标:L3 成型,形成自己的工件清单。

选一个主攻系统(Windows 或 Linux)深入 2–3 个月,把该系统的主要工件全部手工解析一遍;不看工具输出,尝试用十六进制编辑器手工定位关键结构;记录每个工件的偏移、格式、常见陷阱。再横向覆盖另一个系统 1–2 个月。

验证方式:给一台随机镜像,10 分钟内产出检查清单。

步骤 4:第四阶段(持续):专项深入

目标:L4 至少一个方向能独立办案。

选一个方向连续投入 3–6 个月,读完该方向的权威资料,做完 5–10 个完整公开案例,记录每个案例的"卡点"和解决思路。然后横向扩展,每个方向 1–2 个月。

步骤 5:贯穿全程:比赛与靶场

每 2–3 个月参加一次 CTF 取证赛(详见第 09 篇)。参赛的意义在于时间压力下暴露知识盲区、学习他人思路、保持手感。

步骤 6:持续能力建设

习惯 频率 价值
做公开案例复盘 每月 1 个 学他人思路
写自己的分析脚本 持续 提升效率与可复用性
记录"踩坑笔记" 随时 避免重复犯错
关注工具更新 每季 跟上格式变化
练习写报告 每月 1 份 L5 能力需要单独训练

💡 最容易被忽略的建议:每完成一个技术分析,都强制自己写一份 200 字的结论摘要。这个练习成本极低,但能极大提升 L5 能力——很多人技术一流,报告写不出来。


四、常见陷阱

这一章讲的不是技术操

安全验证 当前请求需要先完成一次滑块验证。