基于代码语法分析器的网站恶意代码检测方法及装置与流程

文档序号:13446686阅读:299来源:国知局
基于代码语法分析器的网站恶意代码检测方法及装置与流程

本发明涉及信息安全技术领域,尤其是涉及一种动态网站脚本语言恶意代码检测方法及装置。



背景技术:

恶意代码是威胁计算机安全的重要形式之一,本质上是一段计算机代码,这段代码可以按照攻击者的意愿执行一系列包含恶意企图的操作。代码的形式包括:可执行代码性指令、脚本语言、字处理宏语言。

对于动态网站而言,其一般是通过后台挂载的脚本(比如php,jsp,asp等)使得网页和用户之间实现一种实时性的、动态的、交互性的关系,使网页可以包含更多活跃的元素和更加精彩的内容。而黑客通过将自己写的恶意代码绕过服务器限制上传到服务器或者将恶意代码植入到已有的网站后台页面中,进而使脚本语言执行黑客的恶意代码,这样黑客就可以访问他上传了恶意代码的网站,从而导致安全问题。面对这些安全问题,亟需对动态网站的安全问题进行深入研究,提高对动态网站的恶意脚本的检测能力,保障互联网应用的安全。

根据分析对象的不同,现有技术中恶意代码的检测技术分为静态检测和动态检测。

其中,静态检测是基于模式匹配的思想,通过查找脚本文件中是否存在危险函数来确定是否存在恶意代码。然而,黑客只要将恶意代码在代码形式上做个混淆变形就能绕过已有的危险函数检测,因而准确率比较低。

动态检测是基于行为的检测技术,一般需要动态执行代码或者虚拟执行代码,然后监测代码的执行过程是否存在病毒的特有行为来监测病毒。这种方式能够解决危险函数混淆变形导致的准确率较低的问题,但是这种检测方式需要在检测恶意代码时进行执行代码的过程,成本较高。

综上所述,可见:传统的动态网站恶意代码检测方法存在检测准确性较差或成本较高的技术问题。



技术实现要素:

有鉴于此,本发明的目的在于提供一种基于代码语法分析器的网站恶意代码检测方法及装置,以缓解传统的动态网站恶意代码检测方法存在检测准确性较差或成本较高的技术问题。

第一方面,本发明实施例提供了一种基于代码语法分析器的网站恶意代码检测方法,包括:

获取待检测脚本的执行代码,其中,所述待检测脚本为用于实现目标动态网站的网站功能的脚本,所述执行代码为预先保存的代码;

利用代码语法分析器将所述待检测脚本的执行代码编译成字节码;

根据所述字节码,对所述目标动态网站进行检测,以检测得到对所述目标动态网站进行恶意操控的恶意代码。

结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,根据所述字节码,对所述目标动态网站进行检测,包括:

获取待检测恶意代码的代码特征,其中,所述代码特征包括预设危险函数;

遍历所述字节码,判断所述字节码中是否存在所述预设危险函数的执行指令;

在判断出是的情况下,确定出所述目标动态网站存在所述待检测恶意代码。

结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第二种可能的实施方式,其中,在确定出所述目标动态网站存在所述待检测恶意代码之后,所述方法还包括:

确定所述预设危险函数的调用参数;

在所述字节码中,从所述预设危险函数的执行指令所处的位置开始,对目标字节码进行遍历,以从所述目标字节码中确定出所述调用参数的数值输入接口,并在确定出所述数值输入接口的情况下,将所述数值输入接口作为恶意操控的访问接口,所述目标字节码为所述字节码中位于所述预设危险函数的执行指令之前的字节码。

结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第三种可能的实施方式,其中,在确定出所述调用参数的数值输入接口之后,所述方法还包括:

通过所述数值输入接口,向所述调用参数赋予预设数值;

执行所述待检测脚本,得到所述预设危险函数的执行结果;

根据所述执行结果,确定所述预设危险函数的危险类型。

结合第一方面的第三种可能的实施方式,本发明实施例提供了第一方面的第四种可能的实施方式,其中,在确定出所述预设危险函数的危险类型之后,所述方法还包括:

创建危险报告,所述危险报告中至少包括以下之一:所述预设危险函数、所述数值输入接口、所述危险类型。

结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第五种可能的实施方式,其中,在获取待检测恶意代码的代码特征之前,所述方法还包括:

获取多个恶意代码样本;

从所述恶意代码样本中,抽取恶意代码特征;

将所述恶意代码特征存储在数据库中,以便通过读取所述数据库来从所述恶意代码特征中选取所述待检测恶意代码的代码特征。

第二方面,本发明实施例还提供一种基于代码语法分析器的网站恶意代码检测装置,包括:

第一获取模块,用于获取待检测脚本的执行代码,其中,所述待检测脚本为用于实现目标动态网站的网站功能的脚本,所述执行代码为预先保存的代码;

编译模块,用于利用代码语法分析器将所述待检测脚本的执行代码编译成字节码;

检测模块,用于根据所述字节码,对所述目标动态网站进行检测,以检测得到对所述目标动态网站进行恶意操控的恶意代码。

结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,所述检测模块包括:

获取单元,用于获取待检测恶意代码的代码特征,其中,所述代码特征包括预设危险函数;

判断单元,用于遍历所述字节码,判断所述字节码中是否存在所述预设危险函数的执行指令;

确定单元,用于在判断出是的情况下,确定出所述目标动态网站存在所述待检测恶意代码。

结合第二方面的第一种可能的实施方式,本发明实施例提供了第二方面的第二种可能的实施方式,其中,所述装置还包括:

第一确定模块,用于在确定出所述目标动态网站存在所述待检测恶意代码之后,确定所述预设危险函数的调用参数;

第二确定模块,用于在所述字节码中,从所述预设危险函数的执行指令所处的位置开始,对目标字节码进行遍历,以从所述目标字节码中确定出所述调用参数的数值输入接口,并在确定出所述数值输入接口的情况下,将所述数值输入接口作为恶意操控的访问接口,所述目标字节码为所述字节码中位于所述预设危险函数的执行指令之前的字节码。

结合第二方面的第二种可能的实施方式,本发明实施例提供了第二方面的第三种可能的实施方式,其中,所述装置还包括:

赋值模块,用于在确定出所述调用参数的数值输入接口之后,通过所述数值输入接口,向所述调用参数赋予预设数值;

执行模块,用于执行所述待检测脚本,得到所述预设危险函数的执行结果;

第三确定模块,用于根据所述执行结果,确定所述预设危险函数的危险类型。

结合第二方面的第三种可能的实施方式,本发明实施例提供了第二方面的第四种可能的实施方式,其中,所述装置还包括:

创建模块,用于在确定出所述预设危险函数的危险类型之后,创建危险报告,所述危险报告中至少包括以下之一:所述预设危险函数、所述数值输入接口、所述危险类型。

结合第二方面的第四种可能的实施方式,本发明实施例提供了第二方面的第五种可能的实施方式,其中,所述装置还包括:

第二获取模块,用于获取多个恶意代码样本;

抽取模块,用于从所述恶意代码样本中,抽取恶意代码特征;

存储模块,用于将所述恶意代码特征存储在数据库中,以便通过读取所述数据库来从所述恶意代码特征中选取所述待检测恶意代码的代码特征。

本发明实施例带来了以下有益效果:获取待检测脚本的执行代码,其中,待检测脚本为用于实现目标动态网站的网站功能的脚本,执行代码为预先保存的代码;利用代码语法分析器将待检测脚本的执行代码编译成字节码;根据字节码,对目标动态网站进行检测,以检测得到对目标动态网站进行恶意操控的恶意代码。由于待检测脚本的执行代码为预先保存的代码,因而在要进行恶意代码检测时,无需特意对待检测脚本再执行一次,从而缓解了现有技术中恶意代码的动态检测技术存在的成本较高的技术问题;此外,利用代码语法分析器将待检测脚本的执行代码编译成字节码,根据字节码对目标动态网站进行检测,由于即使危险函数被做过混淆变形,危险函数只会在待检测脚本里的代码有形式上的变换,而待检测脚本的执行代码中仍然存在危险函数的执行代码,有利于对危险函数的准确识别,从而缓解了现有技术中恶意代码的静态检测技术存在的准确率低的技术问题。

本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例一提供的一种基于代码语法分析器的网站恶意代码检测方法的流程图;

图2为本发明实施例一提供的另一种基于代码语法分析器的网站恶意代码检测方法的流程图;

图3为本发明实施例二提供的一种基于代码语法分析器的网站恶意代码检测装置的示意图;

图4为本发明实施例二提供的另一种基于代码语法分析器的网站恶意代码检测装置的示意图;

图5为本发明实施例一提供的一种执行代码经代码语法分析器编译成的字节码。

图标:1-第一获取模块;2-编译模块;3-检测模块;4-第一确定模块;5-第二确定模块;6-赋值模块;7-执行模块;8-第三确定模块;9-创建模块;10-第二获取模块;11-抽取模块;12-存储模块。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

对于动态网站,现有技术中恶意代码的检测技术分为静态检测和动态检测,静态检测具有准确率较低的技术问题,动态检测具有成本较高的技术问题。基于此,本发明实施例提供的一种基于代码语法分析器的网站恶意代码检测方法及装置,可以缓解传统的动态网站恶意代码检测方法存在检测准确性较差或成本较高的技术问题。

实施例一

本发明实施例提供的一种基于代码语法分析器的网站恶意代码检测方法,如图1所示,包括:

步骤s102,获取待检测脚本的执行代码,其中,待检测脚本为用于实现目标动态网站的网站功能的脚本,执行代码为预先保存的代码。

具体地,该基于代码语法分析器的网站恶意代码检测方法应用于目标动态网站的服务端,可以目标动态网站挂载的脚本进行实时监测,并将待检测脚本在任意一次执行过程中的执行代码保存下来。然后,在要对待检测脚本进行检测时,将预先保存的执行代码调取出来进行检测。

步骤s104,利用代码语法分析器将待检测脚本的执行代码编译成字节码。

具体地,将脚本语言,通过代码语法分析器来编译成二进制文本格式的字节码。

步骤s106,根据字节码,对目标动态网站进行检测,以检测得到对目标动态网站进行恶意操控的恶意代码。

具体地,字节码为待检测脚本的执行代码,待检测脚本中存在恶意代码的情况下,字节码中存在恶意代码的执行代码。

在本发明实施例中,由于待检测脚本的执行代码为预先保存的代码,因而在要进行恶意代码检测时,无需特意对待检测脚本再执行一次,从而缓解了现有技术中恶意代码的动态检测技术存在的成本较高的技术问题;此外,利用代码语法分析器将待检测脚本的执行代码编译成字节码,根据字节码对目标动态网站进行检测,由于即使危险函数被做过混淆变形,危险函数只会在待检测脚本里的代码有形式上的变换,而待检测脚本的执行代码中仍然存在危险函数的执行代码,有利于对危险函数的准确识别,从而缓解了现有技术中恶意代码的静态检测技术存在的准确率低的技术问题。

本发明实施例的一个可选实施方式中,如图2所示,根据字节码,对目标动态网站进行检测,包括:

步骤s201,获取待检测恶意代码的代码特征,其中,代码特征包括预设危险函数;

步骤s202,遍历字节码,判断字节码中是否存在预设危险函数的执行指令;

在判断出是的情况下,执行步骤s203;在判断出否的情况下,结束。

步骤s203,确定出目标动态网站存在待检测恶意代码。

本发明实施例的另一个可选实施方式中,如图2所示,在确定出目标动态网站存在待检测恶意代码之后,基于代码语法分析器的网站恶意代码检测方法还包括:

步骤s204,确定预设危险函数的调用参数;

步骤s205,在字节码中,从预设危险函数的执行指令所处的位置开始,对目标字节码进行遍历,以从目标字节码中确定出调用参数的数值输入接口,并在确定出数值输入接口的情况下,将数值输入接口作为恶意操控的访问接口,目标字节码为字节码中位于预设危险函数的执行指令之前的字节码。

