




已阅读5页,还剩60页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
硕士学位论文基于虚拟及重定向技术的沙箱系统SANDBOXSYSTEMBASEDONVIRTUALIZATIONANDREDIRECTION哈尔滨工业大学2011年12月摘 要随着互联网技术的发展,恶意软件的传播越来越广泛,使得系统安全受到威胁,其中有很大一部分原因是因为越来越多的程序变为不可靠的可疑程序。这些程序没有通过安全验证。当前常用的防御技术包括防火墙技术、入侵检测技术等都不足以防范和应对这些安全方面的隐患。本文采用的沙箱技术使用了一种比较特殊的安全防范策略:系统不限制应用程序的运行权限,而是对一些重要数据进行保护,在这些数据被保护的模式下运行应用程序。除此之外,对保护的数据进行读写的操作会被重定位到特定文件中,从而阻止可疑应用程序对系统的破坏。沙箱(Sandbox)技术是一种安全保护机制,它是对程序实施限制隔离的机制,它的策略是通过限制规则集判断进程的权限,以此来决定该进程某个操作是否被允许执行。沙箱可以用于测试不可靠的应用程序,为了避免不可靠程序的破坏行为,沙箱技术通过为不可靠应用进程提供相应的虚拟资源来实现程序的执行,并且使这些资源与真实数据分离,这样操作就会作用在这些资源上面,从而实现程序的隔离。之前沙箱的实现,需要用到恶意软件的恶意行为特征码,这样需要定期的归纳恶意软件的恶意行为特征。因为只有新的特征出现后,即破坏了系统后才会形成新的特征,这样就可能造成严重后果,除此之外,就是需要权限规则,同样也需要完备的权限规则才能保护系统。本文实现的沙箱系统把重点转移到数据上面,将数据放进沙箱中进行保护,它的基本原理是通过数据文件虚拟映射化和操作重定向,把恶意程序的操作重定向到其虚拟文件中,这样就把恶意软件的操作限制在虚拟文件中,因此可以保护真实的文件。同时在本课题中采用了存储虚拟技术,提高了存储利用率,并且在实现过程中不需要通过定时更新和归纳限制规则集以及恶意特征码的方法来保护系统资源,而是通过虚拟和重定向技术来保护资源。再者从应用程序和操作系统来的角度来看,沙箱环境就是真实的环境,因此可以很好的避免那些具有侦测虚拟环境的恶意程序。关键词:沙箱;数据重定向;安全;虚拟技术;透明性目 录摘 要3第1章绪论71.1 课题来源71.2本课题的研究目的及意义71.3沙箱技术国内外研究现状81.4本文研究内容121.5本文组织结构13第2章沙箱实现技术与相关知识142.1沙箱环境实现关键技术142.1.1限制系统调用技术142.1.2干预系统调用技术172.2沙箱的分类192.2.1按照位置分类192.2.2规则集复杂度分类202.3沙箱的用途212.3.1保护系统212.3.2监测分析232.3.3本系统特点252.4本章小结26第3章沙箱系统设计关键技术283.1系统实现基本原理283.2虚拟化设计技术293.3沙箱重定向技术343.4Windows框架结构353.4.1输入输出(I/O)请求包(IRP)363.4.2分层驱动概念383.5本章小结39第4章系统的设计与实现404.1系统设计流程图404.2虚拟映射模块414.2.1创建虚拟文件424.2.2获取DBR信息434.3 重定向模块464.4IRP处理模块494.4.1写操作IRP处理514.4.2读操作IRP处理534.4.3其他IRP请求处理534.5实验结果554.5.1恶意代码测试结果554.5.2读取数据实验结果604.5.3写入数据实验结果634.5.4存储与效率实验结果654.6本章小结66第1章绪论1.1 课题来源本课题来自于实验室的项目,用于保护文件系统中重要数据的完整性以及可用性。1.2本课题的研究目的及意义恶意软件、恶意代码可能是计算机安全领域的最大威胁,根据McAfee2010年第三季度的最新报告:(1)平均每月有6,000,00新的计算机被僵尸网络所感染(2)平均每天有60,000新的恶意软件出现。(3)Google搜索中有60%的热点搜索词汇在其返回结果的前100项条录中链接到恶意站点。据微软公司安全报告显示,“随着社交网站的发展,从2009年以来,以此为攻击目标的网络钓鱼(fishing)急剧增加,其次钓鱼破坏者所攻击的范围也有所扩展,各个门户网站、大型的游戏网站等成了主要的攻击目标”。此外,用户的主机感染上恶意软件的另一个原因是用户自身的缘故,随着互联网的普及与信息化的发展,越来越多的计算机连接到内部网络或者互联网上,这一方面使得通讯更方便,另一方面也为恶意软件提供了条件,使得黑客、木马、病毒等恶意工具愈演愈烈。例如发送一些含有病毒且有吸引人标题的邮件,当用户不小心点击了它们,可能会在用户的主机上安装上一些恶意软件,并把此邮件发送给用户的联系人。另外,一些部门的计算机中存储和处理的是有关国家安全的政治、经济、军事、国防的信息,因此成为敌对势力、不法分子的攻击目标。恶意软件主动或被动的破坏行为令人防不胜防,这些问题已引起了人们的迫切关注。Cyveillance在2010年的一项研究中表明:对于这些安全问题,传统的防火墙、反病毒软件、IPS等防御手段已是无法胜任的了。在这些问题当中,文件系统的破坏与文件数据的丢失给人们造成了很大危害,尤其在这些单位,计算机存储和处理的是有关国家安全的政治、经济、军事、国防的部门,一旦文件被破坏或修改,将会产生非常严重的后果。为了克服传统方法的缺陷,我们需要一些新的防御手段,基于虚拟映射技术和重定向技术的沙箱是保护系统资源不被破坏的一种新兴的防御手段,它可以很好的解决上述问题,在对用户透明的情况下实现对文件数据的保护,因此从以上几点上来看本课题的研究还是很有意义的。1.3沙箱技术国内外研究现状沙箱的概念第一次是被Wahbe.etal提出来的,目的是保护系统数据不受破坏,保证数据的可用性与完整性。沙箱技术其实是一种隔离机制,它可以制造一种可执行环境,让应用程序在此环境中执行,在运行的过程中它可以限制应用程序的访问权限,从而在一定程度上保护系统资源。文献中阐述了沙箱的主要用途和作用,目前沙箱技术主要是采用规则集来限制系统调用的沙箱技术。还有使用干预技术干预系统调用的沙箱技术。限制技术:限制技术的研究工作重点在于保护系统中数据的机密安全性(confidentiality),文章作者Lampson,在Lampson关于这方面的研究工作之后又出现了一系列限制技术的相关研究工作。限制系统调用技术发展到现在,大多是用于保护系统资源的可用性(availability)以及资源的完整性(integrity)。本文所实现的系统也用来保护文件系统的完整性,在恶意程序或其他因素使得操作系统中文件数据改变后,本系统能够通过一定的技术手段恢复到原来的状态,以保护数据的完整。AcharyaandM.Raje等人通过将应用程序按照功能分类,对已知特定类型的应用程序,根据程序功能的运行特点以及完成此功能所需资源,为该类型制定不同的限制运行约束规则,并且以此规则来设计与实现不同的沙箱系统,当程序运行时,根据功能的不同来加载具有专门针对性的沙箱环境以此保护操作系统资源与安全。常用的限制机制方法有以下几种:第一种方法是从沙箱系统的使用灵活性来考虑,这种方法设计目的是通过系统能够对任何恶意的软件程序都有很好的限制作用,但是这往往要求用户(或管理员)来指定这些运行程序的访问控制信息,如果对于一些运行环境较为固定且简单的小程序,这种方法可以很好的实现程序限制的功能保护系统。但是,当运行环境可以被动态改变,并且程序的功能比较复杂的话,这种方式设计的沙箱系统就失去了它的保护作用。第二种方法是沙箱系统使用有限状态机描述和归纳出程序的行为特性,对于功能相同的进程它们的访问操作是类似的,不同的类型访问序列会有所不同,通过这些可以很好的实现恶意行为特征的描述,但这对沙箱的开发者有一定的要求,他需要对恶意软件功能程序有的体会,考虑到程序的复杂性和目前数亿计的程序数量,很难开发一个较通用的系统。第三种方法是从程序的供应者考虑,按这些把程序分成不同的种类,一般根据开发者、开发公司、以及来源网站等依据把他们归纳为一类,然后参考类别的ACLs(访问控制表)来达到限制程序的目的。但是按这种方法,不同功能的应用程序也有可能被归纳到同一类,参考相同的ACLs,从而会造成错误的沙箱设计规则。由于在程序执行过程中,单一权限设计往往不能够很好的控制程序的权限,TomohiroShioya,YoshihiroOyama在文章提出了将程序运行整个过程划分为几个不同的运行上下文,把程序所具有的访问权限分为两个或多个时期,在每个时期程序的运行权限各不相同,这样可以动态的运用权限规则,更好地保护系统资源。干预技术:干预系统调用技术是指通过干涉系统的调用,改变系统调用的默认行为,修改系统调用执行路径,然后经过分析处理,以此来决定系统调用的具体执行操作。Jones在中研究了如何具体地将干预系统调用技术应用在Mach内核中,并且通过将此技术作为一个扩展工具,使得它可以扩展用户功能。从他的研究中,我们得到如下结论:假如操作系统允许用户按自己的需求对系统调用的接口实施特定的干预,就可以扩展出很多新的应用功能。但是,由于Mach系统并不能够防止原有不可靠程序对外包函数中插入代码的影响,因此无法对其进行安全性机制处理。现在大部分系统采用限制技术来实现沙箱系统,在这种系统的主要原则是:为用户的访问操作给予最小的访问权限,以此来限制程序的运行,使其不能对敏感数据造成破坏。但是现在大部分的沙箱系统不能够提供完善的限制规则,使得沙箱系统不能够很好的保护系统的安全。还有就是以上限制策略的规则集,一旦生成并付诸实践后,系统将根据这些规则判断运行程序的权限,当允许权限被授予给某一操作后,操作往往是作用在了真实数据上,这样如果权限授给了一个恶意的操作,那么操作很有可能就会对系统造成破坏。再者,限制技术是根据沙箱的规则集来实现的,如果沙箱的规则集未能及时更新,那么规则集可能就不能够很好的限制程序系统调用执行。本文通过干预用户发出的系统调用来改变原有系统调用接口的默认行为。通过这样的改变,可以修改系统调用的执行路径以及实现自己需要的具体功能,这样该调用就不再遵守系统的默认执行规则及功能,可以按自己的意愿决定系统调用的具体执行操作以及所需要的功能,在本系统中采用了虚拟映射技术,把文件操作重定向到某一特殊文件中,实现隔离机制。1.4本文研究内容本文主要的研究内容是通过虚拟重定向技术构建一个用于保护系统文件完整性与稳定性的沙箱系统,在文中介绍了虚拟及重定向技术在沙箱中的应用以及实现。本文研究内容如下:(1)在研究内容中将会重点研究过滤驱动以及过滤设备,过滤驱动和过滤设备是本课题系统实现的基础条件,设备驱动采用分层的结构,它采用栈结构,栈的每一部分就是该分层结构对应的设备对象,每一个设备对象都会有唯一的驱动程序来处理发给它的IRP请求,并且设备对象是通过挂载构成栈结构,在本课题将会在磁盘卷设备上实现一个上层的过滤驱动和过滤设备以截取IRP请求,再按照自己的意愿完成此请求。(2)存储虚拟技术,在存储虚拟技术研究中将会根据具体需求实现文件磁盘化,以此来实现对系统和程序的统一视图,把对文件数据的存储操作作用到虚拟的磁盘数据上面。采用的存储虚拟技术位于文件系统与磁盘的中间层次,形成一个与磁盘相对应的特殊文件,可以像磁盘一样对其操作,所生成的虚拟数据文件中留有很多空余空间,这些空间并不占用真正的磁盘块,只是用来与原数据文件的产生映射关系。只有当有真正的数据插入到虚拟文件中时,操作系统才会给虚拟文件分配磁盘块,这样做有助于提高存储资源的利用率。本文实现的沙箱系统,采用关键数据保护政策,当恶意软件对关键数据进行修改时,通过本文沙箱系统将这些修改操作重定向到虚拟文件处,以此达到保护文件的目的。(3)由于本课题同样使用了重定向技术,在本文中将会重点介绍一下如何将操作重定向到虚拟文件中以完成限制程序和局限操作到虚拟文件的目的。使用重定向技术来实现系统文件的安全,这样就可以使用相关的技术手段把对文件的不可靠操作重定向到系统的某一特殊文件内,因为所有对系统的不可靠操作作用到了特殊文件内,对原文件不会造成破坏,即相当于限制了程序的操作,以此可以保护文件数据的安全。本课题采用重定向的技术,在必要时将操作重定向到虚拟文件中,以限制这些操作对真实文件的作用,从而保护沙箱内的关键数据。以上就是本课题的研究内容。1.5本文组织结构本文的组织结构是按如下结构安排的。第一章绪论,主要内容-简述了本课题来源,研究目的和意义,以及当前阶段国内外研究现状。最后介绍本文的组织结构和研究内容。第二章介绍当前建立沙箱环境的具体实现方法以及关键技术,分析了设计沙箱时所用的关键技术以及沙箱的用途和作用。第三章介绍了本文沙箱系统所用的关键技术,其中重点介绍了虚拟化原理以及重定向技术,并分析了目前技术的优劣。最后介绍了实现本课题沙箱系统所用到的一些关键数据结构和相关概念。第四章详细介绍了系统的具体实现,给出了具体流程图和各个功能模块的实现细节,以及系统最后的运行实验结果及评测。第2章沙箱实现技术与相关知识沙箱(Sandbox)技术是一种对程序的限制运行机制,其目的是通过沙箱对程序的限制以达到保护相关资源的目的。由于可以通过沙箱技术来执行未经测试的或不可靠的程序,一些研究人员提出了一些限制访问控制策略当应用程序在沙箱内执行时,就能够分析程序保护系统可以在很大程度上防止恶意软件对系统的破坏,因此对沙箱技术的研究很有意义。2.1沙箱环境实现关键技术目前沙箱环境的实现主要依赖于两项技术:(1)限制系统调用技术。(2)干预系统调用技术,下面详细介绍一下这两项技术。2.1.1限制系统调用技术限制技术的提出者的研究工作重点在于保护系统中数据的机密安全性(confidentiality),文章作者Lampson,在他这方面的研究工作之后又出现了一系列限制技术的相关研究工作。限制系统调用技术发展到现在,大多是用于保护系统资源的可用性(availability)以及资源的完整性(integrity)。本文所实现的系统也用来保护文件系统的完整性,在恶意程序对系统,或其他因素使得系统中文件数据改变时能够通过此系统恢复到原来的状态,以保护数据的完整。限制系统调用技术是通过限制规则对一些系统调用所进行的操作进行阻止。在采用策略限制技术的沙箱环境中,当应用程序运行时,在沙箱内运行的线程有严格的运行权限,他可以阻止恶意软件的非法访问,当应用程序超出所允许的权限时,沙箱就阻止进程的运行,通常这样可以有效的保护自己的主机资源,但是很遗憾这种方法不能提供足够准确的安全限制机制,由于需要考虑到系统的便利性和系统的灵活性,它们很多的实现往往是使用单一的权限限制机制(YES/NO),比如单单从系统的便利性来说,我们所期待的系统是不希望由用户的参与,即不需要用户的任何输入操作,这样就能很好的解决系统的便利性。但是这样就使得任意程序对所有资源都有访问权限,所谓的保护机制也就没有意义了,也就是所谓的YES机制。当从系统的灵活性来说的话,希望系统能够对任意程序都有防御作用,一个极端的方法是限制程序,使程序只能访问极少的资源。也就是所谓的NO机制。理想情况下是希望沙箱系统能够限制程序只访问他所需要完成功能所必需的资源,这样根据当发现访问非法时就可以限制它的系统访问,进而保护系统资源。一些研究人员提出了一些限制访问控制策略,目前系统通常通过三种方法为沙箱系统创建这些限制机制。(1)第一种方法是从系统的灵活性来考虑,这种方法希望系统能够对任何程序都有很好的限制作用,它通常要求用户(或管理员)来指定程序的访问控制信息,如果对于一些运行环境较为固定且简单小程序,这种方法可以很好的实现程序限制的功能。但是,当运行环境可以动态改变且含有大量的功能特性的程序时,这种方法就不能很好的凑效。(2)第二种方法是通过有限状态机来描述程序的行为特性,因为对于一些访问操作来说,不同的访问序列会产生不同的功能和对系统不同的影响。但是这要求开发者对程序有一个深入的了解,考虑到程序的复杂性和目前数亿计的程序数量,很难开发一个较通用的系统。(3)第三种方法是从程序的供应者考虑,一般根据开发者、开发公司、以及来源网站等依据把他们归纳为一类,然后参考类别的ACLs(访问控制表)来达到限制程序的目的。但是按这种方法,有可能不同功能的应用程序可能被分到同一类参考相同的ACL,从而不能很好的限制程序。Shioya T,OyamaY在文章中提出了多策略方案,它在一定程度上解决了单一所造成的问题,他通过将进城执行时划分为几个不同的运行上下文,在不同的上下文中运行不同的操作限制策略,这样也从更微观的视角来限制应用程序的行为,这种方法可以更好地控制程序的运行,但是实现起来代价很大,对特定程序需要特定的处理。而且这种方法还存在一个特点,就是策略的指定,策略只有熟识相关知识的才能较准确把握。如果考策略指定不当的话,它授予程序可以改变其访问的权限,这样这条策略就失效了。以上限制策略的生成规则,一旦生成并付诸实践后,系统将根据这些规则判断运行程序的权限,一旦这样的权限被授予给某一操作后,操作往往是作用在了真实数据上,这样如果权限授给了一个恶意的操作,那么操作很有可能就会对系统造成破坏。为了防止这样的不足,本系统的实现采用虚拟重定向技术,避免这一情况的发生。2.1.2干预系统调用技术干预系统调用技术是指通过干预系统的调用,使得系统调用的默认行为发生改变,通过这样的改变,可以修改系统调用的执行路径,因此该调用就不再遵守系统的默认执行规则,这样就能按自己的意愿决定系统调用的具体执行操作以及路径。干预系统调用在实现过程中一般采用替代的方法:即将系统默认的系统调用替换掉,在这里采用一些外包函数(wrapper)把接口函数替换掉。然后通过在外包函数中加入对这些系统调用进行截取以及检测等功能。最后通过测试结果来判定此调用是否执行系统默认的执行路径。外包函数(wrapper)如图2-1所示:图2-1外包函数目前有许多的安全系统采用了干预系统调用的安全机制。例如,在SLIC系统中,它使用此干预系统调用技术,并且将它用作一种扩展操作系统的手段。作为一种扩展操作系统的手段使得用户可以按自己的意愿选择一些特定的操作系统接口,接着可以通过编译一些特定的代码,并且将其安装到系统内核中,通过此种方法就可以实现用户所选择接口的扩展。使用这种方法SLIC在不同种类的应用程序上分别进行了相关的实验,例如Apache等。采用干预技术对系统的安全实时保护的策略中,大都是以文章为基础。在论文中,该文作者提出了采用动态加载内核模块的方式,以此来截取用户发出的系统调用请求,进而对这些调用接口进行干预以达到保护目的。在文章中,作者为了减小干预技术对操作系统所产生的代价,提出与定义了一种被称为外包的定义语言,以此定义语言为开发依据的开发者可以实现与平台无关的规则,并且这些规则都可以是较高层次的。在文章中,作者通过加载内核模块,实现了一个具有入侵检测功能的系统。本文通过干预用户发出的系统调用来改变原有系统调用接口的默认行为,通过这样的改变,可以修改系统调用的执行路径以及所要实现的具体功能,这样该调用就不再遵守系统的默认执行规则及功能,可以按自己的意愿决定系统调用的具体执行操作以及所需要的功能。2.2沙箱的分类2.2.1按照位置分类根据沙箱系统的具体实现位置,能够把沙箱系统分为四大类:(1)虚拟机(VirtualMachine)运行应用程序时,不在真实的机器上面运行,而是将它局限在某些虚拟机(VirtualMachine)内,如采用VMware(VMWareACE)、VirtualBox和VirtualPC等软件将特定操作系统虚拟化,形成一个新的计算机环境,这样应用程序所有的操作限制在虚拟机内,而对数据的改变对真实系统来说没有影响。(2)内核级(Kernel)这种类型的沙箱系统需要有系统内核的支持。此类沙箱可以通过修改一些函数,如chroot()函数,可以改变操作系统访问控制。并且可以通过使用setrlimit以及getrlimit函数来限制应用程序,以此限制程序对资源的恶意篡改访问等。(3)应用级(Application)通过这种级别的沙箱可以监控应用程序发出的系统调用请求,从而检测其行为特征,它们通常在内核态与用户态之间充当防火墙的角色。(4)语言级(Language)典型的就是JAVA的沙箱系统模型,用JAVA编写的比特代码就是运行在相应的沙箱内的。本课题所实现的沙箱系统位于内核层,通过干预系统调用的默认行为,来达到是数据免受破坏,保护数据完整性目的。2.2.2规则集复杂度分类从影响沙箱系统实现的规则集来分类的话,可以根据规则集的复杂程度,把当前的沙箱系统分为三类:(1)限制型限制型沙箱系统,这种类别的沙箱系统规则比较简单,一般是只规定哪些系统调用拥有权限可以访问资源,哪些系统调用没有权限不可以访问相应资源。并且对于运行在此类沙箱系统上的所有不可信应用程序,都采用同样的规则集。JAVA的沙箱模型就是很典型的该类型的沙箱系统。由于这种类型的沙箱系统规则集是唯一的,所以经常把这些固化,因而使得规则难以增加以及修改,不过在这种沙箱表现出的性能还是很突出的。(2)单规则型单规则型沙箱系统能够简单的修改其规则集。它的每条规则可能包含多个特征码值,并且可以被增添以及修改,这种类型的沙箱经常使用专家系统规则集。由加州大学伯克利Berkeley分校设计研发的Janus系统以及InterSectAlliance公司研发的Snare系统都是是单规则型沙箱系统的代表。(3)复杂规则型复杂规则型沙箱系统中通常包含比较复杂的限制策略规则集,一般是通过两条或多条规则来表示一个操作事件,因此就需要此类型的沙箱系统具有记录系统操作状态的功能。同时由于规则的复杂度,就需要一个高性能的检测引擎,由此使得专门针对该类型沙箱系统的拒绝服务事件的不会发生。本文所实现系统属于的第一种类型,通过对特定文件系统内数据以及系统调用的限制与干预实现保护数据完整性目的。2.3沙箱的用途2.3.1保护系统当系统需要运行未知程序,为了保护系统资源完整不受未知程序的破坏,可以采用沙箱技术来执行这些未知程序,由于沙箱用到了一些干涉技术或者是限制技术,如果程序运行时出现了非法访问行为,沙箱系统可以阻止这些访问,进而保证系统资源的安全,这样就可以使得系统不受破坏。存在一部分应用程序,在它们的实现中使用了沙箱技术,这些应用程序一般要求利用一些新的API来实现沙箱环境,这对目前一些的应用程序来说,往往意味着要求其重新编码,这样应用程序就会有较大改变。其中包括程序结构的改变,这有可能使得单一应用程序进程被分成多个进程,其中一个运行在沙箱的环境中,另一些进程负责管理沙箱中进程内的请求。通常情况下当应用程序中嵌入了沙箱技术时,它一般会用于应用程序最薄弱的部分,以此来保护应用程序。在采用策略限制技术的沙箱环境中,当应用程序运行时,在沙箱内运行的线程有严格的运行权限,他可以阻止恶意软件的非法访问,当应用程序超出所允许的权限时,沙箱就阻止进程的运行,通常这样可以有效的保护自己的主机资源。例如在采用权限限制的策略中,沙箱内部采用一些“权限规则”,在进程上下文中,可以应用不同的权限策略,其实现原理如图2-2所示:图2-2基于权限规则的设计这是基于权限规则的系统保护的基本原理,依据的是最小访问权限原理,我们通过对沙箱中运行的程序设计一些权限设置限制,以此保护系统完整性和安全性。但是现在大部分的沙箱系统不能够提供完善的限制规则,使得沙箱系统不能够很好的保护系统的安全。例如,我们在服务器端运行一个基于权限限制的沙箱系,当我们在沙箱中运行一个进程,进程在用户身份认证的时候需要读取密码文件,但是这个读取过程在整个进程生命周期只占了很小的一部分,而且读取操作并不频繁。当用户使用这个沙箱系统保护此服务器端时,就可以在进程运行的其他阶段限制进程访问此文件,从而留下安全隐患。2.3.2监测分析可以通过沙箱系统来分析一些未知程序的行为特性,检测程序是否具有恶意行为特征,这样在执行这些恶意程序的时候,不担心恶意程序对系统的影响。通过对恶意行为的分析与分类,我们能够提取恶意行为特征码,当我们将这些提取的特征码应用到沙箱保护策略中,可以有效的阻止和预防恶意程序的破坏行为。当在沙箱中加入恶意行为特征码后,可以以此为标志,应用程序在沙箱中执行时,可以通过对应用程序的监视判断其是否含有特征码特征,这样可以判断继续运行程序还是终止程序,达到保护系统的目的。这部分沙箱功能的实现都是通过阻止特定类型的应用程序访问操作来保护系统资源的,采用机器学习的方法,归纳学习它们的行为特性,提取其中的恶意行为特征。在设计这种用途的沙箱时,开发者把提取到的恶意行为作为此沙箱的设计依据,并将此恶意行为作为特征样本,然后以此特征样本作为检测在沙箱中运行的应用程序是否为恶意程序的衡量标准。当沙箱检测到在沙箱内运行的进程有恶意行为特征时它会阻止该进程的运行,以此来保护系统文件数据的安全使其免受损害。目前存在很多恶意行为的分析与分类的方法,通过对恶意行为的分析与分类,我们能够提取恶意行为特征码,当我们将这些提取的特征码应用到沙箱保护策略中,可以有效的阻止和预防恶意程序的破坏行为。我们可以通过一个POP服务器例子来解释这个基本观点,一个POP服务器通常会运行各种各样的操作,其中包括创建套接字,建立连接,读取密码文件,修改邮件等。一个POP服务器的所有运行操作可以根据它的运行时的上下文划分成如下图2-3所示,图2-3不同运行上下文不同的操作图2-3展示了基于运行时上下文我们划分的一个例子,我们主要的关注点在于这一系列的操作和这一系列被访问的系统资源。他们构成了程序的运行环境,与程序运行有很大的关联。例如,配置文件只有在初始化状态时被访问,一些文件(mailspoolfile)的更新也只有在更新上下文时进行。也就是说特定的操作必须在特定运行上下文当中进行,当我们如果发现一些对资源的操作不在系统默认的运行上下文中运行时,它可能就属于恶意行为。当我们在沙箱中采用恶意行为的特征码后,如果发现这一异常行为后,沙箱可以先终止应用进程的运行,并报告这一反常行为,从而达到保护系统资源的目的。在这个例中,我们假设当用此功能的沙箱来测试运行在POP服务器端的程序时,如果该程序在访问POP服务器时,通过对此程序得系统调用的次序、系统调用中参数进行恶意行为检测,如果这些应用程序的行为符合沙箱中的规则集的话,对服务器资源访问以及操作就可以执行,否则的话,就不能够继续访问,并且通过沙箱机制通告用户。这样可以有效地避免恶意软件对系统资源的恶意破坏。但是它也存在以下难点:首先,提取恶意行为特征比较复杂,恶意特征种类繁多。再者,提取到的恶意行为特征,它能不能真正包含所有恶意行为的特征。如考虑到当同类型恶意软件,他们的大部分恶意行为是相同的类型的,如,修改注册表信息,篡改系统文件等。但是随着时间的推进,会有新的恶意行为特征出现,这就造成了沙箱内恶意特征码的滞后,因为新的特征码一般是在对系统造成破坏后才被提取出来,作为新的特征码,这样就使得在新的恶意特征码加入沙箱特征库之前,对系统产生了威胁。除此之外,应用程序可能有多个种类,每个种类的运行方式也不同。因此要保护系统不受破坏必须要设计多个类型的沙箱,但是当一个可疑的应用程序运行时,系统一般不能自动为这个应用程序选择一个合适类型的沙箱,即使是相同的类型的应用程序,我们所归纳的特征样本也不尽相同。2.3.3本系统特点沙箱的设计一般都是有针对性目的的,本文设计的沙箱系统目的在于保护文件数据的完整性(integrity)以及可用性(availability)。对一些重要的数据进行保护,即使在不可靠应用程序对这些数据已经造成破坏时,也能够恢复到数据以前的完整性以及数据的可用性的状态,这样在对关键数据方面就可以有效的完成保护功能,在分析程序行为时,可以用具风险的方法分析不可靠应用程序,即使这些应用程序对系统造成了破坏,通过本课题实现的沙箱系统也能够把在系统受保护的这些关键数据恢复到可用状态并且能够保证它的完整性。本文中对Windows内核进行干预,把关键文件映射到成虚拟文件,采用存储虚拟化的原理,为程序提供统一视图,然后按自己的意愿干预系统调用的具体功能。并且采用重定向的技术,在必要时将操作重定向到虚拟文件中,以限制这些操作对真实文件的作用,从而保护沙箱内的关键数据。例如,恶意软件对系统的破坏可能集中体现在对注册表的修改,通过对注册表进行添加信息、修改或删除特定信息来实现恶意破坏,其中破坏活动包括,恶意程序的自启动、关闭安全软件的部分功能等。本文实现的沙箱系统,采用关键数据保护政策,当恶意软件对关键数据进行修改时,通过本文沙箱系统将这些修改操作重定向到虚拟文件处,以此达到保护文件的目的。当操作完毕时,只要采用一定的措施,就能够完成恢复这些关键数据的完整性与可用性。2.4本章小结本章首先介绍了目前沙箱系统实现所使用的一些关键技术,干预技术和限制技术,介绍了几种不同的沙箱类别以及特点。分析了沙箱的具体用途,以及沙箱技术面临的挑战,最后介绍了本文沙箱系统的特点。第3章沙箱系统设计关键技术在这一章中,重点讲述一下本系统实现的基本原理和涉及到的一些关键技术,其中包括虚拟化技术,以及重定向技术等。3.1系统实现基本原理沙箱(Sandbox)技术可以用于测试不可靠的应用程序。本文设计的沙箱系统目的是保护文件数据的完整性(integrity)以及可用性(availability)。上面介绍的一些沙箱系统一旦生成并付诸实践后,系统将根据相关规则判断运行程序的权限,一旦这样的权限被授予给某一操作后,操作往往是作用在了真实数据上,这样如果权限授给了一个恶意的操作,那么操作很有可能就会对系统造成破坏。为了防止这样的不足,本系统的实现采用存储虚拟化的原理,并且使用虚拟重定向技术,把程序对关键数据的操作限制在虚拟文件内以保护数据完整(integrity)和安全(security)。在本沙箱系统中运行不可靠应用程序,应用程序对于系统资源的修改被重定向到其他文件中,从而减轻或阻止不可靠应用程序对于系统的危害。基于虚拟重定向技术的原理如图3-1所示:图3-1基于重定向保护模型首先选择关键数据(DATA)放进沙箱内进行保护,然后采用相关的技术把这些关键数据虚拟到沙箱外,使得沙箱内的数据与此虚拟数据形成一个映射关系,当应用程序可访问相关数据时,程序能够读取到沙箱内的数据,如果程序为不可靠程序时,可以采用干预系统调用的方式,把此系统调用的默认访问方式以及访问路径更改成其他的方式与路径,在本文中选择把对关键数据的操作映射到这些数据对应的虚拟数据上,将此系统调用的操作最终的结果会作用到虚拟数据上,如上图3-1,应用程序对关键数据的操作被重定向到了虚拟数据上了,即上图内在沙箱外菱形数据内的蓝色方形部分。3.2虚拟化设计技术本课题沙箱中用到了虚拟映射技术,在本节我们将介绍一下虚拟技术。虚拟实现对于真是来说的,通常来说,计算机系统有不同的层次构成。由下往上依次为硬件物理资源、操作系统、系统调用接口,最上层为运行在操作系统上的不同应用程序,不同的层层之间,利用虚拟化技术都可以构造一个虚拟层次,该虚拟层次对其上层来说是透明的,他可以提供与真实的下层同样的功能,这样可以使得原本存在耦合关系的上下两层解除关系,但是由于引入了中间虚拟层,不可避免的是系统性能受到一定的影响,但随着虚拟技术的发展这种开销也越来越小。如蜜罐技术例如蜜网项目(Honeynetproject)就采用了虚拟技术。虚拟技术是通过相关的技术为某种需求创造出一些事物的虚拟版本,比如可以实现操作系统虚拟,还有存储设备的虚拟以及实现网络资源虚拟。虚拟化后的资源对用户来说是透明的,它隐藏了其实现细节,用户所有的操作跟真实环境中是一样的。虚拟化的常见类型可分:系统虚拟化、软件虚拟化技术、存储虚拟化等,下面依次就这三种虚拟技术进行介绍。(1)系统虚拟化是目前最被广泛接受和熟知的一种虚拟化技术。系统虚拟化实现了物理计算机硬件资源与操作系统的分离,这使得在一台计算机上面可以运行多台虚拟的计算机操作系统,但是从虚拟的操作系统内部来看与真实的计算机系统没有非常显著的区别。系统虚拟化是使用一些相关的软件在一台计算机上面虚拟出一台或者多台独立的虚拟机来。虚拟机(VirtualMachine)就是指使用系统虚拟化技术,它运行在一个隔离化的环境中,并且具有完整的硬件资源和功能的计算机。拥有自己的操作系统以及运行在操作系统上面的应用程序,在系统虚拟化中,虚拟化的多台计算机系统可以独立的运行在同一台计算机上而不会相互干涉,对他们来说,其他计算机都是透明的。系统虚拟化如图3-2所示:图3-2系统虚拟化但是在系统虚拟化中宿主主机都要为在其上运行的虚拟机提供一套虚拟的硬件环境,如CPU、内存、IO、设备以及网络接口等,总之一台真实计算机中应该有的,虚拟机中就应该含有。系统虚拟化有高度的隔离性的特点,因为它与底层的物理机实现隔离。它的核心技术包含有CPU的虚拟化、设备与I/O虚拟化以及内存的虚拟化技术。这样常用在安全方面,检测程序,并且取得很好的效果。但是目前在一些恶意程序变得越来越“狡猾”,他们其中的一些已经可以通过自我侦测手段来判定自己是否在沙箱或虚拟环境中运行,如这些程序可以使用特定的处理器代码,让它在虚拟环境中执行,由于在虚拟环境中处理器代码的执行结果与真实环境不同,这些程序可以凭此来绕开检测,既不表现出恶意的行为操作。文章中介绍了相关内容,这使得单纯的虚拟技术遇到了挑战。沙箱和虚拟机有本质区别:在沙箱中,程序所有的操作,全部是在本系统中完成的,但是沙箱会运用记录机制把相关的操作记录下来,当我们需要恢复到相应的时间点时,沙箱能够将所有这些操作推倒,恢复到这一时间点去。沙箱本质上只是编写相应的驱动程序,然后通过加载编译好的驱动目标码的方式实现沙箱。(2)软件虚拟化技术主要有应用虚拟化和高级语言虚拟化两种。a) 应用虚拟化技术是指通过虚拟将应用程序与操作系统分离开来,即解除它们之间的耦合,为应用程序提供一个可以执行的虚拟运行环境。而且在这个环境中,可以运行应用程序的可执行文件,它还包括引用程序所需的访问的资源,应用虚拟化从本质上说,是把应用从对低层的系统和硬件的依赖中提取出来,这种虚拟化技术可以解决版本不兼容的问题。b) 高级语言虚拟化技术是为解决可执行程序,如.exe,在不同计算机体系结构中的可移植问题,在这种的虚拟化技术中,有高级语言编写的应用程序按照某种标准被编译成中间指令,以此实现在不同的体系结构中执行。例如,JAVA虚拟机它解除下层硬件系统平台与上层可执行代码系统平台之间的耦合性。这样使得可执行指令可以跨平台。(3)随着信息业务的高速发展,如今网络存储系统越来越受到关注,成为企业的核心业务平台,存储虚拟化技术由此应运而生。在当前的企业运行平台中,数据信息的增长速度非常之快,而企业管理数据能力则较为落后。通过使用存储虚拟化,许多耗时费力的工作,比如数据之间的归档、备份以及恢复、存储资源分配等,就可以通过存储虚拟化技术进行处理,可以大大方便数据的管理工作,存储虚拟化可以显著地平衡信息增长速度与数据管理能力之间的差距。存储虚拟化技术将存储单元的逻辑映像与物理存储映像解耦合,由此为系统以用户提供一幅统一的存储虚拟视图。可以把RAID(RedundantArrayofIndependentDisk)技术看作是存储虚拟化技术的雏形结构,RAID技术通过将多块物理磁盘采用某种阵列的形式排列组合起来。为上层系统提供一个具有统一的抽象接口的存储空间,它对上层来说是透明的,服务系只看到了一个虚拟的存储磁盘,即可以看作是一个逻辑单元。网络附加存储(NAS)和存储区域网(SAN)都是基于存储虚拟化的典型代表,总之,存储虚拟化技术使得存储单元的逻辑映像与存储设备的物理单元解耦合,由此为系统以用户提供一幅统一的存储虚拟视图。本系统使用的虚拟技术为存储虚拟化技术,系统通过提供给用户和系统的一个虚拟存储视图,把对文件数据的存储操作作用到虚拟的磁盘数据上面。采用的存储虚拟技术位于文件系统与磁盘的中间层次,形成一个与磁盘相对应的特殊文件,可以像磁盘一样对其操作,所生成的虚拟数据文件中留有很多空余空间,这些空间并不占用真正的磁盘块,只是用来与原数据文件的产生映射关系。只有当有真正的数据插入到虚拟文件中时,操作系统才会给虚拟文件分配磁盘块。例如,当系统设置虚拟文件大小为500G,但是真正只使用了50G空间,则虚拟文件所占磁盘空间的大小可能只有20G。小于用户设置的容量,而当用户增加数据时,再适当的重新分配新的存储空间,这样做有助于提高存储资源的利用率。本文实现的沙箱系统,采用关键数据保护政策,当恶意软件对关键数据进行修改时,通过本文沙箱系统将这些修改操作重定向到虚拟文件处,以此达到保护文件的目的。当对系统的操作完毕时,只要采用一定的措施,就能够完成恢复这些关键数据的完整性与可用性。具体实现将在下一章中详细介绍。3.3沙箱重定向技术重定向技术在计算机中使用已久,通过重定向技术可以方便我们所做的操作更顺利地完成任务。重定向技术其实就是通过各种相关重定向的方法将各种访问请求以及请求中的参数重新定位转到其他请求或参数上面去,例如:网页的重定向、域名的重定向以及路由选择的变化也是对数据报文经由路径的一种重定向。重定向可以帮助程序实现自己期望的功能,这种技术有很多好处,以网页和域名的重定向来为例,可以把用户经常用的而且容易出错的网站采用网页的重定向,如重定向到等,这样就给访问者提供了很大的方便.在计算机安全领域,我们也可以使用重定向技术来实现系统文件的安全,这样的话,可以使用相关的技术手段把对文件的不可靠操作重定向到系统的某一特殊文件内,因为所有对系统的不可靠操作作用到了特殊文件内,对原文件不会造成破坏,即相当于限制了程序的操作,以此可以保护文件数据的安全。本系统采用重定向的技术,在必要时将操作重定向到虚拟文件中,以限制这些操作对真实文件的作用,从而保护沙箱内的关键数据。例如,恶意软件对系统的破坏可能集中体现在对注册表的修改,通过对注册表进行添加信息、修改或删除特定信息来实现恶意破坏,其中破坏活动包括,恶意程序的自启动、关闭安全软件的部分功能等,具体实现将在下一章中详细介绍。3.4Windows框架结构本文实现通过过滤驱动的方式采用内核级的驱动编写来实现,首先介绍一下windows操作系统的总体架构,操作系统是分层结构的,与CPU的ring结构是密切相关的,一般说来就是运行在CPU特权级别中的ring0,而用户模式运行在特权级别中ring3中,在不同的结构,程序所具有的访问权限不同,本课题主要研究系统的内核模式。操作系统是分层结构的,可分为内核模式和用户模式。应用程序处于用户模式下,当用户层序调用系统API时,WIN32系统把这些系统调用转换成NativeAPI,然后进入内核模式,即系统调用函数,系统调用函数通过I/O管理器把消息传给驱动程序中的设备对象。内核模式系统的总体架构如图3-3所示:图3-3系统的总体架构由图中可以看出应用程序,win32子系统还NativeAPI都是处于用户模式层,而一些执行组件,比如I/O管理器、对象管理器、进程管理器处于内核模式层中,正是由于分层结构才使得系统与应用进程能够更好运行。3.4.1输入输出(I/O)请求包(IRP)IRP的处理机制与应用程序的消息机制相似,当驱动程序接收到具体的IRP后,会判断该IRP的类型,接着调用各自的派遣函数,在派遣函数中IRP得到处理。在Windows内核中,数据结构IRP(I/ORequestPackage),即输入输出请求包。它是与I/O具体相关的一个数据结构。是上层与底层通信时,所用的载体。当客户程序产生并发出相关的操作请求时。操作系统会将此操作请求转化成相应类型的IRP,根据IRP的类型,此IRP会被发送到相应的派遣函数中,然后有其对应的派遣函数完成此I/O请求。IRP是一个非常复杂的数据结构,其中IRP结构有两个重要的基本元素属性,一个是MajorFunction,另一个是MinorFuntion,这两个属性分别记录了具体每个IRP的主类型(Major)和子类型(Minor)。操作系统一般根据IRP的MajorFunction,即主类型,将请求派遣到相应的函数中,在派遣处理函数中还可以判断这个IRP的子类型,从而进行具体处理。本文系统实现的方案就是通过截取IRP请求后干预IRP,交由自己的派遣处理函数来完成相应的请求,实现功能。当系统有IRP产生时,IRP信息会传给具体相应的设备对象,每个IRP信息传递给的设备对象可以构成一个设备栈(device_stack)结构,每个设备栈(device_stack)还对应着一个I/O栈,设备对象有自己的派遣函数,IRP信息从设备栈的上层依次传递到底层。当底层设备对象上面有过滤驱动程序时,过滤驱动可以选择自己处理IRP信息,也可以选择直接往下转发IRP信息。当存在底层过滤驱动时,我们就可以根据自己的需求来选择处理IRP信息。例如我们监视该IRP,当我们用上面所提到的分类算法将此IRP分类为含有恶意行为的请求时,或发现该IRP要求访问或修改高于自己权限的文件资料时,该IRP可能会对系统资源造成损害,这样过滤驱动程序就可以简单的直接处理完成IRP,使其不能传到底层设备驱动,这样做可以在一定程度上保护系统。3.4.2分层驱动概念分层驱动是指两个或两个以上的内核驱动程序,这些程序分别创建各自不同设备对象,并且形成一个设备栈。它们由高到低的处于栈的不同位置,IRP请求首先会
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年酒店餐饮窗口承包合同食品安全责任保险全面覆盖范本
- 水彩基础理论课件
- 培训知识片头课件
- 变电站管理课件
- 水和氯气的反应
- 2025版轻钢组合房移动办公空间租赁合同
- 二零二五年度换房押金退还协议书模板
- 二零二五版离婚协议中关于子女探望权补充协议
- 2025版高新技术产业园区场地租赁合同范本
- 二零二五版房屋室内外照明系统维修合同
- 高速天桥拆除方案(3篇)
- 2025年中国冷链物流行业投资前景分析、未来发展趋势研究报告(智研咨询发布)
- 2025合作合同范本下载
- 手外伤急救诊疗流程标准化
- 农村土地托管培训课件
- 老年专科护士学习培训汇报
- 基孔肯雅热防控培训课件
- 公司岗位补助管理办法
- 游戏与儿童发展课件
- 捐赠助学活动方案
- GB/T 19867.5-2008电阻焊焊接工艺规程
评论
0/150
提交评论