已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 i 摘摘 要要 随着互联网技术的飞速发展,网络安全变得日益重要。特洛伊木马是网络攻防战 争和计算机取证中的一个重要组成部分。只有穿透文件系统过滤层,才能在装有文件 系统过滤驱动的系统中写入木马程序,并使该木马程序不被还原系统还原。因此,研 究文件系统过滤层穿透技术,对于特定环境下的应用具有重要的理论意义和实用价 值。 基于相关技术,构建了一个能穿透系统还原和躲避病毒防火墙的文件系统过滤层 穿透系统 fsflp(file system filter layer pass-through) 。围绕 fsflp 系统的设计目标 和设计原则,阐明了 fsflp 系统的总体架构和各主要功能模块的设计思想。探讨了驱 动文件的释放与加载;说明了系统感染模块设计的基本思路并给出了系统感染模块的 处理流程;对驱动程序的设计进行了讨论。 fsflp 采用驱动程序的方式进入内核工作模式,根据资源项数据组织方式搜索资 源数据, 通过直接读写磁盘文件达到躲避文件保护系统监控的目的, 再结合其他技术, 如网络文件下载、可执行文件运行即可形成一个完整有效的文件系统过滤层穿透系 统。 在 fsflp 总体设计的基础上,重点阐述了其中关键技术的实现途径,包括物理定 位磁盘文件和内核态释放资源文件以及文件系统过滤层穿透,并给出了在用户态释放 资源文件、加载驱动、下载网络文件,以及运行可执行文件的实现细节。 实际运行结果表明,fsflp 可以穿透文件系统过滤层,能成功避免部分杀毒软件 的监控,能隐蔽覆盖可被替换的系统文件且不被还原系统还原。 关键词:关键词:文件系统过滤层,物理定位磁盘文件,穿透,释放资源文件 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 ii abstract with the rapid development of internet technology, network security has become increasingly important .trojan horse is an important part of offensive and defensive warfare and computer network technology in evidence .only penetration of the file system filter ,the trojan program can be installed into the system which is installed with the file system filter driver, and to ensure that the trojans were not restore the system restore . the research of the file system filter pass-through technology has important practical value in the network offensive and defensive warfare and computer forensics technology. based on the related technologies, build a fsflp system which can penetrate the restore system and virus firewall .fsflp is designed around the goals and principles.stated fsflp systems overall structure and function modules of the major design idea .the driver of the release of documents and loading; module on the system of the basic ideas and gives the system of the basic module processes; driver of the design was discussed. fsflp use a driver to work into ring0;according to the data resources of the organiza tion ,search resources data; through direct read and write disk documents to evade the windows file protection; combined with other technologies, such as network file download -ing and execute executable files .then complete a file system filter layer penetrating system which can be run effectively . based on the overall design of fsflp ,discuss it focuses on the way to the realization of key technologies. including the physical location of disk documents and to release reso -urces in ring0, and gives the achievement details about in user mode to release resources document、loading driver, network file downloading and running an executable file. the results showed that the actual operation, fsflp can penetrate file system filter layer, can successfully prevent some antivirus software controls, can be concealed cover the replacement of the system files and not be reverted system restore. key words: file system filter layer, physical location disk file, pass-through, the release of resources documents 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 1 1 绪绪 言言 1.1 研究背景研究背景 随着互联网技术的飞速发展,网络安全变得日益重要。随着政府上网、公安上网、 电子商务、网上娱乐等一系列网络应用的蓬勃发展,internet早已超越原来单纯的学术 环境,融入到社会的各个方面1。计算机及网络技术己经成为社会和经济发展的强大 动力,其地位越来越重要。然而,如同任何技术一样,计算机与网络技术也是一把双 刃剑2,它的广泛应用和迅猛发展,一方面使社会生产力获得极大解放,另一方面又 给人类社会带来前所未有的挑战,其中尤以网络犯罪为甚3。 网络犯罪是随着计算机网络的广泛应用而出现的一种现象, 网络犯罪与计算机犯 罪有着不可分割的联系4。根据计算机联网与否,计算机犯罪分为计算机单机犯罪与 计算机网络犯罪5。单机犯罪是指对未联网的计算机信息系统进行删除、修改、增加、 干扰, 造成计算机信息系统不能正常运行和故意制作、 传播计算机病毒等破坏性程序, 攻击计算机系统等危害行为。而随着计算机技术的发展和互联网络的应用,计算机有 别于其它物品的功能主要体现可以通过网络进行信息交互, 因此打击计算机犯罪的重 心随之转移到打击网络犯罪上来6,事实上我国刑法所规定的计算机犯罪类型的打击 重点也主要是指网络犯罪。 然而,由于计算机犯罪的隐蔽性和匿名性等特点使得对计算机犯罪的侦查非常困 难7。据相关报道,在号称“网络王国”的美国,计算机犯罪的破案率还不到10%, 其中定罪的则不到3%。被新闻报道的计算机犯罪只有11%,其中仅1%的罪犯被侦查 过,而高达85%以上的犯罪根本就没有被发现。在我国此类情况更为严重。从某种程度 上说,司法的滞后己经助长了计算机犯罪的嚣张气焰8。计算机犯罪惩治的滞后性, 是造成计算机和网络的安全问题越来越严重的主要原因之一。因此,利用法律手段对 计算机犯罪行为予以制裁,是解决网络和信息安全问题的有效途径。其中关键的问题 之一就是计算机取证技术9。 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 2 此外, 随着网络技术在军事领域的快速发展, 军队对计算机网络的依赖越来越大, 网络与作战的联系也越来越紧密, 网络已成为新的战场空间10。 网络的特殊战略作用, 促使信息对抗与争夺向网络战方向发展11。和常规作战中选择打击对象一样,网络攻 击也是把对方的战略目标作为首要进攻对象,能否有效地摧毁敌方重要网络系统,以 便迅速达成一定的战略目的,就成为敌对双方争夺和对抗的焦点12,因此网络攻防战 争必将成为未来信息战场新的作战方式13。 特洛伊木马是一种远程控制程序,是网络攻防战争和计算机取证技术中的一个重 要组成部分14。运行木马程序,从而实现远程控制的首要条件是能成功将木马程序种 入目标主机。但是文件系统过滤驱动程序能阻止木马程序写入目标主机的物理磁盘, 病毒防火墙、还原软件大多都采用了该技术。病毒防火墙的文件系统过滤驱动位于文 件系统之上15,可以首先拦截到对文件的读写请求,这个特点使它能实时监控磁盘读 写操作,一旦发现恶意代码读写磁盘操作立即报警。过滤驱动程序作为应用层和下层 文件系统之间透明的中间层16,可以容易做到对文件访问的实时监视或重定向,而不 依赖于具体的应用程序和下层物理设备17。还原软件正是利用了这一点,用过滤驱动 程序截获对需要备份的文件的所有写操作信息,并把这些信息传送到冗余设备的文件 系统,使之采取相同的动作,从而保持原数据与备份数据状态的实时同步18。冗余设 备可以是还原软件创建的虚拟磁盘卷19。 只有穿透文件系统过滤层,才能实现写入木马程序,因此研究文件系统过滤层穿 透技术,在网络攻防战争和计算机取证技术中具有重要的实用价值。 1.2 国内外概况国内外概况 因为文件系统过滤层是依附在文件系统驱动之上的,因此断开文件系统过滤驱动 的依附,就能穿透文件系统过滤驱动。从目前的技术发展来看,存在三种穿透文件系 统过滤驱动的方法。 (1)方法一 该方法的核心思想是将附加于磁盘设备的文件系统过滤设备从设备对象栈断开 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 3 20。这种方法其实就是摘除 harddiskdr0 的过滤设备。一般的实现方式是,将磁盘设 备对象中附加设备域赋为零,这样就能成功清除过滤设备。此后,所有请求就不会通 过过滤设备,而是直接到达磁盘设备,这样文件系统过滤层就被成功攻破了。国内大 部分还原系统都没有办法对抗这种技术。但是这种技术也是有一些缺陷的,只能摘除 在 harddiskdr0 上的物理设备21。而且如果文件请求在过滤设备被摘除前已经到达磁 盘卷,并且该请求不能被正确响应,很可能造成系统蓝屏22。 (2)方法二 该方法的核心思想是通过创建虚拟磁盘设备,并将其作为磁盘卷挂载到文件系统 上,然后建立虚拟磁盘到真实磁盘的读写映射23,进而保证读写请求能被发送到下层 设备。相对于第一种方法来说,这种方法不仅不需要将过滤设备从磁盘设备对象栈中 摘除,而且可以通过文件对虚拟磁盘操作,其结果就和对真实磁盘的操作完全一样, 从而实现文件系统过滤层的穿透。该方法在具体实现时还可采用另一种实现方式,即 通过发送 irp 文件读写请求到虚拟磁盘设备, 再由独立的线程构造 scsi request block 请求信息块,并将此信息块发送到真实磁盘设备24。 (3)方法三 这种方法不使用驱动程序,而是直接在用户模式穿透文件系统过滤层。windows 磁盘管理系统提供有一套 pass through 指令25,在用户模式(ring3)下通过 deviceiocontrol 函数中对 pass through 指令的调用来发送磁盘访问请求,就可以获取 磁盘信息甚至直接读写磁盘扇区, 而不用向磁盘直接发送读写请求。 ide/scsi/ata 磁 盘接口的 pass through 指令都能实现穿透文件系统过滤层26,而且大多数文件系统过 滤层对此过滤不严或根本未过滤,这一切均为 ring3 下文件系统过滤层的穿透攻击提 供了方便之门。 除了上述三种比较经典的方法之外,还存在其他一些也有一定应用价值的方法, 如直接操作端口驱动,usb 端口驱动就是其中的典型代表;磁盘直接 i/o 等等。但是 这些方法均存在一个共同的问题,即实现难度大,通用性不强。当然也有一种方法是 通过摘除其他一些过滤设备,同时将自身过滤设备附加到文件系统设备对象栈上,这 样就可以先于磁盘管理系统获得对磁盘的请求,进而实现对文件系统过滤层的穿透。 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 4 1.3 课题研究的意义、内容及目标课题研究的意义、内容及目标 1.3.1 意义与内容意义与内容 通过对文件系统过滤层穿透技术的深入研究,构建一个能穿透还原系统和躲避病 毒防火墙的文件系统过滤层穿透系统(以下简称fsflp系统) ,对于特定应用环境下的 应用具有重要的理论意义和实用价值。 主要研究内容包括: (1)扩展程序与主程序的分离技术。 (2)磁盘物理访问技术。 (3)文件系统过滤层穿透技术。 1.3.2 目标目标 本研究课题所构建的 fsflp 系统的预期目标包括: (1)能穿透若干经典的还原系统以及病毒防火墙的文件系统过滤层。 (2)应具有较高的可靠性、较强的健壮性、较好的可扩展性以及突出的自我保 护特征。 (3)易于使用、维护方便、良好的硬件兼容性。 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 5 2 相关技术基础相关技术基础 作为后续各章讨论的基础,本章将围绕文件系统过滤层穿透系统所涉及的主要技 术展开讨论。首先,分析 pe 文件格式。然后,讨论裸磁盘的数据结构及文件系统。 最后探讨设备驱动程序相关技术原理。 2.1 pe 文件格式文件格式 因为扩展文件是以资源的方式附加在主文件中,因此有必要分析清楚 pe 文件格 式,从而在 pe 文件资源项中找出扩展文件。 2.1.1 pe 文件格式定义文件格式定义 pe是win32可执行文件的标准格式。它的一些特性继承自unix的coff文件格式 27。pe的中文含义是“可移植的执行体”,意味着此文件格式是跨win32平台的,即 使windows运行在非intel的cpu上,任何win32平台的pe装载器都能识别和使用该文 件格式。当然,移植到不同的cpu上pe执行文件必然会有一些改变。所有win32执行 体(除了vxd和16位的d11)都使用pe文件格式,包括nt的内核模式驱动程序28。 2.1.2 pe 文件格式分析文件格式分析 有一个非常重要的概念与pe文件格式相关,即相对虚地址(rva)。所谓“相对 虚地址”是一个相对于可执行文件映射到内存的基地址的偏移量29。例如,当可执行 文件映射到内存中的基地址(即imagebase值)是400000h,则rva地址1000h的实际 内存地址是401000h。 pe文件结构如图2.1所示。 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 6 dos mz header dos stub signature(“pe00”) image_file_header image_optional_header image_data_directory image_section_header image_section_header .text .data coff 行号 coff 符号表 。 dos 文件头 dos 插桩 dos 头部 pe 标志 映象文件头 可选映象头 数据目录表 pe文件头 节表 节数据 调试信息 文件头 文件尾 图 2.1 pe文件的结构 (1)dos头 pe结构中的dos文件头和dos插桩实际上就是一个在dos环境下显示“this program can not be run in dos mode”之类信息的小程序,主要用于避免pe文件头的数 据被dos系统作为代码装入并执行,这种操作几乎肯定会让系统立即挂起。pe文件格 式中,开始两个字节是4d5a(mz)。 (2)nt映像头 紧跟着dos头后面的便是pe文件的nt映像头(image_nt_header),是用于 存放pe整个文件信息分布的重要字段。nt映像头包含了许多pe装载器用到的重要域。 nt 映像头的结构由以下三个部分组成: 字串“pe00”(signature)(4字节) 这个字串“50450000”(表示字符pe)标志着nt映像头的开始,也是pe文件 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 7 中与windows有关内容的开始,可以在dos头中的偏移3ch处开始的四个字节中找到 该字串的偏移位置(e_ifanew)。 映像文件头(fileheader)(14h字节) 紧跟着“pe00”的是映像文件头(image_file_header)。映像文件头是映 像头的主要部分,它包含有pe文件的最基本的信息30。 通常判断一个文件是不是pe文件,最基本的方法就是先看该文件的前两个字节是 不是4d5a(mz),如果不是,则说明不是pe文件;如果是,则提取pe字串的偏移位 置,然后察看该偏移位置的四个字节是否是50450000(pe),如果不是,说明不是 pe文件, 否则可以初步认为其是pe文件, 当然进一步的准确判断还需要依赖其它条件。 (3)可选映像头(optionalheader) 映像文件头后面便是可选映像头,这是一个可选的结构。optional header结构是 image_nt_headers中的最后成员,提供了pe文件的逻辑分布信息。 (4)节表 紧接着nt映像头之后的就是节表。节表实际上是一个结构数组,其中每个结构包 含了该节的具体信息(每个结构占用28h字节)。该数组成员的数目由映像文件头 (image_file_ header)结构中numberofsections域的域值来决定31。 (5)节 节(section)紧跟在节表之后,一般pe文件都会有几个“节”,如代码节、引入 函数节等,这里只给出本系统中用到的资源节。 资源节一般名为.rsrc。这个节存放如图标、对话框、菜单等程序要用到的资源。 资源节为树形结构,有一个主目录,主目录下又有子目录,子目录下可以是子目录或 数据。主目录和子目录都是一个image_resource_direciory结构。 资源的基础是“资源目录” (image_resource_directory) ,由多个“资源 目录项” (image_resource_directory_entry)组成,其中的每一项又可能指 向一个“资源目录” 。按这种组织方式,可得到一个以“资源目录项”为树叶的“资 源目录”树,它们的树叶指向实际的资源数据32。 目录”(image_resource_directory)的结构包括: 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 8 image_resource_directory struct characteristics dd ? 理论上为资源的属性,不过一直未使用,默认为0 timedatestamp dd ? 资源的产生时刻 majorversion dw ? 主版本号,可据此维护资源的几个版本 minorversion dw ? 小版本号,可据此维护资源的几个版本 numberofnamedentries dw ? 以名称命名的入口数量 numberofidentries dw? 以id命名的入口数量 image_resource_directory ends 此结构中最重要的是最后的两个字段,它们说明了本目录中目录项的数量,即接 在该数据结构后资源目录项的个数。 “资源目录项” ( image_resource_directory_entry)的结构包括: image_resource_directory_entry struct name1 dd ? 目录项的名称字符串指针或id offsettodata dd ? 数据的偏移量或者是到下一个子目录的偏移量 image_resource_directory_entry ends 2.2 裸硬盘的数据结构及文件系统裸硬盘的数据结构及文件系统 作为穿透文件系统的一个基础,需要探讨定位指定磁盘文件物理位置的方法,而 这又依赖于对裸硬盘的数据结构及文件系统的分析。 2.2.1 裸硬盘的数据结构裸硬盘的数据结构 硬盘只有建立起完整的数据结构体系,才能正常使用。一般而言,该数据结构体 系由 6 个部分组成:主引导纪录、主分区表和分区链表、分区引导纪录、文件分配表、 文件目录表以及数据区33。 主引导扇区是硬盘的第一个扇区(0 柱面 0 磁头 1 扇区) ,由主引导记录(mbr) 、 主分区表即磁盘分区表(dpt)和引导扇区标记,三部分组成34,是完成系统 bios 向 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 9 操作系统交接的重要入口。主引导扇区的数据结构如表 2.1 所示。 表 2.1 主引导扇区的数据结构 组成部分 偏移 长度/b 内容 000h-08ah 主引导程序,用于寻找活动分区 08bh-0d9h 启动字符串 mbr 0dah-1bdh 446 保留 dpt 1beh-1fdh 64 硬盘分区表 signature 1feh-1ffh 2 结束标记(55aa) (1)主引导记录占用主引导扇区的前 446 个字节,存放系统主引导程序,负责 从活动分区中装载并运行系统引导程序。 mbr 不随操作系统的不同而不同, 即不同的 操作系统可能会存在相同的 mbr。mbr 不夹带操作系统的性质,具有公共引导的特 性。 (2)主分区表占用 64 个字节,记录磁盘的基本分区信息。主分区表分为 4 个分 区表项,每项 16 个字节,分别记录了每个主分区的信息,因此最多可以有 4 个主分 区。 每个分区表项包含一个分区的引导标志、系统标志、起始和结尾的柱面号、扇区 号、磁头号以及本分区前面的扇区数和本分区所占用的扇区数35。其中“引导标志”表 明此分区是否可引导,即是否为活动分区。当引导标志为“80”时,此分区为活动分 区;“系统标志”决定了该分区的文件管理系统类型,如“06”为 fat16 分区, “0b” 为 fat32 分区, “07”为 ntfs 分区, “63”为 unix 分区等;起始和结尾的柱面号、 扇区号、磁头号指明了该分区的起始和终止位置。主引导扇区的数据结构为: _chs_address struct (sizeof=0 x3, standard type) sector db ? 扇区(sector)号 head db ? 磁头(head)号 cyl db ? 柱面(cylinder) _chs_address ends 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 10 _hd_mbr_dpt_entry struct (sizeof=0 x10, standard type) activeflag db ? 分区的激活标志,表示系统可引导。 startaddress _chs_address 该分区的起始地址 filesystemtype db ? 该分区系统类型标志 endaddress _chs_address 该分区的结束地址 startsectorid dd ? 该分区首扇区的相对扇区号 sectortotal dd ? 该分区占用的扇区总数 _hd_mbr_dpt_entry ends 2.2.2 文件系统文件系统 当磁盘被格式化之后,文件系统需要用到一些特殊的区域来组织它本身的数据, 包括:mbr、dpt、dbr、fat、fdt、data36。fat 是一种文件系统,可以追踪记 录每一段程序或文件的位置,从而使 os 能够根据它找到相应的文件。fat32 是一种 32 位的 fat 文件系统,fat32 文件系统各个区域在分区上的位置关系如表 2.2 所示。 表 2.2 fat32 文件系统各个区域在分区上的位置关系 剩余扇区 数据区 fdt(根目录) fat2 fat1(文件分配表) 31 个保留扇区,一般为空 32 个保留扇区 (系统扇区) 操作系统 dbr 62 个保留扇区,一般为空 63 个保留扇区 (系统扇区) mbr+dpt+“55aa” (1)fat 表的大小和位置 在磁盘上有两个 fat 表,一个是基本的 fat 表 fat1,另一个是 fat 表的备份 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 11 fat2,两者在磁盘上前后紧排在一起。在磁盘上安排 fat 紧接在操作系统引导扇区 dbr 之后。 (2)文件目录表 文件目录表(fdt) ,也成为根目录,是根目录区,紧跟在第二个 fat 表之后, 记录着根目录下每个文件(目录)的起始单元、文件的属性等。定位文件位置时,操 作系统根据 fdt 中的起始单元,结合 fat 表就可确定文件在磁盘中的具体位置和大 小。 (3)数据区 数据区是真正意义上的数据存储的地方, 位于 fdt 区之后, 占据硬盘是的大部分 空间。 (4)操作系统引导记录(dbr) dbr区即操作系统引导记录区的意思, 通常占用分区的第0扇区共512个字节 (特 殊情况也要占用其它保留扇区)37,由跳转指令、厂商标志、操作系统版本号、bpb、 扩展 bpb、os 引导程序和结束标志几部分组成。这里主要关注 fat32 文件系统分区 dbr 部分各字节的作用。 保留扇区数(reserved sector) :偏移为 0 x0e,两字节,位于 bpb 中,表示第 一个 fat 开始之前的扇区数,包括引导扇区。本字段的十进制值一般为 32。 fat 数(number of fat) :偏移为 0 x10,一字节,位于 bpb 中,表示该分区 上 fat 及 fat 副本数。本字段的值一般为 2。 每 fat 扇区数(sectors per fat) (只被 fat32 使用) :偏移 0 x24,四字节, 位于 bpb 中,表示该分区每个 fat 所占的扇区数。计算机利用这个数和 fat 数以及 隐藏扇区数来决定根目录从哪里开始。还可以从目录中的项数决定该分区的用户数据 区从哪里开始。 2.3 设备驱动程序设备驱动程序 因为文件系统过滤层工作在内核模式,只有进入内核模式才能对其进行修改,而 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 12 采用重构驱动的方式进入内核则是一种行之有效的方式。所谓重构驱动实质上就是通 过编写相应的驱动代码来达到修改文件系统过滤层的目的, 本研究所设计的 fsflp 系 统采用了该方法。 2.3.1 wdm 简介简介 wdm 是微软为开发人员提供的一种编写运行在 windows 平台下硬件驱动程序的 有效方法,即所谓的 windows 驱动程序模型38。wdm 提供了设备类,利用此类形成 的所有源代码可以运行在各类 windows 平台。 wdm是一种便捷式的编程技术,使开发人员写出的驱动程序可以跨平台运行, 支持编写微软所支持的wdm总线驱动程序39,在wdm中,“总线”的概念是一种附 加在其它设备(包括物理设备、逻辑设备、虚拟设备)上的设备协议。 2.3.2 分层模型分层模型 wdm 是一个分层化的驱动程序模型,在这个模型中,驱动程序的层或堆栈一起 处理 i/o 请求(irp) 。wdm 中设备对象和驱动程序的层次结构如图 2.2 所示。 fido上层过滤器驱动程序 pdo fido fdo 总线驱动程序 下层过滤器驱动程序 功能驱动程序 irp 图 2.2 wdm 中设备对象和驱动程序的层次结构 图中左边是一个设备对象堆栈,这里设备对象是系统为帮助软件管理硬件而创建 的数据结构40,一个物理硬件可以有多个这样的数据结构,处于堆栈最底层的设备对 象称为物理设备对象(pdo) 。在设备对象堆栈的中间有一个对象称为文件设备对象 (fdo) 。在 fdo 的上面和下面还会有一些过滤设备对象(fido) ,位于 fdo 上面的 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 13 过滤器设备对象称为上层过滤器,位于 fdo 下面(但仍在 pdo 之上)的过滤器设备 对象称为下层过滤器41。 2.3.3 核心数据结构核心数据结构 windows 2000 的 i/o 子系统是基于对象的。对于 wdm 驱动程序而言,其核心数 据结构是驱动程序对象和设备对象。 (1)驱动程序对象 i/o 管理器使用驱动程序对象来代表每个设备驱动程序,驱动程序对象描述了驱 动程序载入到物理内存的地址,驱动程序对象数据结构如图 2.3 所示。虽然微软提供 的驱动开发包(ddk)头文件中公开了整个驱动程序对象的数据结构,但开发人员仅 能直接访问或修改结构中的透明域。在图 2.3 中,驱动程序对象的不透明域用灰色背 景表示。这些不透明域类似于 c+类中的私有成员或保护成员,而透明域类似于公共 成员。 typesize driverobject flags driverstart driversize driversection driverextension drivername hardwaredatabase driverstartio driverinit fastiodispatch majorfunction driverunload 图 2.3 驱动程序对象数据结构 ddk 头文件中声明了包括驱动程序对象在内的所有内核模式数据结构, 其声明形 式如下: typedef struct _driver_object 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 14 cshort type cshort size driver_object,*pdriver_object 这就是类型名为 driver_object 结构的声明方式,同时还声明了一个 pdriver_object 指针类型和结构标签_driver_object。这种结构声明方式在 ddk 中大量使用。ddk 头文件还声明了一组类型名,如 cshort,这些类型名用于 描述内核模式中的原子数据类型。例如,cshort 代表用作基数的有符号短整型数。 (2)设备对象 设备对象代表能够成为i/0操作目标的物理设备或逻辑设备, 以device_object 结构来描述。与驱动程序对象类似,ddk 头文件 wdm.h 中声明 device_object 结构的同时还声明了一个 pdevice_object 指针类型。图 2.4 给出了设备对象数据 结构。wdm 驱动程序可以调用 iocreatedevice 函数创建设备对象,但设备对象的管 理则由 i/0 管理器负责。 typesize referencecount driverobject nextdevice attacheddevice currentirp timer flags characteristics devicetype deviceextention alignmentrequirment stacksize 。 。 图 2.4 设备对象数据结构 driverobject(pdriver_object)指向与该设备对象相关的驱动程序对象,通 常就是调用 iocreatedevice 函数创建该驱动程序对象的设备对象。 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 15 nextdevice(pdevice_object)指向属于同一个驱动程序的下一个设备对象。 是这个域把多个设备对象连接起来, 起始点就是驱动程序对象中的 device0bject 成员。 wdm 驱动程序没有必要使用这个域。 attecheddevice(pdevice_object)指向附着在当前设备对象之上的设备对象 队列顶端的设备对象。附着队列类似一个栈结构,最后一个加入的这个队列的对象处 于队列顶端,即获得最先处理发往目标设备对象 irp 的机会,断开过滤设备对象时会 用到该域。 currentirp (pirp)指向最近发往驱动程序 startio 函数的 i/0 请求包。 characteristics(ulong)是一组标志位,描述设备的可选特征,characteristics 标志位如表 2.3 所示。i/0 管理器基于 iocreatedevice 的一个参数初始化这些标志。驱 动程序沿设备堆栈向上方向传播这些标志。 表 2.3 characteristics 标志位 标志 描述 file_removable_media 可更换媒介设备 file_read_only_device 只读设备 file_floppy_diskette 软盘驱动器设备 file_write_once_media 只写一次设备 file_remote_device 通过网络连接访问的设备 file_device_is_mounted 物理媒介已在设备中 file_device_secure_open 在打开操作检查设备对象的安全属性 stacksize(cchar)统计从该设备对象开始向下直到 pdo 之间的设备对象个数。 该域的目的是告诉其它代码,如果把该设备对象的驱动程序作为其 irp 的第一发送对 象,那么应在这个 irp 中创建多少个堆栈单元(stack location) 。wdm 驱动程序通常 不需要修改该值,因为创建设备堆栈的支持函数会自动完成这个任务。 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 16 2.4 小结小结 本章主要论述了 fsflp 系统所涉及的相关技术。首先,阐述了 pe 文件格式总体 结构,对 pe 文件格式的五个组成部分 dos 头、nt 映像头、可选映像头、节表和节, 尤其对资源节数据组织方式做了详细分析,为实现资源数据搜索奠定了技术基础。 其次,概述了裸硬盘的数据结构,即主引导扇区,该扇区由 mbr 和 dpt 组成, 是系统启动相关的重要数据;阐述了 windows 的文件系统,主要是 fat32 文件系统 的基本技术及数据结构;分析了计算文件在物理磁盘的偏移位置的可行性。 最后,讨论了 wdm 驱动程序和分层驱动程序的结构,详细介绍了驱动对象和设 备对象数据结构。 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 17 3 fsflp 的设计的设计 本章将在已阐述的文件系统过滤层穿透技术的基础上,讨论fsflp的设计思想、 总体构架以及系统的工作流程,同时划分系统的各主要功能模块并给出相应说明,为 系统的实现奠定基础。 3.1 设计原则设计原则 (1)fsflp系统是对隐藏性和稳定性要求都非常高的系统。fsflp的设计要突出 隐藏性和稳定性,兼顾开发难度的原则,在开发工具、平台和技术的选择上优先保证 隐藏性。 (2)分段优化与综合考虑相结合,注重消除性能瓶颈,也不因过分注重优化而 失去逻辑上的简洁性,影响系统的开发进度。 (3)在技术的选择上要注意该系统与操作系统的相容性,特别是在磁盘的物理 访问的设计上,要对windows不同的文件系统做相应处理。 (4)为了便于 fsflp 的进一步改进与扩展,既要为新的功能应用留出相应接口, 又要提供一个方便扩展的框架,使其具有良好的升级空间。 3.2 功能需求及总体结构设计功能需求及总体结构设计 3.2.1 功能需求功能需求 fsflp的开发目标是将目标程序在用户及操作系统不能察觉的情况下植入到目标 主机。要达到该目标需解决如下几个难点: (1)突破文件保护系统 从 windows 98 开始, 微软开始将系统文件的保护功能引入了 windows 操作系统, 这项功能在 windows 98 中称为系统文件检查(sfc) 。而在 windows 2000 中这项功能 称为 windows 文件保护(wfp) 。 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 18 wfp 会监控系统文件夹,这些文件夹下包含了受到保护的系统文件。如果发现系 统文件夹内的文件发生改变, wfp 就会进一步查询被改动的文件是不是属于受保护的 系统文件。一旦确认受保护的系统文件被改动,wfp 就会确认新文件的版本,如果文 件版本正确,wfp 还会根据文件的数字签名来判断新文件是否正确。正常情况下,允 许替换系统文件的文件种类包括 windows 的服务包、补丁和操作系统升级程序。系统 文件还可以由 windows 更新程序或 windows 设备管理器/类安装程序替换。若确认保 护文件是被非法替换或修改,wfp 就会从 dllcache 文件夹中复制正确的源文件还原受 损文件。 要想修改系统保护文件,方法之一是定位系统文件在物理磁盘的位置,直接读写 物理磁盘,从而逃脱 wfp 的监控。 (2)穿透操作系统及杀毒软件文件系统过滤驱动 win32内核中文件系统驱动程序是i/o子系统下的一个重要组件,其功能是实现用 户对磁盘或磁带等非易失性存储介质存取数据的服务。文件系统驱动和内存管理、高 速缓存管理的有机结合是区别于其他设备驱动程序的主要特点。 文件系统驱动负责管理存储在磁盘的数据。文件系统驱动接受对本地磁盘文件的 打开、读、写、关闭请求。通常这些请求来自用户进程,通过i/o管理器发送到文件 系统。 i/o 管理器是一个可扩展的结构,通过用户自行开发过滤驱动程序可以扩展 i/o 子系统的功能。i/o 管理器支持分层驱动程序模型,每个 i/o 请求包(irp)的处理分 别经过各层驱动程序,直到某个层驱动程序响应并完成该请求。 通常,操作系统的还原程序以及杀毒软件的监控程序通过开发驱动程序插入到这 个层次结构中,从而截获来自上层的操作请求,由于这种驱动程序位于文件系统驱动 程序之间所以被称为文件系统过滤驱动程序。 文件系统过滤驱动原理如图 3.1 所示。 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 19 核心态 用户态 向下发送i/o 请求 i/o管理器 (向下发送请求, 不关心请求是否被处理 ) 文件系统过滤驱动程序 (截获文件系统请求) 文件系统驱动程序 中间设备驱动程序 磁盘或其他底层驱动程序 文件系统过滤驱动程序 图 3.1 文件系统过滤驱动原理 由图 3.1 可见文件系统过滤驱动程序是处在文件系统驱动程序的上层或者放在文 件系统驱动程序和存储设备驱动程序之间。因此,只有穿透文件系统过滤驱动程序, 才能突破文件系统过滤,从而成功写数据到磁盘。 fsflp 的主要功能包括: (1)扩展程序与主程序的分离。 (2)物理访问磁盘文件。 (3)文件系统过滤层穿透。 (4)网络文件的下载及运行。 3.3.2 总体结构设计总体结构设计 综合系统设计原则以及设计需求,系统被设计为四大模块:驱动程序加载、系统 感染、过滤层穿透驱动程序和下载器,总体结构设计如图 3.2 所示。 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 20 驱动程序加载 系统感染 下载器 过滤层穿透驱动程序 用户态 内核态 图 3.2 总体结构设计 在程序编译时,将驱动程序以资源的方式附加在系统感染文件中,而下载器以资 源的方式附加在驱动文件中。 系统工作过程如下: (1)利用操作系统提供的资源查找、资源锁定等 api 函数将驱动程序从主文件 中释放出来。 (2)将驱动程序注册为系统服务程序,并启动该服务。 (3)打开驱动设备对象对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年山西省朔州市单招职业倾向性测试必刷测试卷及答案1套
- 2026年唐山职业技术学院单招职业技能考试必刷测试卷及答案1套
- 2026年青海建筑职业技术学院单招职业技能测试必刷测试卷及答案1套
- 2026年上海健康医学院单招职业倾向性测试必刷测试卷必考题
- 2026年德阳科贸职业学院单招综合素质考试必刷测试卷必考题
- 2026年江西农业工程职业学院单招职业适应性考试题库新版
- 2026年黔南民族医学高等专科学校单招职业适应性测试题库新版
- 2026年河北外国语学院单招综合素质考试题库附答案
- 2026年云南城市建设职业学院单招职业技能测试题库必考题
- 2026年辽宁省朝阳市单招职业适应性考试题库附答案
- 二年级上册赣美版江西版小学美术教案完整版
- GB/Z 43202.1-2024机器人GB/T 36530的应用第1部分:安全相关试验方法
- 新能源汽车技术职业生涯规划
- 机械电子工程大一的职业生涯规划
- 采购合同英文
- 培训班授课教师课时费用领取表
- GB/T 3477-2023船用风雨密单扇钢质门
- 胸腔闭式引流护理-2023年中华护理学会团体标准
- 税收咨询报告模板
- 中国建筑史-绘图题
- 上海市住宅修缮施工资料及表式
评论
0/150
提交评论