基于NTFS文件系统的文件手动定位方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于NTFS文件系统的文件手动定位方法
摘要:数据恢复在电子数据取证中起着关键性的作用,案件存储介质在取证过程中可能因为客观或者主观因素导致数据丢失,造成关键线索或者证据无法访问,此时需要对介质进行数据恢复操作,可通过数据恢复工具,进行全盘扫描,如果效果不佳,在考虑使用关键字搜索,最后可以尝试使用手动恢复,即使根据文件系统的目录信息定位所需文件。
本文主要是针对NTFS文件系统结构进行分析以及如何快速定位目标文件。
关键词:数据恢复、取证、文件系统、NTFS
1.NTFS文件系统简介
NTFS(New Technology File System)是微软1993年推出的用于Windows系统的文件系统,用于代替原来的FAT文件系统,从而提高性能。
NTFS自推出以来经历了多个版本的更新,更新历史如下:
表1 NTFS版本信息
1)安全性:NTFS的安全性很高,提供许多安全性能方面的选项,可
以在本机也可以通过远程的方法保护文件、目录。
2)可恢复性:NTFS文件系统数据存储的可靠性强,比较适合做服务
器文件系统,可以保证即使系统失败也不影响数据库的正确和完整。
3)文件压缩:NTFS文件系统带来的另一个好处是支持文件压缩功能,
用户可以选择单个或者多个文件使用NTFS自带的压缩功能来节省磁盘空间。
2.NTFS文件系统结构
当用户将磁盘的一个分区格式化成NTFS分区时,就建立了一个NTFS文件系统结构,NTFS文件系统与FAT文件系统一样[1],也是簇为基本单位对磁盘空间和文件存储进行管理。
一个文件总是占若干个簇,即使在最后一个簇没有完全放满的情况下,也是占整个簇空间,这也是造成磁盘空间浪费的主要原因。
文件系统通过簇来管理磁盘,并不需要知道磁盘空间大小,这样就使NTFS保持了与磁盘扇区大小独立性,从而使不同大小的磁盘选择合适的簇,故NTFS文件系统的结构大致可以用以下图1进行说明:
图1 NTFS文件系统结构
2.1NTFS文件系统引导扇区
NTFS文件系统的引导扇区是$Boot的第一个扇区,它的结构与FAT文件系统的DBR类似,所以习惯上也称该扇区为DBR扇区。
DBR 扇区在操作系统的引导过程起着非常重要的作用,如果这个扇区遭到破坏,系统将不能正常启动,NTFS文件系统的DBR扇区和FAT文件系统的结构一样,也包括跳转指令、OEM代号、BPB参数、引导程序和结束标志,如图2所示是一个完整的NTFS文件系统的DBR。
图2 NTFS文件系统引导扇区
图3 NTFS引导扇区模板
2.2NTFS文件系统元文件
将一个分区格化为NTFS后,格式化程序会往该分区中写入很多重要的系统信息[2],这些系统信息在NTFS文件系统中称为元文件。
这些文件用户是无法访问的,他们的文件名的第一个字符都是“$”,表示该文件是隐藏的。
图4 NTFS文件系统元文件
在NTFS文件系统中,元文件主要有16个,包括MFT($MFT)、MFT镜像文件($MFTMirr)、日志文件($Logfile)、卷文件($Volume)等,表2详细列出了这些元文件及其作用。
表2 NTFS文件系统的元文件
2.3NTFS文件系统文件属性
文件记录由两部分构成,一部分是文件记录头,另一部分是属性列表部分。
每个属性都可以分为两部分:属性头和属性体。
这里以$MFT文件自身的文件记录中的80属性为例,其结构如图5所示:
图5 80文件属性
3.NTFS文件系统文件定位
3.1处理思路
需要分析NTFS文件系统结构,通过分析文件系统结构去快速定位目录文件,需要定位以下几个数据:⑴读取NTFS的DBR扇区;⑵解析MFT;⑶定位根目录的文件记录;⑷记录根目录下索引项的偏移;
⑸读取索引项;⑹读取文件内容。
3.2处理步骤
1)读取NTFS的DBR扇区,使用WinHex工具加载镜像文件,并跳转
到引导扇区(DBR),分析BPB参数;
图6 NTFS文件系统的DBR扇区
图6蓝色方框里面的数据是源文件$MFT(以下简称MFT)的偏移(小端字节序),即0x 00 00 00 00 00 00 41 AA,单位是簇,转换成十六进制即MFT偏移16810个簇(相对于该分区的起始位置而言),红色方框里是每簇的扇区数0x 08,黑色方框里是每扇区字节数0x 02 00,即512个字节。
有了这些就可以算出MFT偏移的扇区数:16810 * 8 =134480个扇区,我们转到该分区的第134480扇区,就是MFT文件的第一个扇区了。
接下来该分析MFT了。
2)解析MFT,跳转到134480扇区,可看到MFT的FIFLE0标记;
图7 $MFT文件的文件记录结构
3)得到根目录的文件记录,根目录的文件记录是MFT的第5项,一
个MFT表项占2个扇区,所以根目录的文件记录的偏移为134480
+ 2 * 5 =134490个扇区。
转到该扇区,可以看到根目录的文件记录如下:
图8 根目录的文件记录
4)计算根目录下索引偏移,具体分析这个A0H属性,通过该属性中
的Run List定位到其数据流,该属性的Run List如图8中红色方框所示,11H表示用一个字节描述是索引的位置的起始(2CH),一个字节描述的是长度(01H),单位是簇,我们将其转换为10进制数值得到这样一个信息,索引项的起始位置为44簇,乘以每簇扇区数8,等于352扇区,长度为1个簇,跳转到352扇区。
如图9所示:
图9 索引区域
5)读取索引项,在标准索引头中,搜索需要定位的文件名,以找到
对应的索引项,搜索xlysoft的Unicode码,在扇区354找到,一个是txt文档,一个是png图片;
图10 文件索引项
根据索引项的结构得知,图10中红色方框中为文件的MFT参考号,及文件记录存放在第24000000H号扇区,转换成十进制为36号记录,一个MFT占2个扇区,其文件记录的开始为从MFT第一号记录向下跳转36*2个扇区,就是其文件记录存放的位置,计算方式为:134480+36*2=134552,跳转到134552扇区,如图11所示:
图11 xlysoft.png的文件记录
6)读取文件内容,对于文件,我们关注的是它的80属性,即数据属
性。
因为这个txt文件比较大,在MFT中无法存放其所有数据,因此这个文件的80属性为非常驻属性,属性体是一个data runs,指向存放该文件数据的簇。
从图11可以看到,该data runs指向一个簇流,该簇流一共占用了0x18个簇,即192扇区,起始偏移为0x40FB个簇,即133080扇区。
跳转到133080扇区即时做定位文件;
图12 xlysoft.png的文件在分区开始位置
结束位置:133080+192= 133272,133272扇区为文件结束扇区,编辑并复制至新文件,即把该文件完整提取成功。
4.结论
本文通过具体案例分析NTFS文件系统结构,并提出了基于文件系统属性以及文件记录结构手动定位文件位置,在一些特定案件中需要手动查找数据文件时可有效快速手动定位文件。