硬盘保护卡自身关键数据的安全保护方法
2010-01-15丰洪才向云柱
丰洪才,向云柱
(武汉工业学院计算机与信息工程系,湖北武汉 430023)
硬盘保护卡自身关键数据的安全保护方法
丰洪才,向云柱
(武汉工业学院计算机与信息工程系,湖北武汉 430023)
针对硬盘保护卡自身的数据安全问题,分析了保护卡系统的原理,提出了充分利用硬盘的保留扇区,使用数据写入陷阱、端口 I/O拦截、数据备份与恢复的技术,实现硬盘保护卡关键数据的安全保护的方法。
保护卡;关键数据;保留扇区
计算机机房是学校计算机教学和实验的场所,它承担着学生上机与实验、机房开放、各种计算机培训和科研实验等任务。计算机硬盘保护卡已在教育行业计算机机房、网吧等大型计算机机房得到了广泛应用,对公共机房的计算机起到很好的保护作用。
虽然保护卡是一种即插即用设备,但在其安装与使用过程中还必须作一些必要的常规性配置,否则保护卡不能正常工作;同时基于硬盘保护卡开发的一些特殊管理功能,比如虚拟系统、单系统多频道等有许多关键性的数据需要安全保存,这些数据的破获将对保护卡构成极大的威胁;此外在保护卡的使用过程中还经常出现一些非常规性问题,比如进入保护卡管理模式时管理员密码失效、机器启动时提示重新安装保护卡并要求插入驱动软盘、机器启动时发出更新 CMOS信息的请求并要求输入管理员密码、没有任何提示信息还原保护功能部分失效等,对于这些非常规问题,用户无法获得足够的相关信息,增加了保护卡的维护难度,影响了系统的安全性与可靠性。
产生这些问题的主要原因是某些恶意病毒的攻击和某些共享软件的登记操作导致了硬盘保护卡所依照的关键数据被破坏,这表明了保护卡自身的数据安全与恢复是需要引起重视和值得研究的问题。笔者与武汉噢易科技有限公司联合开发并完成了噢易 Free卡电脑教室自主维护系统,较好地解决了保护卡系统关键数据的安全保护问题。
1 硬盘的保留扇区
硬盘的第 1个物理扇区 (即 0柱面 0磁头上的第 1个扇区)称为主引导扇区,也称为MBR,其后的第 2~第 63扇区就是保留扇区,它们与主引导扇区一样独立于硬盘的任何分区[1]。众所周知,现有的W indows操作系统 (9X/NT/2K/XP等)都不对这 62个保留扇区实施写操作,事实上,通常的软件也不对其操作,像高级格式化程序 FORMAT因只对硬盘的具体分区有效,而不能对其操作,所以保留扇区是公认的安全区,它就是本文所特指的保留扇区。通常保护卡正是充分利用这个闲置区域的安全性,把它们中的一部分当作自己的静态工作区,用于存放一些静态的设置信息和关键数据。
事实上,硬盘的保留扇区不止这一部分。当硬盘上含有扩展分区时,扩展分区中的每一个逻辑分区 (又称逻辑盘)的第 1个扇区称为扩展主引导扇区,其后紧跟的若干个扇区也是保留扇区,这里的保留扇区的数目与该分区的格式有关。
保护卡在首次安装后其设置信息便自动形成,其中的有些信息可随保护卡的重新设置而改变,也就是说,这些信息在保护卡末次设置后是不变的。保护卡的设置信息主要包括主引导扇区的备份、CMOS信息的备份、操作保护卡的各类管理密码、硬盘各分区是否进行还原保护的标志信息和保护卡签字 (识别)信息等,此外基于硬盘保护卡开发的一些特殊的管理功能,比如虚拟系统、单系统多频道等有许多关键性的数据,这些信息被保存在它的静态工作区中,即分散保存在保留扇区域的某些扇区中。
2 保护卡的原理分析
保护卡之所以能够实现系统还原,是因为在文件系统和磁盘驱动之间嵌入一层磁盘过滤驱动,正常情况下操作系统和各种应用程序对硬盘的访问必须经过磁盘过滤驱动,而磁盘过滤驱动将按照各家的保护算法,对磁盘的读写进行映射,使所有的磁盘读写都映射到缓冲区,保证原有数据不会被真正改写,从而实现系统还原。
为了达到控制和保护磁盘的目的,还原系统必须在操作系统启动之前获取引导权[2],将硬盘原来的 0头 0道 1扇保存在一个其他的扇区,将自己的代码写入 0头 0道 1扇,从而能在操作系统启动之前得到执行权,然后在操作系统启动之前完成 INT 13H的修改工作,并将保护卡用于代替 INT 13H的代码常驻内存,将中断向量表中 INT 13H的入口地址改为保护卡代替 INT 13H的代码常驻程序的入口地址。通常还原系统在修改 INT 13H的入口后通过常驻程序修改一些其他中断的入口,这些中断用来实现对中断向量表中 INT 13H入口地址监控,一旦发现被修改,就马上把它改回。用来替代 BIOS提供的 INT13H的代码主要实现如下的一些功能[3]:①拦截所有 INT 13H中对硬盘 0头 0道 1扇的操作,这些包括读写操作,把所有对 0头 0道 1扇的操作改为对虚拟还原程序备份的那个扇区的操作,这样做的目的是保护还原代码不被破坏,并且不能被有心人读出进行破解,即使用扇区编辑工具查看主引导区,实际上看到的是备份的主引导区。②拦截所有 INT 13H中的写硬盘操作,这里包括对 8G以下的硬盘的普通通过磁头、磁道、扇区定位的 INT 13H中的写操作和扩展 INT13H中基于扇区地址方式的对大硬盘的写操作,甚至包括扩展 INT 13H中对一些非 IDE接口的硬盘的写操作。拦截后对硬盘进行一些必要的写操作,比如对虚拟内存的写操作,用最少的时间和最少的硬盘空间把对虚拟内存所进行的写操作做一个记录,等系统重新启动后还原这一记录。③备份端口 70H,71H中的内容,并把最后一次执行时端口 70H,71H的内容和备份的内容做比较,不一样就提示 B IOS被修改,是否还原并通过密码验证修改 BIOS是否合法。
3 保护卡关键数据的安全措施
为了确保保护卡自身关键数据的安全,可以采取数据写入陷阱、端口 I/O拦截、数据备份与恢复等安全措施。
3.1 数据写入陷阱
数据写入陷阱是将磁盘系统的关键区域做数据冗余处理,并将硬盘保护系统的磁盘过滤驱动与数据冗余算法相结合,使穿透型病毒绕过硬盘保护系统之后,只能得到弃用的写入地址,从而使病毒无法完成感染。
如图1所示,数据写入陷阱采用对关键区域进行冗余的方法,对于通过硬盘保护系统过滤驱动得读写请求总是能得到关键区域的正常数据,保证了系统的正确可靠运行;而对于绕过保护系统过滤驱动的读写总是得到关键区域的错误的数据。
图1 数据写入陷阱示意图
对于操作系统或者非穿透型程序通过保护系统进行硬盘读写,而穿透型病毒绕过保护系统直接读写硬盘,数据写入陷阱可以保证穿透型病毒不能通过硬盘系统的关键区域得到正确的写入位置,从而保证保护系统不被病毒穿透感染。
3.2 端口 I/O读写拦截
保护卡不但要实现拦截所有硬盘写操作、拦截对主引导区的读写操作,更应该拦截对硬盘的读写端口的操作,只有这样才可能使基于硬盘的读写端口操作所对硬盘的破坏或是对虚拟还原技术的破解变成不可能。因为保护卡芯片内置的“I/O拦截模块”处于系统设备链的最底层,可以拦截和过滤所有的硬盘读写请求。“I/O拦截模块”通过和保护卡原有的过滤驱动配合,实现对硬盘读写请求进行合法性验证,拦截所有非法请求对硬盘的真实操作。经过正常途径产生的硬盘读写请求,一定会经过保护卡过滤驱动。保护卡过滤驱动在下发请求之前,会依据特有算法在数据中随机位置插入特殊的身份标记数据。当请求到达最底层的“I/O拦截模块”时,首先“I/O拦截模块”会提取数据中的身份标记数据,如果标记数据和拦截模块自己保存的标记数据一致,说明这个请求是经过正常途径下发的。然后拦截模块会检查数据的读写区域是否是合法区域,如果是操作系统可访问的合法区域,说明请求是合法请求,可以通过拦截,对硬盘进行真实读写操作。对于未通过上述任意一个验证步骤的请求,均判定为非法请求,拦截模块会执行拦截功能,丢弃非法请求。同时向操作系统返回虚假成功信息,返回虚假成功信息可以误导病毒以为操作成功。
3.2.1 硬盘 I/O端口的监控
硬盘读写操作有几种模式[4],包括读写文件、读写扇区和读写 I/O端口,并最终都要通过读写 I/O端口实现写盘操作。因此,写保护最强的就是由硬盘保护卡的 B IOS使 CPU进入保护模式,然后在保护模式监控 CMOS和硬盘的 I/O端口,非硬盘保护卡的写请求立刻拦截,并使用扇区映射技术映射到虚拟磁盘空间,在读操作时类似 INT 13H HOOK方式进行检查。因为它所处的级别最低,所以这种方案的保护性最强。CPU直接通过 1F0-1F7端口向硬盘发送待读写的物理扇区的位置、长度与读 /写命令,并通过 1F7端口返回硬盘的状态信息。因此,硬盘数据保护在这一层上进行,保护的可靠性是最高的。硬盘保护卡程序可以利用 HOOK PORT机制实现 I/O端口的监控。当计算机有读 /写命令出现时,I/O端口陷阱服务程序将使读/写命令陷入相应的处理程序中去,在相应的处理程序中通过修改 I/O端口的值,使该次操作的硬盘地址发生改变来实现对硬盘的保护。相应地,70H、71H两个 CMOS端口的陷阱服务程序可实现对 CMOS的读写监控。具体的实施方案如下:①编写静态的 VxD PORT设备驱动程序,并在启用硬盘保护时,将其加载成为设备驱动程序。②在保护模式下,工作在 RING0特权级的VxD安装 lF0-lF7端口的陷阱处理函数 (使用 Install_ IO_Handler或 Install_Multi_ IO_Handlers等 VMM函数调用来编写),如果有用户程序访问了端口,则系统会调用陷阱处理函数来管理和监控对硬盘的读写控制,新的端口陷阱服务程序实际上是一个 VSD程序,相当于在原来端口服务程序上加了一个钩子。③当用户进程访问 lF7端口时,则系统会调用陷阱处理函数来管理和监控对硬盘的读写控制。④对CMOS数据的读写保护采用类似技术监控 70H和7lH端口也可实现。⑤组织程序数据,以满足扩展卡BIOS芯片数据格式的需要。
3.2.2 虚拟设备驱动程序及其加载方法
VxD即虚拟设备驱动程序[5],用作 W indows系统和物理设备之间的接口。VxD技术的实质是通过加载具有 Ring0最高优先级的 VxD,运行于 Ring3上的应用程序能够以一定的接口控制 VxD的动作,从而达到控制系统的目的。硬盘保护卡之所以要使用 VxD技术,关键有两点,其一是 VxD拥有系统最高运行权限;其二是许多W indows系统底层功能只能在 VxD中调用,应用程序如果要用,必须编写VxD程序作为中介。VxD作为应用程序在系统中的一个代理,应用程序通过它来完成任何自己本身做不到的事情,通过这一手段,W indows系统为普通应用程序留下了扩充接口。
概括地说加载VxD的方法有三种,一种是在注册表中加入注册信息,这需要在硬盘保护卡数据区H_I_MsystemCurrent Control SetservicesVxDKeyStaticVxD=VxD带路径文件名。此方式要求在物理盘建立*.reg的注册文件,并在系统引导加载保护卡时创建,在进入 Win32Enh后执行它。第二种方法是将硬盘保护卡常驻内存,通过调用 INT2FH的 1605h功能来激活它。第三种方法是通过System.ini加载[386Enh]device=VxD路径文件名。
3.2.3 端口陷阱服务
端口陷阱服务相当于是一种端口驱动上的钩子,其的主要功能包括支持原端口驱动的主要功能,如端口驱动需要的排队、轮询服务、回调、File_ IO_Ring0等功能,同时支持实模式和块操作设备的端口功能支持;同时能对 I/O敏感指令进行甄别,区分不同情况进行不同的处理;此外具有开放的机制,允许其他应用程序对端口加钩,如 SCSI驱动的加载与正常执行。笔者与武汉噢易科技有限公司联合开发并完成了噢易 Free卡系统主要设计了硬盘状态寄存器端口 1F7和 CMOS寄存器端口 71两个 I/O端口的陷阱服务。从以上分析还可以看出,端口陷阱由于其所处的层次低,因此应该可以提供更彻底的硬盘保护。
3.3 保护卡关键数据的备份与恢复
数据备份是指保护卡刚刚安装完毕或重新设置生效时的全部保留扇区的数据进行备份。为了使用方便,可以把这些数据读出并保存在一个文件中,再把该文件保存到相对安全的地方去,一旦由于各种原因导致保护卡系统问题出现时,即使用保存的文件将全部保留扇区的数据加以恢复。
由于保护卡不拦截对硬盘 0柱面 0磁头的读操作,因此数据备份操作比较容易实现。比如在Windows 9X系统下,可通过其虚拟 DOS环境下的DEBUG命令执行 INT 13H操作实现;在 Windows NT/2K/XP系统下,用 Create File函数打开一个名为.PHYSICALDR IVE0的文件,并用 Read File函数对物理硬盘进行读操作即可实现。
由于保护卡屏蔽了对硬盘 0柱面 0磁头的写操作,因此数据恢复操作相对困难一些,因为这些操作必须在系统的核心级上才能完成。具体来讲,从80386以后 CPU分为 4个特权级别 (即 Ring0-Ring3)[6],供不同级别的进程使用,其中,Ring0的级别最高,Ring3的级别最低。Windows 9X/NT/2K/XP系统在设计时只使用了 CPU的两个特权级别,即 Ring0核心级和 Ring3用户级。在这两个级别中,Windows系统的虚拟机管理、各种驱动程序运行在 Ring0核心级,其他应用程序都运行在 Ring3用户级。在 Ring0核心级上可以执行 CPU的全部指令,而在 Ring3用户级上只能执行 CPU的部分指令,像磁盘 I/O指令就被限制在 Ring0核心级上执行。
在Windows 9X系统下,保护卡拦截了 INT 13H中断处理程序,但没有拦截磁盘 I/O;在 Windows NT/2K/XP系统下,保护卡拦截了 Ring3用户级的磁盘 I/O,但没有拦截 Ring0核心级的磁盘 I/O,所以在 Ring0核心级执行磁盘 I/O操作就能实现数据恢复。基于以上分析,进行数据恢复的操作流程如下:①打开备份的数据文件;②将数据备份的文件中的数据读到指定缓冲区;③进入 Windows系统的Ring0核心级;④执行磁盘 I/O写操作;⑤退出W indows系统的 Ring0核心级并关闭数据备份文件。
4 结束语
基于噢易 Free卡的电脑教室自主维护系统已经广泛的应用于国内 100余所高等学校和许多网吧等大型计算机场所,也与国内著名 PC机生产厂家结成合作联盟,此外产品也已经销售到海外十几个国家和地区,得到各类学校的普遍认可,为学校高质量的教学提供了技术支持和保障,该系统在教育行业、培训机构中的应用必将减轻机房维护和管理人员的工作量。
[1] 熊志勇.硬盘保留扇区的软件保护方法[J].电脑编程技巧与维护,2006(12):78-80.
[2] 谢建全.一种对公用机房硬盘进行有效保护的实现机制 [J].计算机工程,2003,29(5):177-179.
[3] 21CN网络安全小组.一种可以穿透还原卡和还原软件的代码 [EB/OL].http://www.20cn. net/ns/wz/sys/data/20040418173003.htm,2009-09-01.
[4] 兰高志.网卡中硬盘保护功能的增设[J].计算机工程,2004,3(6):133-134.
[5] 孟建波.VxD技术及其在实时反病毒中的应用[J].中国西部科技,2004(7):26-27.
[6] 李全忠,张军本,岳训,等.硬盘保护卡设置信息的安全恢复[J].计算机工程,2008,34(6):281-283.
Method of critical data security and protection for hard protect card itself
FENG Hong-cai,XIANG Yun-zhu
(Department of Computer and Information Engineering,Wuhan Polytechnic University,Wuhan 430023,China)
To solve the data security problem of hard protect card system,the paper analyzes the principle of the protect card systems,and further proposes a method of security protection for critical data in protect card system by utilizing hard disk retained sector fully and using technologies of data writing trap,port I/O block,data backup and recovery.
protect card;critical data;retained sector
TP 309.2
A
1009-4881(2010)01-0053-04
10.3969/j.issn.1009-4881.2010.01.015
2009-09-09.
丰洪才 (1963-),男,教授,博士,E-mail:fenghc@whpu.edu.cn.