文件过滤驱动
文件系统过滤驱动
1 引言文件系统过滤概述文件安全性问题已成为当今信息科学领域最重要的课题之一。
目前,解决这个问题的主要技术手段有两种:一是利用应用层HOOK(钩子)技术,对Windows 提供的文件操作函数(API)及由文件操作所触发的Windows消息进行HOOK,经过适当的处理达到预期目的,缺点是效率低、稳定性和一致性差,不适合于大型系统的开发;另一种是开发文件过滤驱动程序,文件过滤驱动作为一种内核态中间层驱动,不需要改变下层驱动或用户程序而增加新的功能,具有效率高、可靠性强、可扩充等特点,成为现阶段信息安全技术研究的热点。
1.1 文件过滤驱动在信息安全领域的应用1 文件加/解密文件过滤驱动程序可以实现对指定文件、目录,甚至整个逻辑盘的加/解密功能。
当文件在写入磁盘的过程中,截获所有对该文件的IRP_MJ_WRITE,在其分发例程中对IRP携带的数据进行加密处理后写入磁盘;文件被从磁盘读取的过程中,截获所有对该文件的IRP_MJ_READ,在其分发例程中对IRP携带的数据进行解密处理后向上层返回。
加密后的文件在磁盘中以密文形式存储,保证了数据存储的安全性。
2 病毒防护应用程序在创建一个新文件或打开一个已存在文件时,文件系统过滤驱动程序截获IRP_MJ_create,判断被打开文件是否存在和病毒特征代码库相匹配的特征,若存在,说明文件感染了病毒,失败掉该IRP,拒绝打开;否则,使IRP继续向下传递,完成正常的打开操作。
3 进程控制为了防止恶意进程的破坏,有时需要规定只允许某些经过安全验证的特定进程对受保护的文件进行访问,其他不在规则范围内的进程不允许访问。
我们可以通过系统提供的PsGetCurrentProcessId、PsGetCurrentThreadId等API函数得到发起I/O请求的进程及线程的相关信息,如:获得发起进程名称,与安全访问规则(进程白名单)中的可信进程相比较,若该进程位于规则中,说明信任其行为是安全的,允许访问受保护文件;否则,拒绝访问。
Windows文件系统过滤驱动开发教程
Windows文件系统过滤驱动开发教程0. 作者,楚狂人自述我感觉Windows文件系统驱动的开发能找到的资料比较少。
为了让技术经验不至于遗忘和引起大家交流的兴趣我以我的工作经验撰写本教程。
我的理解未必正确,有错误的地方望多多指教。
有问题欢迎与我联系。
我们也乐于接受各种驱动项目的开发。
邮箱为MFC_Tan_Wen@,QQ为16191935。
作者是杭州楚狂人,首先在驱动开发网连载.此版本比驱网连载版本稍有修改.除了0外,已发1-8节.后继的章节将在不久后整理推出.您可以随时发邮件向我索取更新的版本.最后更新日期是11月2日.1. 概述,钻研目的和准备我经常在网上碰到同行请求开发文件系统驱动。
windows的pc机上以过滤驱动居多。
其目的不外乎有以下几种:一是用于防病毒引擎。
希望在系统读写文件的时候,捕获读写的数据内容,然后检测其中是否含有病毒代码。
二是用于加密文件系统,希望在文件写过程中对数据进行加密,在读的过程中进行解密。
三是设计透明的文件系统加速。
读写磁盘的时候,合适的cache算法是可以大大提高磁盘的工作效率。
windows本身的cache算法未必适合一些特殊的读写磁盘操作(如流媒体服务器上读流媒体文件)。
设计自己的cache算法的效果,我已在工作中有所感受。
如果你刚好有以上此类的要求,你可以阅读本教程。
文件系统驱动是windows系统中最复杂的驱动种类之一。
不能对ifsddk中的帮助抱太多希望,以我的经验看来,文件系统相关的ddk帮助极其简略,很多重要的部分仅仅轻描淡写的带过。
如果安装了ifsddk,应该阅读src\filesys\OSR_docs下的文档。
而不仅仅是ddk帮助。
文件系统驱动开发方面的书籍很少。
中文资料我仅仅见过侯捷翻译过的一本驱动开发的书上有两三章涉及,也仅仅是只能用于9x的vxd驱动。
NT文件系统我见过一本英文书。
我都不记得这两本书的书名了。
如果您打算开发9x或者nt文件系统驱动,建议你去网上下载上文提及的书。
微文件系统过滤驱动开发指南
Windows文件系统过滤管理器之微过滤器驱动开发指南0.译者序对我来说,中文永远是最美,最简洁,最精确和最高雅的文字。
本文翻译仅仅用做交流学习。
我不打算保留任何版权或者承担任何责任。
不要引用到赢利出版物中给您带来版权官司。
本文的翻译者是楚狂人,如果有任何问题,你可以通过邮箱MFC_Tan_Wen@,或者是QQ16191935,或者是MSN walled_river@与我交流。
我翻译此文出于对文件系统技术的兴趣。
这就是新的文件系统过滤接口。
其实也不算什么新的东西,微软开发了另一个“旧模型的”过滤驱动,称之为过滤管理器(Filter Manager)。
从而提供了一系列新的接口来让你开发新的过滤器。
确实这套接口变简单清晰了。
你至少避免了包含无数个信息的IRP,避免了请求在各个部件中循环的发来发去,一个分发例程中处理无数中情况,一不小心系统崩溃。
我不知道花了多少时间才弄明白一个简单的缓冲读请求从用户到过滤到文件系统和缓冲管理器,虚拟内存管理器之间的关系!现在你也许不需要再管他们了,仅仅做好自己的过滤工作就可以。
这套接口强大吗?能实现你想要的功能吗?你很快就发现你没有研究过sfilter就看不懂Minifilter,或者是还得从sfilter开始做起更灵活一点。
微软就是这样,拿僵硬而且也不简单的东西来“简化”强大灵活但是设计上一团糟的东西,对于你来说是两者都必须学习,最后你的脑子被微软塞得满满的,不过没关系,我们已经习惯了.此文的原文是《Filter Driver Development Guide》,出自微软的网站。
我在以下这个地址下载得到此文: /download/e/b/a/eba1050f-a31d-436b-9281-92cdfeae4b45/FilterDriverDe veloperGuide.doc我尽量在翻译中使文章保持原貌。
如果您认为此文无法理解,建议您首先阅读旧的文件过滤驱动的相关资料。
文件系统驱动和设备驱动的区别 以及介绍
文件系统过滤驱动以及设备驱动的区别一、何谓文件系统过滤驱动?文件系统过滤驱动是一种可选的,为文件系统提供具有附加值功能的驱动程序。
文件系统过滤驱动是一种核心模式组件,它作为Windows NT执行体的一部分运行。
文件系统过滤驱动可以过滤一个或多个文件系统或文件系统卷的I/O操作。
按不同的种类划分,文件系统过滤驱动可以分成日志记录、系统监测、数据修改或事件预防几类。
通常,以文件系统过滤驱动为核心的应用程序有防毒软件、加密程序、分级存储管理系统等。
二、文件系统过滤驱动并不是设备驱动设备驱动是用来控制特定硬件I/O设备的软件组件。
例如:DVD存储设备驱动是一个DVD驱动。
相反,文件系统过滤驱动与一个或多个文件系统协同工作来处理文件I/O操作。
这些操作包括:创建、打开、关闭、枚举文件和目录;获取和设置文件、目录、卷的相关信息;向文件中读取或写入数据。
另外,文件系统过滤驱动必须支持文件系统特定的功能,例如缓存、锁定、稀疏文件、磁盘配额、压缩、安全、可恢复性、还原点和卷装载等。
下面两部分详细的阐述了文件系统过滤驱动和设备驱动之间的相似点与不同点。
1、文件系统过滤驱动同设备驱动的相似点:下列部分描述了Windows操作系统中文件系统过滤驱动和设备驱动之间的相似点:(1)、类似的结构类似于设备驱动,文件系统过滤驱动有着属于自己的DriverEntry、Dispatch和I/O组件例程。
文件系统过滤驱动同设备驱动一样调用许多相同的系统核心例程,它们都会过滤发送给它们所关联的设备的I/O请求。
(2)、类似的功能:文件系统过滤驱动和设备驱动都是I/O子系统的组成部分,因此它们都接收和作用于I/O请求包(IRP)。
类似于设备驱动,文件系统过滤驱动同样可以创建它们自己的IRP并将该IRP发送到低层驱动。
这两种驱动均可以通过注册回调函数来接收多种系统事件的通知。
(3)、其它类似点:同设备驱动类似,文件系统过滤驱动可以接收传入的I/O控制码(IOCTLs)。
Windows 文件过滤驱动经验总结
P 后什么都不做,直接调用 IoCompleteRequest() 来返回。 (2) 拿到这个 IRP 后什么都不做,直接传递到底层设备,
使用IoSkipCurrentIrpStackLocation() 后调用 IoCallDriver() 传递。 (3) 使用 IoBui
ldSynchronousFsdRequest() 或 IoBuildDeviceIoControlRequest()来建立 IRP 的。
Windows 文件过滤驱动经验总结 1、获得文件全路径以及判断时机 除在所有 IRP_MJ_XXX 之前自己从头创建 IRP
发送到下层设备查询全路径外,不要尝试在 IRP_MJ_CREATE 以外的地方获得全路径,因为只有在 IRP_MJ_CREATE 中才会使
用 ObCreateObject() 来建立一个有效的 FILE_OBJECT。而 在 IRP_READ IRP_WRITE 中它们是直接操作
TION 等 IRP 不要去管它,因为它只是一个过程。最终读 写还是如上所介绍。至于以上这些 IRP 哪个是由 CC MGR 发送的,哪些是由
I/O MGR 发送和在什么时候发送的,这个已经有很多讨论了,相 信可以找到。
7、举例说明关于 IRP 传递与完成注意事项 只
看 Walter Oney 的那本 《Programming the Microsoft Windows driver model》里介绍的
其是你要达到一些特殊目的,这时候更需要注意,如 IRP_MN_QUERY_DIRECTORY,不同的标志结果有很大的不同。 3、从
头建立 IRP 获取全路径注意点 自己从头建立一个 IRP_MJ_QUERY_INFORMATION 的 IRP 获取全路径时需要注意,不
基于文件过滤驱动的移动存储介质读写控制
5 0
大
连 民 族 学 院 学
报
第 1卷 3
请求 变成 I P发 给 文件 系统 设 备栈 , R 文件 系统 驱 动 程序把 文件系 统操作 转换 为 响应 的存储 设备 驱
第l 3卷
第 1期
大 连 民 族 学 院 学 报
J u n lo ain Nain l isUnv ri o r a fD l t ai e ies y a o t t
Vo.1 No 1 3, .1
21 0 1年 1月
J n a 2 1 a u ̄ 0 1
文 章 编 号 :0 9—35 2 1 ) 1 0 4 0 10 1X(0 1 0 — 09— 3
收稿 日期 :00— 6— 7 最后 修 回 日期 :0 0— 9— 6 21 0 0; 2 1 0 1
图 1 文件 系统 工 作 原 理
文 件 过 滤 驱 动 程 序 是 针 对 文 件 系 统 驱 动 而 言 。当应用 程 序 读 写 文 件 时 , O 管 理 器 将 这 些 I /
作者 简介 : 米守防 (9 8一) 男 , 17 , 回族 , 山东邹城人 , 工程师 , 主要从 事计算机应用技术研究 。
K e o ds: l y tm l rd rv r rm o a l t r g d a;s c rt yw r i f e s se f t e i e ; e v be so a e me i i e e u iy
近年 来 , 信息 安 全 问题成 为人 们关 注 的焦 点 。 权威 机构 做 的调查 结果显 示 : 超过 8 5% 的安全 威 胁来 自单 位 内部 。而作 为新 一代 取 代软 盘 的移 动 存储设 备 ( U盘 、 动 硬盘 、 动 光 驱 等 ) 因为 如 移 移 , 其使用 灵 活 、 便 , 它在企 业 信息 化 的过 程 中迅 方 使 速得 到普及 , 来 越 多的敏 感 信息 、 密数 据和 档 越 秘 案资料 被存 贮 在 移 动 存 储 介 质里 , 给 企业 信 息 这 资源带 来相 当大 的安 全 隐患 。鉴 于上 述 的安 全 风
过滤驱动来实现文件访问控制
过 滤驱 动 原 理 , 提 出 了利 用 系 统 过 滤 的 方 式 实现 文件 系统 安 全 的 方 案 。 并
【 键词】 过滤驱动 , 关 : 文件 系统 , 问 控 制 访
1 引 言 、
备 栈 中 。 备 栈 是 一 组 设 备 对 象 。 些 设 备 是 相互 关 联 的 。 设 这 任何
_ 制 .这 种 非 常 可 靠 .不 过 要 求 程 序 员 必 须 对 Wid 、 的 系 统 机 23缓 存 管 理 器 n oV S 缓 存管 理器 是一 组 内 核模 式 的 函 数 和 系 统 线 程 .他 们 与 内 制 . 行 流 程 . 个 子 系 统 , 块 等 有 比较 深 的 了解 运 各 模 存 管 理 器 协 同工 作 . 所 有 的 Wid W 文 件 系统 驱 动程 序 ( 地 为 noS 本 2 文 件 系统 驱 动 程 序 结 构 S S 提 文 件 系 统 驱 动 程 序 ( S ) 理 文 件 系 统 格 式 虽 然 F D 运 F D 和 网络 F D) 供 了 数 据 缓 存 的 能 力 FD管 S
随 着 计 算 机 的 大 规模 使 用 及互 联 网 的 日益 普 及 .计 算 机 系 来 自应 用 的 请 求 ,最 终 被 Widw O管 理 器 翻 译 成 i n o sI / r p的 , 总 统 的 安全 问题 越 来 越 受 到 关 注 。 文 件 作 为 计 算 机 数 据 的 载 体 . 是 发送 给 设 备栈 的顶 端 那 个 设 备 。 而
一
r 从 设 备 栈 的 顶 端 开 始 的 . 步 向 下 发 送 。D v o ne p是 逐 eV l l u 为 了 提 高 文件 系统 的安 全 性 . 目前 研 究 比 较 多 的 是 实 现 文 可 见 i 件 访 问控 制 。要 完 全 实 现 对 文 件 访 问 的控 制 , 有 两 种方 法 。 只 第 表 示 我 们 实 际 要 过 滤 的 Vo me设 备 . e T D表 示 这 个 设 备 栈 l u D vo 那 种 是通 过 Wid W 提供 的 A I 数 来 实 现 .这 种 方 法 比较 容 的顶 端 我 们 只 要 在 这 个 设 备 栈 的 顶 端 再 绑 定 一 个 设 备 . 发 送 nO S P 函 o n u e的 请 求 . 自然会 先 发 给我 们 的 设 备 来 处 理 。 易 . 是 存 在 着致 命 的缺 陷 。 二 种 方 法 则 是 利 用 系统 驱 动 的 机 给 V li 但 第
基于文件过滤驱动的病毒防范方法的实现
( 1 . De p . o f N e t w o r k , E l e c t r o n i c E n g i n e e r i n g I n s t i t u t e o f He f e i , He f e i 2 3 0 0 3 7 , C h i n a ;
基 于文件 过滤驱 动 的文件 型病毒 防 护方法 。分 析 了文件 过滤 驱 动 原理 , 通 过 在文 件 系统 驱 动上 层 附加 一 层 过滤 驱 动 , 来 截 获上层 应用 对文件 的各 种操 作 , 阻 止可 疑应用 程序 对 可执 行 文件 的写操 作 , 达 到 主动 防 御文 件 型病 毒 的 目的。文 章从
陈建 熊 , 揭 摄 , 张 鑫
( I . 合肥 电子 工程 学 院 网络 系 , 安徽 合肥 2 3 0 0 3 7 ;
2 . 武警合 肥指挥 学院 院务部 , 安徽 舍 肥 2 3 0 0 3 1 )
摘 要: 计 算机 病毒 给 当今 社会 造成 了较 大危 害 , 为 了有 效 防止 病 毒蔓 延 , 针 对 当前 防病 毒 软件 存 在 的不 足 , 给 出 了一种
2 . D e p .o f L o g i s t i c s , He f e i C o mma n d C o l l e g e o f A r me d P o l i c e , He f e i 2 3 0 0 3 1 , C h i n a )
Ab s t r a c t : Co mp u t e r v i r u s i s h a r mf ul t O s o c i e t y. I n v i e w o f t h e d e f e c t o f t h e v i r u s d e t e c t i o n me ho t d e x i s t i n g, a n e w me t h o d o f v i us r p r e - v e n t i o n ba s e d o n il f e s y s t e m i f l er t d r i v e r i s b r o u g h t f o r wa r d O t p r e v e n t c o mp u t e r v i r u s p r o p a g a io t n. An a l y z e he t he t o r y o f il f e s y s t e m il f t e r d r i v e r . Wi h t a t t a c h i n g a il f t e r d r i v e r O t he t il f e s y s t e m d r i v e r O t o b t a i n u p p e r a p p l i c a t i o n o p e r a t i n g o n he t il f e o f he t d i s k, c a n p r e v e n t S U S - p i c i o u s a p p l i c a t i o n p r o g r a m t o wr it e o n e x e c u t a b l e il f e . Th u s i mp l e me n t he t im a o f a c t i v e d e f e n s e o f t h e c o mp u t e r v i r u s . P r e s e n t t h e d e t a i l i mp l e me n at t i o n o f t hi s me t h o d wi t l l o p e n i n g, wr it i n g, c l o s i n g he t e x e c u t a b l e il f e b y v i us r nd a c o mmu t a i t o n b e t we e n a pp l i c a t i on nd a d r i v — e r . Th e es r u l t i n d i c a t e s ha t t hi t s me ho t d C n a p ev r e n t he t c o mp u t e r v i us r s p r e a d i n g e ic f i e n t l y . Ke y wo r d s : il f e s y s t e m il f t e r d i r v e r ; c o mp u er t v i r u s ; a c t i v e d e f e n s e
重定向在文件系统过滤驱动中的实现及其应用
机 械 工 业 出版社 ,2 0 0 0.
[]NgrR iosN i S s m 2 aa 、Wn w T Fe yt d l e Ie a[] e o :0  ̄U n r l 、Nw Yr 、Pi tns M k e y&
Aso it s 1 8. s ca e . 99
I P MJ R
— —
C E E 分发 例 程 中完 成 主要 R AT 的 功 能 ,工作流 程如 图 3所示 。
英特尔硬件辅 助虚拟化 ( T) 术的 V 技 现 和运 用 , 使 同 ・ 物 理 台 同时 运 行 个 多 个 操 作 系统 、每 个 操 作 系统 运 行 一 个 应用程序变为 叮能 ,避免了同 个系统运 行多个应用的瓦相影响。这就需 要应用程 序 与操 作 系统 数 据 的 分 离存 储 ,来 保 证 用程 序 与 操 作 系统 的 动 态组 合 。 町以预 见 ,
MiniFilter知识点
基于Minifilter框架的文件过滤驱动理解概述Minifilter即File System Minifilter Drivers,是Windows为了简化第三方开发人员开发文件过滤驱动而提供的一套框架,这个框架依赖于一个称之为Filter Manager(后面简写为FltMgr)的传统文件系统过滤驱动。
这套框架应用到内核中的结构如下图所示:FltMgr以传统文件过滤驱动的形式插入到I/O处理队列中去接收不同的I/O请求,然后将这个请求遍历发布到它所维护的Minifilter对象中,然后根据各个Minifilter对这个I/O请求的处理结果来决定后续的操作。
这种模式在很多软件架构中使用,类似于插件一样,每一个Minifilter遵守一定的接口规范插入到FltMgr中,然后就能执行过滤控制。
上面是对整个Minifilter框架进行描述,实际内部需要注意的细节牵涉到很多内核知识,比如中断级别、I/O请求被封装成IRP包和fast I/O请求等相对复杂的概念。
这里不做深究,主要以研究Minifilter的开发过程和相应注意的地方为主。
此外还有FltMgr在内核中的位置等相关知识,也只在必要的地方提及一下。
Minifilter流程Minifilter通过注册并启动后,根据在注册表中设置的相应值,插入到对应的FltMgr实例(Frame)队列中,然后关联上需要过滤的卷。
FltMgr会根据Minifilter所注册的I/O操作类型,调用对应的pre和post操作函数,并根据对应的返回值执行不同的流程。
这里假设有A、B、C三个Minifilter从上往下挂载在FltMgr实例上,那么当接收到I/O请求时,执行的步骤为A-pre、B-pre、C-pre,一旦某个Minifilter返回了FLT_PREOP_COMPLETE,即表明这个I/O请求被它完成处理了,则立即按照相反的顺序调用对应的post函数(不再继续往下调)。
文件过滤驱动
读写过滤
读操作
文件的长度: Length = IrpSp->Parameters.Read.Length;
文件的偏移量: Offser.QuadPart = IrpSp->Parameters.Read.ByteOffset.QuadPart
文件内容: Irp-> MdlAddress不为空,则使用Irp-> MdlAddress,缓冲区位置为MmGetSystemAddressForMdlSafe(Irp-> MdlAddres),否则直接使用Irp-> UserBuffer
重要技术难点
缓存管理
单缓存
合法进程打开存在文件,关闭文档,明文保存在缓存, 此时缓存没有刷 至硬盘,也没有清空内存中的资源。此时非法进程再打开文档,在 IRP_MJ_CREATE例程会刷新缓存操作,所以非法进程打开为乱码 合法进程打开存在文件,明文保存在缓存, 此时缓存没有刷至硬盘,也 没有清空内存中的资源。此时非法进程再打开文档,如果是word这种占着句 柄没有关闭的文档,判断为非法进程,禁止打开;如果是notedpad采用内存 映射文件的方式的,句柄关闭,则非法进程打开正在被合法进程打开的文档 ,在IRP_MJ_CREATE例程会刷新缓存操作,所以非法进程打开为乱码 非法进程打开未打开过的加密文档,密文。合法进程再打开加密文档,会先 刷新缓存。 合法进程打开加密文档,在关闭的时候在IRP_MJ_CLEANUP例程中对新 建的文件才刷新缓存
而且有些程序的文件格式没有定式,甚至可以保存为任意后缀,例如记 事本,这样加密指定的文件后缀就带来了安全漏洞。
2、加密不区分后缀: 加密不区分后缀是指保密程序对生成的所有文件都进行加密。这种加密
【计算机应用】_文件过滤驱动_期刊发文热词逐年推荐_20140727
推荐指数 1 1 1 1
2009年 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
科研热词 非对称加密算法 防泄露策略 过滤驱动 虚拟磁盘 文档安全 文件系统驱动 文件系统过滤驱动 文件加密 对称加密算法 密钥文件 审计 实时监控 域名服务 加密文件共享 内存映射 netfilter
推荐指数 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2010年 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
科研热词 访问控制 文件过滤驱动 过滤驱动 路径匹配 识别模型 认证 视窗驱动程序模型 特征代码 文件系统过滤驱动 文件碎片 文件监控系统 文件监控 操作系统 授权 微过滤 常用环境变量 固态硬盘 内网安全管控平台 内核线程 内核模式
2014年 序号 1 2 3 4 5
2014年 科研热词 连续数据保护 数据链 数据压缩 存储空间 卷过滤驱动 推荐指数 1 1 1 1 1
2012年 序号 1 2 3 4
科研热词 监控审计 文件过滤驱动 共享文件操作 中间层网络驱动
推荐指数 1 1 1 1
2013年 序号 1 2 3 4 5 6 7 8
科研热词 透明加密 过滤驱动 访问控制 文档安全 文件系统 基于身份的加密 受控文档 efs
推荐指数 2 1 1 1 1 1 1 1
推荐指数 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2011年 序号 1 2 3 4 5 6 7 8 9
2011年 科研热词 访问控制 过滤驱动 空间数据文件 移动存储 文件过滤驱动 数字版权保护 唯一性 卷 信息安全 推荐指数 2 1 1 1 1 1 1 1 1
Windows下文件过滤驱动技术
Windows下文件过滤驱动技术徐国栋;朱亮【摘要】Windows文件过滤驱动在不改变复杂的文件系统基础上,可方便地扩展FO子系统的功能.在深入研究了文件过滤驱动技术基础上,结合安全加密技术与权限控制技术,实现了一个安全、易用、管理方便的安全文件系统.【期刊名称】《微型电脑应用》【年(卷),期】2016(032)008【总页数】3页(P74-75,80)【关键词】文件过滤驱动;I/O请求包;基于角色的访问控制【作者】徐国栋;朱亮【作者单位】上海其祥电脑系统工程有限公司上海200237;北京科瑞科技发展股份有限公司上海,100097【正文语种】中文【中图分类】TP183随着企事业单位的快速发展,电子文档为企事业单位承载了越来越多的重要信息。
而由于电子文档的容易散播性,导致企事业单位的重要资料很容易被非法获取、篡改、乃至无序传播等,这使得企事业单位所做的大量工作付之东流,严重危害了自身的利益。
特别是棱镜门事件后,文档安全的重要性也日益受到重视。
文件安全管理就是为了提高电子文档数据的安全性和保密性、防止秘密数据被意外、或非法获取所采用的技术手段。
密码学是信息系统安全的核心,它是研究密码系统和通信安全的一门学科[1]。
密码学的基本功能是提供保密性,使非授权者无法获悉消息的内容。
Windows的I/O管理器是一个可扩展的结构,通过开发过滤驱动程序可以扩展I/O子系统的功能。
I/O管理器支持分层驱动程序模型,每个I/O请求包(IRP,I/O request package)的处理分别经过各层驱动程序,直到某层驱动程序完成这个请求[2]。
1.1 过滤驱动程序过滤驱动工作在系统驱动层和应用层之间,透明地截取发往低级驱动程序设备对象的请求,低级驱动程序的用户完全不知道它们的请求被过滤器驱动程序预处理和截取了。
使用过滤器驱动程序可以实现以下几种主要功能:允许修改已有驱动程序在某些方面的行为,而不必重写整个驱动程序。
02.Windows文件系统过滤驱动开发教程(2)
Windows文件系统过滤驱动开发教程2.hello world,驱动对象与设备对象这里所说的驱动对象是一种数据结构,在DDK中名为DRIVER_OBJECT。
任何驱动程序都对应一个DRIVER_OBJECT.如何获得本人所写的驱动对应的DRIVER_OBJECT呢?驱动程序的入口函数为DriverEntry,因此,当你写一个驱动的开始,你会写下如下的代码:NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath ){}这个函数就相当与喜欢c语言的你所常用的main().IN是无意义的宏,仅仅表明后边的参数是一种输入,而对应的OUT则代表这个参数是一种返回。
这里没有使用引用,因此如果想在参数中返回结果,一律传入指针。
DriverObject就是你所写的驱动对应的DRIVER_OBJECT,是系统在加载你的驱动时候所分配的。
RegisteryPath是专用于你记录你的驱动相关参数的注册表路径。
DriverObject重要之处,在于它拥有一组函数指针,称为dispatch functions.开发驱动的主要任务就是亲手撰写这些dispatch functions.当系统用到你的驱动,会向你的DO发送IRP(这是windows所有驱动的共同工作方式)。
你的任务是在dispatch function中处理这些请求。
你可以让irp失败,也可以成功返回,也可以修改这些irp,甚至可以自己发出irp。
设备对象则是指DEVICE_OBJECT.下边简称DO.但是实际上每个irp都是针对DO发出的。
只有针对由该驱动所生成的DO的IRP, 才会发给该驱动来处理。
当一个应用程序打开文件并读写文件的时候,windows系统将这些请求变成irp发送给文件系统驱动。
文件系统过滤驱动将可以过滤这些irp.这样,你就拥有了捕获和改变文件系统操作的能力。
磁盘过滤驱动 原理
磁盘过滤驱动原理
磁盘过滤驱动(Disk Filter Driver)是一种在操作系统内核中
运行的驱动程序,用于对磁盘操作进行拦截、过滤和修改。
其原理可以简单概括为以下几个步骤:
1. 注册:磁盘过滤驱动在加载到系统内核之前需要先进行注册,以便于操作系统在启动时加载该驱动。
2. 拦截:磁盘过滤驱动通过拦截操作系统发出的磁盘相关的系统调用(如读取文件、写入文件等),将这些调用转发给自身处理。
3. 过滤:磁盘过滤驱动根据自身的逻辑对拦截到的磁盘操作进行过滤。
可以根据需求对文件进行加密、解密、压缩、解压缩等操作。
也可以对读取写入的数据进行修改、删除等操作。
4. 转发:磁盘过滤驱动在过滤后,可以将磁盘操作转发给下层的磁盘驱动程序,以完成实际的磁盘读写操作。
或者也可以直接向应用程序返回修改后的数据。
5. 反馈:磁盘过滤驱动可以向操作系统返回对磁盘操作的处理结果,以便操作系统进一步处理或通知相关的应用程序。
总的来说,磁盘过滤驱动通过在操作系统内核中的位置,拦截并过滤磁盘操作,以实现对磁盘数据进行修改、保护或监控的功能。
通过编写磁盘过滤驱动,可以实现诸如数据加密、文件压缩、行为监控等功能。
文件系统过滤驱动技术在网页防篡改中的应用
网页非法篡改 ,可立即保护 网页防止被篡改或者恢复
被非法篡改 的网页。 经过多年 的发展 ,网页防篡改 的技 术也在不断 的 发展和更新 ,它的发展经历了如下历程 :
可能 ,其所 消耗 的内存和C U占用率也远远低于其它技 P
术。
1人工 对 比检 测 。人 工对 比检测 就是人 工监 控 网 . 站 ,一旦发现网站被篡改 ,人工对其进行还原。这种手
2过滤驱动 的概念。开发过滤驱动是为 了在操作系 . 统提供的功能之上提供 附加值。过滤驱动是一种 内核模 式驱动 ,它依靠拦截发往 已存在的内核模式驱动的请求
来提供新的功能。 3 . 过滤驱动实现的基本过 程。实现过滤驱动有 以下 几个基本步骤 :
改技术出现 的时间差距不大 ,而且两种技术常常被结合
非对称加密存放 ,在外来访问时将经过加密验证过 的网
页 ,进行解密对外发布 ;若 网页未经过验证 ,则拒绝对 外发布 ,调用备份 网页进行验证解密后对外发布。通常 要结合事件触发机制对文件 的大小 、页面生成时间等属
7 6 信息系统工程 I 0 2 . 1.2 2 70
驱动服务的各种模块不产生影 响( 即保证所有I P R 都有对 应 的处理例程) 所有工作做好后就可以 向I 管理器 。D. / O
段非常原始 ,其最致命的缺陷在于人工监控不能达到即
时性 。 2时 间轮 巡 技 术 。 时 间轮 巡 技 术 是 利 用 一个 网 页检 .
二 、文件 系统 过滤 驱动研 究
1文件 系统驱 动 的概念 。文件 系统 驱动是 存储 管 . 理子 系 统 的一 个 组 成部 分 。它 向用 户 提供 非 易 失 性 媒介( 盘 、磁带等 ) 磁 信息 的存储 、转 发 。文 件驱 动和
基于文件系统过滤驱动的内核Rootkit隐藏技术
第31卷第3期吉首大学学报(自然科学版)Vol.31No .32010年5月Journ al of Ji shou Universit y (Nat ural Science Edit ion)May 2010文章编号:10072985(2010)03004304基于文件系统过滤驱动的内核Rootkit 隐藏技术*侯春明,刘林(吉首大学物理科学与信息工程学院,湖南吉首416000)摘要:Rootkit 是能够持久或可靠地、无法检测的存在于计算机上的一组程序和代码.研究了基于文件系统过滤驱动技术的内核Rootkit,阐述了文件系统过滤驱动的工作原理、过滤驱动的实现、基于文件系统过滤驱动的内核Rootkit 对文件隐藏的实现,并讨论了针对Root kit 隐藏的检测技术.关键词:文件系统;Rootkit;过滤驱动;隐藏中图分类号:T P316文献标志码:A随着信息技术的飞速发展,以窃取计算机控制权和敏感信息为目标的程序迅速增加.Rootkit 是能够持久或可靠地、无法检测的存在于计算机上的一组程序和代码[1].Rootkit 能在目标计算机中长期潜伏,窃取信息而不被察觉,因此在计算机战争、间谍、反计算机犯罪、证据收集等领域得到广泛应用,同时也被计算机病毒、木马、恶意软件等恶意代码使用者用来实现计算机的恶意控制.控制者一旦获得操作系统的控制权限,种植了Rootkit,它就能维护一个后门,允许控制者一直以管理员权限控制系统,并且通过隐藏文件、进程、注册表项、端口等来隐藏攻击行为,从而逃避用户和安全软件的检测[2].隐蔽性是Rootkit 的最大特性,而文件系统是Rootkit 应用的重要领域.许多Rootkit 需要在文件系统中存储文件,并且要求这些文件实现隐藏.Rootkit 的文件隐藏技术有2种:利用钩子技术实现文件隐藏,这种方法效率低;利用文件系统过滤驱动技术,效率高,可靠性强.利用文件系统过滤驱动技术来实现Ro otkit 的文件隐藏,成为当前Windows 操作系统内核信息安全领域的热点.1文件系统过滤驱动工作原理1.1Windo ws 文件系统驱动文件系统驱动程序是存储管理子系统的一个组件,为用户提供在持久性介质上存储和读取信息的功能,可以创建、修改和删除文件,同时可以安全可控地在用户之间共享和传输信息,并以适当的方式向应用程序提供结构化的文件内容[3].用户应用程序对磁盘上的文件进行的各种操作,如创建、打开、关闭、读数据、写操作等,最终都要借助文件系统驱动才能完成.各种操作调用Kernel32.dll,通过Win32子系统调用Native A PI 向内核层传送请求,然后通过系统服务函数将上层的请求传递给I/O 管理器,在I/O 管理器中,将对磁盘文件的各种操作请求都统一为输入输出请求包IRP,然后向下层传送IRP 给文件系统驱动,最终由文件系统驱动调用磁盘及其他存储设备驱动,进而完成对物理存储设备的各种操作.操作完成后,再将处理结果沿着相反路径返回,整体执行过程如图1所示.*收稿日期:20100425基金项目吉首大学校级科研课题(D 5)作者简介侯春明(),男,湖南桑植人,吉首大学物理科学与信息工程学院讲师,硕士,主要从事计算机应用与信息安全研究:09J 01:1979.图1文件系统过滤驱动原理1.2Windo ws 文件系统过滤驱动Windows NT 操作系统的内核驱动模型WDM(Windows Driver Model)采用了分层结构的驱动程序结构[4].I/O 管理器实现1个分层的数据结构,在DEVICE_OBJECT 对象中保存某种关系,自动将请求IRP 发给设备栈中的最高的1个设备,由其决定如何处理,或是自身处理,或是向下传递,从而实现分层.在WDM 模型中,过滤驱动程序可以在应用程序读写数据的过程中,先于操作系统本身的文件系统驱动截获数据处理相关的IRP,进而进行各种相应的操作,比如隐藏文件、修改数据等.从图1可以看出,文件系统过滤驱动位于I/O 管理器和文件系统驱动程序之间.2基于文件系统过滤驱动的Rootkit隐藏技术2.1文件系统过滤驱动的实现基于文件系统过滤驱动的Rootkit 本质上就是驱动程序,在将自身载入内核的同时,完成特定的功能.在Windows 操作系统中,对于应用最广泛的FA T32和N TFS 文件系统,主要生成2类设备,一类是文件系统驱动本身生成的控制设备CDO,另外一类是该文件系统的卷设备.驱动程序和应用层程序类似,有1个主函数Dr iverEntry,是Windows 驱动程序的入口函数.DriverEntry 函数由内核中I/O 管理器负责调用.Driver Entry 的第1个参数是1个指针,指向1个刚被初始化的驱动程序对象,该对象就代表对应的驱动程序,WDM 驱动程序的DriverEntry 例程应完成对这个对象的初始化并返回,其主要工作是把各种函数指针填入驱动程序对象.这些指针为操作系统指明了驱动程序容器中各种子例程的位置[5].针对文件系统过滤驱动的实现,在DriverEntr y 函数中生成1个控制设备,设置分发函数和快速I/O 分发函数和回调函数,再对文件系统的卷设备进行绑定.在DriverEntr y 中调用内核函数IoCr eateDevice 生成文件系统控制设备CDO,这是文件系统过滤驱动和应用层程序的通信的主要接口.基于文件系统过滤驱动的Rootkit 主要利用这个CDO 修改驱动程序的内部配置以及实现挂载和通信.CDO 生成后,需要在DriverEntr y 中针对来自上层驱动的IRP 设置分发函数和快速I/O 分发函数,然后对Rootkit 所要监控的文件系统的卷设备进行绑定操作.首先利用内核函数SfAttachDeviceToDeviceStack 函数绑定文件系统控制设备,绑定后,Rootkit 可以获得发送给文件系统控制设备的文件控制请求,之后针对文件系统卷设备进行绑定.在文件系统的底层,采用物理设备对象VPB 来表示卷控制块VCB 和物理磁盘Device Object 的联系(VPB 是一个重要数据结构,用来将实际存储媒介设备对象和文件系统上的卷设备对象联系起来).文件系统过滤驱动程序从IRP 中获取VPB 的指针,进而获取文件系统的卷设备,然后调用SfAttachToMountedDevice 完成卷设备的绑定.文件系统过滤驱动的绑定完成后,基于文件系统过滤驱动的Rootkit 被载入到内核的驱动程序设备链中,可以针对各种操作进行过滤.2.2Rootkit 隐藏技术的实现Windows 操作系统中,磁盘等存储设备的每一个分区都被抽象成驱动程序中的设备对象(即卷设备).卷设备是由卷管理器生成,而不是文件系统生成,当1个卷使用某种文件系统时,该文件系统会对应的为该设备生成个设备对象,称为文件系统的卷设备W 操作系统中对文件的各种操作就是通过向这些设备发送IR 来完成基于文件系统过滤驱动的R ,首先创建驱动程序,在驱动上生成设备对象,然后去绑定这些卷设备,从而实现文件系统过滤驱动程序,发送给卷设备的IR ,在到达文件系统之44吉首大学学报(自然科学版)第31卷1.indows P .ootkit P前,被过滤驱动进行过滤,在过滤驱动对应的例程中实现文件的隐藏.(1)Rootkit 首先创建文件系统过滤驱动程序,在完成对卷设备的绑定后,使用内核函数IoSetCom pletionRoutine 为IRP 设置完成例程,以便在下层的文件系统驱动完成IRP 的时候,对返回的结果进行修改,进而把想要的文件隐藏起来.(2)通过内核函数IoCallDr iver 沿着驱动程序链向下传递IRP,针对文件操作的每个请求最终由通过文件系统驱动完成处理.在IRP 到达文件系统驱动之后,对应的操作处理完毕,IRP 返回.在过滤驱动中对应的完成例程的处理中隐藏文件.(3)在IRP 返回时执行的完成例程中可以实现对特定文件实现隐藏.当用户在操作系统应用层查看文件时,每个文件返回1个FILE_BOTH _DIR_INFORMATION 的结构,该结构用来描述指定目录的详细信息[6].用户打开的目录中所有文件返回信息形成1个FILE_BOT H _DIR_INFORMA TION 的结构的链表,只要遍历这样的链表,就可以获取当前目录下的所有文件信息,进而显示到用户层供用户查看.只要从链表中删除指定文件对应的节点,指定的文件就会被隐藏.使用链表操作中对指定节点进行删除的算法,删除指定文件对应的节点,则可以实现文件的隐藏.2.3用户层与内核层的通信如果需要指定特定路径下特定文件名的文件被隐藏,可以使用DeviceControl 实现用户层程序与内核层Rootkit 驱动程序之间的通信.利用工作在用户层的程序,输入需要隐藏的文件和对应的目录路径,用在DeviceControl 中定义的IOCT L 控制码进行传递,到达文件系统过滤驱动程序,驱动中自行创建的IRP 处理例程检测到对应的路径中的文件名后,相关文件名信息可以传递给IRP 的派遣函数,用来在派遣函数中实现指定文件的隐藏.3Rootkit 的检测与防范Rootkit 技术是一种中立技术,在恶意软件和安全软件中都大量使用,从而导致内核级Rootkit 的检测变得非常重要.因此,Rootkit 的检测技术也是Window 操作系统内核信息安全领域的研究热点,Root kit 的检测技术较多,针对Rootkit 隐藏相关的检测技术如下:(1)隐藏进程检测.文件和进程的隐藏是内核Rootkit 的常见功能,大多数内核Rootkit 都通过各种手段达到进程隐藏的目的.检测进程隐藏的方法中最常见的是挂钩SwapContext 方法:ntoskrnl.exe 中存在一个SwapContext 函数,用于将当前运行线程的上下文与重新执行线程的上下文进行交换,在每次线程切换的时候执行.因此,挂钩这个函数可以得到每次线程切换时换出、换入线程的信息,通过收集所有的线程信息,可以进一步得到所有进程的列表.(2)隐藏文件的检测.针对基于文件系统过滤驱动的Rootkit 的文件隐藏,可以利用直接读取磁盘扇区来分析文件系统进行隐藏文件的检测,或者向建立在卷设备驱动上的文件系统驱动程序发送IRP.首先,利用ObReferenceObjectByName 获取文件系统驱动程序的driver object,然后根据用户层指定的检测路径用DeviceControl 代码传递给Rootkit 隐藏文件检测驱动程序,用Cr eateFile 函数打开对应的文件夹路径,获取对应文件夹路径的句柄,利用内核函数ObReferenceObjectByName 可以根据对应的文件夹路径的句柄获取文件对象.获取文件对象后,创建IRP,向对应的文件系统驱动程序发送IRP,在返回的信息中检测所有的文件信息,进而获取被隐藏文件.4结论文件系统过滤驱动技术是近年来操作系统内核信息安全领域研究热点,过滤驱动附着在文件系统上,通过截获文件系统发出的I/O 请求包来对文件系统进行各种控制操作.内核Rootkit 是一种基于Win dows 内核层的中立技术,它既可以为善意的安全软件、监控软件、取证软件等服务,也可能被病毒、木马等恶意攻击所利用笔者介绍了W 操作系统的文件系统过滤驱动工作原理、基于文件系统过滤驱动的R 实现文件隐藏的关键技术以及R 的检测方法利用文件系统过滤驱动技术和R 隐藏技术,可以提高安全软件的技术性能,并有效地防止其被恶意利用,对W 操作系统内核信息安全45第3期侯春明,等:基于文件系统过滤驱动的内核rootkit 隐藏技术.indows ootkit ootkit .ootkit indows46吉首大学学报(自然科学版)第31卷技术应用有广泛的参考意义.参考文献:[1]GR EG H OGLUND,JAMES BUT LER.Rootkit:Windows内核的安全防护[M].北京:清华大学出版社,2007.[2]杨平,罗红,乔向东.Windows R ootkit隐藏技术研究[J].计算机与信息技术,2009(3):7374.[3]NAGAR R.Windows NT File System Internals[EB/OL].[20070401].htt p:///source/168266.[4]张帆,史彩成.Windows驱动开发技术详解[M].北京:电子工业出版社,2008.[5]WALTER ONEY.Progr amming the Micr osoft Windows Dr iver Mode[EB/OL].[20080215].http://download.cs/sour ce/353955.Research on Occultation Techniques of Kernel Rootkit Based onFile System Filter DriverH OU Chun ming,LIU Lin(College of Physics Science and Infor mation Engineer ing,Jishou University,Jishou416000,H unan China)Abstr act:A Rootkit is a set of programs and code that allows a permanent or consistent,undetectable presence on a computer.Windows ker nel Rootkit based on file system filter driver has been resear ched. The work principle of file system filter driver and the realization of filter driver and occultation tech niques of kernel Rootkit based on file system filter driver have been introduced.T he techniques of Root kit detection have been discussed.Key words:file system;Rootkit;filter driver;occultation(责任编辑陈炳权) (上接第28页)Maximum Norm Superapproximation of the Triquadratic Block Finite Element S olution to the Three Dimension Problem with Variable CoefficientsDENG Yi jun(Depar tment of Mathemat ics,H unan Inter nat ional Econom ics College,Changsha410205,China)Abstr act:For an variable coefficients elliptic equation in3D,weak estimates for the block finite element over rectangular parallelepiped partitions of the domain are obtained by using three dimensional interpo lation operator of projection type and interpolating approximation proper ties.Fur thermore,in combina tion with three dimensional discrete Green functions,the author derives the maximum norm superapprox imation r esults with high accuracy of the displacement and gr adient for block finite elements.Key words:variable coefficients elliptic equation;block finite element;interpolation operator of projection type;discr ete Green funtions;superapproximation(责任编辑向阳洁)。
文件系统过滤驱动教程
创建一个简易的文件系统过滤驱动
开始之前
要想编译一个驱动,你需要 WDK 或者 IFS 开发包。 你可以从微软的网站获取它们。另外,你 不得不设置一个环境变量%WINDDK%来指向你安装 WDK/IFS 开发包的路径。 注意:每一个小的错误可能导致蓝屏死机或者系统不稳定。
Main.c
Driver entry
这是如何驱动的入口点。我们要做的第一件事是存储到 DriverObject 一个全局变量中(我 们一会儿就要使用它)。
Collapse code snippet Copy Code
//////////////////////////////////////////////////////// // Global data
{ ...
for (;;) { IoEnumerateDeviceObjectList( DriverObject, devList, sizeof(devList), &numDevices);
if (0 == numDevices) { break; }
numDevices = min(numDevices, RTL_NUMBER_OF(devList));
Collapse Copy Code
////////////////////////////////////////////////////////////////////////// // Global data
FAST_IO_DISPATCH g_fastIoDispatch = { sizeof(FAST_IO_DISPATCH), FsFilterFastIoCheckIfPossible, ... }; ////////////////////////////////////////////////////////////////////////// // DriverEntry - Entry point of the driver
基于文件过滤驱动的局域网安全系统设计
VO . 9 12
N O. 0 2
计 算机 工 程 与设 计
Co mp t rE g n e n n sg u e n i e r g a d De i n i
20 年 1 月 08 0
0c .2 0 t 0 8
基于文件过滤驱动的局域 网安全系统设计
i c rt s et h c rt rtc se o LAN e in db s do l r r e.T erdt n l n g me t ot r rv d ns u yap c,tes ui p oe t ytm f e i e y s i d sg e a e nf t i r h a io a a e n fwaeii o e s i edv t i ma s s mp
权 限 的控 制 , 者 如 一 个 简 单 的加 密 软 件 , 者 如 在 系统 中设 前 后
置个 人 账 户 等 毒 防 范 主 要 是 对 杀毒 软 件 的 依 赖 , 杀毒 软 病 但
从 图 1 以看 出 Wi o s 可 n w d NT读 写 请 求 的处 理 过 程 。 首
泄 露 、 件 受 病 毒 攻 击 而 被 破 坏 以及 人 为 的 误 操 作 而 导 致 文 文 件 受 损等 。目前 防 止 文 件 泄 露 的 主 要 方 式 是 文 件 加 密 和 访 问
于 飞 , 胡 平 ( 南京 工业 大学 信 息科 学与工程 学 院,江 苏 南京 2 0 0) 109
摘 要 : 绍 了 Wi o s T内 核 的 文 件 系 统 结 构 , 析 了在 基 于 N 内核 的 Widws 00X 介 n w d N 分 T n o 0/ P操 作 系 统 下 文 件 系 统 过 滤 驱 动 2 程序 的开发原理 、 步骤 和 应 用 。针 对 现 有 管 理 软 件 的 在 安 全 方 面 的 不 足 , Widws 作 系统 平 台 下 , 计 了 以 嵌 入 文 件 过 在 no 操 设
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
被动加密
使用者并不知道或者并不想文件变成加 密状态,系统自动将文件加密,称之为 被动加密。
类型和逻辑
1、加密指定后缀: 通过指定后缀加密是指保密程序对生成的某一类文档进行加密,而
对其他后缀仍然采用明文。其优点是只加密制定类型的文档,而不影响其 它文件,在加密范围上相对较小,系统的稳定性容易提高;缺点是可能产 生“另存为其他类型的文档”的泄密漏洞,因为此时存储的结果并不是被指 定加密的文件类型。即使把程序可能产生的后缀格式都指定也没有用,因 为有很多办法另存出来 ,例如在Word中可以点击另存为然后在文件名栏输 入2个双引号(“),然后在这2个双引号之间输入任意后缀(例如test.123),那么 保存后的文件就是明文的,拷贝出来文件名改回doc后缀就可能导致文档 泄密。
分发函数
主功能IRP
DriverObject->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;
#define CdMapUserBuffer(IC, UB) { \ *(UB) = (PVOID) ( ((IC)->MdlAddress == NULL) ? \ (IC)->UserBuffer : \ (MmGetSystemAddressForMdlSafe( (IC)->MdlAddress, HighPagePriority))); \
读写过滤
读操作
文件的长度: Length = IrpSp->Parameters.Read.Length;
文件的偏移量: Offser.QuadPart = IrpSp->Parameters.Read.ByteOffset.QuadPart
文件内容: Irp-> MdlAddress不为空,则使用Irp-> MdlAddress,缓冲区位置为MmGetSystemAddressForMdlSafe(Irp-> MdlAddres),否则直接使用Irp-> UserBuffer
类型和逻辑
加密指定后缀
加密不区分后缀
重定向原理
重定向原理+加密指定后缀(1)
重定向原理+加密不区分后缀(2)
透明加解密原理
动态加解密原理+加密指定后缀(3)
动态加解密原理+加密不区分后缀(4)
基本流程
读流程
基本流程
写流程
基本数据结构
FileObject,打开一个文件,io 管理器为其创建一个文件对象 结构 FCB,一个文件可能被多个程 序同时打开,这样会生成多个 FileObject,但是只存在一个 FCB 段对象指针
学习曲线
驱动层
文件过滤驱动
பைடு நூலகம்应用层
Windows系统 Windows开发
C/C++ MFC机制 COM机制 进程、线程、内存管理 PE文件格式、SHE机制 HOOK技术、反汇编 。。。
文件系统 进程、线程、内存机制 核心数据结构 。。。 驱动开发 缓存管理 文件头标识存放 密钥、策略管理 读写加解密处理 。。。
透明加解密开发
透明加解密发展
驱动开发特点
调试困难
不能采用VC直接调试,单机调试比较困难,必须采用 windbg双机调试(Windbg + Vmare) 定位问题困难,编程出错容易照成蓝屏,后果比较严重
编程模式
编程资料较少,微软提供接口和文档很少,经常需 要反汇编、逆向 在Ring0 特级运行,权力很大,代码安全要求比较 高
稳定周期较长 兼容性测试最重要(各种防火墙软件、防病毒软件、主动 防御软件、Rookit技术软件等等) Windows操作系统的升级导致驱动不能平滑过渡( win98/wind2000/winxp/vista/windows 7)
周期长
驱动开发
字符串操作 进程空间、线程上下文 内存分配 线程互斥访问 数据结构(双链表) 中断优先级 DeviceObject、DriverObject Irp理解
大纲
驱动开发简介
开发特点 开发要素 基本概念 分发函数 设备绑定 读写过滤 文件路径获取
文件过滤驱动
透明加解密简介
概念 类型和逻辑 流程 基本数据结构 重要技术难点 怎样开发透明加解密程序 开发参考框架代码,Sfilter、Filemon、Filespy、toolflat的代码 微过滤驱动Minifilter架构 开发工具小集合 DSM 透明加解密技术
文件过滤驱动 FSFilter
引言
文件系统程序是操作系统核心的部分,对 于Windows操作系统来讲,文件系统和网 络部分并列为驱动程序中最难的部分,难 度大大超过声卡、显卡之类的硬件驱动程 序。 深入学习和调试文件驱动程序,文件过滤 驱动程序,更有助于学习Windows系统底 层核心技术。 本胶片主要介绍文件过滤驱动开发和其应 用:透明加解密,胶片内容比较广泛,希 望能够普及这方面的知识,希望更多有兴 趣的人一起研究,一起进步。
而且有些程序的文件格式没有定式,甚至可以保存为任意后缀,例如记 事本,这样加密指定的文件后缀就带来了安全漏洞。
2、加密不区分后缀: 加密不区分后缀是指保密程序对生成的所有文件都进行加密。这种加密
方式由于对指定进程产生的任何文件都加密从而堵住“另存为其他类型的文档” 的漏洞,可保证不论用户如何将文件另存都不会出现明文文件。其工作原理为指 定进程只要发生写操作就加密被写的文件,任何中间文件和临时文件都会被加密 。不区分文件后缀有更高的安全性,技术难度也大得多。
类型和逻辑
加密类型
静态加密 动态加密
加密原理
把整个文件加密掉、或者把整个文件加 密掉。 文件整体是加密状态,需要解密时读取 多少就解密多少,写入多少就加密多少 ,而不需要把整个文件都解密掉。 由使用者自行要求文件变成加密状态称 之为主动加密
举例
主动加密
主动加密的方式很多,例如用WinRar 把文件压缩并定义一个口令,或者给 Word、Excel文件一个打开或者修改的 口令,这样其他人使用时必须由正确的 口令才能打开,这是使用者主动进行的 加密,如果使用者不进行加密则文件不 会在加密状态。只针对某些文件夹加密 的方式也可以理解为主动加密方式。主 动加密主要应用于个人的文件保护。 被动加密主要用于企业内部防止文件泄 密,即使使用者不想文件被加密,系统 还是会根据定义加密文件,这样文件被 拷贝等各种方法脱离企业环境后,由于 文件在加密状态而无法打开。被动加密 具有另一个特性就是透明操作,即使用 者并不需要进行加密和解密操作,一切 都是后台自动完成,使用者可以不知道 加密的存在。被动加密与作者的意愿无 关,相关文件都会被加密,磁盘加密和 文件透明加解密属于此类。
文件过滤驱动
1. 2. 3. 4. 5.
基本概念 分发函数 设备绑定 读写过滤 文件路径获取
基本概念
卷,有卷管理器生成,一个卷一般对 应一个逻辑盘
文件系统 NTFS:ntfs.sys FAT32:fastfat.sys CDFS:cdfs.sys
1.
2.
3.
文件系统拥有两类设备:控制设 备,卷设备。 如C:、D:为ntfs,E:F:为 FAT32,那么E:、F:为FAT32 文件系统的两个卷设备,而C: 、D:为NTFS文件系统的两个 卷设备 文件操作针的irp都是发到卷设备 上,发给控制设备的irp主功能号 为 IRP_MJ_FILE_SYSTEM_CONT ROL,发给卷设备的irp一般都是 文件操作irp
FAstIO 注册这些函数后,一般不做任何处理直接返回 快速IO主要是当文件数据存在缓存里面时,windows为了提高性能,直接向缓存管理器放送快速io 去缓存获取数据
设备绑定
创建控制设备对象,对象类型必须FILE_DEVICE_DISK_FILE_SYSTEM 调用IoRegisterFsRegistrationChange,注册文件系统激活或者卸载的回 调函数,文件系统常用的为ntfs、fat32、cdfs,默认情况下,文件系统是存在 的,没有触发激活机制,这时候在xp和windows 2000 sp4以上,仍然会触发 调用注册的回调函 生成设备附加到文件系统上,这样能监控到文件系统的irp,主要是监控 此irp IRP_MJ_FILE_SYSTEM_CONTROL,在此irp中监控卷的挂载和卸载 在卷的挂载过程中,生成设备附加到卷上,这样才完成设备的附加,做 完此操作后,就能监控到所有卷上的文件操作irp