基于共享内存的云取证证据获取方法及系统的制作方法_2

文档序号:9432389阅读:来源:国知局
传输数据的内存;
所述数据识别和接收组件用于将获取的内存数据转存入文件中,当数据较大时需要按照顺序重构数据。
[0013]与现有技术相比,本发明具有如下优点和有益效果:
能够利用共享内存这一普遍存在的物理资源以及气球驱动这个被广泛使用在云平台上的用以调整内存资源的技术,可以被用来当作一个虚拟机之间信息传递的隐秘的方法,在虚拟机之间传输更为精确、没有大小限制的数据或文件,并且不会引起VMM和其他安全工具注意,很好的规避VMM和安全工具的检测和防御,从而采用本发明方法进行云取证时不受云平台和云提供商的限制。本发明无需额外硬件环境,具有普遍适用性。
【附图说明】
[0014]图1为实现本发明的系统架构图;
图2为虚拟机之间传输数据的流程图;
图3为规则检测方法的流程图;
图4为内存转存方法的流程图。
【具体实施方式】
[0015]以下将结合具体实施例对本发明提供的技术方案进行详细说明,应理解下述【具体实施方式】仅用于说明本发明而不用于限制本发明的范围。
[0016]请参阅图1,其中展示了本发明的系统架构图,本发明在IaaS平台上实验,系统的实现涉及三层架构,分别是硬件层、VMM和虚拟机层,硬件层为本方法提供了可共享的物理资源,如:内存等。VMM层是云平台中用来监控和管理其上运行的虚拟机,并为虚拟机提供物理资源的虚拟化。虚拟机层是由云平台上运行的客户虚拟机组成,在我们的方法里指代为用来进行数据传输的两方虚拟机:发送虚拟机和接收虚拟机。这两种虚拟机分别装备有不同的模块,两种虚拟机都具备系统驱动模块、发送模块和接收模块,此外,由于接收虚拟机是完全在控制之下,所以其所特有模块就是自调整模块。
[0017]因此,从功能模块上说,本发明分为四个模块,分别是系统驱动模块、发送模块、接收模块和自调整模块。
[0018]其中系统驱动模块由外部气球驱动提供,现在该驱动已经被包含在Linux 2.6.36及以后的Linux内核版本中用来进行虚拟机内存的调整,但是在非内核模式下,虚拟机不能够通过该驱动调整自身的内存,因此本发明中的内存调整行为均由VMM中的气球驱动进行统一的控制。发送模块用于创建要进行传输的数据,并且把该数据传输到共享内存池中。接收模块用于从共享内存中获取要传输的数据或文件,在获取文件以后还需要对于所获取的数据进行识别和重构。自调整模块仅仅适用于完全在控制之下的虚拟机中,并且用于通过插入内核模块来调整自身的内存的大小配置。
[0019]具体的说,系统驱动模块所使用的是气球驱动,并且由VMM中的气球驱动控制着VMM所管理的其他的虚拟机上的气球驱动来进行内存的调整,来更加充分的利用内存这一共享物理资源。
[0020]在一个虚拟机被启动之前有三个配置需要提前进行设置:当前内存、最大内存和最小内存。当前内存是指该虚拟机当前系统中的内存的总的大小;最大内存指的是该虚拟机能够使用的可配置的最大的内存的大小,通过气球驱动调整的内存大小始终不大于该最大内存;最小内存指的是该虚拟机所持有的最小的内存大小,通过气球驱动调整后的内存的大小要始终不小于该最小内存。
[0021]在VMM中的驱动调整虚拟机的内存的时候,VMM 一般采取一些调整规则自动的调节个虚拟机之间的内存的分配。内存调整规则具体为:VMM周期性的检测所有虚拟机内存的情况,对于每一个虚拟机来说,如果内存的使用率大于一个上限,那么VMM将以一定的比例增大该虚拟机的内存的大小,直到其内存值达到最大内存或内存使用率低于这个上限为止;如果内存的使用率小于一个下限,那么VMM将以一定的比例减小该虚拟机的内存的大小,直到其内存值达到最小内存或内存使用率小于这个下限为止。
[0022]发送模块包括数据填充组件和第一气球驱动触发组件。
[0023]其中,数据填充组件用于将传输的数据写入到内存页当中。这个组件的输入参数有:(1)地址,表示要传输的数据所在的地址;(2)比重,表示期望要传输的数据想要填充的内存空间的百分比。在数据填充过程中,当数据较小时,在内存页中写入数据直到要传输的数据在内存中所占据的比重达到传入的比重参数为止;当要传输的数据的大小比较大时,将要传输的数据进行分割,并用特定的符号标注该碎片的顺序。紧接着要进行的操作就是,循环的把这些数据碎片中的数据填充入内存中,并且每一个流程只针对一个数据碎片。
[0024]通过上述两种方式,无论要传输的数据大小如何,都已被填充到内存中,其后使用程序不断的申请大量的内存空间,该程序不会对于内存中的原始数据造成大规模的破坏。通过这种方法来增大自身的内存压力,以促使VMM增大该虚拟机的内存直到其内存达到最大内存为止。
[0025]发送模块中的第一气球驱动触发组件具有两种处理方法:气球驱动触发方法和规则检测方法。
[0026]气球驱动触发方法:该方法用于将已经存在于虚拟机内存中的要传输的数据回收到共享内存池当中。为了实现这个目标,需要降低当前虚拟机的内存的使用率,使其低于VMM中的气球驱动调整内存规则中的下限,以促使VMM降低该虚拟机的内存的大小,以达到把包含有要传输数据的内存回收到共享内存池的目的。
[0027]规则检测方法:该方法用于检测VMM中的气球驱动所使用的内存调整规则,因为不同的云服务提供商所采取的规则策略是不同的,因此获得其调整策略中的内存使用率的上限和下限,有利于本系统和方法的开展。该方法应该在所有的传输行为进行之前就要开始。
[0028]接收模块包括数据识别和接收组件、第二气球驱动触发组件。
[0029]其中,第二气球驱动触发组件用于获取共享内存池中的包含要传输数据的内存。该组件中通过简单的调用malloc函数不断的申请内存空间,并且在调用过程中不关闭每一个进程。
[0030]接收模块中数据识别和接收组件具有两种处理方法:
对于完全处于控制下的虚拟机来说,需要对于虚拟机的操作系统的内核代码进行修改,例如Linux。在Linux中,需要向物理页分配算法中插入一些代码,来实现对于物理页原数据的转存。通过这种方式,把属于某一特定进程所有的内存空间的原数据转存到文件当中,并且在添加了一个锁来避免死锁情况的出现。
[0031]对于不处于完全控制之下的虚拟机来所说,需要利用其他的诸如内存转存工具,例如DD0
[0032]在该组件已经获取到内存数据后,需要检测是否包含发送模块所插入的特殊标记,如果有特殊标记,则需要把特殊标记范围内的数据提取出来用以重构传输数据。
[0033]采用本发明提供的基于共享内存的云取证证据获取方法传输数据的过程如图2所示,包括以下步骤:
步骤一,在虚拟机被启动前设置其当前内存、最大内存和最小内存。
[00
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1