NTFS文件系统实例分析
NTFS文件系统分析

字节偏移 长度 常用值 意义
0x0B 字 0x0002 每扇区字节数
0x0D 字节 0x08 每簇扇区数
0x0E 字 0x0000 保留扇区
0x10 3字节 0x000000 总为0
0x13 字 0x0000 NTFS未使用,为0
0x15 字节 0xF8 介质描述
0x16 字 0x0000 总为0
MFT 中的文件记录大小一般是固定的,不管簇的大小是多少,均为1KB。文件记录在MFT文件记录数组中物理上是连续的,且从0开始编号,所以,NTFS是预定义文件系统。MFT仅供系统本身组织、架构文件系统使用,这在NTFS中称为元数据(metadata,是存储在卷上支持文件系统格式管理的数据。它不能被应用程序访问,只能为系统提供服务)。其中最基本的前16个记录是操作系统使用的非常重要的元数据文件。这些元数据文件的名字都以"$"开始,所以是隐藏文件,在Windows 2000/XP中不能使用dir命令(甚至加上/ah参数)像普通文件一样列出。在WINHEX中带有NFI.EXE,用此工具可以显示这些记录与文件的对应关系,下一次再详细解释。
注:如果属性可以放在一个文件记录内,则结束VCN域(这种情况下没有使用)可能是"00 00 00 00 00 00 00 00"。
压缩引擎的数量:
为达到最好的压缩比率,NTFS可以根据不同类型的数据使用不同的压缩引擎。当前的压缩引擎使用值04。
为流分配的单元大小:它几倍于卷上用来存储文件属性流所描述的分配空间。
文件通过主文件表(MFT)来确定其在磁盘上的存储位置。主文件表是一个对应的数据库,由一系列的文件记录组成--卷中每一个文件都有一个文件记录(对于大型文件还可能有多个记录与之相对应)。主文件表本身也有它自己的文件记录。
实验报告五 修复NTFS文件系统的DBR

实验报告(四)分析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文件系统设置实验

实验二 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文件系统的区别。
04设置NTFS文件系统

【实验目的】
1)掌握NTFS文件权限的设置。
2)掌握NTFS磁盘配额的设置。
3)掌握NTFS中数据加/解密和压缩/解压缩的设置。
【实验境】
具有Windows2000 Server的计算机、局域网环境。
【实验重点及难点】
重点:掌握NTFS文件权限、磁盘配额、数据加/解密和压缩/解压缩的设置。
1)打开”我的电脑”选择”D盘”右击属性选择”磁盘配额”。如图4-9。
图4-9
2)勾选”启动磁盘配额”选中”配额项”在配额项中”新建配额项”将磁盘空间限制为10MB.如图4-10.
图4-10
3)注销,用Guest帐号登陆系统,则出现如图4-11。
图4-11
4)操作完成。
三、NTFS中数据加/解密和压缩/解压缩的设置。
图4-2
3)选择”权限”栏,勾选”读取”,点击”确定”。
图4-3
4)打开”我的电脑”中的”D盘”,并在该分区中”新建文件夹”,弹出如图4-4所示.
图4-4
5)操作完成.
2、设置Guest帐号对禁止删除D盘中的”新建文件夹”。
1)打开”我的电脑”右击属性选择”安全”。如图4-1。
2)删除Everyone用户,选择”添加”(如图4-5)双击”Guest”帐号,点击”确定”。
难点:实验过程中,切实理解NTFS的功能。
【实验内容】
一、NTFS文件权限的设置。
1、设置Administrator帐号对D盘读取权限。
1)打开”我的电脑”选择”D盘”右击属性选择”安全”。如图4-1。
图4-1
2)删除Everyone用户,选择”添加”(如图4-2)双击”Administrator”帐号,点击”确定”。
NTFS文件解析系统的简单分析

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文件系统文件存贮分析

V s 和 Wid w ia t no s 7的 标 准 文 件 系 统 。
在NF T S分 区 中 , 开 始 的 l 最 6个 扇 区 是 分 区 引 导 扇 区 , 中 保 存 着 分 区 引 导 代 码 , 着 就 是 主 文 件 表 文 件 其 接
MF ( a t i a l) MF T M s rFl T be , T文 件 由 许 多 MF e e T项 组 成 , 每
被 广 泛 使 用 。分 析 N F 文 件 系统 对 文件 的管 理 机 制 , 究 文 件及 其 E录项 在计 算 机 操 作 过 程 中 产 生 和 变 化 规 律 , TS 研 t 发 现 了应 用 程 序 在 创 建 、 改 或 删 除 文件 的过 程 中 , 产 生 大 量 的 残 留 目录 项 , 些 残 留 目录 项 在 很 长 一 段 时 间 里 修 会 这 不会 消 失 。 分析 这 些 残 留 目录项 可 掌 握 当事 人 对 计 算 机及 相 关 程 序 、 档 的 操 作 过 程 , 发 现 计 算 机 中 电 子 物 证 文 是
磁 盘 在存 储 数 据 之 前 首 先 要 对 磁 盘 进 行 分 区 , 后 对 分 然 区进 行 格 式化 建 立 相 应 的文 件 系统 , 分 区 经格 式化 操 作 后 各 才 能 存贮 数据 。根 据 使 用 操 作 系统 的不 同 , 区 的类 型 也 不 分
个 文 件 对 应 MF T文 件 中 的 一 个 MF T项 , 个 MF 每 T项 大
小 固定 为 1 K。 N F T S文 件 系 统 将 文 件 内 容 分 为 常 驻 属 性 和 非 常 驻 属 性 。 小 于 1 的 文 件 其 目 录 项 和 数 据 都 作 为 常 驻 K 属 性 保 存 在 MF T项 中 。 大 于 1 的 文 件 或 文 件 夹 其 目 录 项 K
详解NTFS文件系统

NT S 文 件 系 统 中 的 文 件 属 性 F 可 以 分 成 两 种 : 驻 属 性 和 非 常 驻 常
属 性 , 常 驻 属 性 直 接 保 存 在 MF T 中 , 文件 名 和相 关 时 间信 息 ( 像 例 如 创 建 时 间 、 改 时 间 等 ) 远 属 修 永 于 常 驻 属 性 , 常 驻 属 性 则 保 存 在 非 MF 之 外 , 会 使 用 一 种 复 杂 的 索 T 但 引 方 式 来 进 行 指 示 。如 果 文 件 或 文 件 夹 小 于 10 5 0字 节 ( 实 我 们 的 电 其 脑 中 有 相 当 多 这 样 大 小 的 文 件 或 文 件 夹 ) 那 么 它 们 的所 有 属 性 , , 包 括 内 容 都 会 常 驻 在 MF 中 , T 而 MF 是 W id w T n o s一 启 动 就 会 载 入
MF ) 但 如 果 它 所 在 的 磁 盘 扇 区 T , 恰 好 出 现 损坏 , F NT S文 件 系 统 会 比 较 智 能 地 将 MF 换 到 硬 盘 的 其 T 他 扇 区 , 证 了 文 件 系 统 的 正 常 使 保 用 , 就 是 保 证 了 W id w 也 n o s的 正 常 运 行 。而 以 前 的 F T 6和 F T 2 的 A 1 A 3 F T ( 件 分 配 表 ) 则 只 能 固 定 在 A 文
区 和 F T 2 分 区 的 文 件 可 以 随 意 A 3
在 分 区 间 移 动 , 容 不 会 因 此 产 生 内
任何 不同 。
分 区 引 导 扇 区 的 后 面 , 旦 遇 到 扇 一
区 损 坏 , 么 整 个 文 件 系 统 就 要 瘫 那
痪 。
到 内 存 中 的 , 样 当 你 查 看 这 些 文 这
详解NTFS文件系统

详解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 文件系统解析

