RAID重组,原来并不复杂!

  • A+
所属分类:安全闲碎
RAID重组,原来并不复杂!
RAID重组,原来并不复杂!

 本文由实习生小茆同学原创,转载请注明。

之前小编遇到RAID磁盘重组的题目,有点无从下手,都是依赖某些自动化软件,自动完成重组和取证。这几天听了武汉天宇宁达的数据恢复的大神关于手动分析磁盘顺序的课程,学到很多东西,在这想跟大家讨论一下RAID重组的一些知识和小编的一些个人总结,有不足的地方,欢迎大家指正噢!

RAID重组,原来并不复杂!

磁盘阵列(RAID)

磁盘阵列(RAID) 是什么?百度百科如下描述:

磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。 

磁盘阵列是由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。

磁盘阵列还能利用同位检查(Parity Check)的观念,当数组中任意一个硬盘发生故障时,仍可读出数据。在数据重构时,可将数据经计算后重新置入新硬盘中。

简单来讲呢,磁盘阵列就是用多个独立的磁盘组合在一起形成的一个大的磁盘系统,可以实现比单块磁盘更大的存储容量、更好的存储性能和更高的传输速率。

使用单块磁盘进行数据存储会存在很多缺陷,比如:磁盘容量不足、寻址(可以简单的理解成磁头在盘片上定位数据的一个过程)和读写的时间长,如果磁盘出现物理损坏或者逻辑损坏,数据很容易丢失等。而解决这些问题最好的方法就是重组RAID,磁盘阵列用多个容量小且廉价的硬盘代替容量大且昂贵的大硬盘,不仅能保证数据的安全可靠,还提高了经济效益,一举多得! 常见RAID级别有:RAID0,RAID1,RAID5。下面就由小编分别为大家介绍一下。

  RAID0和RAID1  

RAID0将两块以上的磁盘组合在一起形成一个大容量的存储设备。数据被分散存储在成员盘中,读写性能在所有RAID级别中是最好的,读写时可以并行处理(能同时执行两个或多个处理),是所有RAID级别中,速度最快的;但是,它没有差错控制功能,只要其中一个盘的数据发生错误,最终重组后获取的数据也是错的。简单说,RAID0就是把几块磁盘的空间合并起来一起使用,用户采用RAID0主要是为了追求大的存储空间。但是因为没有数据冗余功能,只要其中一个磁盘发生物理损坏,所有的数据也都会丢失。

RAID重组,原来并不复杂!

RAID1 又称磁盘镜像,需要两块以上的物理磁盘实现,其中有一块是主硬盘,其它都是镜像硬盘。我们平时最常遇到的是2块硬盘组成的RAID1。它的原理,就是向主硬盘写数据的时候,会将数据同时备份到另外一块镜像磁盘中,实际上这是将多块磁盘当做一块用。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1可以提高读取性能。RAID1提供了很高的数据安全性和可用性,当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。但它也是磁盘阵列中单位成本最高的。

RAID重组,原来并不复杂!

  细聊RAID5  

相比于前述两个RAID方案,RAID5的优点在于兼顾存储性能、数据安全、存储成本 。RAID 5至少需要三块磁盘,数据以条带为单位分布到各个磁盘上(这里就不得不说一下“条带”了,这是RAID处理数据的基本单元)。RAID 5 不对数据进行备份,而是把数据和与其相对应的奇偶校验(一种校验代码传输正确性的方法)信息存储到组成RAID5的各个磁盘上。RAID 5其中一个磁盘发生数据损坏,其自身可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。

RAID5校验位算法原理 

P=D1 xor D2 xor D3 … xor Dn (D1,D2,D3 … Dn为 数据块,P为校验,xor为异或运算)。XOR(Exclusive OR)的校验原理如下图:

A

B

XOR结果

0

0

0

0

1

1

1

0

1

1

1

0

这里的A与B值就代表了两个位,从中可以发现,A与B相同时,XOR结果为0,A与B不同时,XOR结果就是1。简单记忆的话,就是:“同位为0,异位为1”。知道XOR结果和A与B中的任何一个数值,就可以反推出另一个数值。比如A为1,XOR结果为1,那么B肯定为0;如果XOR结果为0,那么B肯定为1。这就是XOR编码与校验的基本原理。

根据数据条带和校验条带的分布,RAID5常规可分为常规左同步(左循环同步),常规左异步(左循环异步),常规右同步(右循环同步),常规右异步(右循环异步)。

