1.一种WebShell检测方法,所述检测方法基于变量回溯和抽象语法树,针对目录中的多个文件进行WebShell检测,包括可疑文件筛选过程、特征匹配检测过程、抽象语法树分析检测过程、无关代码剔除过程和数学公式检测过程,输出确定的WebShell文件;依次包括如下步骤:
A.可疑文件筛选过程:读取网站目录中文件,通过筛选过滤出可疑文件,得到可疑文件集T:
B.特征匹配检测过程:对筛选出的可疑文件集T,将T中的可疑文件与常见WebShell特征库H进行特征匹配检测,将匹配成功的文件识别为WebShell文件;将匹配不成功的剩余文件记为可疑文件集Q,再进行抽象语法树分析检测过程;
C.抽象语法树分析检测过程包括如下步骤:
C1.对于可疑文件集Q中加密、变形的可疑文件进行变量回源、函数回源或解码操作;
C2.利用抽象语法树分析所述疑文件集Q中的可疑文件;
C3.将所述疑文件集Q中的可疑文件与特征库I进行匹配;所述特征库I是通过对WebShell文件经常利用的函数进行抽取形成的特征库;将匹配成功的文件识别为WebShell文件;将匹配不成功的剩余文件记为可疑文件集S,再进行无关代码剔除过程;
D.无关代码剔除过程:读取可疑文件集S中的可疑文件,剔除出无关代码;将所述剔除出无关代码之后的文件,再与特征库K进行匹配;所述特征库K具体是对已知的WebShell文件进行源码分析,剔除出无关代码后而形成;将匹配成功的文件识别为WebShell文件;将匹配不成功的剩余文件记为可疑文件集R,再进行数学公式检测过程;
E.数学公式检测过程,具体包括以下步骤:
E1.根据信息熵ie、最长单词数lw和重合指数ic,计算得到可疑文件集R中的文件的代码混淆程度值;
E2.设定混淆程度阈值,当文件的代码混淆程度值大于所述设定的混淆程度阈值时,将该文件识别为WebShell文件;反之,将该文件识别为不是WebShell文件;
至此完成检测,输出确定的WebShell文件。
2.如权利要求1所述检测方法,其特征是,步骤A具体通过如下步骤得到可疑文件集:
A1.根据文件的创建时间筛选出WebShell可疑文件,将所述可疑文件的集合记为T1;
A2.根据文件的相互关联筛选出WebShell可疑文件,将所述可疑文件的集合记为T2;
A3.根据文件类型筛选出WebShell可疑文件,将所述可疑文件的集合记为T3;
A4.取T1与T2的并集后,再与T3取交集,得到最终的可疑文件集T,即T=(T1∪T2)∩T3。
3.如权利要求2所述检测方法,其特征是,所述根据文件的创建时间筛选出可疑文件,具体是:首先根据文件创建时间进行分组;设置文件创建时间的间隔阈值,将两个文件创建时间的时间间隔小于所设置的间隔阈值的文件放到一个分组中,通过这种方式将所有文件进行分组;计算每个分组中的文件个数;再设置文件个数阈值,当分组的文件个数小于等于文件个数阈值时,将这组文件识别为可疑WebShell文件,记录在时间检测可疑文件集T1中。
4.如权利要求2所述检测方法,其特征是,所述根据文件的相互关联筛选出WebShell可疑文件,具体是:设定引用次数阈值,将引用次数小于引用次数阈值的文件分为一组,引用次数大于等于引用次数阈值的文件分为另一组;再将引用次数小于引用次数阈值的文件识别为可疑WebShell文件,记录在引用检测可疑文件集T2中。
5.如权利要求2所述检测方法,其特征是,所述根据文件类型筛选出可疑文件,具体是:将执行类文件类型识别为WebShell可疑文件,将所述可疑文件的集合记为T3;所述执行类文件类型包括asp、jsp、php、txt和pl类型。
6.如权利要求1所述检测方法,其特征是,所述数学公式检测过程中,信息熵ie的取值通过式1计算得到:
ie=ie*ie/6 (式1)
式1中,ie=-log2Pi;Pi为系统S内存在多个时间S={E1,…,En}时,每个事件的几率分布,P={P1,..,Pi,…,Pn}。
7.如权利要求1所述检测方法,其特征是,所述数学公式检测过程中,重合指数ic通过式2计算得到:
ic=0.08/ic (式2)
式2中,ic=Σ(fi*(fi-1))/N(N-1);其中,fi代表样本中某个字母出现的比率;N代表字母出现在样本中的个数。
8.如权利要求1所述检测方法,其特征是,所述数学公式检测过程中,最长单词数lw根据文件中最长的单词的个数来赋值;当最长单词数大于1000时,赋予lw的最终值为15;当最长单词数小于等于1000且大于500时,赋予lw的最终值为10;当最长单词数小于等于500且大于300时,赋予lw的最终值为5;当最长单词数小于等于300且大于等于0时,赋予lw的最终值为0。
9.如权利要求1所述检测方法,其特征是,步骤E1将信息熵ie、最长单词数lw和重合指数ic三者之和作为文件的混淆程度权值F,即F=ic+ie+lw。
10.一种基于变量回溯和抽象语法树的Webshell检测装置,所述检测装置包括:可疑文件筛选单元、特征匹配单元、抽象语法树检测分析单元、剔除无关代码单元和数学公式检测单元;其中:
可疑文件筛选单元,用于筛选得到WebShell文件的可疑文件集,包括文件类型筛选子单元、创建时间筛选子单元和文件引用筛选子单元;
特征匹配单元,用于建立特征库,并将特征库与可疑文件筛选单元中筛选出的可疑文件集进行匹配,检测出一部分WebShell文件;余下的可疑文件为加密或变形的文件,构成新的可疑文件集,输入到抽象语法树检测分析单元;
抽象语法树检测分析单元,通过对输入的可疑文件集中的文件进行函数回源、变量回源、解码操作以及抽象语法树分析检测,检测出一部分WebShell文件;余下的可疑文件构成新的可疑文件集,输入到剔除无关代码单元;
剔除无关代码单元,通过剔除可疑文件中的无关代码并提取出已知的WebShell文件中的无关代码,将剔除无关代码后的可疑文件与提取出无关代码后的已知WebShell文件进行比较,检测出一部分WebShell文件;余下的可疑文件构成新的可疑文件集,输入到数学公式检测单元;
数学公式检测单元,通过信息熵、最长单词数和重叠指数计算得到可疑文件中的混淆程度,检测出一部分WebShell文件;余下的可疑文件则不是WebShell文件;
通过以上单元实现对WebShell文件的检测。