MISC入门---取证
前言
CTF 中的“取证”通常是从给定文件或数据中恢复被隐藏、删除、嵌入或伪装的信息。它和隐写有交集,但关注角度稍有不同:隐写题更强调“信息藏在哪里、如何读出来”;取证题更强调“先识别证据,再找出里面的异常和关联”。在 MISC 入门里,两者常常会连续出现,比如先发现图片里有一个压缩包,再分析这个压缩包。
新手最容易犯的错,是一拿到附件就直接运行一堆工具。更稳妥的思路是先保留原件、确认文件类型,再从整体结构、元数据、可读字符串和嵌入对象逐层检查。
一、保留原件,先做基础记录
把题目附件复制到单独的分析目录,原件保持不动。需要时记录文件大小和哈希:
sha256sum challenge
Windows PowerShell 可以这样计算 SHA-256:
Get-FileHash .\challenge -Algorithm SHA256
哈希可以作为文件的“指纹”:同一个文件内容不变时,哈希值通常不变;如果分析过程中误改了原件,就能发现差异。CTF 解题一般不要求正式的司法证据链,但保留原件、记录副本和分析步骤,能避免误操作后无法复盘。
二、先识别文件,不要被后缀带偏
扩展名只是文件名的一部分,可以随意修改。先看真实类型和文件头:
file challenge
xxd -l 32 challenge
file 会根据常见特征猜测文件类型;xxd 会把文件开头显示成十六进制和文本。两者结果应互相印证,不能只看一个工具的结论。比如 PNG 常以固定签名开头,ZIP 常见 PK 标记;如果文件名叫 challenge.txt,开头却明显是 PNG,就说明扩展名可能被改过。
接下来也可以查看文件末尾。很多格式有正常的结束标记,如果结束标记之后还有一段数据,可能是题目附加的内容;不过也要先确认格式本身是否允许尾部数据,不能把所有额外字节都直接认定为 flag。
三、搜索可读字符串和元数据
先用 strings 搜索附件中的可打印文本:
strings -n 6 challenge
参数 6 表示只显示长度至少为 6 的连续可打印字符,可以减少杂讯。命令的输出可能包括文件名、路径、注释、提示语或 flag 片段。搜不到不代表附件里没有信息:数据可能被压缩、加密、编码或拆散在多个位置。
然后检查元数据。图片、音频、PDF 等文件都可能带有作者、软件、时间、注释、坐标或自定义属性。ExifTool 可以查看很多格式的元数据:
exiftool challenge
元数据是辅助线索。时间或作者字段可能来自正常软件,不一定是出题者留下的提示;把它和题目描述、文件内容一起判断。
四、分离嵌入对象:以图片中的 ZIP 为例
一个文件可能把另一种格式的完整数据附在内部,或者在末尾拼接第二个文件。binwalk 会扫描常见文件签名,并显示可能对象及其偏移量:
binwalk challenge.png
binwalk -e challenge.png
第一条命令只扫描;第二条尝试提取。扫描器命中不是最终结论:图片数据里偶然出现相同字节,也可能造成误报。因此要检查偏移量、对象大小、内容是否连贯,并对提取结果重新运行 file 或 7-Zip。
我做过一类图片取证题:附件是一张二维码图片。binwalk 在偏移 0x1D7(十进制 471)处发现加密 ZIP。这里的“偏移”表示线索从文件开头数到第几个字节,不是图片上的像素坐标。根据扫描结果提取压缩包,再继续结合题目提示处理密码,才得到目标内容。

提取后尝试打开压缩包时,可能会遇到密码提示,需要结合题目线索继续分析。

如果已经确认嵌入数据从偏移 471 开始,也可以在 Linux 副本上按偏移提取:
dd if=challenge.png of=embedded.zip bs=1 skip=471 status=none
file embedded.zip
7z l embedded.zip
dd 只是从指定字节位置复制数据,不会自动判断文件类型。偏移必须来自检查结果;如果偏移算错,输出文件可能损坏。Windows 用户可以用 binwalk 或十六进制编辑器按偏移选择数据,操作前先复制附件。
五、文件雕刻和提取结果复查
有些题目不是在原文件里完整嵌入一个对象,而是数据块被删除或文件目录信息损坏。此时可以尝试 foremost 这类文件雕刻工具:
foremost -i challenge -o recovered
它会根据已知文件签名尝试恢复数据。雕刻结果可能没有原始文件名和目录结构;如果文件是分段的、被压缩或加密,恢复也可能不完整。把输出目录当作新一批待分析附件,逐个检查,不要假设工具恢复出来的文件一定可打开。
六、常用工具分别适合什么
- file:初步识别文件类型。
- xxd、010 Editor、WinHex:查看文件头尾、偏移和二进制结构。
- strings:快速找可读文本,但不负责解码或解密。
- ExifTool:读取多种文件的元数据。
- binwalk:扫描和辅助提取嵌入对象。
- foremost:根据文件特征尝试雕刻或恢复数据。
- 7-Zip:查看压缩包目录、文件大小和加密状态。
工具之间可以互相验证:binwalk 说某处有 ZIP,提取后再用 file 识别、7-Zip 查看目录;如果内容仍然奇怪,再用十六进制工具检查头尾。
七、建议的排查顺序
- 保留附件原件,复制工作副本并记录 SHA-256。
- 用 file、文件头和文件属性确认真实格式。
- 搜索字符串,查看元数据、文件末尾和题目提示。
- 用 binwalk 检查内部嵌入对象;必要时尝试 foremost 恢复。
- 根据偏移提取对象,对每个输出重新识别类型。
- 继续分析嵌套文件、密码提示或编码数据,并记录每一步。
常见误区
- 只看文件后缀:后缀可以改,文件内容结构才是判断依据。
- 把命中当成真实附件:签名扫描可能误报,要检查提取结果能否自洽。
- 在原件上直接修改:解压、改头或修复都应在副本上做。
- 搜不到字符串就停止:内容可能压缩、编码、加密或拆分。
- 只分析第一层:提取出来的对象也可能是压缩包、图片或另一种待分析文件。
总结
入门取证可以记成“保留、识别、定位、提取、复查”五步。先保留原件并确认格式,再找元数据、字符串和结构异常;发现嵌入对象后按偏移提取,最后重新检查输出。每一步都记录工具、输入和结果,既能避免盲目操作,也更容易向别人解释自己的解题过程。

浙公网安备 33010602011771号