分析NTFS系统,得到特定文件内容

因为软件安全实验课的关系,特做此实验,巩固上节学的知识

首先从C盘分出了10G的空间(虚拟机之前只有一个分区),然后创建E:\dir\enjoy\test.txt
test.txt里面的内容是1234567890
这里写图片描述

打开WinHex
这里写图片描述

从图中可以看到启动扇区从0扇区开始.共计63个扇区,属于隐藏扇区

这里写图片描述这里写图片描述

第一个分区从63扇区开始,总共62914496个扇区,每个扇区512字节,每个簇4096个字节,共计7864312个簇,$MFT所在簇号为786432,(柱面391;磁头160,扇区25)

这里写图片描述
这里写图片描述

第二个扇区起始扇区号为62914560,总计扇区20971520,每个扇区大小为512字节,每个簇4096个字节,总共2621439簇,MFT所在扇区为786432(柱面:4307,磁头:223,扇区:13)
注:第二和第二分区之间还有一个扇区,我不知道是干嘛的
最后从83875365扇区开始,是剩余扇区,共计10715个扇区

当然,通过软件,我们很容易得到磁盘的信息,但是,本文要做的,是手动查找这些信息,让我们对磁盘有更深刻的认识,首先了解一下磁盘的基本结构

硬盘的主引导记录也称 MBR,位于 0柱面 0磁头 1扇区,主引导记录扇区所在的磁道,通常称其为 0磁道,它属于隐藏磁道,这个磁道的 63个扇区属于隐藏扇区。操作系统的所有命令,除了 FDISK以外都不能访问它们,格式化程序 FORMAT,对此也无能为力。 所以分区软件也无法将这些扇区分配给别的分区了,只能从63号扇区开始分配给第一个分区。

一个四分区的基本磁盘结构如下
这里写图片描述

扩展分区中的每个逻辑驱动器都存在一个类似于MBR的扩展引导记录( Extended Boot Record, EBR),也有人称之为虚拟mbr或扩展mbr,意思是一样的。扩展引导记录包括一个扩展分区表和该扇区的标签。扩展引导记录将记录只包含扩展分区中每个 逻辑驱动器的第一个柱面的第一面的信息。一个逻辑驱动器中的引导扇区一般位于相对扇区32或63。但是,如果磁盘上没有扩展分区,那么就不会有扩展引导记 录和逻辑驱动器。第一个逻辑驱动器的扩展分区表中的第一项指向它自身的引导扇区。第二项指向下一个逻辑驱动器的EBR。如果不存在进一步的逻辑驱动器,第 二项就不会使用,而且被记录成一系列零。如果有附加的逻辑驱动器,那么第二个逻辑驱动器的扩展分区表的第一项会指向它本身的引导扇区。第二个逻辑驱动器的 扩展分区表的第二项指向下一个逻辑驱动器的EBR。扩展分区表的第三项和第四项永远都不会被使用。
这里写图片描述

MBR基本结构
这里写图片描述

硬盘分区结构信息
这里写图片描述

基本知识介绍完,现在我们来查看一下
这里写图片描述

第一个分区

80 活动分区
01 01 00 起始扇区:磁头号1,扇区号1,柱面号0
07 NTFS分区
FE FF FF 结束扇区:?
3F 00 00 00 起始扇区 3F(63)
C1 FF BF 03 本分区扇区总数3BFFFC1H=62914497(估计加上了第一分区和第二分区之间那个分区)

第二个分区

00 非活动分区
FE FF FF 起始扇区?
07 NTFS分区
FE FF FF 结束扇区?
00 00 C0 03 起始扇区 3C00000(62914560)
00 00 40 01 本分区扇区总数 1400000(20971520)

除了,起始(结束)磁头号扇区号,柱面号出了点问题(柱面号10位不够),其他的与软件测出来的一致

因为我们要找的文件在E盘,属于第二个分区,所以我们找到第62914560个扇区
这里写图片描述

通过前面一片博客的介绍,我们从图中得知这个分区每个扇区大小为512(200H)字节,每个簇占8个扇区(4096字节,进行了4K对齐),这是块硬盘(F8),每个磁道63(003F)个扇区,每个柱面255(00FF)个磁头,总计20971519(0000013FFFFF)个扇区,$MFT开始簇号C0000

所以我们找到$MFT所在扇区,3C00000+C0000*8=69206016,然后找到第五个文件记录,69206016+2*5=69206026
这里写图片描述

我们发现,90属性里没啥有用的资料,于是再往下看0AH(索引分配)的属性,发现08位上的值为1,说明这是非常驻属性,从偏移为20位置的值48得知Data Run的偏移地址,Data Run的值是31 01 A3 3D 14 00,所以索引地址在起始簇号为143DA3处,占一个簇.扇区号:3C00000+143DA3*8=73526552,

这里写图片描述
这里写图片描述
这里写图片描述

通过8H位上的值来划分索引项,找到我们需要找的文件夹dir所在项,得到文件的MFT参考号1D(偏移0H处,只取前面四位?这个我还不太清楚,看到大多版本是8位,但是4位才能得到),扇区号:3C00000+C0000*8+1D*2=69206074,$MFT下第1D个文件记录
这里写图片描述

可以通过dir的文件属性90H找到enjoy目录的索引根的MFT参考号1E,同时这里也可以看到enjoy的父目录dir的MFT参考号1D,扇区号:3C00000+C0000*8+1E*2=69206076
这里写图片描述

可以通过enjoy的文件属性90H找到enjoy.txt的文件索引根的MFT参考号1F,扇区号:3C00000+C0000*8+2*1F=69206078

这里写图片描述

通过enjoy.txt的文件属性80H得到文件enjoy.txt的内容1234567890

至此,我们成功手动从yingpan中找到我们想要找到的文件所在位置,以及文件内容.
很多时候我算地址,前面用的16进制,后面用的10进制,..这点需要注意啊,如有其他疑问,请留言告诉我,谢谢!!

发布了42 篇原创文章 · 获赞 37 · 访问量 14万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章