本发明实施例的另一个可选实施方式中,如图2所示,在确定出调用参数的数值输入接口之后,基于代码语法分析器的网站恶意代码检测方法还包括:

步骤s206,通过数值输入接口,向调用参数赋予预设数值;

步骤s207,执行待检测脚本,得到预设危险函数的执行结果;

步骤s208,根据执行结果,确定预设危险函数的危险类型。

下面以php格式的脚本为例进行详细说明,假设待检测脚本存在预设危险函数eval,函数eval在字节码中的执行指令为include_or_eval,待检测脚本的源代码具体如下:

需要说明的是,危险函数eval经混淆变形后,危险函数只会在待检测脚本里的代码有形式上的变换,而待检测脚本的执行代码中仍然存在危险函数的执行代码,因而无论是待检测脚本的源代码,还是经过混淆变形后的待检测脚本代码,其执行代码经代码语法分析器编译成的字节码如图5所示。

其中,根据字节码,对目标动态网站进行检测,包括:获取预设危险函数为函数eval;遍历字节码,判断出字节码中存在函数eval的执行指令include_or_eval,则确定出目标动态网站存在待检测恶意代码。

进一步,在确定出目标动态网站存在待检测恶意代码之后,基于代码语法分析器的网站恶意代码检测方法还包括:

确定函数eval原型为eval(arg),即确定出函数eval的调用参数为arg;

然后在字节码中,确定出arg的数值输入接口。具体地,可以根据待检测脚本执行过程的反向顺序,从指令include_or_eval开始,反推出eval的参数arg为!0,然后向上找到!0被赋值为!$2,这个时候反推$2的值,通过再向上一条指令及其操作类型可知,$2被赋予$1[p]的值,最后推导出$1是从_post[p]中取值,而_post就是用户发过来的post信息,即,arg的数值输入接口是用户发送post信息的访问接口。

进一步,在确定出调用参数的数值输入接口之后,基于代码语法分析器的网站恶意代码检测方法还包括:

构造任意的post数据,可以发送p=”exec(‘命令’)”,然后执行待检测脚本,这个时候就会出现相应于p=”exec(‘命令’)”的执行结果,然后根据执行结果确定eval的危险类型。

本发明实施例通过代码语法分析器将待检测脚本的执行代码编译成字节码后,将执行代码作为分析的代码。

其中,执行代码涉及到了待检测脚本的执行过程,类似于恶意代码动态检测技术的对代码执行的需求,然而,这里将执行代码作为分析的代码,执行代码是预先保存的代码,因而无需在网站恶意代码检测时特意再进行一次待检测脚本的执行,相对于恶意代码动态检测技术来说,缓解了恶意代码动态检测技术成本较高的技术问题。

而在对执行代码进行分析的过程中用到了恶意代码静态检测技术的模式匹配的思想,但由于分析的代码是待检测脚本的执行代码翻译成的字节码,由于即使危险函数被做过混淆变形,危险函数只会在待检测脚本里的代码有形式上的变换,而待检测脚本的执行代码中仍然存在危险函数的执行代码,有利于对危险函数的准确识别,相对于恶意代码静态检测技术来说,缓解了恶意代码静态检测技术因形式混淆带来的准确率较差的技术问题。

本发明实施例的另一个可选实施方式中,在确定出预设危险函数的危险类型之后,基于代码语法分析器的网站恶意代码检测方法还包括:

创建危险报告,危险报告中至少包括以下之一:预设危险函数、数值输入接口、危险类型。进而,用户通过查看危险报告,即可以得知恶意代码的详细信息。具体地,可以通过将危险报告发送给用户让用户查看危险报告,也可以将危险报告保存在存储设备中以便用户从存储设备中读取危险报告来查看。

本发明实施例的另一个可选实施方式中,在获取待检测恶意代码的代码特征之前,基于代码语法分析器的网站恶意代码检测方法还包括:

获取多个恶意代码样本;

从恶意代码样本中,抽取恶意代码特征;

