发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的用于主动防御恶意程序的方法、设备和***。
依据本发明的一个方面,提供了一种用于主动防御恶意程序的方法,包括:监控未知程序的进程创建操作,获取被创建进程执行时的命令行参数;解析所述被创建进程执行的命令行参数,至少根据所述被创建进执行时的命令行参数判断所述被创建进程是否为解压缩进程;如果是,则通知驱动程序记录该解压缩进程生成的信息至第一数据库,对该解压缩进程生成的信息进行主动防御监控。
可选的,还包括:获取被创建进程的进程路径,所述至少根据被创建进程执行时的命令行参数判断所述被创建进程是否为解压缩进程的步骤包括:根据被创建进程的进程路径以及进程执行时的命令行参数,判断所述被创建进程是否为解压缩进程。
可选的,所述根据被创建进程的进程路径以及执行时的命令行参数,判断所述被创建进程是否为解压缩进程包括:根据所述被创建进程的进程路径,判断所述被创建进程的进程文件是否为压缩或解压缩软件,如果是,进一步根据所述命令行参数判断所述被创建进程是否为解压缩进程。
可选的,还包括:当下载压缩包时,在第二数据库中添加所述压缩包的信息记录,所述压缩包的信息记录至少包括所述压缩包的下载来源;如果判断所述被创建进程是解压缩进程,从所述第二数据库中查询所述解压缩进程对应的压缩包的下载来源,以及将所述压缩包的下载来源与所述第一数据库中记录的该解压缩进程生成的信息相关联,获得所述信息的下载来源。
可选的,所述压缩包的信息记录还包括所述压缩包的存放路径和/或压缩包的特征标识;所述从第二数据库中查询所述解压缩进程对应的压缩包的下载来源包括:根据所述命令行参数获得所述解压缩进程对应的压缩包的存放路径,并根据所述压缩包的存放路径从所述第二数据库中查询所述解压缩进程对应的压缩包的下载来源;或,根据所述解压缩进程对应的压缩包的特征标识从所述第二数据库中查询所述解压缩进程对应的压缩包的下载来源。
可选的,所述解压缩进程生成的信息包括可执行文件,所述对该解压缩进程生成的信息进行主动防御监控包括:监控所述解压缩进程生成的可执行文件的进程创建操作,如发现,则进一步监控在该可执行文件进程在运行过程中是否执行了可疑操作;如果是,则至少将所述解压缩进程生成的可执行文件所关联的下载来源发送到安全扫描器,供其进行检测判断;根据所述安全扫描器返回的结果,决定放行、拦截或提示。
可选的,所述解压缩进程生成的信息包括可执行文件,所述对该解压缩进程生成的信息进行主动防御监控包括:监控所述解压缩进程生成的可执行文件的进程创建操作,如发现,则通知驱动程序监控该可执行文件进程加载的DLL动态链接库文件,并记录在内存中所述可执行文件进程的相关数据结构中;如果该可执行文件进程执行的操作包括可疑操作,则通过安全扫描器对该可执行文件进程加载的DLL进行检查;根据检查结果,确定是否修改该可执行文件进程的安全等级,以及根据所述可执行文件的安全等级决定放行、拦截或提示。
可选的,还包括将所述可执行文件所关联的下载来源发送至安全扫描器进行检查。
可选的,所述对该解压缩进程生成的信息进行主动防御监控包括:将该解压缩进程生成的可执行文件的大小与其所属压缩包的大小进行对比,如果前者的大小超过后者的大小预置阈值,则进行风险提示。
依据本发明的一个方面,公开了一种用于主动防御恶意程序的设备,包括:监控模块,被配置为监控未知程序的进程创建操作,获取被创建进程执行时的命令行参数,并提供给解析判断单元进行处理;解析判断模块,被配置为解析所述被创建进程执行的命令行参数,至少根据所述被创建进执行时的命令行参数判断所述被创建进程是否为解压缩进程,如果是,则通知主动防御模块;主动防御模块,被配置为当所述解析判断模块通知所述被创建进程为解压缩进程时,通知驱动程序记录该解压缩进程生成的信息至第一数据库,并对该解压缩进程生成的信息进行主动防御监控。
可选的,所述监控模块还被配置为获取被创建进程的进程路径;所述解析判断模块具体被配置为根据被创建进程的进程路径以及执行时的命令行参数,判断所述被创建进程是否为解压缩进程。
可选的,所述解析判断模块具体被配置为根据所述被创建进程的进程路径,判断所述被创建进程的进程文件是否为压缩或解压缩软件;如果是,进一步根据所述命令行参数判断所述被创建进程是否为解压缩进程。
可选的,还包括:记录模块,被配置为当下载压缩包时在第二数据库中添加所述压缩包的信息记录,所述压缩包的信息记录至少包括所述压缩包的下载来源;关联模块,被配置为如果所述解析判断模块判断所述被创建进程是解压缩进程,从所述第二数据库中查询所述解压缩进程对应的压缩包的下载来源,以及将所述压缩包的下载来源与所述第一数据库中记录的该解压缩进程生成的信息相关联,获得所述信息的下载来源。
可选的,所述记录模块添加的压缩包的信息记录还包括所述压缩包的存放路径和/或压缩包的特征标识;所述关联模块具体被配置为根据所述命令行参数获得所述解压缩进程对应的压缩包的存放路径,并根据所述压缩包的存放路径从所述第二数据库中查询所述解压缩进程对应的压缩包的下载来源;或,所述关联模块具体被配置为根据所述解压缩进程对应的压缩包的特征标识,从所述第二数据库中查询所述解压缩进程对应的压缩包的下载来源。
可选的,所述解压缩进程生成的信息包括可执行文件,所述主动防御模块包括:第一文件监控模块,被配置为监控所述解压缩进程生成的可执行文件的进程创建操作,如发现,则进一步监控在该可执行文件进程在运行过程中是否执行了可疑操作;第一安全操作模块,被配置为如果所述第二文件监控模块监控到该可执行文件进程在运行过程中执行了可疑操作,则至少将所述解压缩进程生成的可执行文件所关联的下载来源发送到安全扫描器,供其进行检测判断;以及根据所述安全扫描器返回的结果,决定放行、拦截或提示。
可选的,所述解压缩进程生成的信息包括可执行文件,所述主动防御模块包括:第二文件监控模块,被配置为监控所述解压缩进程生成的可执行文件的进程创建操作,如发现,则通知驱动程序监控该可执行文件进程加载的DLL动态链接库文件,并记录在内存中所述可执行文件进程的相关数据结构中;第二安全操作模块,被配置为如果驱动程序监控到该可执行文件进程执行的操作包括可疑操作,则通过安全扫描器对该可执行文件进程加载的DLL进行检查,并根据检查结果,确定是否修改该可执行文件进程的安全等级,以及决定放行、拦截或提示。
可选的,所述第一安全操作模块还被配置为将所述可执行文件所关联的下载来源发送到安全扫描器进行检查和判断。
可选的,所述主动防御模块具体被配置为将该解压缩进程生成的可执行文件的大小与其所属压缩包的大小进行对比,如果前者的大小超过后者的大小预置阈值,则进行风险提示。
依据本发明的又一实施例,公开了一种用于主动防御恶意程序的***,包括客户端侧设备和服务器端设备,其中,客户端侧设备包括如前文所述的设备;服务器端设备包括安全扫描器,所述安全扫描器被配置为根据预置的扫描规则,对客户端侧设备发送的可执行文件所关联的下载来源和/或DLL文件进行检查,并告知所述客户端侧设备检查结果。
根据本发明的用于主动防御恶意程序的方法、设备和***,可以针对解压缩进程生成的信息进行重点主动防御监控,由此解决了现有主动防御效果不好的技术问题,取得了对利用压缩软件进程传播的恶意程序进行更有效主动防御的有益效果。
通过上述本发明提供的用于主动防御恶意程序的方法、设备及***,可以看出,通过监控未知程序的进程创建操作,能够获得被创建进程的命令行参数,然后根据命令行参数可以判断被创建进程是否为解压缩进程;如果是,就通知驱动程序记录该解压缩进程生成的信息至第一数据库,并对该解压缩进程生成的信息进行主动防御监控。由于恶意程序利用压缩软件进行传播的非常广泛,因此采用本发明实施例的方案,可以先通过技术手段监控到解压缩进程以及生成的文件,然后对解压缩进程进行重点监控,采取更严格的主动防御监控。例如凡是解压缩进程生成的文件都进行记录。
进一步,如果该解压缩进程生成的文件在执行过程中加载了DLL文件,并且执行了可疑操作,则会对加载的DLL文件进行检查,进而判断该进程是否安全。通过这种方式,解决了在现有技术的设备中的主动防御模块只检查程序的可执行文件(例如,exe文件)是否可以信任,而不检查程序加载的DLL(DynamicLinkLibrary,动态链接库)文件,导致被一些恶意程序所利用,恶意程序使用DLL劫持技术将木马DLL与可信任的白程序打包在一起,当白程序被执行时,木马DLL就会被加载,从而使得恶意程序利用白程序突破主动防御的问题。
进一步,在压缩包下载时记录相关的下载来源,并且与解压缩进程生成的文件相关联,进而当发现该解压缩进程生成的可执行文件执行了可疑操作时,通过该可执行文件的下载来源等信息进行检查判断,从而确定该进程是否安全。因为解压出来的文件可能是通过多层解压得到的,而且有些文件还不容易打开,因此通过传统直接对文件扫描的方式,在很多情况下无法实现有效的查杀。而通过本发明实施例的方案,使得无论是通过几层解压出的文件,还是不容易打开的文件,都可以知道其下载来源,进而可以通过这些下载来源判断是否安全,从而达到从源头上进行主动防御的目的,提高了主动防御的有效性。
进一步,在分析出是解压缩进程后,比较压缩包和解压出来的文件的大小,如果差别较大,例如差别超过预置阈值,则认为是未知的,进而主动进行风险提示。现有技术中很多恶意程序会构造特别大的一个EXE程序文件,压缩后传给用户,然后利用安全软件处理超大EXE文件比较困难的特点,试图逃避掉主动防御的拦截。而采用本发明实施例的这种方案,由于是针对压缩前后文件的大小进行比较、判断,因此针对现有的这种情况,可以达到较好的主动防御效果。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明实施例可以应用于计算机***/服务器,其可与众多其它通用或专用计算***环境或配置一起操作。适于与计算机***/服务器一起使用的众所周知的计算***、环境和/或配置的例子包括但不限于:个人计算机***、服务器计算机***、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的***、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机***﹑大型计算机***和包括上述任何***的分布式云计算技术环境,等等。
计算机***/服务器可以在由计算机***执行的计算机***可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机***/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算***存储介质上。
为了适应恶意程序的更新速度,快速地识别和查杀恶意程序,目前的安全防护软件越来越多地使用云安全技术对恶意程序进行拦截。所谓云安全技术,就是把客户端的可疑文件的特征传给云安全中心的服务器,由云安全中心对其安全做出判定,然后客户端安全软件根据云安全中心传回的信息对木马进行报告和处理。云结构就是一个大型的客户端/服务器(CS)架构,如图1所示,为本发明的实施模式示意图。本发明的核心思想在于通过大量客户端计算机收集各种程序的行为(可以是单一行为,也可以是一组行为的组合),特别是可疑程序的行为,并将程序行为关联到该程序的特征,而在服务器端的数据库中则可以记录一个程序的特征及其对应的行为记录。这样,在服务器端,即可依据程序行为或程序特征或一组程序行为和程序特征,在数据库中进行归纳和分析,从而有助于对软件或程序进行黑白的分类判别。进一步的,还可以针对黑名单中的恶意软件制定相应的清除或恢复措施。程序行为,可以是例如驱动加载行为,文件生成行为,程序或代码的加载行为,添加***启动项行为,或文件或程序的修改行为等,或者是一系列行为的组合。程序特征可以是经由MD5(Message-DigestAlgorithm5,信息-摘要算法)运算得出的MD5验证码,或SHA1码,或CRC(CyclicRedundancyCheck,循环冗余校验)码等可唯一标识原程序的特征码,等等。
请参阅图1,其为根据本发明一个实施例的用于主动防御恶意程序的***示意图,包括客户端侧设备100和服务器端设备200,其中,客户端设备100具体包括一种用于主动防御恶意程序的设备,该设备包括监控模块110、解析判断模块120、主动防御模块130、记录模块140以及关联模块150。下面结合具体的数据处理过程进行详细介绍。服务器端设备200包括包括安全扫描器。
一些恶意软件通过把CMD之类的文件,或者bat的文件,或者快捷方式打包在一个压缩包里,或者传递其中的单个文件(pif),图标,可能是应用程序的文件,或者VBS(一种脚本文件),建立一个文件夹并放置一个文件夹配置文件(desktop.ini),使用计划任务,或者,使用模拟鼠标点击等。甚至网购木马等会传送一个压缩包,后续解压缩到用户电脑的卓面上,如果用户主动点击或者不小心双击启动,压缩包所包含的文件会产生危险。
因此,一方面,当客户端侧设备100下载压缩包时,记录模块140在第二数据库中添加压缩包的信息记录,压缩包的信息记录可以包括下面信息中的一种或多种,比如该压缩包的下载来源、压缩包的存放路径、压缩包的特征标识等。其中,下载来源主要包括该压缩包下载过程涉及的各种相关信息中的一种或多种,比如下载工具类型、下载URL(UniformResourceLocator,统一资源定位符)及网页URL等,除了此处列举的之外,如果还有其他可以在下载过程中或下载完成时能获的信息,也可以记录下来。下载工具类型,一般指该压缩包是通过什么途径下载的,比如即时通讯工具、邮件客户端等,例如,可以支持Outlook/Foxmail等邮件客户端,还可以进一步的支持WEB浏览器,IE/Chrome等专用下载工具,迅雷/电驴等下载工具。
下载URL,一般指该压缩包自身的下载链接。网页URL,一般指下载URL所在的web网页的URL。压缩包的特征标识,只要是可以用来唯一标识压缩包的信息即可,比如可以是MD5或者SHA1等信息摘要。
另一方面,监控模块110监控未知程序的进程创建操作,获取被创建进程执行时的命令行参数,并提供给解析判断单元进行处理。未知程序,可以理解为客户端设备100上运行的、待监控的各种程序。监控进程创建操作的具体方式可以有很多种,例如捕获进程创建的相关函数。通过监控进程创建操作,不但可以获得被创建进程执行时的命令行参数,还可以获得被创建进程的进程路径。
命令行参数包含的内容较多,例如一般包括被创建进程的进程路径、压缩包的存放路径、更具体的进程参数等。如,某一解压进程的命令行参数为"C:\ProgramFiles\AAA\AAAzip\AAAzip.exe"-s"C:\Test\test.zip""C:\Test\test,其中,"C:\ProgramFiles\AAA\AAAzip\AAAzip.exe"即为被创建进程的进程路径,"-s"是用来表明该进程是解压缩进程、而非压缩进程的一种参数信息,"C:\Test\test.zip"是压缩包的存放路径参数信息。当然,有些情况下,命令行参数中可能也没有进程路径。但是,通过监控进程创建操作,捕获进程创建的相关函数,监控模块110也是可以获得被创建进程的进程路径的。
在监控模块110获取到被创建进程执行时的命令行参数和/或被创建进程的进程路径后,提供给解析判断模块120进行处理。解析判断模块120用于解析被创建进程执行的命令行参数,至少根据被创建进执行时的命令行参数判断该被创建进程是否为解压缩进程,如果是,则通知主动防御模块130。
主动防御模块130适用于监控各种程序行为,程序行为可以一程序是直接作出的行为,也可以是该程序并不直接做出行为,而是控制另一目标程序间接做出行为,因此所述程序行为包括:程序行为本体及该行为目标的属性;
所述行为目标的属性,包括:行为目标本身所属的黑白等级(即恶意或非恶意)、所处于***中的位置(如处于引导区等等)、类型(如可执行文件、备份文件等类型),也可以扩展包括行为目标所作出行为所属的黑白等级、行为本身等等。
在一种具体实施方式中,解析判断模块120可以解析被创建进程的进程路径和命令行参数,然后根据进程路径以及命令行参数,判断被创建进程是否为解压缩进程。例如,解析判断模块120根据被创建进程的进程路径,判断被创建进程的进程文件是否为压缩或解压缩软件。通常进程路径中会有进程文件的相关信息,如“WinRAR.exe”或“AAAZip.exe”等文件名,另外还有进程文件内部的版本信息中包含特定的文件内部名称、文件描述等参数信息,,进而,即可根据参数信息判断出该进程文件是否属于压缩或解压缩软件。如果是,则进一步根据命令行参数判断被创建进程是否为解压缩进程。如果进程是解压缩进程,那么在命令行参数中一般会有可以体现出是解压缩、而非压缩的参数,例如前文给出的命令行参数示例中的“-S”参数,因此可以根据这类参数判断出本进程是解压缩进程,而不是压缩进程。
当然,在某些情况,例如命令行参数中已经包含了进程路径信息,并且也是准确的;或者通过命令行参数中的某些信息可以直接判断出是解压缩进程,那么也可以只根据命令行参数进行判断。
当解析判断模块120判断出被创建的进程是解压缩进程时,通知主动防御模块130,进而,主动防御模块130通知驱动程序记录该解压缩进程生成的信息至第一数据库,并对该解压缩进程生成的信息进行主动防御监控。
具体的,调用驱动程序提供的接口,此过程中调用的参数包括要监控的进程ID及压缩包在第二数据库中的记录ID。当驱动程序监控到该进程生成文件时,将文件路径及压缩包在第二数据库中的记录ID等信息记录到第一数据库,以便使第一数据库中的文件与第二数据库中的信息记录相关联,即获得第一数据库中文件的下载来源等信息记录。
解压缩进程生成的信息包括但不限于文件,可能还有与文件相关其他信息,比如文件大小、文件格式、行为记录等,这些信息都可以记录到第一数据库。文件可能是可执行文件,也可能是非可执行文件。可执行文件包括但不限于exe类文件、脚本文件、批处理文件以及link文件等。而且,解压缩进程生成的信息,包括直接解压缩出来的文件、衍生文件、在文件执行过程时加载的其他文件、以及通过多层进程生成的文件等。多层进程生成的文件,举例说明,如果进程链中进程A的父进程A1为解压缩应用,并且该解压缩应用直接执行压缩包中的可执行文件或者该解压缩应用解压缩的压缩包中包含进程A的进程文件,则判定进程A的进程文件为来自压缩包的文件。如果创建的进程所在进程链中某个进程的进程文件为来自压缩包的文件,则该创建的进程具有危险性。
如果该进程的父进程为解压缩应用,并且该解压缩应用直接执行压缩包中的可执行文件,则判定该进程的进程文件为来自压缩包的文件,例如,对于进程链中的某个进程,在创建该进程时,如果该进程的父进程为解压工具,检查是否从解压工具中直接执行压缩包中的可执行文件,如果是,则进程链中的该进程来自压缩包。
如果该进程的父进程为解压缩应用,并且该解压缩应用解压缩的压缩包中包含该进程的进程文件,则判定该进程的进程文件为来自压缩包的文件。例如,对于进程链中的某个进程(即上述父进程)为解压应用,通过分析命令行参数检查是否在对压缩包进行解压,如果是,记录该压缩包解压出的文件。
可选的,当解析判断模块120判断出被创建的进程是解压缩进程后,一方面除了通知主动防御模块130让驱动程序记录该解压缩进程生成的信息之外,另一方面,还可以通过关联模块150为解压缩进程生成的信息查找到对应的下载来源。例如,当解析判断模块120判断被创建进程是解压缩进程时,关联模块150从第二数据库中查询该解压缩进程对应的压缩包的下载来源,然后将该压缩包的下载来源与第一数据库中记录的该解压缩进程生成的信息相关联。
在具体实现过程中,由于监控模块110可以获得被创建进程对应的压缩包的存放路径,而在第二数据库中的每条压缩包下载记录中也记录有压缩包的存放路径,因此关联模块150可以根据命令行参数获得解压缩进程对应的压缩包的存放路径,然后根据该压缩包的存放路径从第二数据库中查询该解压缩进程对应的压缩包的下载来源,进而再把下载来源与该解压缩进程生成的文件关联。比如,解压缩进程A在第二数据库中对应的是第3条下载记录,该下载记录中是其各种下载来源信息,然后在第一数据库中记录有解压缩进程A生成的信息有甲乙丙三个文件,于是,就可以将甲乙丙三个文件与第二数据库中的第3条下载记录建立对应关系,进而后续就可以知道甲乙丙三个文件的下载来源具体是什么。
除了可以根据压缩包的存放路径在第二数据库中查找解压缩进程对应的下载来源,还可以根据其他信息,比如压缩包的特征标识。例如,关联模块150可以通过计算获得压缩包的信息摘要等特征标识,然后根据特征标识再去第一数据库中查找对应的下载记录。当然,还可以结合使用,例如先根据压缩包的存放路径在第一数据库中进行查找,如果查找不到,再根据压缩包的信息摘要等特征标识进行查找。
在获得解压缩进程生成的信息的下载来源之后,后续如果主动防御模块130通过各种监控和预置条件判断需要执行云查询时,可以把这些解压缩进程生成的信息及其关联的下载来源,发送到云端进行扫描。云端进行分析比对,根据比对结果对该程序进行判定,并反馈给主动防御模块;
例如,主动防御模块130具体包括第一文件监控模块和第一安全操作模块,其中,第一文件监控模块用于监控解压缩进程生成的可执行文件的进程创建操作,如发现,则进一步监控在该可执行文件进程在运行过程中是否执行了可疑操作。可疑操作包括但不限于:写入注册表进行自动加载;修改注册表;修改***文件;修改指定的应用文件;执行进程间注入;结束进程;修改浏览器中网页内容;以及记录键盘操作。可疑操作还可以包括:调用shell程序,修改程序文件或写程序文件;调用ftp或tftp,创建ftp,或tftp服务;创建大量相同线程,修改和创建用户账号;危险网络操作;向***注册表添加启动项;修改***启动文件;向其他进程注入线程;堆栈溢出;拦截***API调用等等。或者是一系列行为的组合。在数据库中保存的可疑操作,还可以包括:删除注册表启动项或服务、终止电脑安全程序工具的进程、弱口令破解局域网其他电脑的管理员帐号并复制传播、修改注册表键值导致不能查看隐藏文件和***文件、尝试破坏硬盘分区下的文件、删除用户的***备份文件等等。
如果第一文件监控模块监控到该可执行文件进程在运行过程中执行了可疑操作,则通知第一安全操作模块,进而第一安全操作模块至少将该解压缩进程生成的可执行文件所关联的下载来源发送给服务器端设备200中的安全扫描器210,供其进行检查和判断。当然,为了服务器端的安全扫描器210可以更好的进行判断,客户端还可以将可执行文件以及其他相关的信息等一并发送过去。安全扫描器210可以根据预置的扫描规则,例如针对已知的恶意程序或安全程序行为分析出的判断条件,其中有些是基于下载来源作为判断依据的,进而对客户端侧设备100发送的可执行文件所关联的下载来源以及其他信息进行检查,并告知客户端侧设备100检查结果。进而,客户端侧的主动防御模块130根据安全扫描器210返回的结果,决定放行、拦截或提示。通常情况下,如果云端的检查结果是未知的,主动防御模块130基于主动防御的目的,会向用户以弹窗等方式提示。如果检查结果是安全,则主动防御模块130会放行;如果检查结果是恶意程序,则主动防御模块140在提示用户后进行拦截或直接拦截。
在一个实施例中,主动防御模块130具体包括第二文件监控模块和第二安全操作模块。其中,第二文件监控模块用于监控解压缩进程生成的可执行文件的进程创建操作,如发现,则通知驱动程序监控该可执行文件进程加载的DLL动态链接库文件,主动防御模块130在内存保存有***中所有进程的信息及进程关系,进程加载的DLL就记录在内存中该可执行文件进程的相关数据结构中;如果驱动程序监控到该可执行文件进程执行的操作包括可疑操作,则第二安全操作模块通过安全扫描器210对该可执行文件进程加载的DLL(DynamicLinkLibrary,动态链接库)进行检查,并根据检查结果,确定是否修改该可执行文件进程的安全等级,以及根据该可执行文件进程的安全等级决定放行、拦截或提示。其中,服务器端预先保存有文件特征值和安全等级信息的对应关系,服务器端确定的安全等级可以自定义,例如包括安全、危险、未知等级别,也可以采用一级、二级、三级等方式来进行区分,只要能够体现出各模块是否安全状态即可。或者,所述安全级别信息包括:安全等级、未知等级、可疑等级、高度可疑等级和恶意等级,其中,恶意等级为最高等级,安全等级为最低等级。例如,可以设置等级为10-20时为安全等级,等级为30-40时为未知等级,等级为50-60时为可疑等级和高度可疑等级,等级大于70时为恶意等级。或者,危险等级可以包括:可疑,未知,白,黑等四种情况。第一等级:10和20,其是白文件;第二等级:30和40,其是灰文件;第三等级:50和60,其是可疑文件;第四等级:70,其是病毒。只有第一等级,10和20,是可以信任的。
此外,还可以根据进程所属进程链中相关文件的等级综合确定该进程文件的等级,例如当前进程为进程D,通过该进程D的创建关系追溯到对应进程D的进程链为A→B→C→D,在该进程链中查找:首先查找到进程D的第一级父进程为进程C,并且获取到所述进程C的文件等级为可疑等级;然后查找到进程D的第二级父进程为进程B,并且获取到所述进程B的文件等级为未知等级;最后查找到进程D的第三级父进程为进程A,并且获取到所述进程A的文件等级为安全等级。进而,可以根据待监控的进程D相关的多个进程文件的不同等级,综合判断进程D的进程文件的等级,进而告知客户端拦截、提示或放行。
例如,有些恶意程序使用DLL劫持技术将木马DLL与可信任的白程序打包在一起,进而当白程序被执行时,木马DLL就会被加载,从而实现利用白程序突破主动防御的目的,也就是所谓的白利用木马。可见,DLL文件是比较危险的文件,可以重点监控。本实施例中的主动防御模块130中的第二文件监控模块可以通过驱动程序监控到解压缩进程生成的可执行文件是否加载了DLL文件,如果加载,则一方面记录相关的DLL文件,可选的,记录该进程加载的所有的DLL文件,监控路径不限于当前目录,因为很多木马或将DLL文件放在***目录下。另一方面会通知第二安全操作模块加强对该可执行文件的执行行为进行监控,如果驱动程序监控到该可执行文件进程执行的操作包括可疑操作,具体的可疑操作前面已经有已描述,此处不再赘述。
然后,主动防御模块130则通过安全扫描器210对该可执行文件进程加载的DLL文件进行检查。例如,可执行文件进程被主动防御中的某个规则拦截到,例如命中了RD(RegistryDefend,注册表防护)、FD(File,文件防护)或AD(applicationDefend,进程防护)的一个规则,则通过安全扫描器210对所有或主要的已被加载的DLL进行检查,如果某个DLL是木马就提示用户并终止执行;如果DLL的危险等级高于存在进程可执行文件的危险等级,则修改该进程的危险等级为DLL的高危险等级,并呈现危险提示。这样可以比较好的防御未知白利用木马,同时不会影响正常程序的执行效率。
可选的,可以将该可执行文件进程加载的所有DLL文件都进行检查,也可以进一步优化,只***分DLL。例如,可以对于***级别的DLL放过,这些DLL往往还是比较安全的,所以不去检查这些DLL文件,对主动防御的性能影响不大,而且降低了监控量,提高了主动防御的执行效率。
根据本发明的用于主动防御恶意程序的方法、设备和***,可以针对解压缩进程生成的信息进行重点主动防御监控,由此解决了现有主动防御效果不好的技术问题,取得了对利用压缩软件进程传播的恶意程序进行更有效主动防御的有益效果。而通过本发明实施例的方案,使得无论是通过几层解压出的文件,还是不容易打开的文件,都可以知道其下载来源,进而可以通过这些下载来源判断是否安全,从而达到从源头上进行主动防御的目的,提高了主动防御的有效性。
可选的,虽然在图1中安全扫描器210设置于服务器端设备中,但在实际应用中,它既可以单独设置在网络侧的服务器端设备200,也可以单独设置在客户端侧设备100,还可以部分设置在客户端侧设备100,部分设置在服务器端设备200,本发明实施例对此并没有限制。因此,相应的,对可执行文件进程加载的DLL文件进行检查,可以在本地的客户端侧进行,也可以在网络侧的服务器端进行。在服务端进行的情况下,可以通过大量客户端计算机对各种程序的程序特征、程序行为和/或程序属性进行收集,发送到服务器端;服务器端进行分析比对,根据比对结果对该程序进行判定,并反馈给对应的客户端计算机,如果在服务器端进行检查,则主动防御模块130直接将可执行文件发送至网络侧。
可选的,在安全扫描器210对DLL文件进行检查时,如果需要,还可以检查可执行文件的下载来源,具体可以通过前文所述的记录模块140和关联模块150等来实现,此处不再赘述。
可以看出,如果当解压缩进程生成的可执行文件执行时加载了DLL文件,并且执行了可疑操作,则检查该进程加载的DLL文件,由此解决了恶意程序将恶意DLL文件与可信任的白程序打包在一起,当白程序被执行时,加载恶意DLL文件,从而突破主动防御的技术问题。
可选的,主动防御模块130还可以将该解压缩进程生成的可执行文件的大小与其所属压缩包的大小进行对比,如果前者的大小超过后者的大小预置阈值,则进行风险提示。例如,一方面,记录模块140在第一数据库中的压缩包下载记录中,记录压缩包的大小;另一方面,第二数据库中记录有解压缩进程生成的可执行文件以及相关信息,包括文件大小信息。因此,主动防御模块130可以将获得的压缩包和解压后的可执行文件的大小对比,如果压缩包的大小远小于解压后可执行文件的大小,可以对“远小于”或反过来讲的“远大于”进行量化,比如两者的大小差别大于预置阈值。就说明有可能是可疑、未知。
与前述一种用于主动防御恶意程序的设备和***相对应,本发明还公开了一种用于主动防御恶意程序的方法实施例,请参阅图2。具体包括:
S310:监控未知程序的进程创建操作,获取被创建进程执行时的命令行参数。
S320:解析被创建进程执行的命令行参数,至少根据所述被创建进执行时的命令行参数判断所述被创建进程是否为解压缩进程。
S330:如果是,则通知驱动程序记录该解压缩进程生成的信息至第一数据库,对该解压缩进程生成的信息进行主动防御监控。
可选的,还包括:获取被创建进程的进程路径。具体的,至少根据被创建进程执行时的命令行参数判断所述被创建进程是否为解压缩进程的步骤包括:根据被创建进程的进程路径以及执行时的命令行参数,判断被创建进程是否为解压缩进程。例如,根据被创建进程的进程路径,判断被创建进程的进程文件是否为压缩或解压缩软件,如果是,进一步根据命令行参数判断所述被创建进程是否为解压缩进程。
可选的,还包括:当下载压缩包时,在第二数据库中添加该压缩包的信息记录,该压缩包的信息记录至少包括压缩包的下载来源;如果判断该被创建进程是解压缩进程,从第二数据库中查询该解压缩进程对应的压缩包的下载来源,以及将该压缩包的下载来源与第一数据库中记录的该解压缩进程生成的信息相关联,获得所述信息的下载来源。
可选的,该压缩包的信息记录还包括压缩包的存放路径和/或压缩包的特征标识。进而,从第二数据库中查询所述解压缩进程对应的压缩包的下载来源包括:根据命令行参数获得所述解压缩进程对应的压缩包的存放路径,并根据压缩包的存放路径从第二数据库中查询所述解压缩进程对应的压缩包的下载来源;或,根据解压缩进程对应的压缩包的特征标识从所述第二数据库中查询所述解压缩进程对应的压缩包的下载来源。
可选的,解压缩进程生成的信息包括可执行文件,对该解压缩进程生成的信息进行主动防御监控包括:监控所述解压缩进程生成的可执行文件的进程创建操作,如发现,则进一步监控在该可执行文件进程在运行过程中是否执行了可疑操作;如果是,则至少将该解压缩进程生成的可执行文件所关联的下载来源发送到安全扫描器,供其进行检测判断;根据安全扫描器返回的结果,决定放行、拦截或提示。
可选的,解压缩进程生成的信息包括可执行文件,对该解压缩进程生成的信息进行主动防御监控包括:监控所述解压缩进程生成的可执行文件的进程创建操作,如发现,则通知驱动程序监控该可执行文件进程加载的DLL动态链接库文件,并记录;如果该可执行文件进程执行的操作包括可疑操作,则通过安全扫描器对该可执行文件进程加载的DLL进行检查;根据检查结果,确定是否修改该可执行文件进程的安全等级,以及根据所述可执行文件的安全等级决定放行、拦截或提示。
可选的,还包括将可执行文件所关联的下载来源发送至安全扫描器进行检查。
可选的,对该解压缩进程生成的信息进行主动防御监控包括:将该解压缩进程生成的可执行文件的大小与其所属压缩包的大小进行对比,如果前者的大小超过后者的大小预置阈值,则进行风险提示。
为了更好的阐述本发明实施例的用于主动防御恶意程序的方法和设备,下面提供一个更为具体的实例。
首先,通过浏览器下载一个压缩包,存放路径为C:\Test\test.zip,该文件以及相关的下载来源信息会记录到第二数据库,为该条记录分配个ID(Identity,身份标识)。然后,用户右键点击该压缩包,选择压缩的菜单“解压到test\”。监控到进程创建操作,获取到被创建的进程路径为C:\ProgramFiles\AAA\AAAzip\AAAzip.exe,命令行参数为"C:\ProgramFiles\AAA\AAAzip\AAAzip.exe"-s"C:\Test\test.zip""C:\Test\test"。进而根据进程路径(AAAzip)判断该进程文件为压缩或解压缩软件,然后分析命令行参数(-s)判定为解压缩操作。根据压缩包路径为C:\Test\test.zip,在第二数据库中查询压缩包,得到第二数据库中的记录ID。同时,向驱动程序添加规则,记录此进程生成的文件到第一数据库,并关联之前查到的第二数据库ID,即为该进程生成的文件获得对应的下载来源。假定解压出了两个文件,路径分别为C:\Test\test\test.exe和C:\Test\test\winmm.dll,前者为白程序,后者是前者会加载的一个未知DLL。
当用户执行C:\Test\test\test.exe,主动防御设备监控到进程创建操作,如果在第一数据库中查找到该进程文件,则通知驱动监控该进程加载的DLL文件。进程运行过程中当加载C:\Test\test\winmm.dll及其他DLL时,会记录下来,***DLL会过滤掉。之后如果进程执行可疑的注册表、文件或进程操作等而被拦截时,test.exe和winmm.dll等DLL都会发送到云查杀引擎(即前文提到的安全扫描器)进行查询。查询返回后,由于DLL为未知,进程等级就会修正为未知,从而会弹出警告窗口。
通过上述本发明提供的用于主动防御恶意程序的方法、设备及***,可以看出,通过监控未知程序的进程创建操作,能够获得被创建进程的命令行参数,然后根据命令行参数可以判断被创建进程是否为解压缩进程;如果是,就通知驱动程序记录该解压缩进程生成的信息至第一数据库,并对该解压缩进程生成的信息进行主动防御监控。由于恶意程序利用压缩软件进行传播的非常广泛,因此采用本发明实施例的方案,可以先通过技术手段监控到解压缩进程以及生成的文件,然后对解压缩进程进行重点监控,采取更严格的主动防御监控。例如凡是解压缩进程生成的文件都进行记录。
进一步,如果该解压缩进程生成的文件在执行过程中加载了DLL文件,并且执行了可疑操作,则会对加载的DLL文件进行检查,进而判断该进程是否安全。通过这种方式,解决了在现有技术的设备中的主动防御模块只检查程序的可执行文件(例如,exe文件)是否可以信任,而不检查程序加载的DLL(DynamicLinkLibrary,动态链接库)文件,导致被一些恶意程序所利用,恶意程序使用DLL劫持技术将木马DLL与可信任的白程序打包在一起,当白程序被执行时,木马DLL就会被加载,从而使得恶意程序利用白程序突破主动防御的问题。
进一步,在压缩包下载时记录相关的下载来源,并且与解压缩进程生成的文件相关联,进而当发现该解压缩进程生成的可执行文件执行了可疑操作时,通过该可执行文件的下载来源等信息进行检查判断,从而确定该进程是否安全。因为解压出来的文件可能是通过多层解压得到的,而且有些文件还不容易打开,因此通过传统直接对文件扫描的方式,在很多情况下无法实现有效的查杀。而通过本发明实施例的方案,使得无论是通过几层解压出的文件,还是不容易打开的文件,都可以知道其下载来源,进而可以通过这些下载来源判断是否安全,从而达到从源头上进行主动防御的目的,提高了主动防御的有效性。
进一步,在分析出是解压缩进程后,比较压缩包和解压出来的文件的大小进行比较,如果差别较大,例如差别超过预置阈值,如解压出来的文件大小与压缩包大小的比值大于5,则认为是未知的,进而主动进行风险提示。当然,本领域技术人员可以理解,具体用于作为判断依据的预置阈值的具体数值可以根据实际经验、需要进行设定。现有技术中很多恶意程序会构造特别大的一个EXE程序文件,压缩后传给用户,然后利用安全软件处理超大EXE文件比较困难的特点,试图逃避掉主动防御的拦截。而采用本发明实施例的这种方案,由于是针对压缩前后文件的大小进行比较、判断,因此针对现有的这种情况,可以达到较好的主动防御效果。可以适用于解决处理各种安全隐患,包括病毒、木马、恶意脚本、恶意插件、恶评软件或流氓软件等。
可选,监控模块还被配置为获取被创建进程的进程路径;
解析判断模块具体被配置为根据被创建进程的进程路径以及执行时的命令行参数,判断所述被创建进程是否为解压缩进程。
解析判断模块具体被配置为根据所述被创建进程的进程路径,判断所述被创建进程的进程文件是否为压缩或解压缩软件;如果是,进一步根据所述命令行参数判断所述被创建进程是否为解压缩进程。
该设备还包括:
记录模块,被配置为当下载压缩包时在第二数据库中添加所述压缩包的信息记录,所述压缩包的信息记录至少包括所述压缩包的下载来源;
关联模块,被配置为如果所述解析判断模块判断所述被创建进程是解压缩进程,从所述第二数据库中查询所述解压缩进程对应的压缩包的下载来源,以及将所述压缩包的下载来源与所述第一数据库中记录的该解压缩进程生成的信息相关联,获得所述信息的下载来源。
记录模块添加的压缩包的信息记录还包括所述压缩包的存放路径和/或压缩包的特征标识;
关联模块具体被配置为根据所述命令行参数获得所述解压缩进程对应的压缩包的存放路径,并根据所述压缩包的存放路径从所述第二数据库中查询所述解压缩进程对应的压缩包的下载来源;
或,
关联模块具体被配置为根据所述解压缩进程对应的压缩包的特征标识,从所述第二数据库中查询所述解压缩进程对应的压缩包的下载来源。
所述解压缩进程生成的信息包括可执行文件,所述主动防御模块包括:
第一文件监控模块,被配置为监控所述解压缩进程生成的可执行文件的进程创建操作,如发现,则进一步监控在该可执行文件进程在运行过程中是否执行了可疑操作;
第一安全操作模块,被配置为如果所述第二文件监控模块监控到该可执行文件进程在运行过程中执行了可疑操作,则至少将所述解压缩进程生成的可执行文件所关联的下载来源发送到安全扫描器,供其进行检测判断;以及根据所述安全扫描器返回的结果,决定放行、拦截或提示。
所述解压缩进程生成的信息包括可执行文件,所述主动防御模块包括:
第二文件监控模块,被配置为监控所述解压缩进程生成的可执行文件的进程创建操作,如发现,则通知驱动程序监控该可执行文件进程加载的DLL动态链接库文件,并记录在内存中所述可执行文件进程的相关数据结构中;
第二安全操作模块,被配置为如果驱动程序监控到该可执行文件进程执行的操作包括可疑操作,则通过安全扫描器对该可执行文件进程加载的DLL进行检查,并根据检查结果,确定是否修改该可执行文件进程的安全等级,以及决定放行、拦截或提示。
所述第一安全操作模块还被配置为将所述可执行文件所关联的下载来源发送到安全扫描器进行检查和判断。
所述主动防御模块具体被配置为将该解压缩进程生成的可执行文件的大小与其所属压缩包的大小进行对比,如果前者的大小超过后者的大小预置阈值,则进行风险提示。
一种用于主动防御恶意程序的***,包括客户端侧设备和服务器端设备,其中,
客户端侧设备前面任一设备实施例;
服务器端设备包括安全扫描器,所述安全扫描器被配置为根据预置的扫描规则,对客户端侧设备发送的可执行文件所关联的下载来源和/或DLL文件进行检查,并告知所述客户端侧设备检查结果。
在此提供的算法和显示不与任何特定计算机、虚拟***或者其它设备固有相关。各种通用***也可以与基于在此的示教一起使用。根据上面的描述,构造这类***所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的一种用于主动防御恶意程序的设备及***中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。