一种用于增强计算机系统安全性的方法及装置的制造方法_2

文档序号:8431087阅读:来源:国知局
制块)。通常,对于运行在沙箱中的程序,该程序所关联的文件对象的CCB结构中将使用该沙箱环境的路径,也即虚拟化环境路径。因此,现有技术中,程序通过操作用户态句柄可以获得该虚拟化环境路径,从而感知其自身运行于虚拟化环境中。如上文所述,程序对于虚拟化运行环境的感知将可能导致安全问题。本发明解决了这一问题,以增强了计算机系统安全性。
[0028]并且,本领域技术人员还应理解,此处,对于虚拟化环境的相关描述仅为便于读者理解本发明原理而给出的示例性描述,而非对于本发明适用范围的任何限制。并且,本领技术人员还应理解,虽然下文中将使用Windows操作系统、沙箱、CCB结构等来对实施例进行说明,其仅为便于读者理解的目的,而非对于本发明的任何限制。本发明的范围由所附权利要求而非上述说明限定。
[0029]图1示出根据本发明一个方面的实施例的用于增强计算机系统安全性的方法的流程图。
[0030]本发明方法通过计算机设备实现。所述计算机设备包括但不限于服务器、个人电脑、笔记本电脑、平板电脑、智能手机等。
[0031]在根据本发明的一个实施例中,所述计算机系统基于Windows操作系统,所述虚拟化环境为沙箱环境,所述底层数据结构为CCB数据结构。为便于理解,如无特别另有说明,下文中的计算机系统为基于Windows操作系统,使用NTFS(New Technology FileSystem,新技术文件系统)文件系统,并在该Windows操作系统上利用沙箱技术来提供虚拟化环境。本领域技术人员应理解,本发明原理也可适用于基于使用FAT (File Allocat1nTable,文件分配表)文件系统的Windows操作系统或其他类似操作系统的计算机系统。
[0032]首先,在步骤Sll中,对于与运行于虚拟化环境中的程序相关联的文件对象,获取所述文件对象的底层数据结构。
[0033]此处,文件对象意指与运行的程序相关联的文件在操作系统中的表示。文件对象的底层数据结构意指该文件对象在文件系统中的底层数据结构,例如上文所述的CCB结构。
[0034]与程序相关联的文件对象指该程序运行所涉及的文件对象。例如,对于运行Windows操作系统上的程序,其相关联的文件对象可以包括该程序的用户态文件句柄所对应的内核态的文件对象,其中,该程序的用户态文件句柄可以为与该程序所使用的文件相关的文件句柄、与该程序所使用的命名管道相关的文件句柄等任何Windows操作系统所支持的文件句柄。特别地,该程序相关联的文件对象可以为与该程序的映像文件相关联的文件对象。该程序的进程对象将所述文件对象的底层数据结构中的路径作为所述程序进程的进程路径。
[0035]具体地,在步骤Sll中,对于与运行于虚拟化环境中的程序相关联的文件对象,可以例如通过与操作系统交互或通过与文件系统交互等方式来获取该文件对象的底层数据结构。
[0036]接着,在步骤S12中,在所述文件对象的底层数据结构中使用非虚拟化环境路径,以用于指示与所述文件对象相关联的路径。如上文所述,虚拟化环境路径意指与虚拟化环境,例如沙箱环境相关的路径,例如沙箱路径。相应地,非虚拟化环境路径意指该计算机系统的真实环境路径。为便于描述和理解,在下文中,将以路径名中包括“sandbox”的路径作为虚拟化环境路径,并以路径名中不包括“sandbox”的路径作为非虚拟化环境路径。
[0037]具体地,在步骤S12中,可通过与操作系统交互,或直接操作相应内存地址中的数据等方式,来在所述文件对象的底层数据结构中使用非虚拟化环境路径,以用于指示与所述文件对象相关联的路径。如上文所述,当通过操作用户态句柄来获取文件对象的底层数据结构中所包括的路径时,所获取到的路径将为非虚拟化环境路径。应注意的是,当文件物理存储于虚拟化环境中,例如沙箱中时,其实际文件路径为沙箱路径。因此,在步骤S12中所使用的非虚拟化环境路径与该文件的实际文件路径不同。
[0038]在一个优选实施例中,在步骤S12中,可根据虚拟化环境路径与非虚拟化环境路径之间的映射关系,在所述文件对象的底层数据结构中使用非虚拟化环境路径,所述非虚拟化环境路径用于指示与所述文件对象相关联的路径。例如,当文件物理存储于虚拟化环境中,例如沙箱中时,其实际文件路径应包括该虚拟化环境路径,例如沙箱路径c:\sandbox。假定该沙箱路径c: \sandbox映射到非虚拟化环境路径c: \,则可根据该映射关系,在该文件对应的文件对象的CCB结构中使用非虚拟化环境路径c:\以指示该文件的路径。
[0039]在一个实施例中,可以配置虚拟化环境路径与非虚拟化环境路径之间的映射关系。例如,接上例,可以根据实际需要来配置沙箱路径c:\sandbox映射到非虚拟化环境路径c:\。此外,还可以根据实际需要来调整虚拟化环境路径与非虚拟化环境路径之间的映射关系,例如将c:\sandbox调整为映射到非虚拟化环境路径d:\。
[0040]在一个实施例中,在步骤SI I中,对于与运行于虚拟化环境中的程序相关联的文件对象,将创建所述文件对象的底层数据结构。例如,对于运行于沙箱中的程序P1,该程序Pl将创建文件Fl,该文件Fl将被置于沙箱环境中,其实际存储在C:\sandbox目录下。对于该文件Fl所对应的文件对象F01,可以通过调用Windows操作系统所提供驱动库函数来创建该文件对象FOl的底层数据结构,例如NTFS文件系统的CCB结构。接着,在步骤S12中,在所创建的所述文件对象的底层数据结构中使用非虚拟化环境路径,所述非虚拟化环境路径用于指示与所述文件对象相关联的路径。具体地,可以例如通过修改操作系统的驱动库函数来在所创建的文件对象的底层数据结构中使用非虚拟化环境路径,而不再使用虚拟化环境路径。接上例,对于文件对象FOl的CCB结构,将使用非虚拟化环境路径c:\来指示与所述文件对象FOl相关联的路径,也即文件Fl的路径。或者,当虚拟化环境路径c:\sandbox映射到非虚拟化环境路径d: \时,对于文件对象FOl的CCB结构,可使用非虚拟化环境路径d:\来指示文件Fl的路径。
[0041]在另一个实施例中,在步骤Sll中,对于与运行于虚拟化环境中的程序相关联的文件对象,获取所述文件对象的已有的底层数据结构。例如,对于运行于沙箱中的程序P1,该程序Pl创建了文件Fl,该文件Fl位于沙箱环境中,其实际存储在c:\sandbox目录下。相应地,操作系统为该文件Fl创建了文件对象为F01,并为该文件对象FOl创建了底层数据结构CCB结构,其中该CCB结构中包括沙箱环境路径c:\sandbox,其为虚拟化环境路径。可以例如通过与操作系统交互来获取该文件对象FOl的CCB结构。或者可以修改操作系统的驱动库函数来在创建CCB结构时发送消息,当接收到该创建CCB结构的消息后,可基于该消息来获取该CCB结构。接着,在步骤S12中,可以将所述文件对象的所述底层数据结构中的虚拟化环境路径修改为非虚拟化环境路径,所述非虚拟化环境路径用于指示与所述文件对象相关联的路径。接上例,可以通过对相应内存地址的内容直接进行操作来将该文件对象FOl的CCB结构中的虚拟化环境路径c:\sandbox修改为非虚拟化环境路径c: \以指示该文件对象FOl所对应的文件Fl的路径。或者,当虚拟化环境路径c: \sandbox映射到非虚拟化环境路径d: \时,可以将该文件对象FOl的CCB结构中的虚拟化环境路径c:\sandbox修改为非虚拟化环境路径d:\。
[0042]本领域技术人员应理解,此处,对于将虚拟化路径修改为非虚拟化路径的相关描述仅为示例性而非限定性描述,存在其他各种实现方式而不背离本发明的精神或范畴,并以引用的方式包含于此。
[0043]在一个实施例中,所述与运行于虚拟化环境中的程序相关联的文件对象为与所述程序的映像文件相关联的文件对象。该程序的进程对象将所述文件对象的底层数据结构中的非虚拟化环境路径作为所述程序进程的进程路径。此处,程序的进程对象指该运行的程序的进程在计算机系统的操作系统中的表示。例如,假设程序的映像文件为P1.exe,其存放于沙箱环境目录c:\sandbox中,也即该映像文件P1.exe的实际路径为虚拟环境路径c: \sandbox。假定c: \sandbox映射到非虚拟化环境路径d: \。按照上文所述的方法,可在该映像文件P1.exe相关联的文件对象FOl的底层数据结构CCB结构中使用非虚拟化
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1