将恶意代码特征存储在数据库中,以便通过读取数据库来从恶意代码特征中选取待检测恶意代码的代码特征。

需要说明的是,本发明实施例中,不断扩充数据库中的恶意代码特征的数量,有利于对更多的恶意代码进行检测。

实施例二

本发明实施例提供的一种基于代码语法分析器的网站恶意代码检测装置,如图3所示,包括:

第一获取模块1,用于获取待检测脚本的执行代码,其中,待检测脚本为用于实现目标动态网站的网站功能的脚本,执行代码为预先保存的代码;

编译模块2,用于在待检测脚本的执行过程中,利用代码语法分析器将待检测脚本的执行代码编译成字节码;

检测模块3,用于根据字节码,对目标动态网站进行检测,以检测得到对目标动态网站进行恶意操控的恶意代码。

在本发明实施例中,获取模块1获取待检测脚本的执行代码,其中,待检测脚本为用于实现目标动态网站的网站功能的脚本,执行代码为预先保存的代码;编译模块2利用代码语法分析器将待检测脚本的执行代码编译成字节码;检测模块3根据字节码,对目标动态网站进行检测,以检测得到对目标动态网站进行恶意操控的恶意代码。由于待检测脚本的执行代码为预先保存的代码,因而在要进行恶意代码检测时,无需特意对待检测脚本再执行一次,从而缓解了现有技术中恶意代码的动态检测技术存在的成本较高的技术问题;此外,利用代码语法分析器将待检测脚本的执行代码编译成字节码,根据字节码对目标动态网站进行检测,由于即使危险函数被做过混淆变形,危险函数只会在待检测脚本里的代码有形式上的变换,而待检测脚本的执行代码中仍然存在危险函数的执行代码,有利于对危险函数的准确识别,从而缓解了现有技术中恶意代码的静态检测技术存在的准确率低的技术问题。

本发明实施例的另一个可选实施方式中,检测模块包括:

获取单元,用于获取待检测恶意代码的代码特征,其中,代码特征包括预设危险函数;

判断单元,用于遍历字节码,判断字节码中是否存在预设危险函数的执行指令;

确定单元,用于在判断出是的情况下,确定出目标动态网站存在待检测恶意代码。

本发明实施例的另一个可选实施方式中,如图4所示,基于代码语法分析器的网站恶意代码检测装置还包括:

第一确定模块4,用于在确定出目标动态网站存在待检测恶意代码之后,确定预设危险函数的调用参数;

第二确定模块5,用于在字节码中,从预设危险函数的执行指令所处的位置开始,对目标字节码进行遍历,以从目标字节码中确定出调用参数的数值输入接口,并在确定出数值输入接口的情况下,将数值输入接口作为恶意操控的访问接口,目标字节码为字节码中位于预设危险函数的执行指令之前的字节码。

本发明实施例的另一个可选实施方式中,如图4所示,基于代码语法分析器的网站恶意代码检测装置还包括:

赋值模块6,用于在确定出调用参数的数值输入接口之后,通过数值输入接口,向调用参数赋予预设数值;

执行模块7,用于执行待检测脚本,得到预设危险函数的执行结果;

第三确定模块8,用于根据执行结果,确定预设危险函数的危险类型。

本发明实施例的另一个可选实施方式中,如图4所示,基于代码语法分析器的网站恶意代码检测装置还包括:

创建模块9,用于在确定出预设危险函数的危险类型之后,创建危险报告,危险报告中至少包括以下之一:预设危险函数、数值输入接口、危险类型。

本发明实施例的另一个可选实施方式中,如图4所示,基于代码语法分析器的网站恶意代码检测装置还包括:

第二获取模块10,用于在获取待检测恶意代码的代码特征之前,获取多个恶意代码样本;

抽取模块11,用于从恶意代码样本中,抽取恶意代码特征;

存储模块12,用于将恶意代码特征存储在数据库中,以便通过读取数据库来从恶意代码特征中选取待检测恶意代码的代码特征。

本发明实施例所提供的基于代码语法分析器的网站恶意代码检测方法及装置,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1