磁盘镜像与文件恢复
磁盘镜像与文件恢复
本文适合
拿到 .dd、.img、.raw、.E01、虚拟磁盘或分区镜像后,需要恢复文件和重建文件系统证据的 Misc 学习者。学完你能:判断镜像是整盘还是分区,列目录、恢复删除文件、提取未分配空间证据,并把恢复物继续做真实类型分析
磁盘镜像题关注文件系统层面的证据:分区、目录、删除文件、未分配空间、日志、元数据和残留内容。
一句话判断
看到磁盘镜像、分区表、删除文件、E01/dd/img/raw/vmdk、lost+found、$MFT、未分配空间或文件恢复提示时,先只读识别镜像层级,再按文件系统证据恢复内容。
题目中常见信号
说明:磁盘或分区镜像
第一动作:判断整盘/分区和文件系统
说明:虚拟机磁盘
第一动作:转换或挂载只读分析
说明:目标在删除记录或未分配空间
第一动作:fls -rd、tsk_recover、carving
说明:可能涉及 MFT、USN、ADS
第一动作:查 $MFT、$UsnJrnl、备用数据流
说明:未分配空间或隐藏分区
第一动作:查分区表、carving、strings
核心概念
磁盘题要先分清三层:
- 物理/镜像层:整盘镜像、分区镜像、虚拟磁盘、E01 取证镜像。
- 文件系统层:FAT、NTFS、ext、APFS 等如何保存目录和元数据。
- 数据恢复层:删除记录、未分配空间、日志、carving、备用数据流。
删除通常只是元数据变化,数据块可能仍在;但如果空间被覆写,恢复物会损坏。因此磁盘题要把“文件名证据”和“内容证据”都记录下来。
最小分析流程
- 记录镜像大小和 hash,后续所有操作使用只读副本。
- 用
file、mmls判断它是整盘还是分区。 - 用
fsstat确认文件系统类型和偏移。 - 用
fls -r列目录,fls -rd找删除文件。 - 用
icat按 inode/MFT 编号提取目标文件。 - 用
tsk_recover或photorec批量恢复,再对恢复物跑file。 - 必要时建立时间线:
fls -m+mactime。 - 将恢复出的图片、压缩包、文档继续转对应文章分析。
最小验证示例
file disk.img
mmls disk.img
# 假设分区从 2048 sector 开始
fsstat -o 2048 disk.img
fls -o 2048 -r disk.img | head
fls -o 2048 -rd disk.img
# 提取 inode/MFT 编号为 128 的删除文件
icat -o 2048 disk.img 128 > recovered.bin
file recovered.bin生成时间线:
fls -o 2048 -r -m / disk.img > bodyfile.txt
mactime -b bodyfile.txt > timeline.csv判断依据:
mmls 有分区表 -> 后续命令需要 -o 偏移
fls -rd 出现 deleted 条目 -> 删除记录可恢复
icat 输出能被 file 识别 -> inode 提取有效常见利用 / 解题路线
路线总览:
关键证据:fls -rd 有删除项
常用动作:icat 或 tsk_recover
关键证据:可见目录无 flag,但镜像很大
常用动作:photorec、foremost、strings
关键证据:$MFT、$LogFile、$UsnJrnl
常用动作:解析 MFT/USN 时间线
关键证据:文件名含冒号或隐藏流
常用动作:fls -r 找 filename:stream 并 icat
关键证据:$Recycle.Bin、INFO2、$I/$R 文件
常用动作:还原原文件名和删除时间
关键证据:VMDK/QCOW2/OVA
常用动作:转 raw 或只读挂载后分析
关键证据:恢复物是图片/压缩包/文档
常用动作:转对应 Misc 文章继续解
常见失败原因
常见原因:漏了分区偏移或镜像不是文件系统
排查动作:先跑 mmls、file
常见原因:整盘镜像需要 offset,或文件系统损坏
排查动作:用 TSK 工具只读分析
常见原因:数据被覆写或提取错 inode
排查动作:换 carving、检查文件头和大小
常见原因:文件系统不保留目录项或已覆写
排查动作:查日志、未分配空间、strings
常见原因:时区、MACB 字段理解错
排查动作:保留原始时间字段并说明来源
常见原因:没有按题目线索筛选
排查动作:用时间、文件名、类型、strings 聚焦
迷你案例
题目给 disk.dd,提示“文件被删了”。先确认分区:
mmls disk.dd
fls -o 2048 -rd disk.dd输出中有:
r/r * 128: flag.zip提取并验证:
icat -o 2048 disk.dd 128 > flag.zip
file flag.zip
7z x flag.zip这条链说明 flag 不在当前目录,而在删除目录项中;128 是恢复证据,不能只写“用工具恢复得到 flag”。