Raid重组复习

Raid重组复习

今天看了下这次2021长安杯的手册,有考RAID重组知识点,所以复习下。一般需要手动分析偏移、条带、盘序的都是硬Raid,我们这里就重点看硬Raid的重组。至于软Raid以前美亚也考过,取证大师能直接重组,而且对性能其实没啥提升,大家做个了解即可。

image

RAID5简介

现在用的Raid一般都是Raid5,什么是Raid5呢?

image

RAID 5的特点、原理

RAID5 应该是目前最常见的 RAID 等级。校验数据分布在阵列中的所有磁盘上,校验原理 A1^A2^A3=Ap。假如此时Disk2损坏了,那么用Disk0、1、3互相异或,A1^A2^Ap=A3,可以还原磁盘数据。

即损坏一块硬盘不影响数据完整。

当阵列磁盘 数量增加时,并行操作量的能力也随之增长,可比 RAID4 支持更多的磁盘,从而拥有更高的容量以及更高的性能。

Raid5的存储效率=(m-1)/m(m为硬盘数量)。

Raid阵列参数:

前偏移:物理磁盘所在扇区号(MBR偏移)

条带:块的大小

盘序:物理磁盘组成Raid时的顺序

Raid Level:Raid5、Raid6....

循环方式(Raid5、6、HP)

RAID5的左异步、左同步、右异步、右同步

左循环与右循环

所谓“左右”即循环方向,是指 RAID 中的校验块的走向,一种是左循环,一种是右循环。

左循环

image

即校验块P0,P1....Pn从左至右旋转而下

右循环

image

即校验块P0,P1....Pn从右至左旋转而下

异步与同步

在 RAID5 中,数据块的写入有两种方式,一种是异步,一种是同步

异步

写满一个条带需要转入下一个条带写入时,直接回到 0 号盘进行写入。也就是每个条带内都是由低号盘开始写入,写满一个块后转向高号盘继续写入,这种方式不考虑校验块的位置,称为异步。

image

D0 D1 D2 P0

D3 D4 P1 D5

D6 P2 D7 D8

P3 D9 D10 D11

同步

写满一个条带,需要将数据写入下一个条带时,先判断下一个条带的校验块位于哪个磁盘,然后将数据写入校验块所在的磁盘的下一个磁盘,写满一个数据块后转向高号盘,直至该条带内编号最大的数据块写满后,再回到同条带内的 0 号盘写入,直至本条带内的校验块所在的磁盘的前一个磁盘。

也就是说,一个条带内的第一个数据块总是跟在本条带内的校验块之后。

image

D0 D1 D2 P0

D4 D5 P1 D3

D8 P2 D6 D7

P3 D9 D10 D11

NTFS的RAID重组案例

刚才说到,Raid阵列的参数有:

前偏移条带盘序Raid Level循环同步方式

Raid Level已经确定。

Step1.确定前偏移

首先,我们要确定前偏移

我们初始拿到的检材是四个镜像,簇视图非常难分析,我们首先要将他们挂载起来,用FTK Imager、Encase都可以

image

image

这个案例中首个扇区就是MBR,所以偏移为0

image

还有一点就是,这样能够通过右上方的箭头直接看分区大小,一个是350MB,一个是17.8GB,这个案例每个盘容量是6GB,350MB+17.8GB=18gb=(4*6-6)/4*6,可以确定这确实是个Raid5阵列

Step2.确定条带大小

众所周知,NTFS文件系统有$MFT(文件记录表),它是NTFS中通用规律性最强的一个文件,其中的记录ID对于我们判断条带的大小和盘序有很大的帮助

寻找$MFT

最简单的一个方法就是Ctrl+F5FILE(46 49 4C 45)签名。

image

有时可能经过多次格式化硬盘会残留一些以前$MFT和它的mirror备份,要注意区别,文件记录假如是连续的,那基本能确定是$MFT。

当然,最稳的就是从DBR中确定$MFT的位置

image

030H-037H 代表$MFT在该分区的偏移

接下来我们就通过$MFT在每个磁盘相同扇区的ID来判断条带大小

001在2336796扇区的ID为14

image

002在2336796扇区的ID为78,003在2336796扇区的ID为46,004在2336796扇区的ID为110

image

我们发现ID是个等差数列,为什么会等差,我们回去看看Raid5的原理图,就知道为什么这里是等差的。

他们的ID依次等差32,说明块与块之间依次差32个$MFT,一个$MFT为1KB,那么条带大小就是32KB

image

Step3.确定盘序

条带确定好了,接下来通过校验块确定盘序

校验块怎么确定?根据Raid5的校验原理:p=x1^x2^x3,如果x1,x2,x3存储的是明文,那么p异或两次后会是乱码。所以,我们可以从$MFT的明文部分Filename,来判断校验块。

image

image

如果文件名是明文,他一定不是校验块。

一个扇区可能不是只有一个Filename是乱码,我们通常需要查看多个条带组才能判断

一个条带是32KB,于是就要向下跳转64扇区=2,336,860

image

按照上面的方法,依次分析,一般几块硬盘就分析几个条带组

image

把校验块排好,我们假设出一个左同步的盘序

image

这还不是最终的顺序,只是中间某一段的顺序

最终的顺序我们要通过前偏移确定,MBR从哪个盘找到的,就把那个盘当做第一个盘

由于检验原理,可能出现两个盘有MBR,最简单的方法就是猜,无非就两种可能嘛。比如我这里的案例,MBR在1和4中,一种是1324,一种是4132

Step4.RStudio 重构

打开4个镜像

image

四个镜像都检测到了,创建虚拟块RAID和自动检测

image

image

我们4132顺序试一下

image

编辑好盘序、偏移、RAID level 和条带大小(数据块大小)

点击应用,识别出两个分区

image

随便打开一个分区

image

说明顺序不对,那么就应该是另一种1324

image

应用,点进一个分区

image

可以看到磁盘的内容,找一个大于4条带大小的文件打开,能打开就说明重组成功了

这时候就可以创建一个镜像了,这个镜像就可以用来做后面的仿真

image

总结

看一遍不如做一遍,感觉是不一样的。重组RAID的关键在于找到文件系统的某些规律,通过同一扇区不同磁盘出现的不同规则来确定条带大小和校验块。但愿明天比赛出现了Raid重组能熟练的做出来。

posted @ 2021-10-23 21:29  0xL4k1d  阅读(1308)  评论(0编辑  收藏  举报