UCHAR xpRecordNum[4]; // 0x30
// 用于 xp, 记录号
UCHAR USN[8]; } Mft_Header, *pMft_Header;
// 更新序列号(2B) 和 更新序列数组
第3页 共8页
图3 上面的头部结构体在扇区的数据偏移0x00 ~0x38;在0x38之后的4大块颜色数据是4条属性——描述名称,时间, 索引等信息,最后以“FF FF FF FF”结束。它们分别以0x10,0x30,0x80,0xB0作为标志;四种属性所描述的信息类型 可以由下表查得,对照数据和结构体可以把这4条属性解析出来。
NTFS 文件系统解析
一、Windows下磁盘文件读写
下面是读取D:\磁盘上的第0扇区512 Bytes 打开磁盘,获取文件句柄:CreateFile() 设置读写的位置:SetFilePointer() 读取磁盘扇区数据:ReadFile()
HANDLE hFile;
char drive[] = "\\\\.\\D:"; //------- \\.\D: -----
// 0x0200 扇区大小,512B
UCHAR SecsPerClu;
// 0x08 每簇扇区数,4KB
UCHAR rsvSecs[2]; UCHAR noUse01[5];
//
保留扇区
//
// 0x15
UCHAR driveDscrp; UCHAR noUse02[2];
// 0xF8 //
磁盘介质 -- 硬盘
UCHAR linkNum[2];
// 硬连接数 (多少目录指向该文件) 01 00
UCHAR firstAttr[2];
《NTFS文件系统》课件

NTFS文件系统的发展趋势
1
容量扩展
随着数据量的增加,NTFS文件系统将继续支持更大的分区和更大的文件。
2
性能提升
NTFS文件系统将继续改进读写性能和响应能力,以满足不断增长的计算需求。
3
安全加强
NTFS文件系统将引入更多的安全特性,以提供更好的数据和系统保护。
NTFS文件系统可以在不同版本的Window作。
NTFS文件系统的应用领域
服务器存储
个人电脑
NTFS文件系统广泛应用于服务器 领域,提供高性能和数据安全性。
NTFS文件系统是Windows个人电 脑的默认文件系统,适合处理各 种文件和数据。
外部存储设备
1 安全性高
NTFS文件系统支持访问控制列表(ACL),可以对文件和文件夹进行细粒度的权限控制。
2 稳定性强
NTFS文件系统具有自动修复和错误检测的能力,可以保证文件系统的稳定性,并防止数 据丢失。
3 支持大文件和大分区
NTFS文件系统支持非常大的文件和分区大小,可以满足现代计算机系统对大容量存储的 需求。
性能优异
NTFS文件系统具有较高的读写速度和响应能力, 适合处理大型文件和高并发访问。
灵活性强
NTFS文件系统支持管道、链接和挂载等高级特 性,可以满足不同的应用场景需求。
数据完整性
NTFS文件系统通过使用日志和校验机制来保证 数据的完整性,对系统崩溃和断电等异常情况具 有较好的容错能力。
兼容性广泛
NTFS文件系统的结构
主引导记录(MBR)
MBR是NTFS文件系统的引导扇 区,包含启动计算机所需的信 息。
自己研究的NTFS文件定位

