虚拟还原原理解析
要想实现硬盘还原,需要做到两个步骤:第一步是分析扇区,还原产品通过分区表和文件分配表,获取当前硬盘哪些扇区是已经使用过的,哪些扇区是暂未使用的。第二步是拦截读写,还原产品通过过滤驱动程序拦截硬盘读写驱动,并改变系统对硬盘的读写,实现对硬盘已经存在的数据的保护。
举个简单的例子。 Windows要将一段内容写入到硬盘的第100扇区,这时还原驱动会将它拦截下来,通过还原算法将这段内容转向写入到了硬盘中空闲的第1000扇区,并将这个扇区映射关系(100→1000)记录下来,这样实际上100扇区原先的内容并未改变。之后当Windows要读取100扇区时,还原驱动通过查询将1000扇区的内容提交给Windows,Windows则认为它成功的从100扇区得到了想要的数据。这样对用户甚至Windows来说硬盘随时都在发生着改变,然而实际上硬盘原有的数据都没有改变。当Windows重新启动后,包括这个100→1000在内的所有记录都被清除了,在用户和 Windows看来,硬盘没有发生任何变化,数据被还原了。
目前还原方式不外乎硬件还原和软件还原两种。
那么还原卡和还原软件有什么区别呢?我们一一分析。
现在流行的还原软件大致可分为两种:一种是以冰点和影子系统为代表的纯驱动还原软件。这一类的还原软件只有一个驱动程序,在Windows启动过程中加载。这个驱动程序不仅要实现对硬盘驱动的拦截,它还要在程序加载时完成对硬盘已使用扇区和未使用扇区的分析。它把还原的两个步骤结合到了一个过滤驱动程序当中。它还舍弃了从 Windows开始启动后,到还原驱动程序启动前这段时间Windows对硬盘的读写(事实上这段时间几乎没有写操作)。这是实现还原最简单的方法,简单就会存在安全性的问题,我们后面再分析。
第二种是以北软的远志还原精灵为代表的“类还原卡软件”。顾名思义,它们和还原卡很类似,实际上就是还原卡仿真模拟软件。它们的特点是通过修改硬盘的主引导记录(MBR)来启动还原。启动还原的代码是在安装时写入到硬盘中去的。我们知道,硬盘都是通过主引导记录来启动的。还原精灵将硬盘原有的主引导记录保存下来,并改成自己的主引导程序。这样当硬盘启动时,系统就会首先加载还原精灵的主引导程序。分析扇区这一步就是在这个时候完成的。而同时还原精灵可以做很多事情,包括分析硬盘扇区,还原,转储(又叫更新硬盘数据)等等,这让它也能实现还原卡的诸多功能。当还原精灵做完了这些事后,就去加载硬盘原有的主引导记录,开始启动Windows。然后还是通过磁盘过滤驱动,完成对硬盘读写的拦截。
还原卡的工作原理和还原精灵类似,也是分两部分,只不过它的启动是通过插在主板PCI槽上的还原卡来实现的。由于利用了PCI设备,所以这种方式启动时间更早,相比之下要安全可靠一些。还原卡在启动时,同样可以实现转储等功能,甚至还能实现网络对拷,硬盘复制等附加功能,这些对于拥有多台相同型号电脑的机房来说,非常实用。
了解了这些还原产品的原理后,我们可以对它们做一番比较。(考虑到市场上还原产品很多,各有特点和附加的功能,所以我们只针对还原相关的功能,对以上三类还原产品做比较)。
功能比较
纯驱动还原软件的功能都很简单,只有开机还原,和开放还原两个功能。这和它的工作原理有关。没有引导程序,让它无法执行转储等类似于整理磁盘的功能。当还原驱动处于工作状态时,就是开机还原;当还原驱动停止工作时,就是开放还原。
类还原卡软件,顾名思义和还原卡很类似。它除了有开机还原和开放还原的功能外,还包含了继续保持,转储等功能,甚至拥有图形化的开机操作界面。这些功能对于新安装软件和更新数据要方便很多。
还原卡则拥有类还原卡软件的所有功能,此外,由于PCI ROM的启动级别非常高,使它能够实现对CMOS的可靠保护。这个功能使得还原卡的安全性大大提高了。
性能比较
其实对于现在速度飞快的计算机来说,还原产品对于计算机性能的影响已经可以忽略不计了。我们还是从产品特点上来分析一下他们的性能差别。
前面我们说过,要实现还原需要两个步骤,分析扇区和拦截读写。纯驱动还原软件功能最简单,没有保持和转储等功能,这也使它无需将扇区映射关系表保存在硬盘中,通常采用内存保存,重启后重定位表自动消失、撤销映射关系完成还原。所以它在进入Windows后的效率肯定要比另两种还原产品要高,毕竟少了很多更费时的硬盘操作。也就是说在拦截读写上,纯驱动还原效率更高。但是同样因为它不保存数据,所以它每次启动时都要分析扇区。还原卡和类还原卡软件则只需在安装时和转储后分析扇区,其他时候直接从保存在的硬盘的扇区状态表中读取即可。所以在启动时纯驱动还原软件要慢一些。
至于还原卡和类还原卡软件,他们的原理都是一样的,效率自然差不多。除非谁的算法更高明一些。
不过还是那句话,以现在计算机的速度,这些影响你根本感觉不出来。
安全性比较
还原产品作为一种系统安全产品,其安全性肯定是最重要的一个参数。还原卡是否比还原软件更加安全呢?
我们还是先看纯驱动还原软件,它们的特点是没有引导程序,在驱动程序加载时才起作用,也就是说,它的安全是在这个时候才开始的。这样一看,它的安全性就比较差了。我们可以做个试验。先在XP系统下装好冰点,让XP可以正常还原。然后在启动Windows时,按F8键进入启动菜单,选择“最后一次正确配置”进入 Windows。我们可以看到,还原再也不起作用了。
这是为什么呢?我们知道,选择“最后一次正确配置”,Windows会将最近一次成功启动时的 Windows配置文件,覆盖当前的Windows配置文件,这个Windows配置文件包含了注册表。这个覆盖动作是在驱动程序启动之前完成的,也就是说,这个动作并不在纯驱动还原软件的保护下。所以它真的被覆盖了,无法再还原了。
那“类还原卡软件”能否防止“最后一次正确配置”的破坏呢?答案是可以的。因为类还原卡软件的作用时间是从硬盘启动时开始的,这个时间是在F8前面的,所以它能保护。那么它的安全性就很高了吗?以雨过天晴为例,如果我们带了一个启动U盘,在CMOS中将U盘的启动权限放到硬盘之前,那么我们就能通过U盘启动,而不经过硬盘。既然不经过硬盘,那么必须通过硬盘MBR启动的雨过天晴就没有启动。这时只要执行一下恢复硬盘MBR的操作(如Fdisk/mbr),再从硬盘启动就可以发现,雨过天晴也不起作用了。
如果对CMOS加密码,防止修改CMOS呢?那就找个在Windows下修改CMOS的工具,照样改掉。
那么还原卡能防住U盘引导吗?答案是可以!因为现在几乎所有主板的PCI设备启动时间都比存储设备要早。也就是说,虽然你用U盘进入了DOS,但是还原已经起了作用,你删除的文件还是可以还原回来。那么我要是在U盘中是一个WinPE呢?WinPE下没有还原驱动,的确是可以破坏。不过别忘了,还原卡还有个 CMOS保护功能!每次启动时会检查CMOS,一旦发现CMOS被修改,还原卡会将CMOS恢复回去。即使你在Windows下修改了CMOS,当你重启时,CMOS还是会被恢复回去。这样你就永远无法用U盘启动了,管你U盘里装了WinPE又怎样。光盘、软盘、PXE网卡启动同样起不了作用。
最后不得不提一下机器狗和鬼影,这些病毒曾经让几乎所有还原的产品疲于打补丁。实际上它的原理就是摘除harddiskDR0上的过滤设备或者绕过过滤驱动。无论是还原软件还是还原卡都是通过拦截硬盘读写来实现还原的,所以它们几乎都无法躲过穿透还原攻击。穿透还原病毒的出现一度让还原行业产生了恐慌,因为业内人士都知道,一旦以后的机器狗像鬼影一代那样直接通过端口访问硬盘的话,再怎么打补丁也是徒劳。不过现在一些还原产品开始效仿杀毒软件,推出了驱动防火墙,防止病毒进入ring0。所有不明身份的驱动程序,一律不允许加载。这样一来,必须靠驱动程序穿还原的病毒,就需要另辟蹊径了。我们知道技术的对抗是没有止境的,世界上没有攻不破的堡垒。一来某些驱动防火墙对特殊加载驱动方法拦截不严;另一方面windows存在许多内核漏洞,病毒可以利用漏洞成功加载驱动;再者,驱动防火墙的广泛使用使其树大招风,网上流传着一些破解方法和工具。目前还有一些少数病毒,不利用驱动程序,在Ring3下即可穿透还原。这些事实对于传统的还原产品都是巨大的挑战。
在这个背景下无盘技术诞生了,可以肯定,无盘工作站的安全性是比较高的。硬盘还原产品总会存在各种安全漏洞、密码漏洞等。而无盘因为它硬件的特性,从工作原理上来讲基本上是无懈可击的。但也不排除有更强悍的神马出现,对固件进行感染,至少目前没有。再者,从密码安全上来说,假如密码是保留在硬盘上的话,谁都难保不被破解。虽然目前硬盘还原产品还有着不小的市场,但是相比无盘总体来说是在走下坡路,假如以后能够进行技术革新,利用CPU硬件虚拟化技术、直接控制硬盘或者能够过滤端口,那么在安全性方面能够得到很大的提升