下面是小编画的几张示意图。除了关注标红的校验条带P,也要观察数据条带S的走位噢。

RAID重组,原来并不复杂!

常规左异步/左循环异步

RAID重组,原来并不复杂!

常规左同步/左循环同步

RAID重组,原来并不复杂!

常规右异步/右循环异步

RAID重组,原来并不复杂!

常规右同步/右循环同步

以上就是RAID的简单介绍,下面,让我们正式进行RAID重组。先来看一下特殊情况:

如果需要排序的物理盘的数量为奇数,恭喜你,校验扇区将非常容易。RAID5只有一块物理盘为校验盘,当物理盘的数量为奇数时,说明在同一条带组中数据条带的个数为偶数,而偶数的相同数值在经过异或运算后结果为0 ,我们直接观察文件头,数据文件头应为“46494C45”,而校验文件头则为“00000000”,一眼就可以看出来。

当盘数为偶数时,上一招就不管用了,校验文件和数据文件的文件头均为“46494C45”.此时我们要具体分析文件记录中的每个属性了。

RAID重组,原来并不复杂!

MFT属性

在分析RAID过程中,我们会涉及到MFT属性的相关知识。因此,我们先来说说属性。

什么是文件属性?略懂DOS的朋友应该知道,一个文件具有文档、只读、隐藏、系统这几个不同的属性。在NTFS文件系统中,虽然这几个传统属性依然存在,但属性的概念有了很大变化。在NTFS中有一个说法:“一切东西都是属性”,就连我们看到的文件内容也是一种属性。这些属性的列表不是固定的,可以随时增加,这也就是为什么你会在NTFS分区上看到文件有更多的属性。

NTFS文件系统中的文件属性可以分成两种:常驻属性和非常驻属性。常驻属性直接保存在MFT中,像文件名、时间信息都是常驻属性。非常驻属性保存在MFT之外,但会使用一种复杂的索引方式来进行指示。

为了理解MFT中的各种属性,小编以下图为例并标注了其MFT属性结构。

RAID重组,原来并不复杂!

10H属性

($STANDARD_INFORMATION)

包含文件的一些基本信息,如文件的传统属性,文件的创建时间和最后修改时间和日期,文件的硬链接数等等。

20H属性

($ATTRIBUTE_LIST)

属性列表,当一个文件需要好几个文件记录时,才会用到20H属性。20H属性记录了一个文件的下一个文件记录的位置。

30H属性

($FILE_NAME)

用于存储文件名 ,是常驻属性。

80H属性

($DATA)

文件数据属性,可以存储小文件的内容。

90H属性

($INDEX_ROOT)

索引根属性,实现NTFS B+树索引的根节点。

A0H属性

(INDEX_ALLOCATION)

索引分配的树节点

B0H属性

($BITMAP)

$MFT文件和索引位图

E0H属性

($EA)

扩充属性

F0H属性

早期NTFS文件才有的属性

100H属性

($LOGGED_UTILITY_STREAM)

EFS加密属性

大家可能要问了:现在是说RAID重组,那么讲MFT的这些属性有什么用呢?

其实,MFT属性帮我们来判断RAID的盘序和是否重组成功的一种方法。可以分析MFT中几个常见属性是否存在,并根据需要进一步分析,比如判断10H属性中时间值是否合理,30H属性中文件名是否正常,80H属性中RUN LIST结构是否正确,就可以帮助我们了解RAID的详细信息。

是不是看着有点晕,没事,咱们接下来以实例说明。

RAID重组,原来并不复杂!

RAID重组实操

大家涉及重组RAID的题目时,可以参考小编推荐的方法:先用傻瓜软件分析一下盘序,再用专业工具手工验证。不过还需要郑重提醒大家:实战中,傻瓜软件并不是万能的,结果也不一定是准确的,可以通过手动分析去验算结果。下面的实操,我会以不同的取证软件来实现RAID重组,并演示实操过程中这些软件的配合使用。

  RAID重组实操之自动重组  

· 取证大师

步骤如下,选择添加设备,选择”RAID磁盘组”添加镜像,点击“自动计算磁盘序列”,软件会帮你自动列出可能的盘序供选择。

RAID重组,原来并不复杂!
RAID重组,原来并不复杂!

自动化软件跑出来的结果是:RAID5 - 常规左同步,条带大小为128字节。因为操作很简单,我就不多说这个软件了。

· Raid Reconstructor

这是一个经典的Raid磁盘阵列数据恢复软件。使用软件加载镜像,进行异或测试,全绿色则说明这些盘是同步的。

