在NT内核的Windows系统中,它的I/O子系统是由I/O管理器、可扩展的一组驱动程序和其它一些执行体服务组成。I/O管理器定义了一套驱动程序的框架或者说模型,定义了如何进行处理各种I/O操作。整个I/O子系统是包驱动的,绝大多数的输入输出请求都是使用I/O请求包(I/O Request Packet, IRP)来传递的。IRP在I/O子系统的各个部件中间运动,把请求传递到合适的地方。
在文件系统架构中,最底层的是文件系统驱动程序(FSD),在它上面有一系列的文件系统过滤驱动程序(File System Filter Driver),每当应用程序发起一个对于文件的操作时,通过一个陷阱指令(INT 2EH)将处理器模式提升到ring0,从而完成从用户态进入内核态。I/0管理器检查数据存取合法性之后,构造一个IRP_MJ_READ的I/0请求包(IRP),并送到文件系统驱动程序的入口点,文件系统等各层驱动程序传递并处理IRP,最后将结果通过I/0管理器返回用户进程。?
值得注意的是,为了追求更好的性能,文件系统增加了FAST I/O例程,实现高速访问缓存数据的功能,也就是我们常说的Cache机制。不过只有在所需文件数据被缓存的情况下FAST I/O才会有效。当用户想访问某个文件时,I/O管理器首先调用FAST I/O例程。FAST I/O例程会返回一个布尔变量,告知是否能够进行FAST I/O处理。如果返回False,I/O管理器就不得不重新借助标准IRP的方式完成任务。如图1控制流程所示。
1.2文件系统过滤驱动工作原理
?
I/O管理器采用的是分层驱动程序模型,如图2所示。设备对象(FDO,FiDO)、驱动程序对象都是系统为便于分层管理而创建的数据结构。一个驱动程序可以根据需要创建多个设备对象。
每个I/O请求,由I/O管理器出发,依次从相应的设备栈的顶部向下传递。每传递一层,系统就调用与当前设备对象关联的驱动程序例程来对请求进行处理。这分层的驱动程序模型,允许一个驱动程序构造一个匿名的设备对象,并把它附着在另一个设备对象上。I/O管理器在传递IRP到目标设备对象之前,如果有附着的匿名设备对象,它就把IRP首先传递给此匿名设备对象,经过对象的过滤设备驱动程序处理之后才发给真正的目标设备对象。而这个附着的匿名设备对象就是我们说的FiDO(过滤设备对象),与它关联的驱动程序就称为过滤驱动程序。因此,我们可以在文件系统设备对象的上面设置一个过滤驱动程序,这个过滤驱动程序可以首先获得I/O的IRP请求,从而对原始的请求进行预处理、修改和监控,最终达到我们想要的目的。
2 USB移动存储设备安全访问技术
?
当前对USB设备控制权限基本上是完全禁止或者完全禁用,防护粒度比较粗,缺少细化控制容易造成主机敏感信息的外流。而基于自定制的文件系统过滤驱动程序,自动挂接操作系统中的全部文件系统驱动程序,可以截获到所有的对文件的操作。在过滤驱动程序中,决定是否允许对USB文件的操作,判断依据就是IRP,其中包含了对所有的I/O请求的描述,从中判断是目标设备类型是否为FILE_REMOVABLE_MEDIA,如果不是则直接放行IRP到下层驱动进行处理;否则向应用程序发送请求,根据设定好的规则来决定是允许放行、禁止操作或者提示用户处理。这样可以实现对U盘的禁用、只读、允许等权限;结合对键盘鼠标以及执行程序的行为特征判断,还可以实现防轮渡木马窃取主机文件。其主要分派例程为:?
SfCreate(IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp),在此函数中定义CheckRuleForFile来判断用户的操作是否符合设置的控制权限。具体流程如图3。
3电子文档加解密技术?
现有的电子文档保护方法主要有:一是文件加锁、解锁型;二是格式转换型。其主要缺点是需要手工进行转换,并且在文档创建、首次使用、打开后、外发或传输时不能做到全程保护,只要一个环节出了问题,就会有泄密的隐患。因此利用文件过滤驱动技术,全程加密保护敏感电子文档,包括查看、创建、打开以及修改等操作,可有效做到内核加解密、透明加解密和外发文档控制等功能,它既具有访问控制的方便性,又具有文件加密的安全性。它不但支持硬盘文件加密,也支持光盘、软盘、移动存储器的文件加密,与介质无关。?
其技术实现也是在文件系统驱动中插入过滤驱动,通过截获文件系统对受保护文件的读写数据请求,对写入的数据进行加密存储,对用户合法读出的数据进行解密。加解密整个过程对用户是透明的,不影响用户正常操作习惯。其实现流程如下:
加密算法可以采用AES、RC4、RC6等,并且密钥长度可选择。?
以上的加密和解密操作只是完成电子文档保护的基本核心功能,做到受控文档在存储介质上都是密文存储;除此之外还要考虑使用特殊标识或水印对受控文档的识别,采用内核态HOOK技术对截屏、拷贝、拖曳、另存为、打印、内存转储等动作行为的监控;根据实际需要还可以实现离线解密、外带管理等辅助功能。
?
4内核病毒防火墙技术?
传统的静态文件扫描和杀毒通过用户层的请求加载数据,经过层层调用和用户态与核心态的切换,最终完成查杀,这样执行效率相对较低;而利用文件系统过滤驱动,由于其工作在内核态,可以直接对文件进行操作,降低了系统调用的层数,避免了状态的切换,因而有极高的效率,可以进行实时动态扫描。由于其能够发现并阻止其病毒爆发或扩散,因而称其为病毒防火墙。?
下面介绍基于文件过滤驱动的病毒防火墙的工作机制,如图6。?
应用程序利用CreateFile函数创建一个新文件或者打开一个已经存在的文件时,I/O管理器生成IRP并向下传递,我们的文件系统过滤驱动(病毒防火墙)截获该IRP请求,若是关心的文件类型,则经过进一步处理后能够保证使用的文件不存在病毒,存在病毒的文件不能被打开或使用。如果IRP的返回值表明打开文件时产生了错误,文件系统过滤驱动只是把结果返回给I/O管理器;否则病毒防火墙要接手并扫描整个文件,完成后才能继续以后的工作。?
图6内核病毒防火墙工作机理
为了提高效率,文件过滤驱动程序需要在系统内核中维护病毒特征代码库,其匹配算法可采用现有成熟的高效算法。采用文件过滤驱动程序实现了动态扫描病毒,能保证文件系统的安全运行。分析实时病毒防火墙实现原理有利于改进反病毒软件的执行效率与准确性。