沙箱检测的方法、沙箱系统和沙箱设备技术方案

技术编号:18526391 阅读:43 留言:0更新日期:2018-07-25 12:56
本发明专利技术实施例提供了一种沙箱检测的方法、沙箱系统和沙箱设备。该方法包括:初始化虚拟机,并保存初始化后虚拟机的核心文件、注册表和内存中至少一项的初始状态;在该虚拟机中运行样本程序;获得运行该样本程序后,该虚拟机的核心文件、注册表和内存中至少一项的当前状态;通过比较该核心文件、注册表和内存中至少一项的初始状态和当前状态,获得比较结果;根据该比较结果,确定该虚拟机是否被该样本程序感染;若该虚拟机被该样本程序感染,则重置该虚拟机;若该虚拟机未被该样本程序感染,则通过该虚拟机运行下一样本程序。本发明专利技术实施例的沙箱检测的方法、沙箱系统和沙箱设备,能够提高沙箱检测效率。

【技术实现步骤摘要】
沙箱检测的方法、沙箱系统和沙箱设备
本专利技术实施例涉及信息
,并且更具体地,涉及一种沙箱检测的方法、沙箱系统和沙箱设备。
技术介绍
为了防御高级持续性威胁(AdvancedPersistentThreat,APT)攻击,现有技术普遍采用沙箱技术来检测APT攻击中所使用的未知病毒。沙箱技术是一种安全机制,为运行中的程序提供一个与真实操作系统的运行环境相隔离的虚拟运行环境。虚拟运行环境包括虚拟文件系统、虚拟注册表和虚拟内存等等。沙箱技术将恶意样本置于虚拟运行环境中运行并监控其行为。由于病毒程序可能会将虚拟运行环境感染、破坏,现有沙箱技术在虚拟运行环境中运行完样本程序后,要将虚拟运行环境重置为初始状态。上述重置过程要消耗大量的磁盘和处理器资源,影响沙箱检测效率。为了改善沙箱的效率,目前已有的方式是截获病毒程序试图修改虚拟文件系统中的系统文件的动作,将动作重定向到一个临时文件中。然而,重定向方式存在各方面的弊端。第一,重定向方式实现上很复杂,要考虑很多种不同的场景,这会导致整个系统稳定性下降。第二,重定向方式会被病毒程序利用探测到。例如病毒程序对一个文件执行写操作后,立即计算文件哈希值,如果写操作之后文件的哈希值与写操作之前该文件的哈希值一致就说明文件没有被修改,从而感知到自己是在沙箱中运行。一旦病毒程序探测到自身在沙箱环境中运行,则将会采用延时执行或终止执行的方式逃避监测,致使检测效果降低。因此,重定向方式并不能有效提升沙箱的检测效率。因此,如何提高沙箱检测效率,成为一个亟待解决的技术问题。
技术实现思路
本专利技术实施例提供一种沙箱检测的方法、沙箱系统和沙箱设备,能够提高沙箱检测效率。第一方面,提供了一种沙箱检测的方法,包括:初始化虚拟机,并保存初始化后虚拟机的核心文件、注册表和内存中至少一项的初始状态,该核心文件是预定文件集合中的文件,该内存包括进程的模块和线程;在该虚拟机中运行样本程序;获得运行该样本程序后,该虚拟机的核心文件、注册表和内存中至少一项的当前状态;通过比较该核心文件、注册表和内存中至少一项的初始状态和该虚拟机的核心文件、注册表和内存中至少一项的当前状态,获得比较结果,该比较结果指示运行该样本程序后该核心文件、注册表和内存是否被修改;根据该比较结果,确定该虚拟机是否被该样本程序感染;若该虚拟机被该样本程序感染,则重置该虚拟机;若该虚拟机未被该样本程序感染,则省略重置该虚拟机的步骤,通过该虚拟机运行下一样本程序。在本专利技术实施例中,通过比较虚拟机运行样本程序前后,该虚拟机的核心文件、注册表和内存中的至少一项的前后状态,确定该虚拟机是否被该样本程序感染,在确定该虚拟机被该样本程序感染时,重置该虚拟机。若确定该虚拟机未被该样本程序感染,则可以通过该虚拟机运行下一样本程序。这样,既能有效地检测出虚拟机被样本程序感染的情况,又能有针对性地重置虚拟机,而不需要每次运行样本程序后都重置虚拟机,从而能够提高沙箱检测效率。在一些可能的实现方式中,确定该虚拟机是否被该样本程序感染,包括:若该比较结果指示运行该样本程序后,该核心文件或该注册表被修改,则确定该虚拟机被该样本程序感染。例如,可以通过过滤驱动技术确定该核心文件或该注册表是否被修改。在一些可能的实现方式中,确定该虚拟机是否被该样本程序感染,包括:若该比较结果指示运行该样本程序后内存被修改,则根据该内存的初始状态和当前状态,确定该虚拟机的内存中是否出现未知模块,其中,该未知模块为出现在内存的当前状态中、且未出现在内存的初始状态中的进程的模块;如果该虚拟机的内存中出现未知模块,则确定该虚拟机被该样本程序感染。在一些可能的实现方式中,确定该虚拟机是否被该样本程序感染,包括:若该比较结果指示运行该样本程序后内存被修改,则根据该内存的初始状态和当前状态,确定该虚拟机的进程中是否出现可疑线程,其中该可疑线程为出现在内存的当前状态中、且未出现在内存的初始状态中的线程,并且在内存的当前状态中该可疑线程对应的数据与该可疑线程映射在文件中的数据不一致,该文件为该可疑线程所在的程序的模块对应的文件;如果该虚拟机的进程中出现可疑线程,则确定该虚拟机被该样本程序感染。在一些可能的实现方式中,确定该虚拟机是否被该样本程序感染,包括:若该比较结果指示运行该样本程序后该核心文件和该注册表未被修改、且该虚拟机的内存中未出现未知模块、且该虚拟机的进程中未出现可疑线程,则确定该虚拟机未被该样本程序感染,其中,该未知模块为出现在内存的当前状态中、且未出现在内存的初始状态中的进程的模块,该可疑线程为出现在内存的当前状态中、且未出现在内存的初始状态中的线程,并且在内存的当前状态中该可疑线程对应的数据与该可疑线程映射在文件中的数据不一致,该文件为该可疑线程所在的程序的模块对应的文件。在一些可能的实现方式中,保存初始化后虚拟机的内存的初始状态,具体为:保存该虚拟机初始化后、且在运行该样本程序之前,该虚拟机的内存数据快照;获得运行该样本程序后,该虚拟机的内存的当前状态,具体为:获取运行该样本程序后,该虚拟机的内存中进程的模块列表;根据该内存的初始状态和当前状态,确定该虚拟机的内存中是否出现未知模块,包括:如果该进程的模块列表中存在未出现在该内存数据快照中的进程的模块,则确定该未出现在该内存数据快照中的进程的模块是否具备系统数字签名;如果该未出现在该内存数据快照中的进程的模块不具备系统数字签名,则确定该虚拟机的内存中出现未知模块,该未知模块为未出现在该内存数据快照中、且不具备系统数字签名的进程的模块。在一些可能的实现方式中,获取模块列表的方法包括但不限于利用操作系统提供的API调用,或者在系统内核中遍历操作系统内核结构数据的方法。通过本专利技术实施例的判断未知模块的方法,能够有效地检测出虚拟机被样本程序感染的情况。在一些可能的实现方式中,确定该虚拟机的进程中是否出现可疑线程,包括:确定至少一个待确认线程,该待确认线程是指出现在内存的当前状态中、且未出现在内存的初始状态中的线程;从该至少一个待确认线程中选择出一个待确认线程,执行以下操作,直到处理完该至少一个待确认线程中的每个待确认线程为止:获取选择出的待确认线程对应的第一数据和第二数据,其中,该第一数据为内存的当前状态中该选择出的待确认线程的起始地址处的数据,该第二数据为该文件中选择出的待确认线程的起始地址对应的该文件中的物理偏移处的数据;若该第一数据和该第二数据不同,则确定该待确认线程为可疑线程。通过本专利技术实施例的判断可疑线程的方法,能够有效地检测出虚拟机被样本程序感染的情况。第二方面,提供了一种沙箱系统,包括执行第一方面或第一方面的任意可能的实现方式中的方法的虚拟机和虚拟机控制器。其中,虚拟机用于保存初始化后所述虚拟机的核心文件、注册表和内存中至少一项的初始状态获得运行所述样本程序后,所述虚拟机的核心文件、注册表和内存中至少一项的当前状态;通过比较所述核心文件、注册表和内存中至少一项的初始状态和所述虚拟机的核心文件、注册表和内存中至少一项的当前状态,获得比较结果,所述比较结果指示运行所述样本程序后所述核心文件、注册表和内存是否被修改;根据所述比较结果,确定所述虚拟机是否被所述样本程序感染;若所述虚拟机被所述样本程序感染,则通知虚拟机控制器重置所述本文档来自技高网...

【技术保护点】
1.一种沙箱检测的方法,其特征在于,包括:初始化虚拟机,并保存初始化后虚拟机的核心文件、注册表和内存中至少一项的初始状态,所述核心文件是预定文件集合中的文件,所述内存包括进程的模块和线程;在所述虚拟机中运行样本程序;获得运行所述样本程序后,所述虚拟机的核心文件、注册表和内存中至少一项的当前状态;通过比较所述核心文件、注册表和内存中至少一项的初始状态和所述虚拟机的核心文件、注册表和内存中至少一项的当前状态,获得比较结果,所述比较结果指示运行所述样本程序后所述核心文件、注册表和内存是否被修改;根据所述比较结果,确定所述虚拟机是否被所述样本程序感染;若所述虚拟机被所述样本程序感染,则重置所述虚拟机;若所述虚拟机未被所述样本程序感染,则省略重置所述虚拟机的步骤,通过所述虚拟机运行下一样本程序。

【技术特征摘要】
1.一种沙箱检测的方法,其特征在于,包括:初始化虚拟机,并保存初始化后虚拟机的核心文件、注册表和内存中至少一项的初始状态,所述核心文件是预定文件集合中的文件,所述内存包括进程的模块和线程;在所述虚拟机中运行样本程序;获得运行所述样本程序后,所述虚拟机的核心文件、注册表和内存中至少一项的当前状态;通过比较所述核心文件、注册表和内存中至少一项的初始状态和所述虚拟机的核心文件、注册表和内存中至少一项的当前状态,获得比较结果,所述比较结果指示运行所述样本程序后所述核心文件、注册表和内存是否被修改;根据所述比较结果,确定所述虚拟机是否被所述样本程序感染;若所述虚拟机被所述样本程序感染,则重置所述虚拟机;若所述虚拟机未被所述样本程序感染,则省略重置所述虚拟机的步骤,通过所述虚拟机运行下一样本程序。2.根据权利要求1所述的方法,其特征在于,所述确定所述虚拟机是否被所述样本程序感染,包括:若所述比较结果指示运行所述样本程序后,所述核心文件或所述注册表被修改,则确定所述虚拟机被所述样本程序感染。3.根据权利要求1或2所述的方法,其特征在于,所述确定所述虚拟机是否被所述样本程序感染,包括:若所述比较结果指示运行所述样本程序后内存被修改,则根据所述内存的初始状态和当前状态,确定所述虚拟机的内存中是否出现未知模块,其中,所述未知模块为出现在内存的当前状态中、且未出现在内存的初始状态中的进程的模块;如果所述虚拟机的内存中出现未知模块,则确定所述虚拟机被所述样本程序感染。4.根据权利要求1至3中任一项所述的方法,其特征在于,所述确定所述虚拟机是否被所述样本程序感染,包括:若所述比较结果指示运行所述样本程序后内存被修改,则根据所述内存的初始状态和当前状态,确定所述虚拟机的进程中是否出现可疑线程,其中所述可疑线程为出现在内存的当前状态中、且未出现在内存的初始状态中的线程,并且在内存的当前状态中所述可疑线程对应的数据与所述可疑线程映射在文件中的数据不一致,所述文件为所述可疑线程所在的程序的模块对应的文件;如果所述虚拟机的进程中出现可疑线程,则确定所述虚拟机被所述样本程序感染。5.根据权利要求1所述的方法,其特征在于,所述确定所述虚拟机是否被所述样本程序感染,包括:若所述比较结果指示运行所述样本程序后所述核心文件和所述注册表未被修改、且所述虚拟机的内存中未出现未知模块、且所述虚拟机的进程中未出现可疑线程,则确定所述虚拟机未被所述样本程序感染,其中,所述未知模块为出现在内存的当前状态中、且未出现在内存的初始状态中的进程的模块,所述可疑线程为出现在内存的当前状态中、且未出现在内存的初始状态中的线程,并且在内存的当前状态中所述可疑线程对应的数据与所述可疑线程映射在文件中的数据不一致,所述文件为所述可疑线程所在的程序的模块对应的文件。6.根据权利要求3或5所述的方法,其特征在于,所述保存初始化后虚拟机的内存的初始状态,具体为:保存所述虚拟机初始化后、且在运行所述样本程序之前,所述虚拟机的内存数据快照;所述获得运行所述样本程序后,所述虚拟机的内存的当前状态,具体为:获取运行所述样本程序后,所述虚拟机的内存中进程的模块列表;所述根据所述内存的初始状态和当前状态,确定所述虚拟机的内存中是否出现未知模块,包括:如果所述进程的模块列表中存在未出现在所述内存数据快照中的进程的模块,则确定所述未出现在所述内存数据快照中的进程的模块是否具备系统数字签名;如果所述未出现在所述内存数据快照中的进程的模块不具备系统数字签名,则确定所述虚拟机的内存中出现未知模块,所述未知模块为未出现在所述内存数据快照中、且不具备系统数字签名的进程的模块。7.根据权利要求4或5所述的方法,其特征在于,所述确定所述虚拟机的进程中是否出现可疑线程,包括:确定至少一个待确认线程,所述待确认线程是指出现在内存的当前状态中、且未出现在内存的初始状态中的线程;从所述至少一个待确认线程中选择出一个待确认线程,执行以下操作,直到处理完所述至少一个待确认线程中的每个待确认线程为止:获取选择出的待确认线程对应的第一数据和第二数据,其中,所述第一数据为内存的当前状态中所述选择出的待确认线程的起始地址处的数据,所述第二数据为所述文件中选择出的待确认线程的起始地址对应的所述文件中的物理偏移处的数...

【专利技术属性】
技术研发人员:刘振华
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1