数据恢复大杀器 winhex 拌炒分区大杂烩

阅读量160493

|

发布时间 : 2021-08-31 16:30:13

 

前言

由于笔者强迫症加持,删文件总是彻底删除,可难免手残多点了文件最后追悔莫及,而且有些文件即便用那些专业恢复软件也不好使,加上 CTF 赛题中也有数据恢复的题型,遂决定系统学习一下数据恢复及文件系统的相关知识,挖掘学习 winhex 这份“传说中”的数据恢复大杀器。本文看点:利用 winhex,恢复重装系统后只剩一个分区大杂烩的骚操作合集。

 

前置知识

如何打开磁盘 F9

winhex 界面

磁盘克隆 ctrl+D

源盘:镜像盘或要恢复的盘
目标:可以是文件,分区或硬盘
遇到坏扇区时跳过的扇区数:数值越小速度越慢,但数据越完整

查找十六进制 ctrl+alt+X

更新快照 F10

一般恢复分区表后或者修复 DBR 后需要刷新下 winhex 就用得到这个功能

通用的数据恢复方法:
工具 -> 磁盘工具 -> 按文件类型恢复

注:不同的文件系统,存储的数据格式也会不同。
Little-endian 格式
FAT32、NTFS、exFAT、Extx 文件系统,DOS 分区表
Big-endian 格式
HFS 文件系统,EXT3 日志文件

格式化的目的:建立文件系统从而管理文件,并不只是通俗意义上理解的清空数据哦~

每种文件系统都有不同的管理方式:

NTFS、FAT32、Exfat 文件系统的第一个扇区叫 DBR 系统引导扇区

扇区:扇区是硬盘读写的基本单位,一般情况下每扇区的大小是512字节。在硬盘中每个扇区都有自己的编号,从零开始编号。
扇区结束字节为 55 AA ,若损坏则分区可能损坏。

簇:文件系统中用簇来做数据存储的单位。
簇大小是 2 的整数次幂,最大是 128 扇区每簇。
根目录的起始簇号:也是数据区的开始位置(一般为 2 号簇)
在根目录下的文件夹父目录的簇号是 0

FAT表:文件分配表(File Allocation Table)用来描述文件系统内存储单元(簇)的分配状态及文件内容的前后链接关系的表格。

winhex 搜索 16 进制数值最多只能搜索 50 个字节。

 

正文

分区大杂烩之 DBR 分区

OK,前面简单罗列了一些学习时教程中提到的前置知识,方便小白扫盲,接下来就进入正题了。

首先,我们拿到题目 vhd 文件,双击加载,打开磁盘管理,看到只有一个大分区,很明显这是一锅大杂烩,由于这是一个恢复系统后的文件,那么我们要明确一点,这里要做的数据恢复针对的是可能存在的 D E F 盘之类,而 C 盘是不考虑的。

接下来祭出我们要用到的大杀器 winhex,F9 打开磁盘,搜索一下 DBR 扇区

如下图,向下找到分区 1 的 DBR 扇区,

继续尝试搜索下面的扇区就搜索不到了,因为重装系统会把第一个分区破坏,所以我们“逆向一下”,从最后向上搜索,又找到一个 DBR

分析一下,这个 DBR 小于当前扇区的大小,所以它应该不是当前分区 1 的备份,而可能是未重装前的分区备份,接着算一下它的起始扇区号,公式就是当前 DBR 扇区号减去文件系统总扇区数

F3 继续搜索又双叒叕找到一个 DBR

哎,看一下这个当前扇区数和 DBR,它们大小很接近哦,没错了,这个才是“妃子”(当前分区 1 的备份)

但是我们偏就不看它,那找它干嘛?当然是为了确定“正主”的身份,所以我们现在可以放心地回到最后面找到的 DBR,跳到之前计算好的起始扇区的位置 2531325952,然后继续向上搜索 55AA,跳一下无人区插个眼,继续跳——

用前面提到的公式减一下,找到新的起始扇区号 1507323904,跳过去,发现这是一个 NTFS 文件系统,所以它也是一个备份,继续向上搜索,又找到一个 DBR,继续代公式,继续跳~

