文件过滤驱动-FSFilter课件

上传人:无*** 文档编号:241408792 上传时间:2024-06-23 格式:PPT 页数:32 大小:4.69MB
返回 下载 相关 举报
文件过滤驱动-FSFilter课件_第1页
第1页 / 共32页
文件过滤驱动-FSFilter课件_第2页
第2页 / 共32页
文件过滤驱动-FSFilter课件_第3页
第3页 / 共32页
点击查看更多>>
资源描述
文件过滤驱动文件过滤驱动文件过滤驱动文件过滤驱动FSFilter FSFilter 文件文件过滤驱动过滤驱动FSFilter 引言引言引言引言文件系统程序是操作系统核心的部分,对于Windows操作系统来讲,文件系统和网络部分并列为驱动程序中最难的部分,难度大大超过声卡、显卡之类的硬件驱动程序。深入学习和调试文件驱动程序,文件过滤驱动程序,更有助于学习Windows系统底层核心技术。本胶片主要介绍文件过滤驱动开发和其应用:透明加解密,胶片内容比较广泛,希望能够普及这方面的知识,希望更多有兴趣的人一起研究,一起进步。引言文件系引言文件系统统程序是操作系程序是操作系统统核心的部分,核心的部分,对对于于Windows操作操作学习曲线学习曲线学习曲线学习曲线WindowsWindows系统系统系统系统WindowsWindows开发开发开发开发C C/C C+MMF FC C机机机机制制制制C COOMM机机机机制制制制 进进进进程程程程、线线线线程程程程、内内内内存存存存管管管管理理理理P PE E文文文文件件件件格格格格式式式式、S SH HE E机机机机制制制制H HOOOOK K技技技技术术术术、反反反反汇汇汇汇编编编编。文文文文件件件件过过过过滤滤滤滤驱驱驱驱动动动动应用层应用层驱动开发驱动开发驱动开发驱动开发缓存管理缓存管理缓存管理缓存管理文件头标识存放文件头标识存放文件头标识存放文件头标识存放密钥、策略管理密钥、策略管理密钥、策略管理密钥、策略管理读写加解密处理读写加解密处理读写加解密处理读写加解密处理。驱动层驱动层文件系统文件系统文件系统文件系统进程、线程、内存机制进程、线程、内存机制进程、线程、内存机制进程、线程、内存机制核心数据结构核心数据结构核心数据结构核心数据结构。学学习习曲曲线线Windows系系统统Windows开开发发C/C+文件文件过过大纲大纲大纲大纲驱动开发简介p开发特点p开发要素文件过滤驱动p基本概念p分发函数p设备绑定p读写过滤p文件路径获取透明加解密简介p概念p类型和逻辑p流程p基本数据结构p重要技术难点透明加解密开发p怎样开发透明加解密程序p开发参考框架代码,Sfilter、Filemon、Filespy、toolflat的代码p微过滤驱动Minifilter架构p开发工具小集合pDSM 透明加解密技术透明加解密发展 大大纲驱动纲驱动开开发简发简介介驱动开发特点驱动开发特点驱动开发特点驱动开发特点编程资料较少,微软提供接口和文档很少,经常需编程资料较少,微软提供接口和文档很少,经常需要反汇编、逆向要反汇编、逆向在在Ring0 Ring0 特级运行,权力很大,代码安全要求比较特级运行,权力很大,代码安全要求比较高高不能采用不能采用VCVC直接调试,单机调试比较困难,必须采用直接调试,单机调试比较困难,必须采用windbgwindbg双机调试(双机调试(Windbg+VmareWindbg+Vmare)定位问题困难,编程出错容易照成蓝屏,后果比较严重定位问题困难,编程出错容易照成蓝屏,后果比较严重稳定周期较长稳定周期较长兼容性测试最重要兼容性测试最重要(各种防火墙软件、防病毒软件、主动各种防火墙软件、防病毒软件、主动防御软件、防御软件、RookitRookit技术软件等等技术软件等等)WindowsWindows操作系统的升级导致驱动不能平滑过渡操作系统的升级导致驱动不能平滑过渡(win98/wind2000/winxp/vista/windows 7win98/wind2000/winxp/vista/windows 7)编程模式编程模式周期长周期长调试困难调试困难驱动驱动开开发发特点特点编编程程资资料料较较少,微少,微软软提供接口和文档很少,提供接口和文档很少,经经常需要反常需要反驱动开发驱动开发驱动开发驱动开发字符串操作进程空间、线程上下文内存分配线程互斥访问数据结构(双链表)中断优先级DeviceObject、DriverObjectIrp理解驱动驱动开开发发字符串操作字符串操作文件过滤驱动文件过滤驱动文件过滤驱动文件过滤驱动1.基本概念2.分发函数3.设备绑定4.读写过滤5.文件路径获取文件文件过滤驱动过滤驱动基本概念基本概念基本概念基本概念基本概念基本概念卷,有卷管理器生成,一个卷一般对应一个逻辑盘文件系统pNTFS:ntfs.syspFAT32:fastfat.syspCDFS:cdfs.sys1.文件系统拥有两类设备:控制设备,卷设备。2.如C:、D:为ntfs,E:F:为FAT32,那么E:、F:为FAT32文件系统的两个卷设备,而C:、D:为NTFS文件系统的两个卷设备3.文件操作针的irp都是发到卷设备上,发给控制设备的irp主功能号为IRP_MJ_FILE_SYSTEM_CONTROL,发给卷设备的irp一般都是文件操作irp基本概念基本概念卷,有卷管理器生成,一个卷一般卷,有卷管理器生成,一个卷一般对应对应一个一个逻辑盘逻辑盘分发函数分发函数分发函数分发函数主功能IRPpDriverObject-MajorFunctionIRP_MJ_FILE_SYSTEM_CONTROL=FsControl;pDriverObject-MajorFunctionIRP_MJ_DIRECTORY_CONTROL=DispatchDirectoryControl;pDriverObject-MajorFunctionIRP_MJ_CREATE=DispatchCreate;pDriverObject-MajorFunctionIRP_MJ_READ=DispatchRead;pDriverObject-MajorFunctionIRP_MJ_WRITE=DispatchWrite;pDriverObject-MajorFunctionIRP_MJ_SET_INFORMATION=DispatchSetInfo;pDriverObject-MajorFunctionIRP_MJ_CLOSE=DispatchClose;pDriverObject-MajorFunctionIRP_MJ_CLEANUP=DispatchClean;pDriverObject-MajorFunctionIRP_MJ_DEVICE_CONTROL=DispatchDeviceIoControl;FAstIO注册这些函数后,一般不做任何处理直接返回快速IO主要是当文件数据存在缓存里面时,windows为了提高性能,直接向缓存管理器放送快速io去缓存获取数据分分发发函数主功能函数主功能IRP设备绑定设备绑定设备绑定设备绑定创建控制设备对象,对象类型必须FILE_DEVICE_DISK_FILE_SYSTEM调用IoRegisterFsRegistrationChange,注册文件系统激活或者卸载的回调函数,文件系统常用的为ntfs、fat32、cdfs,默认情况下,文件系统是存在的,没有触发激活机制,这时候在xp和windows 2000 sp4以上,仍然会触发调用注册的回调函生成设备附加到文件系统上,这样能监控到文件系统的irp,主要是监控此irp IRP_MJ_FILE_SYSTEM_CONTROL,在此irp中监控卷的挂载和卸载在卷的挂载过程中,生成设备附加到卷上,这样才完成设备的附加,做完此操作后,就能监控到所有卷上的文件操作irp设备绑设备绑定定创创建控制建控制设备对设备对象,象,对对象象类类型必型必须须FILE_DEVICE读写过滤读写过滤读写过滤读写过滤如何获取到读取的内容,取决于irp操作的io方式:缓冲方式、直接方式、其他方式缓冲方式:在文件读写请求中没有出现过,这种方式的特点是缓冲从发出irp的应用程序的用户空间,拷贝一份到内核空间,不同进程空间的内存各自生效,但是需要拷贝一份,效率较低直接方式是用MDL来传递缓冲区,将用户空间的地址范围直接映射到内核空间,这里面要修改页表的属性其他方式就是直接把用户空间的指针传递到内核空间,不做任何处理,这个指针就是irp-UserBuffer读读写写过滤过滤如何如何获获取到取到读读取的内容,取决于取的内容,取决于读写过滤读写过滤读写过滤读写过滤读操作p文件的长度:Length=IrpSp-Parameters.Read.Length;p文件的偏移量:Offser.QuadPart=IrpSp-Parameters.Read.ByteOffset.QuadPartp文件内容:Irp-MdlAddress不为空,则使用Irp-MdlAddress,缓冲区位置为MmGetSystemAddressForMdlSafe(Irp-MdlAddres),否则直接使用Irp-UserBuffer#define CdMapUserBuffer(IC,UB)*(UB)=(PVOID)(IC)-MdlAddress=NULL)?(IC)-UserBuffer:(MmGetSystemAddressForMdlSafe(IC)-MdlAddress,HighPagePriority);写操作p文件的长度:Length=IrpSp-Parameters.Write.Lengthp文件的偏移量:LARGE_INTEGER lnOffset=IrpSp-Parameters.Write.ByteOffset;p文件内容:Irp-MdlAddress不为空,则使用Irp-MdlAddress,缓冲区位置为MmGetSystemAddressForMdlSafe(Irp-MdlAddres),否则直接使用Irp-UserBuffer#define CdMapUserBuffer(IC,UB)*(UB)=(PVOID)(IC)-MdlAddress=NULL)?(IC)-UserBuffer:(MmGetSystemAddressForMdlSafe(IC)-MdlAddress,HighPagePriority);读读写写过滤读过滤读操作操作文件路径获取文件路径获取文件路径获取文件路径获取在文件创建时获取文件路径文件路径文件路径获获取在文件取在文件创创建建时获时获取文件路径取文件路径透明加解密简介透明加解密简介透明加解密简介透明加解密简介1.概念2.类型和逻辑3.流程4.基本数据结构5.重要技术难点透明加解密透明加解密简简介概念介概念概念概念概念概念透明指的是用户在操作的时候,虽然后台在自动的进行加解密,但是用户根本就不知道加密的存在,就像中间隔了一层透明的玻璃一样。透明的好处在于不改变用户的操作,一切都和加密之前一样,甚至在有些企业安装加密后都无需通知所有的员工,就像加密并不存在一样,只是加密文件到了企业安全环境的外部才会发现文件无法打开 概念概念透明指的是用透明指的是用户户在在类型和逻辑类型和逻辑类型和逻辑类型和逻辑加密类型加密类型加密原理加密原理举例举例静态加密 把整个文件加密掉、或者把整个文件加密掉。动态加密 文件整体是加密状态,需要解密时读取多少就解密多少,写入多少就加密多少,而不需要把整个文件都解密掉。主动加密由使用者自行要求文件变成加密状态称之为主动加密 主动加密的方式很多,例如用WinRar把文件压缩并定义一个口令,或者给Word、Excel文件一个打开或者修改的口令,这样其他人使用时必须由正确的口令才能打开,这是使用者主动进行的加密,如果使用者不进行加密则文件不会在加密状态。只针对某些文件夹加密的方式也可以理解为主动加密方式。主动加密主要应用于个人的文件保护。被动加密使用者并不知道或者并不想文件变成加密状态,系统自动将文件加密,称之为被动加密。被动加密主要用于企业内部防止文件泄密,即使使用者不想文件被加密,系统还是会根据定义加密文件,这样文件被拷贝等各种方法脱离企业环境后,由于文件在加密状态而无法打开。被动加密具有另一个特性就是透明操作,即使用者并不需要进行加密和解密操作,一切都是后台自动完成,使用者可以不知道加密的存在。被动加密与作者的意愿无关,相关文件都会被加密,磁盘加密和文件透明加解密属于此类。类类型和型和逻辑逻辑加密加密类类型加密原理型加密原理举举例静例静态态加密加密 把整个文件加密掉、或把整个文件加密掉、或类型和逻辑类型和逻辑类型和逻辑类型和逻辑1、加密指定后缀:通过指定后缀加密是指保密程序对生成的某一类文档进行加密,而对其他后缀仍然采用明文。其优点是只加密制定类型的文档,而不影响其它文件,在加密范围上相对较小,系统的稳定性容易提高;缺点是可能产生“另存为其他类型的文档”的泄密漏洞,因为此时存储的结果并不是被指定加密的文件类型。即使把程序可能产生的后缀格式都指定也没有用,因为有很多办法另存出来,例如在Word中可以点击另存为然后在文件名栏输入2个双引号(“),然后在这2个双引号之间输入任意后缀(例如test.123),那么保存后的文件就是明文的,拷贝出来文件名改回doc后缀就可能导致文档泄密。而且有些程序的文件格式没有定式,甚至可以保存为任意后缀,例如记事本,这样加密指定的文件后缀就带来了安全漏洞。2、加密不区分后缀:加密不区分后缀是指保密程序对生成的所有文件都进行加密。这种加密方式由于对指定进程产生的任何文件都加密从而堵住“另存为其他类型的文档”的漏洞,可保证不论用户如何将文件另存都不会出现明文文件。其工作原理为指定进程只要发生写操作就加密被写的文件,任何中间文件和临时文件都会被加密。不区分文件后缀有更高的安全性,技术难度也大得多。类类型和型和逻辑逻辑1、加密指定后、加密指定后缀缀:类型和逻辑类型和逻辑类型和逻辑类型和逻辑加密指定后缀加密不区分后缀重定向原理重定向原理+加密指定后缀(1)重定向原理+加密不区分后缀(2)透明加解密原理动态加解密原理+加密指定后缀(3)动态加解密原理+加密不区分后缀(4)类类型和型和逻辑逻辑加密指定后加密指定后缀缀加密不区分后加密不区分后缀缀重定向原理重定向原理重定向原理重定向原理+加加基本流程基本流程基本流程基本流程读流程基本流程基本流程读读流程流程基本流程基本流程基本流程基本流程写流程基本流程写流程基本流程写流程基本数据结构基本数据结构基本数据结构基本数据结构FileObject,打开一个文件,io管理器为其创建一个文件对象结构FCB,一个文件可能被多个程序同时打开,这样会生成多个FileObject,但是只存在一个FCB段对象指针基本数据基本数据结结构构FileObject,打开一个文件,打开一个文件,io管理器管理器为为重要技术难点重要技术难点重要技术难点重要技术难点缓存管理p单缓存合法进程打开存在文件,关闭文档,明文保存在缓存,此时缓存没有刷至硬盘,也没有清空内存中的资源。此时非法进程再打开文档,在IRP_MJ_CREATE例程会刷新缓存操作,所以非法进程打开为乱码合法进程打开存在文件,明文保存在缓存,此时缓存没有刷至硬盘,也没有清空内存中的资源。此时非法进程再打开文档,如果是word这种占着句柄没有关闭的文档,判断为非法进程,禁止打开;如果是notedpad采用内存映射文件的方式的,句柄关闭,则非法进程打开正在被合法进程打开的文档,在IRP_MJ_CREATE例程会刷新缓存操作,所以非法进程打开为乱码非法进程打开未打开过的加密文档,密文。合法进程再打开加密文档,会先刷新缓存。合法进程打开加密文档,在关闭的时候在IRP_MJ_CLEANUP例程中对新建的文件才刷新缓存p获取缓存资源的顺序:w文件系统资源最先获得w缓存管理器资源次之获得wVMM资源最后获得重要技重要技术难术难点点缓缓存管理存管理重要技术难点重要技术难点重要技术难点重要技术难点文件加密标识存放标记存储位置 类型文件变长方法数据库中文件外部否文件的加密状态记录在数据库中,判断文件加密状态时读取数据库,缺点巨大,在驱动中是很难访问数据库的,且若数据库丢失则所有文件都可能无法打开了。文件目录中 文件外部否文件的加密状态记录在其所在的目录中,文件所属目录变化时程序需要处理各种细节,且存在记录丢失整个目录文件无法打开的可能性。文件名上 文件内部否将文件的名字加上一个后缀来识别是否加密过且使用技术手段对用户隐藏掉这个后缀,通用性不好且容易被人为不小心去掉加密标记。文件属性里 文件内部否将文件的时间或者其他属性改变一下,例如将时间加上1000年且向用户隐藏掉这个变化,通用性太差且加密标记极易丢失。压缩在文件里文件内部否最好的思路可惜无法兼容所有的文件,一方面如果文件太小,可能很难进行压缩,对于一些压缩软件产生的压缩文件无法继续压缩等,通用性很差。文件头上 文件内部是在文件头部附加一段内容来记录文件的加密标记 文件尾上 文件内部是在文件尾部附加一段内容来记录文件的加密标记 重要技重要技术难术难点文件加密点文件加密标识标识存放存放标记标记存存储储位置位置 类类型文件型文件变长变长方法数方法数重要技术难点重要技术难点重要技术难点重要技术难点读写加解密p什么点能获取到数据与硬盘的交互(IRP_NOCACHE、IRP_PAGING_IO和IRP_SYNCHRONOUS_PAGING_IO)p在什么时刻进行读写加解密(读在完成历程,写直接在写例程完成)p加解密的数据在哪里获取p加解密算法、密钥管理重入管理文件追踪体管理重要技重要技术难术难点点读读写加解密写加解密透明加解密开发透明加解密开发透明加解密开发透明加解密开发1.怎样开发透明加解密程序2.开发参考框架代码,Sfilter、Filemon、Filespy、toolflat的代码3.微过滤驱动Minifilter架构4.开发工具小集合5.参考资料透明加解密开透明加解密开发发怎怎样样开开发发透明加解密程序透明加解密程序怎样开发透明加解密程序怎样开发透明加解密程序怎样开发透明加解密程序怎样开发透明加解密程序语言、基本技能、开发工具(C/C+&WDK)框架技术难点(预研)主要业务(场景分析)质量保证(静态检查代码)可测试性(单元测试、测试工具)性能兼容性怎怎样样开开发发透明加解密程序透明加解密程序语语言、基本技能、开言、基本技能、开发发工具(工具(C/C+开发参考框架:开发参考框架:开发参考框架:开发参考框架:Logical Filter Logical Filter FileMon FileSpySfiltertoolflat开开发发参考框架:参考框架:Logical Filter FileMon 开发参考框架:微过滤驱动开发参考框架:微过滤驱动开发参考框架:微过滤驱动开发参考框架:微过滤驱动MinifilterMinifilter开开发发参考框架:微参考框架:微过滤驱动过滤驱动Minifilter微过滤驱动微过滤驱动微过滤驱动微过滤驱动MinifilterMinifilter架构架构架构架构Minifilter相关资料http:/ http:/ http:/ 微微过滤驱动过滤驱动Minifilter架构架构Minifilter相关相关开发工具小集合开发工具小集合开发工具小集合开发工具小集合dbgMon.exe,监视驱动日志的程序,比dbgView更好用FileTest.exe,一个完整覆盖文件操作的测试工具 IrpTracker.exe,监视追踪irp流向的工具开开发发工具小集合工具小集合dbgMon.exe,监视驱动监视驱动日志的程序,比日志的程序,比d参考资料参考资料参考资料参考资料File System InternalsWindows 文件系统过滤驱动开发教程-楚狂人寒江独钓-windows内核安全编程OSR DOChttp:/http:/ http:/ http:/ http:/ 参考参考资资料料File System Internals透明加解密发展透明加解密发展透明加解密发展透明加解密发展第一技技术基于应用层 api hook 的透明加密第二代技术基于文件过滤驱动之清cache第三代技术基于文件过滤驱动智能双缓冲技术的产品第四代技术filter+layerFSD 透明加解密透明加解密发发展展第一技技第一技技术术基于基于应应用用层层 api hook 的的
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!