版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
文件过滤驱动
FSFilter
引言文件系统程序是操作系统核心的部分,对于Windows操作系统来讲,文件系统和网络部分并列为驱动程序中最难的部分,难度大大超过声卡、显卡之类的硬件驱动程序。深入学习和调试文件驱动程序,文件过滤驱动程序,更有助于学习Windows系统底层核心技术。本胶片主要介绍文件过滤驱动开发和其应用:透明加解密,胶片内容比较广泛,希望能够普及这方面的知识,希望更多有兴趣的人一起研究,一起进步。学习曲线Windows系统Windows开发C/C++MFC机制COM机制
进程、线程、内存管理PE文件格式、SHE机制HOOK技术、反汇编。。。文件过滤驱动应用层驱动开发缓存管理文件头标识存放密钥、策略管理读写加解密处理。。。驱动层文件系统进程、线程、内存机制核心数据结构。。。大纲驱动开发简介开发特点开发要素文件过滤驱动基本概念分发函数设备绑定读写过滤文件路径获取透明加解密简介概念类型和逻辑流程基本数据结构重要技术难点透明加解密开发怎样开发透明加解密程序开发参考框架代码,Sfilter、Filemon、Filespy、toolflat的代码微过滤驱动Minifilter架构开发工具小集合DSM透明加解密技术透明加解密发展
驱动开发特点编程资料较少,微软提供接口和文档很少,经常需要反汇编、逆向在Ring0特级运行,权力很大,代码安全要求比较高不能采用VC直接调试,单机调试比较困难,必须采用windbg双机调试(Windbg+Vmare)定位问题困难,编程出错容易照成蓝屏,后果比较严重稳定周期较长兼容性测试最重要(各种防火墙软件、防病毒软件、主动防御软件、Rookit技术软件等等)Windows操作系统的升级导致驱动不能平滑过渡(win98/wind2000/winxp/vista/windows7)编程模式周期长调试困难驱动开发字符串操作进程空间、线程上下文内存分配线程互斥访问数据结构(双链表)中断优先级DeviceObject、DriverObjectIrp理解文件过滤驱动基本概念分发函数设备绑定读写过滤文件路径获取基本概念
卷,有卷管理器生成,一个卷一般对应一个逻辑盘文件系统NTFS:ntfs.sysFAT32:fastfat.sysCDFS:cdfs.sys文件系统拥有两类设备:控制设备,卷设备。如C:、D:为ntfs,E:F:为FAT32,那么E:、F:为FAT32文件系统的两个卷设备,而C:、D:为NTFS文件系统的两个卷设备文件操作针的irp都是发到卷设备上,发给控制设备的irp主功能号为IRP_MJ_FILE_SYSTEM_CONTROL,发给卷设备的irp一般都是文件操作irp分发函数主功能IRPDriverObject->MajorFunction[IRP_MJ_FILE_SYSTEM_CONTROL]=FsControl;DriverObject->MajorFunction[IRP_MJ_DIRECTORY_CONTROL]=DispatchDirectoryControl;DriverObject->MajorFunction[IRP_MJ_CREATE]
=DispatchCreate;DriverObject->MajorFunction[IRP_MJ_READ]
=DispatchRead;DriverObject->MajorFunction[IRP_MJ_WRITE]
=DispatchWrite;DriverObject->MajorFunction[IRP_MJ_SET_INFORMATION] =DispatchSetInfo;DriverObject->MajorFunction[IRP_MJ_CLOSE]
=DispatchClose;DriverObject->MajorFunction[IRP_MJ_CLEANUP]
=DispatchClean;DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] =DispatchDeviceIoControl;FAstIO 注册这些函数后,一般不做任何处理直接返回 快速IO主要是当文件数据存在缓存里面时,windows为了提高性能,直接向缓存管理器放送快速io去缓存获取数据设备绑定创建控制设备对象,对象类型必须FILE_DEVICE_DISK_FILE_SYSTEM调用IoRegisterFsRegistrationChange,注册文件系统激活或者卸载的回 调函数,文件系统常用的为ntfs、fat32、cdfs,默认情况下,文件系统是存在 的,没有触发激活机制,这时候在xp和windows2000sp4以上,仍然会触发 调用注册的回调函生成设备附加到文件系统上,这样能监控到文件系统的irp,主要是监控 此irpIRP_MJ_FILE_SYSTEM_CONTROL,在此irp中监控卷的挂载和卸载在卷的挂载过程中,生成设备附加到卷上,这样才完成设备的附加,做 完此操作后,就能监控到所有卷上的文件操作irp读写过滤如何获取到读取的内容,取决于
irp操作的io方式:缓冲方式、直 接方式、其他方式缓冲方式:在文件读写请求中没 有出现过,这种方式的特点是缓 冲从发出irp的应用程序的用户空 间,拷贝一份到内核空间,不同 进程空间的内存各自生效,但是 需要拷贝一份,效率较低直接方式是用MDL来传递缓冲区 ,将用户空间的地址范围直接映 射到内核空间,这里面要修改页 表的属性其他方式就是直接把用户空间的 指针传递到内核空间,不做任何 处理,这个指针就是irp- >UserBuffer读写过滤读操作 文件的长度:Length=IrpSp->Parameters.Read.Length;文件的偏移量:Offser.QuadPart=IrpSp->Parameters.Read.ByteOffset.QuadPart文件内容:Irp->MdlAddress不为空,则使用Irp->MdlAddress,缓冲区位置为MmGetSystemAddressForMdlSafe(Irp->MdlAddres),否则直接使用Irp->UserBuffer#defineCdMapUserBuffer(IC,UB){\*(UB)=(PVOID)(((IC)->MdlAddress==NULL)?\(IC)->UserBuffer:\(MmGetSystemAddressForMdlSafe((IC)->MdlAddress,HighPagePriority)));\}写操作 文件的长度:Length=IrpSp->Parameters.Write.Length文件的偏移量:LARGE_INTEGERlnOffset=IrpSp->Parameters.Write.ByteOffset;文件内容:Irp->MdlAddress不为空,则使用Irp->MdlAddress,缓冲区位置为MmGetSystemAddressForMdlSafe(Irp->MdlAddres),否则直接使用Irp->UserBuffer#defineCdMapUserBuffer(IC,UB){\*(UB)=(PVOID)(((IC)->MdlAddress==NULL)?\(IC)->UserBuffer:\(MmGetSystemAddressForMdlSafe((IC)->MdlAddress,HighPagePriority)));\文件路径获取在文件创建时获取文件路径透明加解密简介概念类型和逻辑流程基本数据结构重要技术难点概念 透明指的是用户在 操作的时候,虽然后台 在自动的进行加解密, 但是用户根本就不知道 加密的存在,就像中间 隔了一层透明的玻璃一样。 透明的好处在于不改变用户的操作,一切都和加密之前一样,甚至在有些企业安装加密后都无需通知所有的员工,就像加密并不存在一样,只是加密文件到了企业安全环境的外部才会发现文件无法打开类型和逻辑加密类型加密原理举例静态加密
把整个文件加密掉、或者把整个文件加密掉。动态加密
文件整体是加密状态,需要解密时读取多少就解密多少,写入多少就加密多少,而不需要把整个文件都解密掉。
主动加密由使用者自行要求文件变成加密状态称之为主动加密
主动加密的方式很多,例如用WinRar把文件压缩并定义一个口令,或者给Word、Excel文件一个打开或者修改的口令,这样其他人使用时必须由正确的口令才能打开,这是使用者主动进行的加密,如果使用者不进行加密则文件不会在加密状态。只针对某些文件夹加密的方式也可以理解为主动加密方式。主动加密主要应用于个人的文件保护。被动加密使用者并不知道或者并不想文件变成加密状态,系统自动将文件加密,称之为被动加密。
被动加密主要用于企业内部防止文件泄密,即使使用者不想文件被加密,系统还是会根据定义加密文件,这样文件被拷贝等各种方法脱离企业环境后,由于文件在加密状态而无法打开。被动加密具有另一个特性就是透明操作,即使用者并不需要进行加密和解密操作,一切都是后台自动完成,使用者可以不知道加密的存在。被动加密与作者的意愿无关,相关文件都会被加密,磁盘加密和文件透明加解密属于此类。
类型和逻辑1、加密指定后缀: 通过指定后缀加密是指保密程序对生成的某一类文档进行加密,而对其他后缀仍然采用明文。其优点是只加密制定类型的文档,而不影响其它文件,在加密范围上相对较小,系统的稳定性容易提高;缺点是可能产生“另存为其他类型的文档”的泄密漏洞,因为此时存储的结果并不是被指定加密的文件类型。即使把程序可能产生的后缀格式都指定也没有用,因为有很多办法另存出来,例如在Word中可以点击另存为然后在文件名栏输入2个双引号(“),然后在这2个双引号之间输入任意后缀(例如test.123),那么保存后的文件就是明文的,拷贝出来文件名改回doc后缀就可能导致文档泄密。 而且有些程序的文件格式没有定式,甚至可以保存为任意后缀,例如记 事本,这样加密指定的文件后缀就带来了安全漏洞。
2、加密不区分后缀: 加密不区分后缀是指保密程序对生成的所有文件都进行加密。这种加密方式由于对指定进程产生的任何文件都加密从而堵住“另存为其他类型的文档”的漏洞,可保证不论用户如何将文件另存都不会出现明文文件。其工作原理为指定进程只要发生写操作就加密被写的文件,任何中间文件和临时文件都会被加密。不区分文件后缀有更高的安全性,技术难度也大得多。类型和逻辑加密指定后缀加密不区分后缀重定向原理重定向原理+加密指定后缀(1)
重定向原理+加密不区分后缀(2)
透明加解密原理动态加解密原理+加密指定后缀(3)
动态加解密原理+加密不区分后缀(4)
基本流程读流程基本流程写流程基本数据结构FileObject,打开一个文件,io管理器为其创建一个文件对象结构FCB,一个文件可能被多个程序同时打开,这样会生成多个FileObject,但是只存在一个FCB段对象指针重要技术难点缓存管理单缓存合法进程打开存在文件,关闭文档,明文保存在缓存,此时缓存没有刷 至硬盘,也没有清空内存中的资源。此时非法进程再打开文档,在
IRP_MJ_CREATE例程会刷新缓存操作,所以非法进程打开为乱码合法进程打开存在文件,明文保存在缓存,此时缓存没有刷至硬盘,也 没有清空内存中的资源。此时非法进程再打开文档,如果是word这种占着句 柄没有关闭的文档,判断为非法进程,禁止打开;如果是notedpad采用内存 映射文件的方式的,句柄关闭,则非法进程打开正在被合法进程打开的文档,在IRP_MJ_CREATE例程会刷新缓存操作,所以非法进程打开为乱码非法进程打开未打开过的加密文档,密文。合法进程再打开加密文档,会先刷新缓存。合法进程打开加密文档,在关闭的时候在IRP_MJ_CLEANUP例程中对新 建的文件才刷新缓存获取缓存资源的顺序:文件系统资源最先获得缓存管理器资源次之获得VMM资源最后获得重要技术难点文件加密标识存放标记存储位置类型文件变长方法数据库中文件外部否文件的加密状态记录在数据库中,判断文件加密状态时读取数据库,缺点巨大,在驱动中是很难访问数据库的,且若数据库丢失则所有文件都可能无法打开了。文件目录中
文件外部否文件的加密状态记录在其所在的目录中,文件所属目录变化时程序需要处理各种细节,且存在记录丢失整个目录文件无法打开的可能性。
文件名上
文件内部否将文件的名字加上一个后缀来识别是否加密过且使用技术手段对用户隐藏掉这个后缀,通用性不好且容易被人为不小心去掉加密标记。文件属性里
文件内部否将文件的时间或者其他属性改变一下,例如将时间加上1000年且向用户隐藏掉这个变化,通用性太差且加密标记极易丢失。压缩在文件里文件内部否最好的思路可惜无法兼容所有的文件,一方面如果文件太小,可能很难进行压缩,对于一些压缩软件产生的压缩文件无法继续压缩等,通用性很差。文件头上
文件内部是在文件头部附加一段内容来记录文件的加密标记
文件尾上
文件内部是在文件尾部附加一段内容来记录文件的加密标记
重要技术难点读写加解密什么点能获取到数据与硬盘的交互(IRP_NOCACHE、IRP_PAGING_IO和IRP_SYNCHRONOUS_PAGING_IO
)在什么时刻进行读写加解密(读在完成历程,写直接在写例程完成)加解密的数据在哪里获取加解密算法、密钥管理重入管理文件追踪体管理透明加解密开发怎样开发透明加解密程序开发参考框架代码,Sfilter、Filemon、Filespy、toolflat的代码微过滤驱动Minifilter架构开发工具小集合参考资料怎样开发透明加解密程序
语言、基本技
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育教学设计体系构建
- 产房分娩标准化流程
- 节日活动策划方案
- 广东省广州市番禺区2025-2026学年八年级上学期期末地理试题(含答案)
- 2026子宫内膜癌病人的护理解读
- 拍摄流程标准化汇报
- 2026叙事护理在老年病房人际沟通中的应用解读
- 教育精准扶贫政策解读
- 安全讲课漫画课件设计规范
- 阑尾炎患者术后饮食护理建议
- 2026年上海市浦东新区初三语文二模试卷及答案
- 2026河南兴豫惠民职业技能培训学校有限公司市场化招聘15人笔试参考题库及答案解析
- (二模)苏北七市2026届高三第二次调研测试英语试卷(含答案及解析)
- (完整版)2026年党建基础知识应知应会试题及答案
- DB31∕T 1624-2025 机器人智能化等级评价指南
- 输电线路改造工程验收交底
- 气动冲床设备日常点检标准作业指导书
- 五年级苏教版数学下册《质因数和分解质因数》公开课教案
- 喀斯特地区灌木护坡技术规范
- OMRONE5CN数字式温度控制仪使用说明书
- 第七章管道与阀门的使用与维护
评论
0/150
提交评论