NTFS文件系统实例分析
- 格式:doc
- 大小:28.50 KB
- 文档页数:2
实验报告(四)分析MRB表中的主分析区
一、实验目的:
1)掌握利用WinHEX软件查看硬盘的MRB表
2)认识MRB在计算机启动过程中的作用并熟悉MRB的结构。
3)分析MRB中每一个分区表项的意义。
二、实验环境(硬件或软件):
WinHEX软件,虚拟机WinXP系统环境
三、实验要求(或实验原理):
分析自己的硬盘,使用下表所示的方式描述当前分区的情况
四、实验内容(实验步骤或者程序编写):
1.搜索第一个文件记录的位置
分析图中的80属性,可看出它的数据所在的簇流为32 40 01 00 00 0C,即簇流从00 00 0C (786432)簇开始,共40 01(320)簇
2.分析第二个文件记录
、
五、实验结果及分析:
做实验时要注意:CHS地址需要先将十六进制数值换算为二进制,再进行拆分和换算。
不同的操作系统可能会使用不同的分区类型,有时可利用分区类型值来隐藏某些分区。
LBA地址换算时要先高低换位后再换为十进制,这个地方的高位、低位是以字节为单位的。
实验二 NTFS文件系统设置实验一、实验目的1、掌握NTFS文件系统的基本概念2、掌握NTFS文件系统进行本地安全权限设置的操作3、掌握磁盘配额等操作二、实验要求1、设备要求:1台装有Windows Server 2012操作系统并装有Hyper-V的计算机2、每组1人,独立完成三、实验基础实验在Hyper-V虚拟机完成,掌握Hyper-V的基本操作,理解NTFS文件系统与权限设置的基本操作。
四、实验要求与步骤任务1:1)选择Windows 2008/2012虚拟机;2)添加1个虚拟磁盘(3G容量)-(建议使用SCSI控制器);3)启动Windows 2008虚拟机,用计算机管理-存储-磁盘管理,将磁盘联机并初始化;4)新建3个简单卷,空间大小为1G, 分别设置驱动器号为F、G、H,并格式化F盘文件系统为FAT32;G、H盘文件系统为NTFS任务2:创建用户S1、S2、S3等,在G盘中建立文件夹G:\DOC,用记事本存放文件111.txt ,222.txt等, 在H盘中建立文件夹H:\S1、H:\S2、H:\S3操作实现以下设置要求,并验证:1) G:\DOC中存放着公司重要的资料,只有S1、S2普通用户对其只拥有读取权限,Administrator对其拥有完全控制权限2)H盘以S1、S2、S3命名的个人文件夹,对应用户拥有完全控制权限,其它用户无任何权限(如:H:\S1文件夹,S1用户拥有完全控制权限,其他用户无任何权限)4)文件或文件夹的复制和移动对NTFS权限的影响,实验操作并观察属性的变化5)在H盘上启用磁盘配额:把S1 账户的配额设置为:磁盘空间限制为20MB,警告等级为18MB把S2 账户的配额设置为:磁盘空间限制为30MB,警告等级为28MB切换到S1 账户,向H:\S1复制一些文件,当复制到一定程度时会出现什么问题?任务3:用Administrator 帐户登录,在H盘建立一个文件夹test,在该文件夹中建立一个文本文件A.txt、B.txt,对A.txt压缩、对B.txt加密对test 文件夹进行如下设置:允许访问的帐户有S1 、S2、S3(其它的帐户和组都删除),S1的访问权限为“读+写”,S2的访问权限都为“完全控制”,S3的访问权限为“读”分别切换到S1、S2、S3用户登录,验证以下操作是否允许:如果S3用户离职,管理员删除了其账户,但发现该员工计算机中有文件夹管理员无法访问,管理员该如何访问该文件夹并给其它人设置NTFS权限五、练习与思考1、简述NTFS、FAT32、FAT文件系统的区别。
NTFS文件解析系统的简单分析正如我们所知道的,目前主流anti-rootkit检测隐藏文件主要有两种方法,一种是文件系统层的检测(像IceSword自己构造irp包发到文件系统驱动),另一种就是磁盘级别的低级检测,直接对磁盘的数据进行分析,比如SnipeSword、filereg和unhooker.最近对第二种方法的一部分(及NTFS文件系统的解析)做了一些学习,于是就写点学习的东西与大家分享,其中有很多错误和不足希望大牛们指出。
(1)准备工作――获取分区的一些基本参数我们可以用CreateFile打开某个盘,读取偏移为0的扇区的数据。
具体的数据结构为:typedef struct tag_NTFSBPB{BYTE bJmp[3];//跳转指令BYTE bNTFlags[4]; // 文件系统NTFS的为"NTFS"BYTE bReserve1[4]; //一般为四个空格WORD wBytePerSector;//每扇区字节数BYTE bSectorPerCluster//;每簇扇区数WORD wReserveSectors;//保留扇区数BYTE bFatNum; // 总是0WORD wRootDirNum; //总是0WORD wSectorOfParti; //总是0BYTE bMedium;//WORD wSectorPerFat; //总是0WORD wSectorPerTrack;//WORD wHeadNum;//DWORD dwHideSector;//DWORD dwSectoOfParti; //总是0BYTE bDeviceFlag;//BYTE bReserve2;//WORD wReserve3;//ULONGLONG ullSectorsOfParti; //扇区总数ULONGLONG ullMFTAddr;//$MFT的起始逻辑簇号ULONGLONG ullMFTMirrAddr;// $MFT的起始逻辑簇号BYTE bClusterPerFile;//BYTE bReserve4[3];//DWORD dwClusterPerINDX;//BYTE bSerialID[8];//} NTFSBPB, *LPNTFSBPB;其中最重要的应该就是通过ullMFTAddr获得$MFT的起始逻辑簇号进而找到根图(1)目录的位置在进行分析。
详解NTFS⽂件系统⼀、分析NTFS⽂件系统的结构当⽤户将硬盘的⼀个分区格式化为NTFS分区时,就建⽴了⼀个NTFS⽂件系统。
NTFS⽂件系统同FAT32⽂件系统⼀样,也是⽤“簇”为存储单位,⼀个⽂件总是占⽤⼀个或多个簇。
NTFS⽂件系统使⽤逻辑簇号(LCN)和虚拟簇号(VCN)对分区进⾏管理。
逻辑簇号:既对分区内的第⼀个簇到最后⼀个簇进⾏编号,NTFS使⽤逻辑簇号对簇进⾏定位。
虚拟簇号:既将⽂件所占⽤的簇从开头到尾进⾏编号的,虚拟簇号不要求在物理上是连续的。
NTFS⽂件系统⼀共由16个“元⽂件”构成,它们是在分区格式化时写⼊到硬盘的隐藏⽂件(以”$”开头),也是NTFS⽂件系统的系统信息。
NTFS的16个元⽂件介绍:⾸先找到该分区的起始扇区,具体可以参考这篇⽂章。
⼆、分析$Boot⽂件$Boot元⽂件由分区的第⼀个扇区(既DBR)和后⾯的15个扇区(既NTLDR区域)组成,其中DBR由“跳转指令”、“OEM代号”、“BPB”、“引导程序”和“结束标志”组成,这⾥和FAT32⽂件系统的DBR⼀样。
下图是⼀个NTFS⽂件系统完整的DBR。
下⾯我们分析⼀下DBR中的各参数EB 58 90:(跳转指令)本⾝占2字节它将程序执⾏流程跳转到引导程序处。
“EB 58 90″清楚地指明了OS引导代码的偏移位置。
jump 52H加上跳转指令所需的位移量,即开始于0×55。
4E 54 46 53 20 20 20 20:(OEM代号)这部分占8字节,其内容由创建该⽂件系统的OEM⼚商具体安排。
为“NTFS”。
BPB:NTFS⽂件系统的BPB从DBR的第12个字节开始,占⽤73字节,记录了有关该⽂件系统的重要信息,下表中的内容包含了“跳转指令”、“OEM代号”以及“BPB”的参数。
对照上⾯的BPB分析如下:02 00:每个扇区512个字节08:每个簇8个扇区00 00:保留扇区为000 00 00:为000:不使⽤F8:为硬盘00 00:为000 3F:每磁道63个扇区00 FF:每柱⾯255个磁头00 00 00 3F:隐藏扇区数(MBR到DBR)00 00 00 00:不使⽤80 00 80 00:不使⽤00 00 00 00 0C 80 33 FF:扇区总数20972851100 00 00 00 00 00 00 03:$MFT的开始簇号00 00 00 00 00 85 57 80:$MFTmirr的开始簇号00 00 00 F6:每个MFT记录的簇数00 00 00 01:每索引的簇数B8 11 2A 0C B8 11 2A 0C:分区的逻辑序列号引导程序:DBR的引导程序占⽤426字节,其负责完成将系统⽂件NTLDR装⼊,对于没有安装系统的分区是⽆效的。
NTFS文件系统实例分析
一、基本情况
NTFS文件系通过主文件$MFT管理文件,每个文件都有很多属性,磁盘上每建立1个文件,在$MFT中记录文件的属性,文件记录大小都是1KB,小文件(小于1KB)的全部属性都存放在$MFT中,大文件(1K以上)在它的MFT基本文件记录中,其80数据属性有数据运行(dataRuns或一个盘区(extent),)指针(包含数据所在的起始簇号和簇的大小),也称为流描述,当流描述的第一个字节为0里就表示该流已经结束。
NTFS使用逻辑簇号(LCN,Logical Cluster Number)和虚拟簇号(VCN,Virtual Cluster Number)来对簇进行定位。
LCN是对整个卷中的所有的簇从头到尾进行简单编号,VCN是对特定文件的簇从头到尾进行编号,以便引用文件中的数据。
文件MFT记录的结束标志为ff ff ff ff。
二、举例
建立一个小文本文件dd.txt和一个大文件large.txt。
1、文件属性修改
打开主文件$MFT,按Unicode编码,向下查找文本,搜索文件名dd.txt,读出文件dd.txt记录,查看0x10属性,在偏移0x38处就是该文件属性,长度为4字节。
改变此字节就可改变文件是的只读、隐藏、系统等属性。
2、小文件(小于1KB,文件所有属性在MFT中的一条记录中容
纳)
打开主文件$MFT,按Unicode编码,向下查找文本,搜索文件名dd.txt,读出文件dd.txt的记录,查看0x80属性,在偏移0x18处就是该文件的内容,在此可直接修改文件内容。
2、大文件(大于1KB)
打开主文件$MFT,按Unicode编码,向下查找文本,搜索文件名large.txt,读出文件large.txt的记录,查看0x80属性,在偏移0x10、0x18处分别用8个字节记录文件起始VCN和结束VCN,此例分别是00 00 00 00 00 00 00 00,01 00 00 00 00 00 00 00,说明文件只有0簇和1簇共2簇;在偏移0x20处的2个字节是该文件数据运行的偏移,此处的值为0x40,所以查看偏移0x40处就是文件的第1个运行的描述,该运行分为:
子运行1:31 02 C6 3A 0C
其中“31”中的“1”表示“31”后面第1个字节的数表示子运行的大小,即该子运行的大小为02簇。
“31”中的“3”表示“31”后面4个字节中后面3个字节是子运行的起始簇号,即子运行的起始簇号为“0C3AC6”,此运行的描述之后为“00”表示运行结束。
0C3AC6转为十进制801478,从导航菜单中转到801478簇就能看到文件的内容。