|
第十四章 修改Bitmap扇区实现文件隐藏 附录:文中软件下载: http://bbs.intohard.com/thread-118572-2-1.html
在NTFS文件系统的元数据文件中,有一个对簇的使用情况进行标记的文件,该文件称作“位图文件”,文件名为“$Bitmap”。
在位图文件的MFT表中,记录了位图文件的数据存储地址,该数据存储地址的字段记录方式与其他文件是相同的。
在位图文件的数据区内,扇区中的每一个字节的每一个位,表示了在本逻辑驱动器中的每一个簇的使用情况。如果某一个位为“0”,则表示其对应的簇未用,如果某一个位为“1”,则表示其对应的簇已经分配使用。
如果将位图文件数据区内的某些原来为“0”的位,使用有关的工具程序修改为“1”,再在这些位所对应的簇中,写入需要隐藏的文件数据,就能实现隐藏文件的目的。
使用这种操作方法,能够实现隐藏文件的原理是这样的:系统在将文件数据写入扇区时,首先要寻找位图文件数据区中的“0”位,然后将文件数据写入这些“0”位所对应的簇中。对于那些为“1”的位,系统则认为它们所对应的簇已经分配使用,就不会再使用它们了。直到使用这些簇的文件被删除以后,系统将那些“1”位改为“0”位以后,这些对应的簇才会重新被分配使用。
使用这种方法写入扇区的文件数据,在其他的系统文件里没有记录,也不会在系统使用的任何控件或插件中表示出来。所以除了操作者之外,任何人都不可能发现这种隐藏的文件。
如果操作者本人需要使用隐藏文件时,可以使用读取扇区数据的方法,将文件恢复出来然后使用。所以这种隐藏文件的方法,适用于那些使用频率不高的文件。
这种隐藏文件方法的优点是:
1.文件数据是通过对物理扇区的写入而存储的,所以没有文件名,因此不存在误删除的问题。
2.文件数据隐藏的效果好,其他人很难通过非法手段获得数据。
3.即使对逻辑盘进行了格式化,或是对硬盘重新进行了分区,存储在扇区中的数据仍然能够保存完好。同时由于当初写入数据时,必然记下了写入的扇区地址,所以恢复文件数据时的操作非常简单、准确和高效。
下面通过一个具体实例,来演示这种隐藏文件方法的全过程。
14.1 隐藏文件前的准备工作
为了使隐藏文件的演示过程容易理解,对扇区中字段值的查找与计算准确无误,需要将进行此项操作的逻辑盘进行某些技术处理。
技术处理的第一步,是将演示所用的逻辑盘中的所有扇区,使用工具程序全部清零。这样便于在演示过程中,观察和对照扇区中的数据变化。
技术处理的第二步,是将经过清零操作的逻辑盘,重新格式化,建立起完整的文件系统数据。
14.1.1 将逻辑盘的扇区清零
先进行扇区清零的技术处理,具体操作在笔者使用的1号硬盘上进行,以逻辑驱动器F作为操作对象。
在具体操作当中,需要知道F盘的起始与终止扇区号,为此将第30章中已经得到的各个逻辑盘的扇区号摘录如下:
Boot sector number:
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盘的任何操作,系统都会发出错误提示。
---------------------------2013.03.18日最后更新------------------------------------------
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
在图14-17的程序界面中,编辑框里显示出了找到的扇区号是“12579002”,这是NTFS元文件中,位图文件的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行。
现在分析对话框里与本章有关的两个字段的值,一个是记录位图文件的数据区的存储地址的字段值,另一个是记录位图文件的数据所占用簇数的字段值。
第20行的后8个字节,显示的数据是“32 00 01 CD 2F 10 00 00”,这8个字节中包含两个字段值。
字段值“CD 2F 10”记录的是位图文件的数据区的存储地址,写成十六进制数是102fcdH,换算成十进制数是1060813。由十六进制数向十进制数的转换,可以使用笔者提供的“数制转换. exe”程序,该程序的使用比较简单,前面已经介绍过,此处就不再重复介绍了。
这个数值表示的是逻辑盘中的簇号,乘上簇因子,就是逻辑盘中的逻辑扇区号。簇因子指的是每个簇所包含的扇区数,从前面14.1.2节的图14-7中,可以知道每簇包含1024个字节,即包含两个扇区,也就是说簇因子是2。
所以逻辑扇区号的计算公式是:
1060813×2=2121626
将逻辑扇区号的值,加上逻辑盘的起始扇区地址,就得到物理扇区的存储地址。逻辑盘的起始扇区地址,是从分区引导记录的存储扇区开始计算的,现在的操作对象是F盘,该扇区地址是12578958。
所以物理扇区的存储地址是:
2121626+12578958=14700584
字段值“00 01”记录的是位图文件数据所占用的簇数,写成十六进制数是100H,换算成十进制数是256。乘上簇因子2,得到512,这是扇区数,即位图文件的数据占用了512个扇区空间。
进行后面的操作所需要的字段值已经分析完毕,在图14-21的程序界面中,点击“退出”按钮,结束程序运行。
---------------------------2013.03.19日最后更新------------------------------------------ |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|