文件系统过滤驱动总结

文件系统过滤驱动 .


1 文件系统过滤驱动工作原理
Windows NT内核操作系统的驱动模型采用分层结构,如图1所示。图中左边是一个设备对象栈,设备对象

是操作系统为帮助软件管理硬件而创建的数据结构。每个硬件至少包含一个物理设备对象(PDO)和功能

设备对象(FDO),它们中间会存在一些过滤设备对象(FiDO)。驱动程序对象包含了一组处理I/O请求

的例程。分层结构使I/O的请求过程更加清晰明,影响到设备的每个操作使用I/O请求包(IRP,I/O 

Request Packag),每个I/O请求均由I/O管理器发出,并且依次从相应设备栈的顶端向下传递。每一层

对应的驱动程序对象都可以调用相应的例程来处理IRP包。
   
磁盘文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构,它负责为用户建立、存入、

读出、修改、转储文件,控制文件的存取与撤销。Windows系统中,在逻辑卷上无论使用什么格式的文件

系统,都要实际创建文件系统元数据结构。文件系统驱动随后使用这个结构来提供诸如为用户数据存储

分配空间的服务。逻辑卷必须被挂载上系统以后才能被用户访问。当逻辑卷被挂载后,文件系统驱动使

用、修改存储在卷上的元数据并且根据这个元数据建立内存数据结构来管理这个卷。磁盘文件系统响应


I/O请求的控制流程如图4-1所示。I/O请求由应用程序发出,经过WIN32子系统后送给I/O管理器,I/O管

理器根据应用层的需要向文件系统发出I/O请求包,即IRP包。文件系统驱动程序对象收到IRP包后首先判

断是否为Fast I/O请求,如果是,则交给Fast Dispatch例程处理,数据从缓存中得到并送给I/O管理器

;如果不是,则由Dispatch例程来处理IRP包,数据会由磁盘驱动程序从磁盘分区中得到,然后也被送到

I/O管理器。数据经过WIN32子系统的处理最终返回给应用程序。

述是不存在过滤驱动的文件系统控制流程。如果存在过滤驱动加载到文件系统之上时,控制流程会发生

变化,如图2中虚线框所示,I/O管理器发出的IRP包都会先经过过滤驱动的处理再发送给文件系统驱动,

而请求得到的数据也需要先经过过滤驱动的处理再返回给应用程序。因此,可以在过滤驱动中使用自定

义的例程对数据进行处理,实现加解密的操作。

2 文件系统过滤驱动的作用
 
(1)用于防病毒引擎。在系统读写文件的时候,捕获读写的数据内容,然后检测其中是否含有病毒代码



(2)用于文件系统的透明附加功能。比如希望在文件写过程中对数据进行加密,数据个性化等过程,针


对特殊的过程进行特殊处理,增加文件系统效率等。
(3)一些安全软件使用文件过滤进行数据读写的控制,作为防信息泄露软件的基础
(4)一些数据安全厂家用来进行数据备份与灾难恢复。


========

基于文件系统过滤驱动的信息安全防护技术 .



基本结构和工作原理
    1.1文件系统工作原理? 
    在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内核病毒防火墙工作机理
    为了提高效率,文件过滤驱动程序需要在系统内核中维护病毒特征代码库,其匹配算法可采用现有


成熟的高效算法。采用文件过滤驱动程序实现了动态扫描病毒,能保证文件系统的安全运行。分析实时


病毒防火墙实现原理有利于改进反病毒软件的执行效率与准确性。
========

相关链接

http://blog.csdn.net/henzox/article/details/38066673
一个简单的文件系统过滤驱动框架

你可能感兴趣的:(内核,驱动开发,过滤驱动,文件系统过滤驱动)