有很多刚刚学习NTFS文件系统,可能都会有这个困扰,了解了DBR MFT 10 30 80 属性datarun后,还是不会怎么去定位目录或者或者子目录MFT。
因为我看了很多书上面都没有讲解怎么去定位!网上资料也很抽象,很难理解,所以我在这里把我自己学习过程中的一点认识写上来,希望能够帮助大家。
DBR MFT 我就不讲了。
直接从定位开始,在这里我要记住第5号元文件记录为根目录记录MFT 也就是好,现在进入正题,因为每个目录(文件)都有一个MFT,而子目录的MFT的首地址正是根据他的父目录的MFT来定位的,所以NTFS的文件系统中MFT正好形成了一棵树(是不是和FDT差不多,但是复杂多了),所以大家可以想到,要定位树上叶子的位置,你必须知道ROOT(根)的位置吧,自然而然,我们就必须得到根目录的MFT的首扇子区号。
大家看到这里,想必都MFT有个大概的了解了吧,通过查阅MFT的相关资料,我们可以得知:5号MFT,遍是根目录的MFT区!!那么如何得到5号MFT的首扇区号呢.?我们可以通过DBR,通过DBR的参数(具体请自己查阅)我们可以获得0号MFT的首簇号,因为一个MFT占用2个扇区,我们可以轻松得知5号MFT的首扇区号(这个都不会算的话,那我也没办法了…),好现在知道了根目录的MFT…那我们就可以通过这个MFT寻找他所有直接子结点的MFT,好,现在基本方法大家都知道了吧,比如我们要定位D:\\a\\b\\c.txt这个c.txt文件,那么通过根目录的MFT我们可以定位到a的MFT,再由a的MFT获取b的MFT,由b的MFT获取c.txt的MFT,最后由c.txt的MFT分析可得这个TXT文件的DATA扇区号。
这样大家的思路是不是清楚了。
这里我以实例来说明如何定位,H盘有个文件路径是H:\111\222\nihao.txt首先要找到我们111目录的MFT表。
从第5号元文件,也就是索引根目录也就是ROOT DIRECTORY, 3083336扇区,我们可以从第5号MFT算出它的位置我们打开第5号MFT80属性的运行就是我们需要找的位置, 31 01 FE FF 03 开始簇号为262142 大小为1簇,转换为扇区也就是簇乘以8等于3083336,当然如果打开的是物理盘有MBR或者EBR要加上MBR 扇区,我这里打开的是逻辑盘,所以不用加,我们跳转到3083336扇区,看看是不是根目录。
NTFS文件系统详解之文件定位

图1 名字可能不太对但结构应该没差.png当找到⼀个NTFS⽂件系统的分区之后,接下来就可以开始着⼿遍历⽬录树和⽂件了。
你可能要问为什么不是第⼀步:读取NTFS的DBR扇区扇区的结构在之前那⽚⽂章写过了,下⾯给个DBR的截图。
图2 DBR扇区图中红⾊⽅框⾥⾯的数据是MFT的偏移(⼩端字节序),即0X 00 00 00 00 00 0C 00 00,单位是簇,即MFT 个扇区,我们转到该分区的第 6291456扇区,就是MFT⽂件的第⼀个扇区了。
接下来该分析MFT是什么⿁?百度⼀下。
MFT是什么⿁?百度⼀下。
图3 ???不好意思,进错⽚场了。
图4 MFT主⽂件表实际上MFT也是⼀个⽂件,在winhex中可以看到它:图5 WinHex中的MFT⽂件也能看到MFT的偏移和我们之前计算的结果时⼀致的。
MFT由⼀个个表项构成,每⼀个表项是⼀个⽂件记录,⼤⼩⼀般为1KB(两个扇区),记录着卷中每⼀个⽬录和⽂件的信息,每个⽂件记录的结构都是固定的,由图6 ⼀个⽂件记录其中,⽂件记录头的结构定义如下:1. // ⽂件记录头2. typedef struct _FILE_RECORD_HEADER3. {4. /*+0x00*/ BYTE Type[4]; // 固定值'FILE'5. /*+0x04*/ UINT16 USNOffset; // 更新序列号偏移, 与操作系统有关6. /*+0x06*/ UINT16 USNCount; // 固定列表⼤⼩Size in words of Update Sequence Number & Array (S)7. /*+0x08*/ UINT64 Lsn; // ⽇志⽂件序列号(LSN)8. /*+0x10*/ UINT16 SequenceNumber; // 序列号(⽤于记录⽂件被反复使⽤的次数)9. /*+0x12*/ UINT16 LinkCount; // 硬连接数10. /*+0x14*/ UINT16 AttributeOffset; // 第⼀个属性偏移11. /*+0x16*/ UINT16 Flags; // flags, 00表⽰删除⽂件,01表⽰正常⽂件,02表⽰删除⽬录,03表⽰正常⽬录12. /*+0x18*/ UINT32 BytesInUse; // ⽂件记录实时⼤⼩(字节) 当前MFT表项长度,到FFFFFF的长度+413. /*+0x1C*/ UINT32 BytesAllocated; // ⽂件记录分配⼤⼩(字节)14. /*+0x20*/ UINT64 BaseFileRecord; // = 0 基础⽂件记录 File reference to the base FILE record15. /*+0x28*/ UINT16 NextAttributeNumber; // 下⼀个⾃由ID号16. /*+0x2A*/ UINT16 Pading; // 边界17. /*+0x2C*/ UINT32 MFTRecordNumber; // windows xp中使⽤,本MFT记录号18. /*+0x30*/ UINT16 USN; // 更新序列号19. /*+0x32*/ BYTE UpdateArray[0]; // 更新数组20. } FILE_RECORD_HEADER, *pFILE_RECORD_HEADER;⽂件记录头后⾯就是属性了,属性由属性头和属性体构成,有如下⼏种类型:图7 属性类型属性有常驻属性常驻属性和⾮常驻属性⾮常驻属性之分,当⼀个属性的数据能够在1KB 的⽂件记录中保存的时候,该属性为常驻属性;⽽当属性的数据⽆法在⽂件记录中存放,需要存放到MFT 外的其他位置时,该属性为⾮常驻属性。
NTFS文件系统扇区存储探秘(第14章修改Bitmap扇区实现文件隐藏)

NTFS文件系统扇区存储探秘(第14章修改Bitmap扇区实现文件隐藏)第14章修改Bitmap扇区实现文件隐藏在NTFS文件系统的元数据文件中,有一个对簇的使用情况进行标记的文件,该文件称作“位图文件”,文件名为“$Bitmap”。
在位图文件的MFT表中,记录了位图文件的数据存储地址,该数据存储地址的字段记录方式与其他文件是相同的。
在位图文件的数据区内,扇区中的每一个字节的每一个位,表示了在本逻辑驱动器中的每一个簇的使用情况。
如果某一个位为“0”,则表示其对应的簇未用,如果某一个位为“1”,则表示其对应的簇已经分配使用。
如果将位图文件数据区内的某些原来为“0”的位,使用有关的工具程序修改为“1”,再在这些位所对应的簇中,写入需要隐藏的文件数据,就能实现隐藏文件的目的。
使用这种操作方法,能够实现隐藏文件的原理是这样的:系统在将文件数据写入扇区时,首先要寻找位图文件数据区中的“0”位,然后将文件数据写入这些“0”位所对应的簇中。
对于那些为“1”的位,系统则认为它们所对应的簇已经分配使用,就不会再使用它们了。
直到使用这些簇的文件被删除以后,系统将那些“1”位改为“0”位以后,这些对应的簇才会重新被分配使用。
使用这种方法写入扇区的文件数据,在其他的系统文件里没有记录,也不会在系统使用的任何控件或插件中表示出来。
所以除了操作者之外,任何人都不可能发现这种隐藏的文件。
如果操作者本人需要使用隐藏文件时,可以使用读取扇区数据的方法,将文件恢复出来然后使用。
所以这种隐藏文件的方法,适用于那些使用频率不高的文件。
这种隐藏文件方法的优点是:1(文件数据是通过对物理扇区的写入而存储的,所以没有文件名,因此不存在误删除的问题。
2(文件数据隐藏的效果好,其他人很难通过非法手段获得数据。
3(即使对逻辑盘进行了格式化,或是对硬盘重新进行了分区,存储在扇区中的数据仍然能够保存完好。
同时由于当初写入数据时,必然记下了写入的扇区地址,所以恢复文件数据时的操作非常简单、准确和高效。
NTFS文件系统解析

• 1、基本概念 • 元文件:NTFS包括几个系统文件,从NTFS卷来
看,它们都是隐藏的。文件系统用系统文件来存 放元数据并实现文件系统。系统文件是用Format 程序放在卷上的。
• MFT • 属性:NTFS中所有与数据相关信息都称之为“属
性”,甚至文件内容也被称为“数据属性”。 • NTFS与其他文件系统最大不同在于,大多数文件
• 图中可看出,前三个属性(常驻)属性头一 样大小,最后一个要大一些。
• NTFS将文件作为属性/属性值的集合来处理, 这一点与其他文件系统不一样。文件数据就 是未命名属性的值,其他文件属性包括文件 名、文件拥有者、文件时间标记等。下图显 示了一个用于小文件的MFT记录
属性头
• 属性头主要用于说明该属性的类型、大小及 名字,同时包含压缩、加密等标志。
结构:属性头和属性内容。由于属性有常驻 属性和非常驻属性之分,所以属性头也有差 别,但不管是常驻还是非常驻,它们属性头 的前16个字节是相同的结构。(如下图)
• 在这个MFT项中,0x00~0x37是MFT的头部。 后面为属性列表。共有4个属性,前三个是常 驻属性,最后一个为非常驻属性。深色部分 则是每个属性的属性头。
• 以上引导扇区最为关键的字节数是0B-0C( 每扇区字节数) 0B-0C(每扇区字节数) 0D(每簇扇区数)28-2F(文件系统扇区总 和) 30-37(MFT起始簇号)38-3F(MFT备 份的起始簇号) 40(每MFT项大小)44(每 个索引的簇数),但数据发生不可预料的损
坏时,可以根据以上信息重建分区表,定位 数据区,恢复MFT,重建DBR,这些关键字 节码的用处不言而喻。
含义 跳转指令 OEM名(“明文NTFS”) 每扇区字节数 每簇扇区数 保留扇区数 介质描述符 每磁道扇区数(不检查此项) 每柱面磁头数(不检查此项) 隐含扇区数(不检查此项) 总是80008000(不检查此项) 文件系统扇区总和 MFT起始簇号 MFT备份的起始簇号 每MFT项大小 未使用 每个索引的簇数 未使用 序列号 校验和 引导代码 签名55AA标记
NTFS文件权限设置实验

实验NTFS文件系统的权限设置与管理【目标】熟悉NTFS文件系统的权限及其设置【环境】安装了Windows 2003 Server操作系统的计算机【步骤】任务一:为学生创建一个私有的用户文件夹具体任务:在windows 2003 服务器NTFS磁盘分区上为用户stu01建立一个用户文件夹StuData01,用户文件夹只允许用户本人完全控制,用户tutor读取访问,其它人拒绝访问。
任务二:创建一个学生组公用文件夹具体任务:为学生组Students在windows 2003 服务器的NTFS磁盘分区上建立一个公用文件夹,该文件夹允许students成员读取及运行,tutor完全控制,Administrator只有列出文件夹,创建文件夹,删除子文件夹和文件的权限。
并且此文件夹对Administrator的NTFS 权限设置不传播到子文件夹。
思考:1.从同一磁盘分区的文件夹data,拷贝文件file1.doc到StuPublic,文件夹data的NTFS权限设置为Everyone有完全控制权。
StuPublic中的file1.doc的NTFS权限是什么?2.若上题file1.doc是被移动到StuPublic文件夹中,它的NTFS权限又是什么?3.若上题中是从不同NTFS磁盘分区的文件夹data中拷贝或移动文件file1.doc到StuPublic,StuPublic中的file1.doc的NTFS权限是什么?4.若上题是从一个非NTFS磁盘分区的文件夹data,拷贝文件file1.doc到StuPublic,StuPublic 中的file1.doc的NTFS权限是什么?5.按练习1设置好StuPublic文件夹后,新创建的子文件夹的NTFS属性默认是什么?6.若在设置StuPublic的NTFS权限之前,文件夹中已存在许多子文件夹和文件,并且具有不同的NTFS权限设置。
在重新设置StuPublic文件的NTFS权限后,要使所有的子文件夹和文件都具有与StuPublic文件夹相同的NTFS权限设置,该如何操作?任务三:文件夹共享:1、创建一个文件夹share,共享它。
NTFS文件系统

第3章 NTFS文件系统
表3-2描述了该例中NTFS卷上BPB和扩展BPB的字段。 字段和它们在FAT16、FAT32卷上一样,开始于0x0B, 0x0D, 0x15, 0x18, 0x1A和0x1C。示例值对应该例中的数据。 由于一般的系统常依赖引导扇区来访问一个卷,因此应 经常性地运行Chkdsk这样的磁盘扫描工具,以保护引导扇 区,就如同无法访问一个卷就备份所有的数据文件以免数据 丢失一样。
第3章 NTFS文件系统
字节偏移 0x20 0x24 0x28 0x30 0x38 0x40 0x44 0x48 0x50
字段长度 DWORD DWORD LONGLONG LONGLONG LONGLONG DWORD DWORD LONGLONG DWORD
第3章 NTFS文件系统
00000000: 00000010: 00000020: 00000030: 00000040: 00000050: 00000060: 00000070: 00000080: 00000090: 000000A0: 000000B0: 000000C0: 000000D0: 000000E0: 000000F0: 00000100: EB 52 90 4E 54 46 53 20 -20 20 20 00 02 08 00 00 00 00 00 00 00 F8 00 00 -3F 00 FF 00 3F 00 00 00 00 00 00 00 80 00 80 00 -4A F5 7F 00 00 00 00 00 04 00 00 00 00 00 00 00 -54 FF 07 00 00 00 00 00 F6 00 00 00 01 00 00 00 -14 A5 1B 74 C9 1B 74 1C 00 00 00 00 FA 33 C0 8E -D0 BC 00 7C FB B8 C0 07 8E D8 E8 16 00 B8 00 0D -8E C0 33 DB C6 06 0E 00 10 E8 53 00 68 00 0D 68 -6A 02 CB 8A 16 24 00 B4 08 CD 13 73 05 B9 FF FF -8A F1 66 0F B6 C6 40 66 0F B6 D1 80 E2 3F F7 E2 -86 CD C0 ED 06 41 66 0F B7 C9 66 F7 E1 66 A3 20 -00 C3 B4 41 BB AA 55 8A 16 24 00 CD 13 72 0F 81 -FB 55 AA 75 09 F6 C1 01 74 04 FE 06 14 00 C3 66 -60 1E 06 66 A1 10 00 66 03 06 1C 00 66 3B 06 20 -00 0F 82 3A 00 1E 66 6A 3E 00 66 50 06 53 66 68 10 -00 01 00 80 3E 14 00 00 0F 85 0C 00 E8 B3 FF 80 -3E 14 00 00 0F 84 61 00 B4 42 8A 16 24 00 16 1F -8B F4 CD 13 66 58 5B 07 .R.NTFS ........ ........?...?... ........J....... ........T....... ...........t..t. .....3.....|.... ..........3..... ..S.h..hj....$.. ...s......f...@f .....?.......Af. ..f..f....A..U. .$...r...U.u.... t......f`..f...f ....f;....:..fj .fP.Sfh.....>... ........>.....a. .B..$......fX [..
解读NTFS

NTFS是一个比FAT复杂的多的文件系统,我们一起努力来把它完整的解读出来NTFS的引导扇区也是完成引导和定义分区参数,和FAT分区不同,FAT分区的BOOT记录正常,就显示分区没有错误,即使文件不正确,而NTFS分区的BOOT不是分区的充分条件,它要求必须MFT中的系统记录如$MFT等正常该分区才能正常访问。
其BPB参数如下表所示。
字节偏移长度常用值意义0x0B 字 0x0002 每扇区字节数0x0D 字节 0x08 每簇扇区数0x0E 字 0x0000 保留扇区0x10 3字节 0x000000 总为00x13 字 0x0000 NTFS未使用,为00x15 字节 0xF8 介质描述0x16 字 0x0000 总为00x18 字 0x3F00 每磁盘扇区数0x1A 字 0xFF00 磁头数0x1C 双字 0x3F000000 隐含扇区0x20 双字 0x00000000 NTFS未使用,为00x28 8字节 0x4AF57F0000000000 扇区总数0x30 8字节 0x0400000000000000 $MFT的逻辑簇号0x38 8字节 0x54FF070000000000 $MFTMirr的逻辑簇号0x40 双字 0xF6000000 每MFT记录簇数0x44 双字 0x01000000 每索引簇数0x48 8字节 0x14A51B74C91B741C 卷标0x50 双字 0x00000000 检验和MFT中的文件记录大小一般是固定的,不管簇的大小是多少,均为1KB。
文件记录在MFT文件记录数组中物理上是连续的,且从0开始编号,所以,NTFS 是预定义文件系统。
MFT仅供系统本身组织、架构文件系统使用,这在NTFS中称为元数据(metadata,是存储在卷上支持文件系统格式管理的数据。
它不能被应用程序访问,只能为系统提供服务)。
其中最基本的前16个记录是操作系统使用的非常重要的元数据文件。
实验4 Windows_NTFS文件系统权限实验

实验4 Windows NTFS文件系统权限实验
一、实验内容:学习应用Windows NTFS 文件系统权限的管理和应用
二、实验要求:对Windows NTFS文件系统有所了解,学会对权限的设置
三、实验步骤:
1. 右键单机“我的电脑”,打开“管理”,在本地用户和组的用户里面创建一个新用户:以自己的名字拼音命名,如张三,命名为zhangshan
2.完成新用户的创建之后我们接着在系统盘除外
.....的盘里按照用户的前六项权限创建(完全控制、修改、读取和运行、列出文件夹目录、读取、写入)六个文件夹,对于这个文件夹分别赋予和文件名相同的权限.
3.下面把新创建的六个文件夹的属性打开,把它们的Users
..
.....组全部移
....除掉
然后用再在新建的六个文件夹里面放入一个:批处理文件、一个文件夹和一个带内容的文本,当这些都完成之后开始进行下一步的实验.
下面我们对用zhangshan用户对完全控制做实验,那么我们把六个文件夹全部都加入zhangshan 用户里面.
下一步在zhangshan用户下依次对六个文件夹赋予
..。
..与它们的文件名字相对应的权限
下面注销administrator 用户切换到zhangshan 用户来检测权限的应用。
4.把以上过程截图并形成实验报告。
NTFS文件系统结构

NTFS文件系统结构前言:最近由于项目需要,研究了一下NTFS文件系统,NTFS文件系统是windows使用的文件系统,包括NT,2000,xp系列。
无奈万恶资本主义的windows将自家的东西全部藏在阴暗的角落,NTFS理所当然地也不开源,尽管没有源代码,还是有足够丰富的资料将NTFS文件系统曝光在自由的阳光下。
下面通过从NTFS文件系统的根源出发,展示如何通过一层层的解析,最终读取到其中的某个文件。
环境:LINUX Ubuntu16.04,待解析的文件系统:NTFS,追踪其中的文件:C:\WINDOWS\DtcInstall.log(随机找的,仅仅以此为例)说明:本人找了一块完整的NTFS文件系统镜像,它里面是一个完整的Windows XP系统,是从Windows XP虚拟机镜像切下来的(因为虚拟机镜像不止包括完整的文件系统,例如我的这块虚拟机镜像从第0x7E000字节以后才是完整的NTFS文件系统),这些都不重要,重要的是现在你只要有一块完整的NTFS文件系统,当然必须是Window XP系统的,因为我们还有追踪C:\WINDOWS\DtcInstall.log这个文件,所以其实在Windows XP中使用Disk Genius打开你C盘分区就是一块完整的NTFS文件系统,如果以16进制查看应该是这样的:NTFS文件系统的布局:BOOT存放一些文件系统基本信息,如一个扇区512bytes,一簇(cluster)有8个扇区,共4K,比较重要的一项是MFT的偏移簇号。
MFT是NTFS中最重要的部分,它是一个个以“FILE"开始的文件记录数据结构。
struct 文件记录{文件记录头;属性1;属性2;属性3;……}而属性包括属性头和属性体两部分,如下属性的数据结构。
struct 属性{属性头;属性体;}所以,下面的文件记录结构举例请参考文件记录结构、文件记录头结构、属性头结构、不同属性体结构来看!这个数据结构就是文件的全部信息,文件的各种属性都放在这个数据结构中,在NTFS中文件内容也属于文件的属性,所以在NTFS中文件的一切都是属性,比如在这个数据结构中有30H属性记录文件名,10H属性记录文件的一些元信息如创建、访问时间等,而80H属性则是文件的内容,因为一个文件记录数据结构仅仅4K,所以如果文件很大,80H属性存放的不再是文件内容,而是存放文件内容的簇索引号run list.对于run list 解析以后介绍,这里知道它是文件内容的簇偏移索引即可。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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簇就能看到文件的内容。