CN106911686B - WebShell检测方法及装置 - Google Patents
WebShell检测方法及装置 Download PDFInfo
- Publication number
- CN106911686B CN106911686B CN201710090683.8A CN201710090683A CN106911686B CN 106911686 B CN106911686 B CN 106911686B CN 201710090683 A CN201710090683 A CN 201710090683A CN 106911686 B CN106911686 B CN 106911686B
- Authority
- CN
- China
- Prior art keywords
- script file
- target script
- ast
- preset
- weight
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
Abstract
本申请提供一种WebShell检测方法及装置,该方法包括:在获得目标脚本文件后,获得所述目标脚本文件的信息熵;生成所述目标脚本文件的抽象语法树AST;获得所述AST中危险函数的占比值;对所述信息熵及所述危险函数的占比值进行加权求和,得到所述目标脚本文件的第一权值;在所述第一权值大于预设第一阈值的情况下,确定所述目标脚本文件为WebShell。由此可见,本申请技术方案可以对脚本文件进行语法分析,得到该脚本文件的信息熵及危险函数的占比值,之后通过信息熵及占比值来检测该脚本文件是否为WebShell,对于未知的WebShell,仍可以识别出,因此提高了检测的准确率。
Description
技术领域
本申请实施例涉及信息安全技术领域,特别涉及一种WebShell检测方法及装置。
背景技术
WebShell是一种以asp、php、jsp或者cgi等网页文件形式存在的命令执行环境,也可以将WebShell称作一种网页后门,它是黑客入侵网站服务器的脚本攻击工具。目前,黑客在入侵了一个网站后,通常会将这些asp或php等后门文件与网站服务器Web目录下正常的网页文件混在一起,然后通过浏览器来访问这些asp或php等后门文件,得到一个命令执行环境,以达到控制网站服务器的目的。因此,检测WebShell对于保证网站安全十分重要。
现有的WebShell检测技术中,是通过检测脚本文件中是否存在预先定义的攻击特征,来判断该脚本文件是否为WebShell,但是现有的WebShell检测技术仅能识别已知的WebShell,对于未知的WebShell,则无法识别,导致检测准确率较低。
发明内容
为了解决上述问题,本申请实施例提供一种WebShell检测方法及装置。
具体地,本申请实施例是通过如下技术方案实现的:
根据本申请实施例的第一方面,提供一种WebShell检测方法,所述方法包括:
在获得目标脚本文件后,获得所述目标脚本文件的信息熵;
生成所述目标脚本文件的抽象语法树AST;
获得所述AST中危险函数的占比值,其中,所述危险函数至少包括:用于代码执行的函数表达式或函数语句块、用于文件操作的函数表达式或函数语句块,及用于系统调用的函数表达式及函数语句块;
对所述信息熵及所述危险函数的占比值进行加权求和,得到所述目标脚本文件的第一权值;
在所述第一权值大于预设第一阈值的情况下,确定所述目标脚本文件为WebShell。
本申请实施例中,所述生成所述目标脚本文件的抽象语法树AST,包括:
对所述目标脚本文件进行词法分析和语法分析,得到包含所述目标脚本文件的完整信息的AST。
本申请实施例中,所述生成所述目标脚本文件的抽象语法树AST,包括:
对所述目标脚本文件进行词法分析和语法分析,得到包含所述目标脚本文件的完整信息的AST;
使用预设的消除AST中冗余信息的算法,对所述包含所述目标脚本文件的完整信息的AST进行处理,得到消除冗余信息后的AST。
本申请实施例中,所述方法还包括:
在所述第一权值大于预设第二阈值且小于所述预设第一阈值的情况下,将所述目标脚本文件放入沙盘运行,得到所述目标脚本文件中所有函数的运行行为,其中,所述预设第一阈值大于所述预设第二阈值;
根据预设的危险行为确定规则,确定所述运行行为中的危险行为,并计算所述危险行为的占比值;
对所述第一权值及所述危险行为的占比值进行加权求和,得到所述目标脚本文件的第二权值;
在所述第二权值大于所述预设第一阈值的情况下,确定所述目标脚本文件为WebShell。
本申请实施例中,在所述获得所述目标脚本文件的信息熵之前,还包括:
判断所述目标脚本文件中是否包含预设的攻击特征;
若所述目标脚本文件中包含预设的攻击特征,则确定所述目标脚本文件为WebShell;
若所述目标脚本文件中不包含预设的攻击特征,则执行所述获得所述目标脚本文件的信息熵的步骤。
根据本申请实施例的第二方面,提供一种WebShell检测装置,所述装置包括:
信息熵获得模块,用于在获得目标脚本文件后,获得所述目标脚本文件的信息熵;
AST生成模块,用于生成所述目标脚本文件的抽象语法树AST;
危险函数占比值获得模块,用于获得所述AST生成模块生成的AST中危险函数的占比值,其中,所述危险函数至少包括:用于代码执行的函数表达式或函数语句块、用于文件操作的函数表达式或函数语句块,及用于系统调用的函数表达式及函数语句块;
第一权值获得模块,用于对所述信息熵获得模块获得的信息熵及所述危险函数占比值获得模块获得的危险函数的占比值进行加权求和,得到所述目标脚本文件的第一权值;
第一确定模块,用于在所述第一权值获得模块获得的第一权值大于预设第一阈值的情况下,确定所述目标脚本文件为WebShell。
本申请实施例中,所述AST生成模块,包括:
第一AST生成子模块,用于对所述目标脚本文件进行词法分析和语法分析,得到包含所述目标脚本文件的完整信息的AST。
本申请实施例中,所述AST生成模块,包括:
第二AST生成子模块,用于对所述目标脚本文件进行词法分析和语法分析,得到包含所述目标脚本文件的完整信息的AST;
第三AST生成子模块,用于使用预设的消除AST中冗余信息的算法,对所述第二AST生成子模块生成的包含所述目标脚本文件的完整信息的AST进行处理,得到消除冗余信息后的AST。
本申请实施例中,所述装置还包括:
运行行为获得模块,用于在所述第一权值获得模块获得的第一权值大于预设第二阈值且小于所述预设第一阈值的情况下,将所述目标脚本文件放入沙盘运行,得到所述目标脚本文件中所有函数的运行行为,其中,所述预设第一阈值大于所述预设第二阈值;
危险行为占比值获得模块,用于根据预设的危险行为确定规则,确定所述运行行为中的危险行为,并计算所述危险行为的占比值;
第二权值获得模块,用于对所述第一权值获得模块获得的第一权值及所述危险行为占比值获得模块获得的危险行为的占比值进行加权求和,得到所述目标脚本文件的第二权值;
第一确定模块,用于在所述第二权值获得模块获得的第二权值大于所述预设第一阈值的情况下,确定所述目标脚本文件为WebShell。
本申请实施例中,所述装置还包括:
判断模块,用于在获得目标脚本文件后,判断所述目标脚本文件中是否包含预设的攻击特征,并在判断结果为否的情况下,触发所述信息熵获得模块执行所述获得所述目标脚本文件的信息熵的操作;
第三确定模块,用于在所述判断模块的判断结果为是的情况下,确定所述目标脚本文件为WebShell。
本申请实施例可以对脚本文件进行语法分析,得到该脚本文件的信息熵及危险函数的占比值,之后通过信息熵及占比值来检测该脚本文件是否为WebShell,对于未知的WebShell,仍可以识别出,因此提高了检测的准确率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请实施例。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请实施例,并与说明书一起用于解释本发明的原理。
图1是本申请根据一示例性实施例示出的一种WebShell检测方法的流程图;
图2是本申请根据一示例性实施例示出的另一种WebShell检测方法的流程图;
图3是本申请根据一示例性实施例示出的另一种WebShell检测方法的流程图;
图4是本申请根据一示例性实施例示出的一种WebShell检测装置的框图;
图5是本申请根据一示例性实施例示出的另一种WebShell检测装置的框图;
图6是本申请根据一示例性实施例示出的另一种WebShell检测装置的框图;
图7是本申请根据一示例性实施例示出的另一种WebShell检测装置的框图;
图8是本申请根据一示例性实施例示出的另一种WebShell检测装置的框图;
图9为本申请根据一示例性实施例示出的一种WebShell检测装置所在网络设备的一种硬件结构图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请实施例的一些方面相一致的装置和方法的例子。
在本申请实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请实施例。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
随着网络技术的发展,黑客攻击WEB的事件越来越多,WebShell常常被称为黑客通过WEB服务端口对WEB服务器有操作的权限的网页后门,其大部分情况下以asp、php、jsp或者cgi等网页文件形式存在。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。
现有的WebShell检测技术中,是通过检测脚本文件中是否存在预先定义的攻击特征,来判断该脚本文件是否为WebShell,但是现有的WebShell检测技术仅能识别已知的WebShell,对于未知的WebShell,则无法识别,导致检测准确率较低。为了解决上述问题,本申请实施例提供了一种WebShell检测方法及装置。
下面首先对本申请实施例提供的一种WebShell检测方法进行介绍。
需要说明的是,本申请实施例提供的方法适用于网络设备,在实际应用中,该网络设备可以包括:网关、防火墙及服务器等等,本申请实施例对此不作限定。
如图1所示,图1是本申请根据一示例性实施例示出的一种WebShell检测方法的流程图,该方法可以包括以下步骤:
在步骤101中,在获得目标脚本文件后,获得该目标脚本文件的信息熵。
在本申请实施例提供的一种应用场景中,当一般用户或黑客向网站服务器发送目标脚本文件时,需要经过网关或防火墙,因此当该目标脚本文件到达网关或防火墙时,网关或防火墙可以对该目标脚本文件进行截获,从而获得该目标脚本文件。
在本申请实施例提供的另一种应用场景中,当一般用户或黑客发送的目标脚本文件到达网站服务器时,该网站服务器会截获该目标脚本文件,从而获得该目标脚本文件。
本申请实施例中,在获得目标脚本文件后,对该目标脚本文件进行安全性检测,从而保证达到网站服务器侧的脚本文件是安全的。
本申请实施例中,目标脚本文件可以为asp(active server pages,动态服务器页面)文件、php(hypertext preprocessor,超文本预处理器)文件、jsp(java server pages,java服务器页面)文件、cgi(common gateway interface,公共网关接口)文件,或者其他格式的网页文件,本申请实施例对此不作限定。
信息熵是用来衡量一个随机变量出现的期望值,一个变量的信息熵越大,那么他出现的各种情况也就越多,也就是包含的内容多,通俗的来讲,信息熵衡量了一个系统的复杂度。
本申请实施例中,可以采用相关技术中的任一种信息熵计算算法,来计算目标脚本文件的信息熵。目标脚本文件的信息熵可以从一定程度上反映出该目标脚本文件是否进行了加密、混淆及压缩处理,其中,信息熵越大,越说明该目标脚本文件越有可能进行了加密、混淆及压缩处理。
考虑到黑客发送的脚本文件通常进行了加密、混淆及压缩处理,因此,本申请实施例中,可以通过获得目标脚本文件的信息熵,来确定该目标脚本文件是否进行了加密、混淆及压缩处理。换句话说,目标脚本文件进行加密、混淆及压缩处理的概率越高,则该目标脚本文件越有可能是WebShell。
在步骤102中,生成目标脚本文件的抽象语法树AST。
AST(Abstract Syntax Tree,抽象语法树)是源代码的抽象语法结构的树状表现形式。本申请实施例中,可以通过生成抽象语法树的方式,对目标脚本文件进行语义分析。
考虑到信息的完整性,在本申请实施例提供的一种实施方式中,上述步骤102可以包括:
对目标脚本文件进行词法分析和语法分析,得到包含该目标脚本文件的完整信息的AST。
另外,考虑到在面向对象的系统中,我们并不需要关心源代码的所有信息,因此在进行语法分析时,生成一颗完整的语法树既显得多余又增加了工作量和存储空间,所以可以生成结构统一、节点包含分析所需信息的抽象语法树,此时,在本申请实施例提供的另一种实施方式中,上述步骤102可以包括:S10和S11,其中,
在S10中,对目标脚本文件进行词法分析和语法分析,得到包含该目标脚本文件的完整信息的AST;
在S11中,使用预设的消除AST中冗余信息的算法,对包含目标脚本文件的完整信息的AST进行处理,得到消除冗余信息后的AST。
本申请实施例中,可以通过递归扫描AST,执行AST中相关的表达式(比如合并字符串连接等)、语句、以及函数的方式,生成消除冗余信息后的AST。
在步骤103中,获得该AST中危险函数的占比值。
需要说明的是,本申请实施例中危险函数至少包括:用于代码执行的函数表达式或函数语句块、用于文件操作的函数表达式或函数语句块,及用于系统调用的函数表达式及函数语句块等等;此外,也可以由开发人员自行设置用于危险函数的条件,以根据该条件从AST中筛选出危险函数,本申请实施例对此不作限定。
本申请实施例中,AST中危险函数的占比值=(AST中危险函数的数量)/(该AST中函数的总数)。
本申请实施例中,通过计算AST中危险函数的占比值,来评估目标脚本文件的静态函数的风险值,其中,AST中危险函数的占比值越大,该目标脚本文件越有可能是WebShell。
在步骤104中,对信息熵及危险函数的占比值进行加权求和,得到目标脚本文件的第一权值。
本申请实施例中,可以直接将信息熵及危险函数的占比值进行求和,即:(信息熵)+(危险函数的占比值)=第一权值,得到目标脚本文件的第一权值。或者,也可以预先设置两个权重系数a和b,依据计算公式:(信息熵)*a+(危险函数的占比值)*b=第一权值,计算目标脚本文件的第一权值。
在步骤105中,在第一权值大于预设第一阈值的情况下,确定目标脚本文件为WebShell。
本申请实施例中,可以依据经验值,将预设第一阈值设置为50%,此时,若目标脚本文件的第一权值大于50%,则确定该目标脚本文件为WebShell。
此外,本申请实施例中,还可以预先设置第二阈值,如果目标脚本文件的第一权值小于预设第二阈值,则确定该目标脚本文件不是WebShell。例如,可以依据经验值,将预设第一阈值设置为50%,若目标脚本文件的第一权值小于30%,则确定该目标脚本文件不为WebShell。
本申请实施例中,当目标脚本文件的第一权值介于预设第一阈值与预设第二阈值之间时,确定该目标脚本文件为疑似WebShell。
由上述实施例可见,该实施例可以对脚本文件进行语法分析,得到该脚本文件的信息熵及危险函数的占比值,之后通过信息熵及占比值来检测该脚本文件是否为WebShell,对于未知的WebShell,仍可以识别出,因此提高了检测的准确率。
如图2所示,图2是本申请根据一示例性实施例示出的另一种WebShell检测方法的流程图,当目标脚本文件为疑似WebShell时,该方法可以包括以下步骤:
在步骤201中,在获得目标脚本文件后,获得该目标脚本文件的信息熵。
在步骤202中,对目标脚本文件进行词法分析和语法分析,得到包含该目标脚本文件的完整信息的AST。
在步骤203中,使用预设的消除AST中冗余信息的算法,对包含目标脚本文件的完整信息的AST进行处理,得到消除冗余信息后的AST。
在步骤204中,获得该AST中危险函数的占比值,其中,该危险函数至少包括:用于代码执行的函数表达式或函数语句块、用于文件操作的函数表达式或函数语句块,及用于系统调用的函数表达式及函数语句块。
在步骤205中,对信息熵及危险函数的占比值进行加权求和,得到目标脚本文件的第一权值。
在步骤206中,在第一权值大于预设第一阈值的情况下,确定目标脚本文件为WebShell。
本申请实施例中的步骤201~步骤206中的内容,与图1所示实施例中的步骤101~步骤105中的内容类似,本申请实施例对此不再赘述,详情请见图1所示实施例中的内容。
在步骤207中,在第一权值大于预设第二阈值且小于预设第一阈值的情况下,将目标脚本文件放入沙盘运行,得到该目标脚本文件中所有函数的运行行为,其中,预设第一阈值大于预设第二阈值。
沙盘Sandbox是一种安全软件,可以将一个程序放入沙盘运行,这样它所创建修改删除的所有文件和注册表都会被虚拟化重定向,也就是说所有操作都是虚拟的,真实的文件和注册表不会被改动,这样可以确保病毒无法对系统关键部位进行改动破坏系统。
本申请实施例中,将WebShell放进沙盘,然后对通过AST中分析到的所有可执行的函数进行动态调用,来实现目标脚本文件在沙盘中的运行,从而得到所有函数的运行行为,即函数的动态行为。
在步骤208中,根据预设的危险行为确定规则,确定该运行行为中的危险行为,并计算危险行为的占比值。
本申请实施例中,危险行为可以包括:对文件进行修改、对系统进行调用等行为。本申请实施例中,危险行为的占比值=(危险行为的数量)/(运行行为的总数)。
本申请实施例中,通过计算危险行为的占比值,来评估目标脚本文件的动态风险值,其中,AST中危险行为的占比值越大,该目标脚本文件越有可能是WebShell。
在步骤209中,对第一权值及危险行为的占比值进行加权求和,得到目标脚本文件的第二权值。
本申请实施例中,可以直接将第一权值及危险行为的占比值进行求和,即:(第一权值)+(危险行为的占比值)=第二权值,得到目标脚本文件的第二权值。或者,也可以预先设置两个权重系数s和t,依据计算公式:(第一权值)*s+(危险行为的占比值)*t=第二权值,计算目标脚本文件的第二权值。
在步骤210中,在第二权值大于预设第一阈值的情况下,确定目标脚本文件为WebShell。
本申请实施例中,可以依据经验值,将预设第一阈值设置为50%,此时,若目标脚本文件的第二权值大于50%,则确定该目标脚本文件为WebShell。
由上述实施例可见,该实施例在目标脚本文件为疑似WebShell时,可以通过将目标脚本文件放入沙盘中运行,来获得目标脚本文件的动态风险值(即危险行为的占比值),之后通过第一权值及该占比值来检测该脚本文件是否为WebShell,对于疑似WebShell,仍可以识别出,因此提高了检测的准确率。
如图3所示,图3是本申请根据一示例性实施例示出的另一种WebShell检测方法的流程图,该方法可以包括以下步骤:
在步骤301中,在获得目标脚本文件后,判断该目标脚本文件中是否包含预设的攻击特征,若判断结果为是,则执行步骤302,否则执行303。
本申请实施例中,可以对海量的已识别出的WebShell进行数据挖掘、训练,提取攻击特征,之后利用该攻击特征判断目标脚本文件是否为WebShell,如果目标脚本文件中包含攻击特征,则确定该目标脚本文件为WebShell,如果目标脚本文件中不包含攻击特征,则使用步骤303~步骤307的技术手段,确定目标脚本文件是否为WebShell。
在步骤302中,确定目标脚本文件为WebShell。
在步骤303中,获得目标脚本文件的信息熵。
在步骤304中,生成目标脚本文件的抽象语法树AST。
在步骤305中,获得该AST中危险函数的占比值,其中,该危险函数至少包括:用于代码执行的函数表达式或函数语句块、用于文件操作的函数表达式或函数语句块,及用于系统调用的函数表达式及函数语句块。
在步骤306中,对信息熵及危险函数的占比值进行加权求和,得到目标脚本文件的第一权值。
在步骤307中,在第一权值大于预设第一阈值的情况下,确定目标脚本文件为WebShell。
本申请实施例中的步骤303~步骤307中的内容,与图1所示实施例中的步骤101~步骤105中的内容类似,本申请实施例对此不再赘述,详情请见图1所示实施例中的内容。
由上述实施例可见,针对黑客可以通过编码、加密、拆分WebShell,绕过WebShell检测引擎的方式,本实施例可以有效的做出识别,从而对实现WebShell做出精确的判定。
应当注意,尽管在附图中以特定顺序描述了本申请实施例方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
与前述WebShell检测方法的实施例对应,本申请实施例还提供了WebShell检测装置的实施例。
如图4所示,图4是本申请根据一示例性实施例示出的一种WebShell检测装置的框图,所述装置可以包括:
信息熵获得模块410,用于在获得目标脚本文件后,获得所述目标脚本文件的信息熵;
AST生成模块420,用于生成所述目标脚本文件的抽象语法树AST;
危险函数占比值获得模块430,用于获得所述AST生成模块420生成的AST中危险函数的占比值,其中,所述危险函数至少包括:用于代码执行的函数表达式或函数语句块、用于文件操作的函数表达式或函数语句块,及用于系统调用的函数表达式及函数语句块;
第一权值获得模块440,用于对所述信息熵获得模块410获得的信息熵及所述危险函数占比值获得模块430获得的危险函数的占比值进行加权求和,得到所述目标脚本文件的第一权值;
第一确定模块450,用于在所述第一权值获得模块440获得的第一权值大于预设第一阈值的情况下,确定所述目标脚本文件为WebShell。
由上述实施例可见,该实施例可以对脚本文件进行语法分析,得到该脚本文件的信息熵及危险函数的占比值,之后通过信息熵及占比值来检测该脚本文件是否为WebShell,对于未知的WebShell,仍可以识别出,因此提高了检测的准确率。
如图5所示,图5是本申请根据一示例性实施例示出的另一种WebShell检测装置的框图,该实施例可以在图4所示实施例的基础上,所述AST生成模块420,可以包括:
第一AST生成子模块421,用于对所述目标脚本文件进行词法分析和语法分析,得到包含所述目标脚本文件的完整信息的AST。
如图6所示,图6是本申请根据一示例性实施例示出的另一种WebShell检测装置的框图,该实施例可以在图4所示实施例的基础上,所述AST生成模块420,可以包括:
第二AST生成子模块422,用于对所述目标脚本文件进行词法分析和语法分析,得到包含所述目标脚本文件的完整信息的AST;
第三AST生成子模块423,用于使用预设的消除AST中冗余信息的算法,对所述第二AST生成子模块422生成的包含所述目标脚本文件的完整信息的AST进行处理,得到消除冗余信息后的AST。
如图7所示,图7是本申请根据一示例性实施例示出的另一种WebShell检测装置的框图,该实施例可以在图4~图6所示任一实施例的基础上,所述装置还可以包括:
运行行为获得模块710,用于在所述第一权值获得模块440获得的第一权值大于预设第二阈值且小于所述预设第一阈值的情况下,将所述目标脚本文件放入沙盘运行,得到所述目标脚本文件中所有函数的运行行为,其中,所述预设第一阈值大于所述预设第二阈值;
危险行为占比值获得模块720,用于根据预设的危险行为确定规则,确定所述运行行为中的危险行为,并计算所述危险行为的占比值;
第二权值获得模块730,用于对所述第一权值获得模块440获得的第一权值及所述危险行为占比值获得模块720获得的危险行为的占比值进行加权求和,得到所述目标脚本文件的第二权值;
第一确定模块740,用于在所述第二权值获得模块730获得的第二权值大于所述预设第一阈值的情况下,确定所述目标脚本文件为WebShell。
如图8所示,图8是本申请根据一示例性实施例示出的另一种WebShell检测装置的框图,该实施例可以在图4~图7所示任一实施例的基础上,所述装置还可以包括:
判断模块810,用于在获得目标脚本文件后,判断所述目标脚本文件中是否包含预设的攻击特征,并在判断结果为否的情况下,触发所述信息熵获得模块410执行所述获得所述目标脚本文件的信息熵的操作;
第三确定模块820,用于在所述判断模块810的判断结果为是的情况下,确定所述目标脚本文件为WebShell。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本申请提供的WebShell检测装置的实施例可以应用在网络设备,例如,路由器上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在网络设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图9所示,图9为本申请根据一示例性实施例示出的一种WebShell检测装置所在网络设备的一种硬件结构图,除了图9所示的处理器910、内存920、网络接口930、以及非易失性存储器940之外,实施例中装置所在的网络设备通常根据该网络设备的实际功能,还可以包括其他硬件,对此不再赘述。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本申请实施例的其它实施方案。本申请实施例旨在涵盖本申请实施例的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请实施例未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请实施例的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请实施例并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请实施例的范围仅由所附的权利要求来限制。
Claims (8)
1.一种WebShell检测方法,其特征在于,所述方法包括:
在获得目标脚本文件后,获得所述目标脚本文件的信息熵;所述信息熵的大小反映所述脚本文件是否进行了加密、混淆及压缩处理;
生成所述目标脚本文件的抽象语法树AST;
获得所述AST中危险函数的占比值,其中,所述危险函数至少包括:用于代码执行的函数表达式或函数语句块、用于文件操作的函数表达式或函数语句块,及用于系统调用的函数表达式及函数语句块;
对所述信息熵及所述危险函数的占比值进行加权求和,得到所述目标脚本文件的第一权值;
在所述第一权值大于预设第一阈值的情况下,确定所述目标脚本文件为WebShell;
所述方法还包括:
在所述第一权值大于预设第二阈值且小于所述预设第一阈值的情况下,将所述目标脚本文件放入沙盘运行,得到所述目标脚本文件中所有函数的运行行为,其中,所述预设第一阈值大于所述预设第二阈值;
根据预设的危险行为确定规则,确定所述运行行为中的危险行为,并计算所述危险行为的占比值;
对所述第一权值及所述危险行为的占比值进行加权求和,得到所述目标脚本文件的第二权值;
在所述第二权值大于所述预设第一阈值的情况下,确定所述目标脚本文件为WebShell。
2.根据权利要求1所述的方法,其特征在于,所述生成所述目标脚本文件的抽象语法树AST,包括:
对所述目标脚本文件进行词法分析和语法分析,得到包含所述目标脚本文件的完整信息的AST。
3.根据权利要求1所述的方法,其特征在于,所述生成所述目标脚本文件的抽象语法树AST,包括:
对所述目标脚本文件进行词法分析和语法分析,得到包含所述目标脚本文件的完整信息的AST;
使用预设的消除AST中冗余信息的算法,对所述包含所述目标脚本文件的完整信息的AST进行处理,得到消除冗余信息后的AST。
4.根据权利要求1所述的方法,其特征在于,在所述获得所述目标脚本文件的信息熵之前,还包括:
判断所述目标脚本文件中是否包含预设的攻击特征;
若所述目标脚本文件中包含预设的攻击特征,则确定所述目标脚本文件为WebShell;
若所述目标脚本文件中不包含预设的攻击特征,则执行所述获得所述目标脚本文件的信息熵的步骤。
5.一种WebShell检测装置,其特征在于,所述装置包括:
信息熵获得模块,用于在获得目标脚本文件后,获得所述目标脚本文件的信息熵;
AST生成模块,用于生成所述目标脚本文件的抽象语法树AST;
危险函数占比值获得模块,用于获得所述AST生成模块生成的AST中危险函数的占比值,其中,所述危险函数至少包括:用于代码执行的函数表达式或函数语句块、用于文件操作的函数表达式或函数语句块,及用于系统调用的函数表达式及函数语句块;
第一权值获得模块,用于对所述信息熵获得模块获得的信息熵及所述危险函数占比值获得模块获得的危险函数的占比值进行加权求和,得到所述目标脚本文件的第一权值;
第一确定模块,用于在所述第一权值获得模块获得的第一权值大于预设第一阈值的情况下,确定所述目标脚本文件为WebShell;
所述装置还包括:
运行行为获得模块,用于在所述第一权值获得模块获得的第一权值大于预设第二阈值且小于所述预设第一阈值的情况下,将所述目标脚本文件放入沙盘运行,得到所述目标脚本文件中所有函数的运行行为,其中,所述预设第一阈值大于所述预设第二阈值;
危险行为占比值获得模块,用于根据预设的危险行为确定规则,确定所述运行行为中的危险行为,并计算所述危险行为的占比值;
第二权值获得模块,用于对所述第一权值获得模块获得的第一权值及所述危险行为占比值获得模块获得的危险行为的占比值进行加权求和,得到所述目标脚本文件的第二权值;
所述第一确定模块还用于在所述第二权值获得模块获得的第二权值大于所述预设第一阈值的情况下,确定所述目标脚本文件为WebShell。
6.根据权利要求5所述的装置,其特征在于,所述AST生成模块,包括:
第一AST生成子模块,用于对所述目标脚本文件进行词法分析和语法分析,得到包含所述目标脚本文件的完整信息的AST。
7.根据权利要求5所述的装置,其特征在于,所述AST生成模块,包括:
第二AST生成子模块,用于对所述目标脚本文件进行词法分析和语法分析,得到包含所述目标脚本文件的完整信息的AST;
第三AST生成子模块,用于使用预设的消除AST中冗余信息的算法,对所述第二AST生成子模块生成的包含所述目标脚本文件的完整信息的AST进行处理,得到消除冗余信息后的AST。
8.根据权利要求5所述的装置,其特征在于,所述装置还包括:
判断模块,用于在获得目标脚本文件后,判断所述目标脚本文件中是否包含预设的攻击特征,并在判断结果为否的情况下,触发所述信息熵获得模块执行所述获得所述目标脚本文件的信息熵的操作;
第三确定模块,用于在所述判断模块的判断结果为是的情况下,确定所述目标脚本文件为WebShell。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710090683.8A CN106911686B (zh) | 2017-02-20 | 2017-02-20 | WebShell检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710090683.8A CN106911686B (zh) | 2017-02-20 | 2017-02-20 | WebShell检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106911686A CN106911686A (zh) | 2017-06-30 |
CN106911686B true CN106911686B (zh) | 2020-07-07 |
Family
ID=59208586
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710090683.8A Active CN106911686B (zh) | 2017-02-20 | 2017-02-20 | WebShell检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106911686B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109462575B (zh) * | 2018-09-28 | 2021-09-07 | 东巽科技(北京)有限公司 | 一种webshell检测方法及装置 |
CN110034921B (zh) * | 2019-04-18 | 2022-04-15 | 成都信息工程大学 | 基于带权模糊hash的webshell检测方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101017458A (zh) * | 2007-03-02 | 2007-08-15 | 北京邮电大学 | 基于源代码静态分析的软件安全代码分析器及其检测方法 |
CN102647421A (zh) * | 2012-04-09 | 2012-08-22 | 北京百度网讯科技有限公司 | 基于行为特征的web后门检测方法和装置 |
CN103294952A (zh) * | 2012-11-29 | 2013-09-11 | 北京安天电子设备有限公司 | 一种基于页面关系检测webshell的方法及系统 |
CN104468477A (zh) * | 2013-09-16 | 2015-03-25 | 杭州迪普科技有限公司 | 一种WebShell的检测方法及系统 |
CN104967616A (zh) * | 2015-06-05 | 2015-10-07 | 北京安普诺信息技术有限公司 | 一种Web服务器中的WebShell文件的检测方法 |
CN105046154A (zh) * | 2015-08-13 | 2015-11-11 | 浪潮电子信息产业股份有限公司 | 一种webshell检测方法及装置 |
CN105100065A (zh) * | 2015-06-26 | 2015-11-25 | 北京奇虎科技有限公司 | 基于云的webshell攻击检测方法、装置及网关 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101291782B1 (ko) * | 2013-01-28 | 2013-07-31 | 인포섹(주) | 웹쉘 탐지/대응 시스템 |
-
2017
- 2017-02-20 CN CN201710090683.8A patent/CN106911686B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101017458A (zh) * | 2007-03-02 | 2007-08-15 | 北京邮电大学 | 基于源代码静态分析的软件安全代码分析器及其检测方法 |
CN102647421A (zh) * | 2012-04-09 | 2012-08-22 | 北京百度网讯科技有限公司 | 基于行为特征的web后门检测方法和装置 |
CN103294952A (zh) * | 2012-11-29 | 2013-09-11 | 北京安天电子设备有限公司 | 一种基于页面关系检测webshell的方法及系统 |
CN104468477A (zh) * | 2013-09-16 | 2015-03-25 | 杭州迪普科技有限公司 | 一种WebShell的检测方法及系统 |
CN104967616A (zh) * | 2015-06-05 | 2015-10-07 | 北京安普诺信息技术有限公司 | 一种Web服务器中的WebShell文件的检测方法 |
CN105100065A (zh) * | 2015-06-26 | 2015-11-25 | 北京奇虎科技有限公司 | 基于云的webshell攻击检测方法、装置及网关 |
CN105046154A (zh) * | 2015-08-13 | 2015-11-11 | 浪潮电子信息产业股份有限公司 | 一种webshell检测方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106911686A (zh) | 2017-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11716348B2 (en) | Malicious script detection | |
US10089464B2 (en) | De-obfuscating scripted language for network intrusion detection using a regular expression signature | |
Afonso et al. | Identifying Android malware using dynamically obtained features | |
US10474811B2 (en) | Systems and methods for detecting malicious code | |
US20170316202A1 (en) | Rasp for scripting languages | |
CN106326737B (zh) | 用于检测可在虚拟堆栈机上执行的有害文件的系统和方法 | |
US11288376B2 (en) | Identifying hard-coded secret vulnerability inside application source code | |
CN106250761B (zh) | 一种识别web自动化工具的设备、装置及方法 | |
Gupta et al. | A client‐server JavaScript code rewriting‐based framework to detect the XSS worms from online social network | |
Li et al. | Large-scale third-party library detection in android markets | |
CN106911686B (zh) | WebShell检测方法及装置 | |
Gupta et al. | Evaluation and monitoring of XSS defensive solutions: a survey, open research issues and future directions | |
Bokolo et al. | Hybrid analysis based cross inspection framework for android malware detection | |
US10515219B2 (en) | Determining terms for security test | |
Royo et al. | Malware security evasion techniques: an original keylogger implementation | |
Gupta et al. | DOM-guard: defeating DOM-based injection of XSS worms in HTML5 web applications on Mobile-based cloud platforms | |
CN112187703B (zh) | 数据处理的方法及装置 | |
Mohamed et al. | Digital forensic analysis of web-browser based attacks | |
Beunder | Correlating features of malicious software to increase insight in attribution | |
Afonso et al. | A hybrid system for analysis and detection of web-based client-side malicious code | |
KR20240021677A (ko) | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 컴퓨터 판독 가능한 저장매체 | |
CN115292708A (zh) | 基于字节码的执行权限分析方法及装置 | |
CN115455415A (zh) | WebShell检测方法、计算机设备及计算机存储介质 | |
Afonso et al. | Identifying Android malware using dynamically obtained |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |