一种基于文件***过滤驱动实现沙箱快速恢复的方法
技术领域
本发明是关于恶意文件检测领域,特别涉及一种基于文件***过滤驱动实现沙箱快速恢复的方法。
背景技术
近年来,随着网络安全问题的日益突出,人们越来越多地将沙箱技术应用于恶意文件检测中。把可疑文件提交到沙箱中动态模拟运行,不仅可以避免未知恶意行为对真实***的破坏,还可以对可疑文件的行为信息进行捕获和分析,从而为恶意文件的检测提供一种新的方案。
当前恶意文件检测的沙箱应用,主要有任务调度程序和虚拟机组成,任务调度程序负责接收检测任务,将可疑文件通过特定传输方式传入虚拟机的操作***中,并从虚拟中获取可疑文件行为信息并进行分析。通常情况下,虚拟机中操作***会有相应的程序与调度程序进行通信,来保证程序可以在虚拟机中按照任务调度程序指定的方式执行。在虚拟机***中,也会存在任务执行模块和行为监控模块(行为监控一般是通过DLL注入可疑文件对应的进程空间,通过HOOK方式获取可疑文件调用操作***的API函数及相关参数等行为信息),行为监控模块最终将可疑文件的行为信息传送给外部的任务调度程序。任务调度程序通过进一步甄别这些行为信息,捕获和分析其中的恶意行为,最终判断被检测的可疑文件是否是恶意文件。
为保证沙箱***的完备性及健壮性,在每个可疑文件动态模拟运行完成后,都需要对沙箱进行环境恢复,以最终确保下一个可疑文件的运行轨迹不会受到前一个可疑文件运行结果的干扰。当前的沙箱动态模拟运行检测***,一般都是基于虚拟机自有的镜像还原技术,即在***出厂时会自带开机状态下的一份虚拟机镜像,在可疑文件提交到沙箱检测之前,会先对虚拟机中操作***进行镜像还原,来保证每个可疑文件的运行环境都是纯净且健壮的。由于对虚拟机中操作***的镜像还原会涉及大量的IO操作,且还原镜像过程会涉及对虚拟机中操作***的开关机、会产生较多的时间开销,进一步导致当前沙箱检测***的单位检测时间较长、检测能力较低的问题。
发明内容
本发明的主要目的在于克服现有技术中的不足,提供一种能节省因虚拟机中操作***的镜像还原而产生的大量IO开销,并能极大提升检测效率的恶意文件检测方法。为解决上述技术问题,本发明的解决方案是:
提供一种基于文件***过滤驱动实现沙箱快速恢复的方法,用于利用沙箱虚拟机,对外部任务调度程序提交的可疑文件进行检测,所述基于文件***过滤驱动实现沙箱快速恢复的方法具体包括下述步骤:
步骤A:沙箱虚拟机中的操作***与外部任务调度程序,以约定网络通讯方式建立可疑文件检测任务提交接口;所述外部任务调度程序是用来控制沙箱虚拟机恢复、可疑文件提交、可疑文件行为信息分析的程序;
步骤B:在沙箱虚拟机的操作***中,注册监控驱动,用于对指定进程ID及其所有子进程的文件操作、注册表操作进行重定向;
所述监控驱动,是在Windows下,使用文件过滤驱动框架(SFilter或者MiniFilter)编写的程序,用于实现文件重定向和注册表重定向,即监控驱动是基于操作***的文件***过滤驱动的Windows驱动程序;
步骤C:当沙箱虚拟机的操作***接收到可疑文件检测任务后,以挂起方式执行(或打开)可疑文件,注入监控程序用以捕获可疑文件的行为信息,把进程ID传入监控驱动中,用以文件、注册表重定向;所述监控程序(行为监控模块)能(通过DLL)注入程序进程空间,并通过HOOK方式获取可疑文件调用操作***的API函数及相关参数的行为信息;
步骤D:可疑文件执行完成后,虚拟机操作***向外部任务调度程序返回捕获的行为信息,并快速恢复沙箱环境,准备接收下一个可疑文件的检测任务。
在本发明中,所述监控驱动对指定进程(树)的文件操作重定向,通过下述方式实现:
通过将监控驱动***到沙箱虚拟机中Windows***IO管理器的消息链中,拦截指定进程(树)的所有I/O请求包(IRP和FastIO)中关于对文件的创建、读、写等的操作,来实现对指定进程(树)产生的文件数据进行重定向。
在本发明中,所述监控驱动对指定进程(树)的注册表重定向,采用框架回调方式或者API HOOK的方式进行处理,具体通过下述方法实现:
在进行监控驱动初始化时,先创建一个HIVE格式的文件,然后将HIVE格式的文件挂载到注册表内;然后在沙箱虚拟机操作***环境中注册监控驱动,初始化完成后,创建随机生成的重定向文件目录,初始化随机重定向注册表路径。
在本发明中,所述步骤C具体包括下述过程:
过程C1:沙箱虚拟机中的操作***从任务调度程序中,接收到待检测的可疑文件;
过程C2:沙箱虚拟机中的操作***以挂起方式执行(或打开)可疑文件,并将可疑文件对应的进程ID传入步骤B中注册的监控驱动中,监控驱动用于对可疑文件对应的进程(树)的文件和注册表操作进行重定向;
过程C3:将监控程序注入到可疑文件对应进程空间中,准备监控可疑文件的行为信息;
过程C4:将挂起的可疑文件进程恢复执行,启动可疑文件的检测任务,监控程序持续捕获可疑文件的行为信息,行为信息包括可疑文件调用操作***的API函数及相关参数。
在本发明中,所述步骤D具体包括下述过程:
过程D1:可疑文件执行完成,或非PE文件的打开时间超过预先设定的检测时间后,结束对所述可疑文件的监控;
过程D2:沙箱虚拟机的操作***向外部任务调度程序,返回监控程序捕获到的可疑文件的行为信息,外部任务调度程序进一步甄别接受的行为信息,捕获和分析行为信息中的恶意行为,最终判断被检测的可疑文件是否是恶意文件;
过程D3:对重定向目录及重定向注册表路径中的信息进行清空,恢复沙箱虚拟机到镜像还原后的初始状态。
本发明的核心思想为:通过操作***的文件***过滤驱动消息机制,过滤被检测可疑文件的行为,然后通过重定向技术,把可疑文件执行(或打开)过程涉及的生成、修改或删除的文件及注册表等信息,重定向到监控驱动初始化时指定的路径,这些路径包含但不限于文件路径和注册表路径,从而避免对沙箱环境造成实质性的更改,在可疑文件被检测完成后,仅需清理监控驱动初始化时指定的路径,即可快速恢复沙箱环境,从而进一步提升沙箱的检测效率。
与现有技术相比,本发明的有益效果是:
本发明和基于虚拟机镜像还原技术的沙箱检测***相比,由于在恢复沙箱环境时不需要使用虚拟机的操作***镜像还原技术,从而节省了大量的IO操作带来的***开销,同时进一步避免因镜像还原而涉及的操作***的开关机操作,从而提高了沙箱环境恢复的效率,极大地减少对单个可疑文件检测的时间,进一步地,极大提升了沙箱对可疑文件的检测效率。
附图说明
图1为本发明的沙箱检测及环境恢复流程图。
具体实施方式
首先需要说明的是,本发明涉及恶意文件检测领域,是计算机技术在信息安全技术领域的一个应用分支。在本发明的实现过程中,会涉及到多个软件功能模块的应用。申请人认为,如在仔细阅读申请文件、准确理解本发明的实现原理和发明目的以后,在结合现有公知技术的情况下,本领域技术人员完全可以运用其掌握的软件编程技能实现本发明。凡本发明申请文件提及的均属此范畴,申请人不再一一列举。
下面结合附图与具体实施方式对本发明作进一步详细描述:
一种基于文件***过滤驱动实现沙箱快速恢复的方法,利用沙箱虚拟机,对外部任务调度程序提交的可疑文件进行检测。所述基于文件***过滤驱动实现沙箱快速恢复的方法,处理流程如图1所示,具体包括下述步骤:
步骤1:沙箱虚拟机中的操作***处于开机状态,准备接收可疑文件进行检测。
在沙箱***启动后可以对沙箱所有的虚拟机进行一次镜像还原操作,以保证虚拟机中的操作***(如Windows XP***)是纯净而未受污染的,以确保对可疑文件检查的正确性。在沙箱启动后,虚拟机中的操作***将始终处于开机状态,并准备接收可疑文件进行检测。
步骤2:沙箱接收到可疑文件,开始进行检测流程。
沙箱接收到外部任务调度程序发送的可疑文件,和外部调度程序的文件接收接口可以以任何网络通讯约定的方式(如TCP Socket通讯)来实现。在完成对可疑文件的接收后,启动恶意文件检测流程。
步骤3:判断是否已注册监控驱动。
通过从操作***中获取指定名称的驱动信息(此处为监控驱动名称),如果监控驱动未注册,则将无法获取到对应驱动信息,需要首先注册监控驱动。
步骤4:注册监控驱动。
在沙箱虚拟机操作***环境中注册监控驱动,初始化监控驱动,创建重定向文件目录,初始化重定向注册表路径。为防止沙箱逃逸,文件目录及注册表路径均随机生成。
步骤5:以挂起方式执行(或打开)可疑文件。
监控驱动已经注册的情况下,以挂起方式执行(或打开)可疑文件,并获取对应的进程ID。
步骤6:注入监控程序。
监控程序一般通过DLL注入程序进程空间,通过HOOK方式获取可疑文件调用操作***的API函数及相关参数等行为信息。通过创建远程线程将监控程序(动态链接库)注入到可疑文件的进程空间中,准备监控可疑文件的行为信息。
步骤7:把可疑文件的进程ID传入到监控驱动。
把步骤5中获取到的可疑文件执行(或打开)对应的进程ID传到监控驱动中,监控驱动将对该进程及该进程的所有子进程的文件、注册表操作进行监控和重定向。
步骤8:恢复运行可疑文件所在进程。
恢复运行可疑文件所在进程。
步骤9:重定向文件操作到指定路径、重定向注册表到指定注册表位置。
监控驱动获取可疑文件进程及其子进程ID后,通过操作***的文件***过滤驱动消息机制,过滤程序行为,然后通过重定向技术把可疑文件进程及所有子进程运行过程中涉及的对文件的增加、修改和删除行为重定向到步骤4中创建的重定向文件目录,对涉及的注册表的***、修改和删除操作重定向到步骤4中创建的注册表路径。
进一步地,可疑文件进程中如果存在对其他文件内容进行查询,或者对注册表内容进行查询的行为,由于可疑文件进程本身可能已经对被查询文件或注册表键值做了更新,并已经重定向到指定的文件目录或指定的注册表位置中,所以查询结果中需要对原始文件内容和对该文件的重定向文件内容进行合并,需要对注册表项原始键值和该注册表项的重定向键值进行合并,以确保查询到的结果的准确性。
步骤10:监控并记录可疑文件行为信息。
监控程序以HOOK的方式获取可疑文件调用操作***的API函数及相关参数等行为信息,并以外部任务调度程序可识别的格式进行保存(或者以约定的网络通讯的方式向外部任务调度程序实时返回捕获的行为信息)。
步骤11:可疑文件执行完成或超时。
可疑文件动态模拟运行结束,或者非PE文件(如Office Word文档)的打开时间,达到沙箱***预先设定的单个可疑文件的最长模拟运行时间后,沙箱会主动结束这个可疑文件的模拟运行,从而结束对这个可疑文件的检测。
步骤12:返回可疑文件行为信息。
以约定的网络通讯的方式向外部任务调度程序返回捕获的行为信息,供外部任务调度程序进行恶意性判断,以确认这个可疑文件是否是恶意文件。
步骤13:删除重定向信息、快速恢复沙箱环境。
为保证沙箱***的完备性及健壮性,在每个可疑文件动态模拟运行完成后,都需要对沙箱进行环境恢复,以最终确保下一个可疑文件的运行不会受到前一个可疑文件运行结果的干扰。本发明的所述方法中,可疑文件的模拟运行除了改变步骤4中指定的重定向文件目录和重定向注册表路径外,并没有改变虚拟机操作***中其他任何文件和注册表信息,所以仅需简单的对重定向目录及重定向注册表路径中的信息进行清空,就可以快速地恢复虚拟机到镜像还原后的初始状态,从而节省了大量的因镜像还原所需的IO开销及虚拟机开关机的时间开销,使沙箱检测效率有了极大提升。
至此,一个可疑文件的检测任务结束,沙箱环境也完成恢复。
最后,需要注意的是,以上列举的仅是本发明的较佳实施例,并不用以限制本发明,本领域的普通技术人员能从本发明公开的内容中直接导出或联想到的所有变形,均应包含在本发明的保护范围内。