RAID重组,原来并不复杂!
RAID重组,原来并不复杂!

 选择RAID级别和数量,点击“Open drives”,再点击“analyze”。软件就会帮你排好盘的顺序,并计算出条带大小和结构。

RAID重组,原来并不复杂!
RAID重组,原来并不复杂!

软件自动分析出来的结果是:RAID5 - 常规左同步,条带大小为128字节,结果一样。

· WinHex

将要排序的镜像转换成磁盘,根据列出的组合尝试重组RAID,不过组合方式需要一个一个试( 有一点小麻烦~-~)。

RAID重组,原来并不复杂!
RAID重组,原来并不复杂!

  RAID重组实操之手工重组  

当自动化软件失效的时候,RAID是不是就组不出来了呢?当你掌握了RAID原理和文件系统的相关知识后,就完全可以手工判断出条带分布和盘序。下面以四个磁盘的RAID5阵列为例,带大家实操手工重组。镜像文件为1.img、3.img、4.img、5.img。

先使用Diskexplorer for NTFS(NTFS磁盘编辑工具)打开1.img,搜索MFT文件头。

RAID重组,原来并不复杂!

选择一片显示属性的连续扇区

RAID重组,原来并不复杂!
RAID重组,原来并不复杂!

从726400到726528,间隔128字节,表明条带大小为128字节(64KB)。通过观察,我们不难发现,在这128字节中,几乎所有的文件只包含10H属性和30H属性,没有80H属性、90H等属性,也就是说这些文件都是不完整的,所以我们认为这是校验条带。现在我们查看另外三个磁盘镜像的相同地址,检验一下它们是否都是数据条带。

RAID重组,原来并不复杂!
RAID重组,原来并不复杂!
RAID重组,原来并不复杂!

其他几次磁盘的相同位置可以看到10、30、90等属性数据完整,显而易见,这几个镜像此时均为数据条带。

我们来做一个表格,把偏移地址726400位置对应的数据和校验信息记录下来。

偏移地址

1.img

3.img

4.img

5.img

726400

P

D

D

D

再往下数128个字节

RAID重组,原来并不复杂!
RAID重组,原来并不复杂!
RAID重组,原来并不复杂!
RAID重组,原来并不复杂!

相比于其他3个镜像文件,5.img此时大部分都没有80H、90H属性,推测5.img为校验条带。

继续填充表格,整合分析结果,推测为RAID结构为左循环。

偏移地址

1.img

3.img

4.img

5.img

726400

P

D

D

D

726528

D

D

D

P

再向下数128字节,验证我们的推测

RAID重组,原来并不复杂!
RAID重组,原来并不复杂!
RAID重组,原来并不复杂!
RAID重组,原来并不复杂!

相比于其他镜像,4.img大部分都没有80H,90H属性,推测4.img为校验条带。继续记录,并检验结果符合推论。

偏移地址

1.img

3.img

3.img

3.img

726400

P

D

D

D

726528

D

D

D

P

726656

D

D

P

D

现在我们可以确定,此RAID 5为左循环,至于是常规左同步,还是常规左异步,主要是RAID卡通过计算决定,要分辨很繁琐,这就不多加赘述。至此我们已经把范围缩小至两个选项,如果能打开,就大功告成了!

  提示:使用Diskexplorer for NTFS可以看见文件名,如果镜像打开时,如下图包含“$Boot”这类元文件,这个磁盘有很大机率是第一块盘,保险起见,还需要再验证。

RAID重组,原来并不复杂!

查看属性的话,也可以在WinHex/X-Ways查看文件16进制,查看是否存在,并可以进一步分析。下面以10H属性为例,不同的字节表示的含义也不同。

RAID重组,原来并不复杂!
RAID重组,原来并不复杂!

不过,配合WinHex中的模板管理器,其实可以更加直观地查看文件记录内容。打开镜像,点击查看,选择“模板管理器”,选择“NTFS文件记录”,即可对当前的文件记录进行解释。

RAID重组,原来并不复杂!
RAID重组,原来并不复杂!
RAID重组,原来并不复杂!
RAID重组,原来并不复杂!

至此,本篇内容已经全部结束!不知大家对小编用到的几个软件和手工分析RAID方法是否掌握了呢。

RAID重组,原来并不复杂!


RAID重组,原来并不复杂!

 本文由实习生小茆同学原创,转载请注明。

本文始发于微信公众号(数据安全与取证):RAID重组,原来并不复杂!

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: