NTFS文件系统扇区存储探秘第14章修改Bitmap扇区实现文件隐藏.docx
- 文档编号:20131624
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:63
- 大小:1.09MB
NTFS文件系统扇区存储探秘第14章修改Bitmap扇区实现文件隐藏.docx
《NTFS文件系统扇区存储探秘第14章修改Bitmap扇区实现文件隐藏.docx》由会员分享,可在线阅读,更多相关《NTFS文件系统扇区存储探秘第14章修改Bitmap扇区实现文件隐藏.docx(63页珍藏版)》请在冰豆网上搜索。
NTFS文件系统扇区存储探秘第14章修改Bitmap扇区实现文件隐藏
NTFS文件系统扇区存储探秘(第14章修改Bitmap扇区实现文件隐藏)
第14章修改Bitmap扇区实现文件隐藏
在NTFS文件系统的元数据文件中,有一个对簇的使用情况进行标记的文件,该文件称作“位图文件”,文件名为“$Bitmap”。
在位图文件的MFT表中,记录了位图文件的数据存储地址,该数据存储地址的字段记录方式与其他文件是相同的。
在位图文件的数据区内,扇区中的每一个字节的每一个位,表示了在本逻辑驱动器中的每一个簇的使用情况。
如果某一个位为“0”,则表示其对应的簇未用,如果某一个位为“1”,则表示其对应的簇已经分配使用。
如果将位图文件数据区内的某些原来为“0”的位,使用有关的工具程序修改为“1”,再在这些位所对应的簇中,写入需要隐藏的文件数据,就能实现隐藏文件的目的。
使用这种操作方法,能够实现隐藏文件的原理是这样的:
系统在将文件数据写入扇区时,首先要寻找位图文件数据区中的“0”位,然后将文件数据写入这些“0”位所对应的簇中。
对于那些为“1”的位,系统则认为它们所对应的簇已经分配使用,就不会再使用它们了。
直到使用这些簇的文件被删除以后,系统将那些“1”位改为“0”位以后,这些对应的簇才会重新被分配使用。
使用这种方法写入扇区的文件数据,在其他的系统文件里没有记录,也不会在系统使用的任何控件或插件中表示出来。
所以除了操作者之外,任何人都不可能发现这种隐藏的文件。
如果操作者本人需要使用隐藏文件时,可以使用读取扇区数据的方法,将文件恢复出来然后使用。
所以这种隐藏文件的方法,适用于那些使用频率不高的文件。
这种隐藏文件方法的优点是:
1(文件数据是通过对物理扇区的写入而存储的,所以没有文件名,因此不存在误删除的问题。
2(文件数据隐藏的效果好,其他人很难通过非法手段获得数据。
3(即使对逻辑盘进行了格式化,或是对硬盘重新进行了分区,存储在扇区中的数据仍然能够保存完好。
同时由于当初写入数据时,必然记下了写入的扇区地址,所以恢复文件数据时的操作非常简单、准确和高效。
下面通过一个具体实例,来演示这种隐藏文件方法的全过程。
14.1隐藏文件前的准备工作
为了使隐藏文件的演示过程容易理解,对扇区中字段值的查找与计算准确无误,需要将进行此项操作的逻辑盘进行某些技术处理。
技术处理的第一步,是将演示所用的逻辑盘中的所有扇区,使用工具程序全部清零。
这样便于在演示过程中,观察和对照扇区中的数据变化。
技术处理的第二步,是将经过清零操作的逻辑盘,重新格式化,建立起完整的文件系统数据。
14.1.1将逻辑盘的扇区清零
先进行扇区清零的技术处理,具体操作在笔者使用的1号硬盘上进行,以逻辑驱动器F作为操作对象。
在具体操作当中,需要知道F盘的起始与终止扇区号,为此将第30章中已经得到的各个逻辑盘的扇区号摘录如下:
Bootsectornumber:
1:
0
2:
63
3:
4192965
4:
4193028
5:
8385930
6:
8385993
7:
12578895
8:
12578958
9:
16771860
10:
16771923
11:
20964825
12:
20964888
13:
41447700
14:
41447763
根据上面摘录的内容,可以知道记录F盘分区链表的扇区号是12578895,这是F盘的起始扇区号。
记录G盘分区链表的扇区号是16771860,这是G盘的起始扇区号,在这之前的一个扇区就是F盘的最后一个扇区,扇区号是16771859。
有一个问题需要特别提醒操作者注意,因为逻辑盘F是下一步操作和分析的对象,所以运行工具程序时必须在其他的逻辑盘上进行。
如果在F盘上运行工具程序,则有的程序会对F盘进行某些写入扇区的操作,这就破坏了F盘的原有状况,不利于操作者进行扇区数据的对比分析。
运行“连续扇区清零.EXE”程序,程序界面如图14-1所示。
图14-1
在图14-1的程序界面中,编辑框里输入硬盘编号“1”,然后点击“硬盘确定”按钮,
程序界面如图14-2所示。
图14-2
在图14-2的程序界面中,编辑框里输入清零的扇区区段的起始扇区号。
如果根据实际需要,只清零演示操作中存储文件的扇区区段就可以了。
但是这个扇区区段的选取不容易掌握,因为NTFS文件系统向扇区写入数据时,要根据文件的大小和扇区的使用情况,选取最合适的扇区区段。
这个过程是在内核中完成的,操作者无法进行追踪。
所以最可靠的方法,就是将逻辑驱动器所含的扇区全部清零。
1号硬盘的F逻辑盘的起始和终止扇区号,从前面的分析中已经知道。
开始于12578895号扇区,终止于16771859号扇区。
但是在输入清零的起始扇区号的时候,一定要将12578895号扇区排除在外。
因为该扇区中存储着F盘的分区链表,如果将其清零,则F盘及其以后的逻辑驱动器就无法识别了。
可以将分区引导记录所在的扇区,即12578958号扇区,作为清零的起始扇区。
因为分区引导记录是格式化时建立的,它不影响硬盘的分区链。
在图14-2的编辑框里,输入起始扇区号12578958。
然后点击“始扇确定”按钮,程序界面如图14-3所示。
图14-3
在图14-3的程序界面中,编辑框里输入终止扇区号。
输入时一定不要超越F盘的最后扇区,否则的话就将后面G盘的分区链表破坏了。
因为逻辑驱动器中的扇区不可能全部被使用,所以在实际输入时可以提前若干个扇区。
F盘的最终扇区号是16771859,可以输入16771850。
然后点击“终扇确定”按钮,程序界面如图14-4所示。
图14-4
在图14-4的程序界面中,点击“清零开始”按钮,程序即开始执行扇区清零功能。
F盘的容量是2GB,程序运行约十几分钟后发出了音响提示,通知操作者清零结束。
按一下空格键停止声音提示,程序界面如图14-5所示。
图14-5
在图14-5的程序界面中,点击“退出”按钮,结束程序运行。
进行到这一步,不要再继续操作了。
因为F盘的系统管理数据已经全部被清零了,这之后对F盘的任何操作,系统都会发出错误提示。
14.1.2格式化逻辑盘
现在进行技术处理的第二步,将经过清零操作的逻辑盘重新格式化。
重新启动计算机,打开WINDOWS资源管理器,用鼠标点击盘符F,系统弹出一个警告对话框,如图14-6所示。
图14-6
在图14-6中点击“是”按钮,系统弹出格式化插件选择窗口,在窗口的编辑框中输入
格式化参数,其界面如图14-7所示。
图14-7
在图14-7中点击“开始”按钮,就可以将F盘重新格式化为NTFS文件系统,每簇中含1024字节,也就是2个扇区。
至此,隐藏文件演示操作前的准备工作就完成了。
14.2隐藏文件的可行性试验
这种隐藏文件的设想能够实现的关键问题是:
在位图文件的数据区中,将某些位由原来的“0”置“1”以后,文件系统是否承认这种修改,也就是说,在这些由“0”置“1”的位所对应的簇中,文件系统如果认为这些簇是已经分配使用的簇,以后不再向这些簇中写入数据,这种隐藏文件的设想才能实现。
如何才能证明这个问题呢,可以实际操作一下来做一次可行性试验,试验的过程分以下几步来完成:
1(对前面经过技术处理的逻辑盘F,读出其可使用的字节数。
2(查找元文件中的位图文件,确定其数据区的扇区地址。
3(在位图文件的数据区中,将原来的一些“0”位置成“1”。
4(重新启动计算机以后,再一次读出F盘的可使用的字节数。
5(将F盘前后两次读出的可使用的字节数进行比较,如果第二次读出的可使用的字节数减少了,减少的数量正好等于由“0”置成“1”的位所对应的簇,这说明文件系统已经承认了这种修改是有效的。
14.2.1查找位图文件的MFT记录
首先读出F盘可使用的字节数。
打开WINDOWS资源管理器,右键点击逻辑盘F的盘符,在弹出的窗口菜单中选取“属性”选项,F盘的属性窗口内容如图14-8所示。
图14-8
在图14-8的显示界面中,可以看出F盘的可用空间是2133169152字节。
在G盘上运行“查找硬盘扇区特征.EXE”程序,程序界面如图14-9所示。
图14-9
在图14-9的程序界面中,点击编辑框中的“?
”按钮,打开下拉选择列表,程序界面如图14-10所示。
图14-10
在图14-10的程序界面中,选取下拉列表中的“长文件名”选项,然后点击编辑框右边的“确定”按钮,程序界面如图14-11所示。
图14-11
在图14-11的程序界面中,点击编辑框中的“?
”按钮,打开下拉选择列表,程序界面如图14-12所示。
图14-12
在图14-12的程序界面中,选取下拉列表中的“扇区号增加”选项,然后点击编辑框右边的“确定”按钮,程序界面如图14-13所示。
图14-13
在图14-13的程序界面中,编辑框里输入硬盘的编号“1”,然后点击“硬盘确定”按钮,程序界面如图14-14所示。
图14-14
在图14-14的程序界面中,需要输入查找的起始扇区号。
可以从分区引导记录的扇区号开始查找,所以在编辑框中输入“12578958”,然后点击“扇区确定”按钮,程序界面如图14-15所示。
图14-15
在图14-15的程序界面中,编辑框里需要输入查找的扇区特征。
元文件中的位图文件的名称是Bitmap,文件名的字母一定要区分大小写,所以在编辑框里输入“Bitmap”,然后点击“特征确定”按钮,程序界面如图14-16所示。
图14-16
在图14-16的程序界面中,需要输入备份扇区数据的文件名。
输入的方法有两种,可以
直接在编辑框里输入带路径的文件名,也可以点击编辑框右边的“浏览”按钮,在随后打开的保存文件对话框里,选择路径和文件名。
本例中采用直接输入的方法,在编辑框里输入“g:
\bitmap”,然后点击“开始查找”按钮,程序即开始执行查找功能。
当找到符合特征值的扇区以后,程序发出音响提示。
操作者可以按一下空格键使音响停止,这时程序界面如图14-17所示。
图14-17
-17的程序界面中,编辑框里显示出了找到的扇区号是“12579002”,这是NTFS在图14
元文件中,位图文件的MFT文件表记录。
现在可以点击“退出”按钮,结束程序运行。
14.2.2确定位图文件数据区地址
前面已经将12579002号扇区的数据,保存在了G盘的名为bitmap的文件中,接下来就可以使用工具程序,打开bitmap文件,查看有关的字段记录,用以确定位图文件数据区的存储地址。
运行“查看扇区文件数据.EXE”程序,程序界面如图14-18所示。
图14-18
在图14-18的程序界面中,点击编辑框右边的“浏览”按钮,弹出打开文件选择对话框,在对话框中选择G盘的bitmap文件,程序界面如图14-19所示。
图14-19
在图14-19的程序界面中,选取好路径和文件名以后,点击“打开”按钮,程序界面如图14-20所示。
图14-20
在图14-20的程序界面中,点击“显示数据”按钮,程序界面如图14-21所示。
图14-21
在图14-21的程序界面中,弹出一个对话框,将文件bitmap中的512个字节的值,以十六进制的字节显示方式显示在对话框中。
每行显示16个字节,总共显示32行。
现在分析对话框里与本章有关的两个字段的值,一个是记录位图文件的数据区的存储地址的字段值,另一个是记录位图文件的数据所占用簇数的字段值。
”,这8个字节中包第20行的后8个字节,显示的数据是“320001CD2F100000含两个字段值。
字段值“CD2F10”记录的是位图文件的数据区的存储地址,写成十六进制数是102fcdH,换算成十进制数是1060813。
由十六进制数向十进制数的转换,可以使用笔者提供的“数制转换.EXE”程序,该程序的使用比较简单,前面已经介绍过,此处就不再重复介绍了。
这个数值表示的是逻辑盘中的簇号,乘上簇因子,就是逻辑盘中的逻辑扇区号。
簇因子指的是每个簇所包含的扇区数,从前面14.1.2节的图14-7中,可以知道每簇包含1024个字节,即包含两个扇区,也就是说簇因子是2。
所以逻辑扇区号的计算公式是:
1060813×2,2121626
将逻辑扇区号的值,加上逻辑盘的起始扇区地址,就得到物理扇区的存储地址。
逻辑盘的起始扇区地址,是从分区引导记录的存储扇区开始计算的,现在的操作对象是F盘,该扇区地址是12578958。
所以物理扇区的存储地址是:
2121626,12578958,14700584
字段值“0001”记录的是位图文件数据所占用的簇数,写成十六进制数是100H,换算成十进制数是256。
乘上簇因子2,得到512,这是扇区数,即位图文件的数据占用了512个扇区空间。
进行后面的操作所需要的字段值已经分析完毕,在图14-21的程序界面中,点击“退出”按钮,结束程序运行。
14.2.3修改位图文件的扇区数据
在确定了位图文件的数据区地址和占用的扇区空间以后,就可以继续进行下一步操作了。
接下来需要对位图文件的数据进行修改,从而观察文件系统对这种修改是否能够承认。
运行“即时修改扇区数据.EXE”程序,程序界面如图14-22所示。
图14-22
在图14-22的程序界面中,编辑框里输入硬盘编号“1”,然后点击“硬盘确定”按钮,程序界面如图14-23所示。
图14-23
在图14-23的程序界面中,编辑框里需要输入修改数据的扇区号。
在上一节已经计算出位图文件的数据区地址,是14700584号扇区,这是数据区起始的第一个扇区。
原则上修改哪一个扇区的数据并不重要,只要这个扇区是属于位图文件所占用的空间之内的扇区就可以,也就是说从14700584开始的512个扇区中,修改哪一个扇区都行。
考虑到现在操作的F盘是刚刚格式化过的,存储的数据肯定不多,所以就选择第一个扇区进行修改。
在编辑框里输入扇区号“14700584”,然后点击“显示数据”按钮,程序界面如图14-24所示。
图14-24
在图14-24的程序界面中,弹出一个对话框,显示了位图文件数据区的第1个扇区的字节数据。
在全部512个字节中,只有前8个字节的值是ffH。
这些字节中的每个位都是“1”,它们所对应的簇已经被分配使用,这是在逻辑盘被格式化时由系统数据占用的。
除去这8
个字节之外的其他字节都是00H,这些字节的每个位所对应的簇都是可用的。
现在选取该扇区中的第13至16字节,也就是对话框中第1行的最后4个字节,作为修改的对象,将这些字节的值由原来的00H修改为ffH。
如果修改了这些字节的值以后,在逻辑盘F的属性对话框中,系统检测到的磁盘可用空间一栏里,减去了这些字节位所对应的逻辑簇空间,则说明系统已经承认了这种修改,以后不会再向这些簇中写入新的数据了。
先预先推算一下应该减去多少磁盘空间,然后在后面的操作中验证这一推算结果。
每个字节中有8个位,修改了4个字节,也就是总共32个位。
每个位对应一个簇,所以对应着32个簇。
簇因子是2,总共有64个扇区,所以总的字节数是:
512×64,32768
在图14-8中,系统检测到的磁盘可用空间是2133169152个字节。
现在经过修改位图文件的数据以后,系统重新检测到的磁盘可用空间应该是:
2133169152,32768,2133136384(个字节)
这个推算结果可以在后面的操作中得到验证。
现在进行修改字节值的操作。
在图14-24的程序界面中,编辑框里输入字节编号“13”,然后点击“编号确定”,程序界面如图14-25所示。
图14-25
在图14-25的程序界面中,编辑框里输入修改以后的字节新值“ff”,然后点击“新值确定”按钮,程序界面如图14-26所示。
图14-26
在图14-26的程序界面中,弹出了第二个对话框,显示出修改后的扇区字节的值。
可以看出,第13个字节的值已经变成了ffH。
这里需要说明一个问题,现在对话框中字节值的改变,只是内存中数据的变化,还没有真正对扇区数据进行修改。
因为还需要修改其他字节的值,所以在图14-26的程序界面中,点击“是否继续修改,”提示行下面的“是”按钮,程序界面如图14-27所示。
图14-27
图14-27的程序界面,实际上又回到了图14-24的显示状态。
在编辑框里输入需要修改的下一个字节的编号,也就是第14个字节,重复执行修改数据的操作。
一直到将13至16字节全部修改成功,程序界面如图14-28所示。
图14-28
在图14-28的程序界面中,因为不需要继续修改字节数据了,所以点击“是否继续修
-29所示。
改,”提示行下面的“否”按钮,程序界面如图14
图14-29
在图14-29的程序界面中,点击“写回扇区”按钮,程序则将修改以后的数据写回扇区中去,扇区中原来的数据将被覆盖。
前面曾经说过,修改字节数据的操作过程是在内存中进行的,只有当执行了“写回扇区”的功能以后,扇区中的数据才被更新。
为什么要如此设置程序的功能呢,这是因为即时修改扇区数据具有一定的危险性,如果由于操作者的失误,修改数据不正确,同时原来的数据又被覆盖了,将会造成不可弥补的磁盘故障。
使用上面的这种程序功能设置,能够让操作者有足够的时间观察数据修改的正确性,一旦发现错误,可以立即中止操作。
点击“写回扇区”按钮以后,程序界面如图14-30所示。
-30图14
在图14-30的程序界面中,点击“退出”按钮,结束程序运行。
14.2.4文件系统对修改数据的反映
接下来就要观察文件系统对修改位图文件数据的反映了,退出所有程序,然后重新启动计算机。
打开WINDOWS资源管理器,右键点击逻辑盘F的盘符,在弹出的对话框中选取“属性”选项,打开的对话框如图14-31所示。
图14-31
在图14-31的属性对话框中,系统显示的F盘的可用空间是2133136384字节,系统检
测结果与前面的推导结果是完全一致的。
这就说明文件系统已经将修改数据后的字节位所对应的簇,看作已经分配使用的簇了,这为后面隐藏文件的操作找到了依据。
14.3位图与扇区地址的对应关系
在上一节的操作中,取得了文件系统对修改位图文件数据承认的依据,但是要进行隐藏文件的实际操作,还有一个问题需要解决。
采用这种方法隐藏文件时,是先修改位图文件的字节位,然后将文件数据按硬盘的扇区地址写入的。
因此在具体操作时,必须了解位图文件的字节位与硬盘扇区地址的对应关系,才能准确地将文件数据写入所对应的扇区中去。
如何确定位图文件的字节位和硬盘扇区地址之间的计算规律呢,本节通过一项具体操作,来推算出一条通用的计算公式。
操作的主要步骤如下:
1(用有关的工具程序,取得F盘位图文件数据区的扇区特征值。
2(向F盘拷入一个文件,然后使用工具程序确定存储文件数据的首扇区地址。
3(比较F盘位图文件数据区的扇区变化,找出被修改过的字节位。
4(从前面所取得的数据中,推算出一条通用的计算公式。
14.3.1提取位图文件数据区的扇区特征
在进行操作之前再重复强调一下,工具程序不要在进行试验的F盘上运行,以免破坏F盘的有关数据。
在G盘上运行“监测扇区数据变化.EXE”程序,程序界面如图14-32所示。
图14-32
在图14-32的程序界面中,编辑框里输入硬盘的编号“1”,然后点击“硬盘确定”按钮,程序界面如图14-33所示。
图14-33
在图14-33的程序界面中,需要在编辑框里输入起始扇区号。
前面在14.2.2一节中,已经计算出位图文件的数据区地址是14700584,全部数据占用512个扇区。
在图14-33的编辑框里输入起始扇区号“14700584”,然后点击“始扇确定”按钮,程序界面如图14-34所示。
图14-34
在图14-34的程序界面中,需要在编辑框里输入终止扇区号。
因为位图文件的数据占用512个扇区,所以可用下式计算:
14700584,512,1,14701095
在图14-34的编辑框里输入终止扇区号“14701095”,然后点击“终扇确定”按钮,程序界面如图14-35所示。
图14-35
在图14-35的程序界面中,点击编辑框里的“?
”按钮,打开下拉选择列表,程序界面如图14-36所示。
图14-36
在图14-36的程序界面中,选取下拉列表框里的“备份扇区校验值”选项,然后点击编辑框右边的“确定”按钮,程序界面如图14-37所示。
图14-37
在图14-37的程序界面中,编辑框里需要输入备份扇区特征的文件名。
输入的方法有两种,可以直接在编辑框里输入带路径的文件名,也可以点击编辑框右边的“浏览”按钮,在随后打开的保存文件对话框中,选择路径和文件名。
本例中采用直接输入的方法,在编辑框里输入“g:
\mapdata”,然后点击“存储数据”按钮,程序转入下一个界面,如图14-38所示。
图14-38
在图14-38的程序界面中,点击“退出”按钮结束程序运行。
打开WINDOWS资源管理器,可以看到在G盘运行程序的根目录下,生成了一个名为mapdata的文件。
这个文件记录了位图文件数据区中,512个扇区的特征值,此后如果其中某一个扇区的数据被修改了,使用工具程序的“比较扇区校验值”功能,就可以将修改了数据的扇区找出来。
14.3.2确定试验文件数据的存储地址
现在将一个试验用的文件拷入F盘的根目录下,文件名为“playrlic.txt”,这是一个文本文件,是RealNetworks产品的软件许可说明。
文件playrlic.txt的大小是28735字节,现在先预算一下该文件数据在F盘上所占用的簇数。
前面在格式化F盘时,设定的“分配单元大小”选项是1024字节,这也是每簇的字节数。
用28735除以1024,得到的整数是28,后面还有余数。
因为簇是逻辑盘中最小的存储单元,不可能分割,所以余数要向前进位,也就是说文件要占用29个簇。
拷入文件以后,接下来就要确定文件数据的存储地址。
确定文件数据的存储地址的方法有两种,第一种方法是先查找文件的MFT表记录,通过对有关字段值的数值计算,得到文件数据的存储地址;第二种方法是查找文件内容中的特征值,从而确定文件数据的存储地址,本例中所用的试验文件playrlic.txt是一个纯文本文件,所以直接查找文件内容中的字符串,就能确定它们的存储地址。
本例中使用第一种方法进行查找。
查找文件名可以使用工具程序“查找汉字文件名.EXE”,虽然这是为查找汉字文件名而写的程序,但该程序同样也能适用于查找ASCII字符的文件名。
运行“查找汉字文件名.EXE”程序,程序界面如图14-39所示。
图14-39
在图14-39的程序界面中,点击编辑框里的“?
”按钮,打开下拉选择列表,程序界面如图14-40所示。
图14-40
在图14-40的程序界面中,在下拉列表框里选中“向扇区号增加的方向”,然后点击编辑框右边的“确定”按钮,程序界面如图14-41所示。
图14-41
在图14-41的程序界面中,编辑框里输入硬盘的编号“1”,然后点击“硬盘确定”按钮,程序界面如图14-42所示。
图14-42
在图14-42的程序界面中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NTFS 文件系统 扇区 存储 探秘 14 修改 Bitmap 实现 文件 隐藏