好,一直跳到 2048,发现这个扇区和分区第一扇区重合,说明这个是以前的 C 盘,而前面提到 C 盘并不是我们需要的,所以后面三个盘是我们要恢复的数据。

上诉几次跳转记录如下:
DBR扇区数 文件系统扇区数
2048 409599999
409602048 1097721855
1507323904 1023999999
2531323903
2531323904 (扩展分区表)
2531325952 614399999
3145725951

普通分区 04(FAT16) 07(NTFS)

此时四个分区我们都已经找到了,忽略 C 盘和扩展扇区,到起始扇区依次放置扇区数,并设置好普通分区 07

这就完了?忘了一开始找到的备份区有一个和总扇区一样大的了,所以这里还要把第一个分区的扇区数改一下,改多少看上表~

好家伙,恢复到这里就差临门一脚了,保存,更新快照,就可以看到有四个分区了,我们再到磁盘管理,重新加载 vhd 文件,可以看到后面三个 NTFS 分区正常,第一个 RAW 分区留着装个系统就可以了。

分区大杂烩之拿捏存储原理

然鹅,备份 DBR 是有一半的概率重叠在一起的,遇到这种情况上面的操作就不够用了,我们再拿捏一下存储原理。

首先,我们要明确一点,一般情况下,数据的存储都是从硬盘的开始往后存,所以这次要正着刚了~

用过虚拟机的小伙伴,肯定都有过分配内存的经历,一般 Windows 系统至少会分 20G 左右给 C 盘,我们往下划直到发现一堆乱码,猜测这可能是 D 盘的数据,那么从上面一堆 0 开始,向下搜索 55AA,我们找到两个 NTFS,先看第一个,发现当前 DBR 扇区号减去文件系统总扇区数等于 2048,说明上一个 DBR 是 C 盘的,而后面的 DBR 则是 D 盘的。

注:哎,你发现和我的图不一样?小伙砸,搜十六进制的时候加偏移计算了吗?512=510 哦

这个时候,我们又用到了上面的操作,依然代公式,不过因为这次是正着来的,所以是往下加,一图解千言~

然后又是相邻的两个 NTFS,我们要找下面的 DBR,继续加,继续跳~

这里加完发现跳转不了,因为我们上面用的是第二个 DBR,所以要减去一个扇区数再跳转,往下看看发现好多好多 0,那这就是扩展分区的特征,此时已经分析到 638971904 最后的 55AA。

实际分析中,我们可以用记事本记录一下,然后继续向下搜索分析,加完发现又不能跳转,那继续往上减去一个扇区,最后看到和总扇区数很接近了,说明这是最后一个盘,分析到这里,回忆一下,我们已经找到了三个逻辑盘,接下来就是重建分区表了。

重建之前要养成一个好习惯——备份,这里就备份到下面的扇区。

因为我们这里加上 C 盘一共才四个分区,所以可以用主分区代替扩展分区,

更新快照后发现,剩下三个盘没有盘符,而第一个盘仍有 500 G,说明第一个盘符太大覆盖了后面的盘,所以要用第二个盘符的扇区数减去第一个盘的起始扇区数 2048,再减一即空出的备份 DBR,修改分区表,这次更新看一下。

最后打开磁盘管理看到已经恢复到四个分区了。

 

后记

相比其他 CTF 赛题,数据恢复的知识点相对比较单调枯燥,但学好了可是能用来救急的,以前高深的数据恢复也被我们揭下了神秘的面纱,尽管笔者目前只是学习了针对重装系统后的简单实例分析,也依然获益颇深,后期更多实例总结静待分享,最后感谢不知名作者的教学分享。

本文由xcbyao原创发布

转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/248773

安全客 - 有思想的安全新媒体

分享到:微信
+11赞
收藏
xcbyao
分享到:微信

发表评论

内容需知
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 三六零数字安全科技集团有限公司 安全客 All Rights Reserved 京ICP备08010314号-66