一种webshell检测方法、装置及系统与流程

文档序号:17938480发布日期:2019-06-18 22:50阅读:198来源:国知局
一种webshell检测方法、装置及系统与流程

本发明涉及计算机数据处理技术领域,特别地,涉及一种webshell检测方法、装置及系统。



背景技术:

当前,网络安全形势严峻,通过phpwebshell进行入侵的事件时有发生。目前对于phpwebshell的检测技术主要依赖基于静态特征规则的检测技术,这种检测方法准确率通常依赖于特征库。特征库不可避免的存在滞后性,对于新型的webshell较难进行准确的识别。同时,由于php语言具有高度灵活性,基于特征规则的检测可以通过多种方式进行绕过。例如,攻击者为了避免webshell被检测出来,通常会使用混淆技术,如利用加解密技术、多重编码技术、代码中插入注释符等无用信息、字符串连接替换技术、化整为散技术等,将一些特征隐藏起来。从而影响了传统的静态特征检测技术对混淆后的webshell或者新型的webshell的检测准确性。



技术实现要素:

本说明书实施例的目的在于提供一种webshell检测方法、装置及系统,可以提高phpwebshell检测的准确性。

本说明书提供一种webshell检测方法、装置及系统是包括如下方式实现的:

一种webshell检测方法,包括:

获取待检测网页的php脚本数据对应的第一中间字节码数据;

利用构建的监督学习算法对所述第一中间字节码数据进行识别,获得所述待检测网页的webshell检测结果,其中,所述监督学习算法包括对确定为webshell的php脚本数据以及确定为正常的php脚本数据对应的第二中间字节码数据进行训练得到的webshell检测模型。

本说明书提供的所述方法的另一个实施例中,所述利用构建的监督学习算法对所述第一中间字节码数据进行识别,包括:

基于预设的分词库,利用tf-idf算法对所述第一中间字节码数据进行特征提取,获得所述待检测网页的特征数据,其中,所述分词库包括对确定为webshell的php脚本数据以及确定为正常的php脚本数据对应的第二中间字节码数据进行分词处理后获得分词数据;

利用构建的监督学习算法对所述待检测网页的特征数据进行识别。

本说明书提供的所述方法的另一个实施例中,所述利用tf-idf算法对所述第一中间字节码数据进行特征提取,包括:

将所述第一中间字节码数据进行分词处理,获得所述待检测网页的php脚本数据对应的第一分词集合;

利用tf-idf算法计算所述分词库中每个词相对所述第一分词集合的tf-idf值;

将所述tf-idf值按照相应的词在分词库中的位置进行一一对应,获得由tf-idf值组成的向量,将该向量作为所述待检测网页的特征向量。

本说明书提供的所述方法的另一个实施例中,所述预设的分词库采用下述方式构建:

获取确定为webshell的php脚本数据以及确定为正常的php脚本数据,获得样本集合;

将所述样本集合中的各脚本数据转换成中间字节码数据,获得各脚本数据对应的第二中间字节码数据;

对所述第二中间字节码数据进行分词处理,获得各脚本数据对应的第二分词集合;

将所述第二分词集合进行融合处理,获得分词库。

本说明书提供的所述方法的另一个实施例中,所述webshell检测模型采用下述方式训练得到:

利用tf-idf算法计算所述分词库中每个词相对所述第二分词集合的tf-idf值,获得相应脚本数据的特征向量;

利用监督学习算法对所述确定为webshell的php脚本数据以及确定为正常的php脚本数据所对应的特征向量进行学习,获得webshell检测模型。

本说明书提供的所述方法的另一个实施例中,所述待检测网页的webshell检测结果包括待检测网页是否属于webshell网页或者属于webshell网页的概率。

另一方面,本说明书还提供一种webshell检测装置,所述装置包括:

数据获取模块,用于获取待检测网页的php脚本数据对应的第一中间字节码数据;

检测模块,用于利用构建的监督学习算法对所述第一中间字节码数据进行识别,获得所述待检测网页的webshell检测结果,其中,所述监督学习算法包括对确定为webshell的php脚本数据以及确定为正常的php脚本数据对应的第二中间字节码数据进行训练得到的webshell检测模型。

本说明书提供的所述装置的另一个实施例中,所述检测模块包括:

特征提取单元,用于基于预设的分词库,利用tf-idf算法对所述第一中间字节码数据进行特征提取,获得所述待检测网页的特征数据,其中,所述分词库包括对确定为webshell的php脚本数据以及确定为正常的php脚本数据对应的第二中间字节码数据进行分词处理后获得分词数据;

检测单元,用于利用构建的监督学习算法对所述待检测网页的特征数据进行识别。

本说明书提供的所述装置的另一个实施例中,所述特征提取单元包括:

第一分词处理子单元,用于将所述第一中间字节码数据进行分词处理,获得所述待检测网页的php脚本数据对应的第一分词集合;

计算子单元,用于利用tf-idf算法计算所述分词库中每个词相对所述第一分词集合的tf-idf值;

特征确定子单元,用于将所述tf-idf值按照相应的词在分词库中的位置进行一一对应,获得由tf-idf值组成的向量,将该向量作为所述待检测网页的特征向量。

本说明书提供的所述装置的另一个实施例中,所述检测模块包括分词库构建单元,其中,所述分词库构建单元包括:

样本数据获取子单元,用于获取确定为webshell的php脚本数据以及确定为正常的php脚本数据,获得样本集合;

转换子单元,用于将所述样本集合中的各脚本数据转换成中间字节码数据,获得各脚本数据对应的第二中间字节码数据;

第二分词处理子单元,用于对所述第二中间字节码数据进行分词处理,获得各脚本数据对应的第二分词集合;

融合子单元,用于将所述第二分词集合进行融合处理,获得分词库。

本说明书提供的所述装置的另一个实施例中,所述检测模块还包括模型构建单元,其中,所述模型构建单元包括:

特征提取子单元,用于利用tf-idf算法计算所述分词库中每个词相对所述第二分词集合的tf-idf值,获得相应脚本数据的特征向量;

模型构建子单元,用于利用监督学习算法对所述确定为webshell的php脚本数据以及确定为正常的php脚本数据所对应的特征向量进行学习,获得webshell检测模型。

另一方面,本说明书还提供一种webshell检测设备,包括处理器及用于存储处理器可执行指令的存储器,所述指令被所述处理器执行时实现包括以下步骤:

获取待检测网页的php脚本数据对应的第一中间字节码数据;

利用构建的监督学习算法对所述第一中间字节码数据进行识别,获得所述待检测网页的webshell检测结果,其中,所述监督学习算法包括对确定为webshell的php脚本数据以及确定为正常的php脚本数据对应的第二中间字节码数据进行训练得到的webshell检测模型。

另一方面,本说明书还提供一种webshell检测系统,包括至少一个处理器以及存储计算机可执行指令的存储器,所述处理器执行所述指令时实现上述任意一个实施例所述方法的步骤。

本说明书一个或多个实施例提供的webshell检测方法、装置及系统,可以通过获取php脚本数据所对应的中间字节码数据,利用中间字节码数据来辅助进行phpwebshell的检测。中间字节码数据可以快速精确定位php脚本中可控函数及参数的调用,从而可以辅助确定出php脚本文件中是否包含webshell数据。然后,进一步基于中间字节码数据,利用监督学习算法智能检测webshell,从而可以提高对混淆后的webshell或者新型的webshell检测的准确性。

附图说明

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

图1为本说明书提供的一种webshell检测方法实施例的流程示意图;

图2为本说明书提供的另一种webshell检测方法实施例的流程示意图;

图3为本说明书提供的一个实施例中的webshell检测模型构建流程示意图;

图4为本说明书提供的一种webshell检测装置实施例的模块结构示意图;

图5为本说明书提供的另一种webshell检测装置实施例的模块结构示意图;

图6为根据本说明书的一个示例性实施例的服务器的示意结构图。

具体实施方式

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

当前,网络安全形势严峻,通过php(personalhomepagehypertextpreprocessor,超文本预处理器)webshell(网页木马)进行入侵的事件时有发生。目前对于phpwebshell的检测技术主要依赖基于静态特征规则的检测技术。

传统的静态特征检测是指对脚本文件中所使用的关键词、高危函数、文件修改的时间、文件权限、文件的所有者以及和其它文件的关联性等多个维度的特征进行检测。即先建立一个恶意字符串特征库,例如:“组专用大马|提权|木马|php\s?反弹提权cmd执行”,“wscript.shell、shell.application、eval()、excute()、setserver、run()、exec()、shellexcute()”;同时对web(worldwideweb,全球广域网)文件修改时间,文件权限以及文件所有者等进行确认。通常情况下web文件不会包含上述特征或者特征异常,从而可以通过与特征库的比对检索出高危脚本文件。

但通常特征库不可避免的存在滞后性,对于新型的webshell无法进行识别。同时,攻击者为了避免webshell被检测出来,通常会使用混淆技术,将一些特征隐藏起来。对于隐藏混淆后的webshell,传统的静态特征检测的技术准确率较低,容易误报。

相应的,本说明书实施例提供了一种webshell检测方法,可以通过获取php脚本数据所对应的中间字节码数据,利用中间字节码数据来辅助进行phpwebshell的检测。中间字节码数据可以快速精确定位php脚本中可控函数及参数的调用,从而可以辅助确定出php脚本文件中是否包含webshell数据。然后,进一步基于中间字节码数据,利用监督学习算法智能检测webshell,从而可以提高对混淆后的webshell或者新型的webshell检测的准确性。

图1是本说明书提供的所述一种webshell检测方法实施例流程示意图。虽然本说明书提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者部分合并后更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本说明书实施例或附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置、服务器或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境、甚至包括分布式处理、服务器集群的实施环境)。

具体的一个实施例如图1所示,本说明书提供的webshell检测方法的一个实施例中,所述方法可以包括:

s102:获取待检测网页的php脚本数据对应的第一中间字节码数据。

可以获取待检测网页的php脚本数据,并进一步获取php脚本数据对应的第一中间字节码数据。网页的php脚本在运行的时候,解析器会对php脚本进行词法、语法分析,然后编译成中间字节码(opcode)来执行。

php是一种解释型语言,代码被翻译为中间字节码(opcode)由zend引擎解析执行。每个opcode对应zend底层的一个处理函数,zend引擎最终执行这个处理函数。例如,即使webshell将eval类的函数隐藏在混淆或者加密过的函数中,最终仍然会调用include_or_eval,eval格式的语句。同理,在webshell进行最后一步调用system此类内部函数时,也是会调用某些具有固定格式的语句,比如do_fcall‘system’此类格式的语句。

opcode可以在一定程度上还原混淆、编码和加密后的php代码。通过获取php脚本对应opcode,将opcode作为一个有效的webshell检测辅助数据。通过对opcode进行分析,可以快速精确定位php脚本中可控函数及参数的调用,从而可以准确的确定出php脚本文件中是否包含webshell数据,或者php脚本属于高危脚本文件的概率有多大。

s104:利用构建的监督学习算法对所述第一中间字节码数据进行识别,获得所述待检测网页的webshell检测结果。

所述监督学习算法可以包括对确定为webshell的php脚本数据以及确定为正常的php脚本数据对应的第二中间字节码数据进行训练得到的webshell检测模型。

一些实施方式中,可以预先收集大量的被确定为webshell网页的php脚本文件,以及被确定为正常网页的php脚本文件,构建样本集合。

然后,可以将样本集合中的各脚本文件转换从opcode数据形式。为了与待检测网页所对应的opcode数据进行区分表述,此处可以将该opcode数据文件定义为第二中间字节码数据。从而获得带有标签的opcode文件:phpwebshell脚本(webshell网页的php脚本文件)对应的opcode文件,以及正常php脚本(被确定为正常网页的php脚本文件)对应的opcode文件。

然后,可以利用监督学习算法对所述带有标签的opcode文件进行学习,获得webshell检测模型。

具体检测时,可以将待检测网页的php脚本数据对应的第一中间字节码数据输入webshell检测模型进行识别,获得输出结果。所述输出结果可以包括待检测网页的php脚本属于webshell脚本还是正常php脚本、或者属于webshell脚本的概率等。一些实施方式中,所述输出结果也可以包括待检测网页是否属于webshell网页或者属于webshell网页的概率等。

图2表示本说明书一个或者多个实施例中提供的另一种webshell检测方法实施例流程示意图。如图2所示,本说明书一个或者多个实施例中,可以采用下述方法对所述第一中间字节码数据进行识别:

s1042:基于预设的分词库,利用tf-idf算法对所述第一中间字节码数据进行特征提取,获得所述待检测网页的特征数据;

s1044:利用构建的监督学习算法对所述待检测网页的特征数据进行识别。

所述分词库可以包括对确定为webshell的php脚本数据以及确定为正常的php脚本数据对应的第二中间字节码数据进行分词处理后获得分词数据。需要说明的是,所述第一中间字节码数据以及第二中间字节码数据中的“第一”、“第二”仅仅是为了区分表述而做的定义,对其具体内容并不做限定。

所述分词处理可以包括将opcode数据中的语句进行切分处理,切分成单个词的形式。如对于opcode数据中函数语句“echo***、return***、recv***、conca***、do_fcall***t”,进行分词处理后,可以获得“echo”、“do_fcall”、“return”等单个词。本说明书实施例中,可以将分词处理后获得的一系列单个词称为分词数据。

本说明书的一个实施例中,可以采用下述方式预先获得分词库:

获取确定为webshell的php脚本数据以及确定为正常的php脚本数据,获得样本集合;

将所述样本集合中的各脚本数据转换成中间字节码数据,获得各脚本数据对应的第二中间字节码数据;

对所述第二中间字节码数据进行分词处理,获得各脚本数据对应的第二分词集合;

将所述第二分词集合进行融合处理,获得分词库。

可以获取大量的被确定为webshell网页的php脚本文件以及被确定为正常网页的php脚本文件,获得样本集合。然后,可以对样本集合中的各脚本文件转换成opcpde数据形式,获得每个脚本文件对应的opcode数据文件。

然后,可以对任意一个opcode数据文件进行分词处理,将分词处理后获得的单个词放到一个集合中,获得相应opcode数据的分词集合。相应的,可以将此处获得分词集合定义为第二分词集合,以便于区分表述。

分词处理后,可以获得相应脚本文件所对应的第二分词集合,标记为di。假设样本集合中的所有脚本文件的个数为n,则可以将所有脚本文件对应的分词集合放到一个集合中,获得总分词集合d:d={d1,d2,…,dn}。

一些实施方式中,可以将样本集合对应的所有脚本文件的分词集合进行融合。即将d1,d2,…,dn中的所有词放到一个集合中,形成一个分词库h,且分词库h中的各词不重合。

一些实施方式中,可以基于所述分词库h,利用tf-idf算法对所述第一中间字节码数据进行特征提取,获得所述待检测网页的特征数据。

所述tf-idf(termfrequency–inversedocumentfrequency)中tftermfrequency)的意思是词频(,idf(inversedocumentfrequency)的意思是逆向文件频率。

本说明书的一个实施例中,可以采用下述方式对所述第一中间字节码数据进行特征提取:

将所述第一中间字节码数据进行分词处理,获得所述待检测网页的php脚本数据对应的第一分词集合;

利用tf-idf算法计算所述分词库中每个词相对所述第一分词集合的tf-idf值;

将所述tf-idf值按照相应的词在分词库中的位置进行一一对应,获得由tf-idf值组成的向量,将该向量作为所述待检测网页的特征向量。

可以先对待检测网页的php脚本数据对应的第一中间字节码数据进行分词处理,获得所述待检测网页的php脚本数据对应的第一分词集合d。

可以计算分词库中每个词w在d中的词频tf。tf可以表示为词w在d中出现次数count(w,d)和d中总词数size(d)的比值:tf(w,d)=count(w,d)/size(d)。

同时,还可以计算分词库中每个词w在总分词集合d中的idf。idf可以表示为分词集合总数n与包含词w的分词集合数docs(w,d)比值的对数:idf=log(n/docs(w,d))。

相应的,词w的tf-idf值可以表示为:tf-idf=tf*idf。

依次类推,可以计算出分词库中每个词相对于分词集合d的tf-idf值。

一些实施方式中,可以预先确定中各词的位置,将分词库中每个词相对于d的if-idf值按照分词库中各词的位置进行依次对应,形成一个由if-idf值组成的向量m。可以将获得的向量m作为待检测网页的特征向量。

本说明书的一个或者多个实施例中,所述webshell检测模型可以采用下述方式训练得到:

利用tf-idf算法计算所述分词库中每个词相对所述第二分词集合的tf-idf值,获得相应脚本数据的特征向量;

利用监督学习算法对所述确定为webshell的php脚本数据以及确定为正常的php脚本数据所对应的特征向量进行学习,获得webshell检测模型。

如图3所示,图3表示本说明书一个实施例中的webshell检测模型构建流程示意图。

具体实施时,样本集合获取、中间字节码转换以及分词处理后的结果可以直接应用分词库构建后获得结果。然后,可以基于所述分词库h以及总分词集合d对样本集合中的各脚本文件进行特征提取。一些实施方式中,可以利用tf-idf算法对各脚本文件进行特征提取。

可以计算分词库中每个词w在di中的词频tf。tf可以表示为词w在di中出现次数count(w,di)和di中总词数size(di)的比值:tf(w,di)=count(w,di)/size(di);

同时,还可以计算分词库中每个词w在总分词集合d中的idf。idf可以表示为分词集合总数n与包含词w的分词集合数docs(w,d)比值的对数:idf=log(n/docs(w,d))。

相应的,词w的tf-idf值可以表示为:tf-idf=tf*idf。

依次类推,可以计算出分词库中每个词相对于某脚本文件的分词集合di的tf-idf值。

根据预先确定的分词库中各词的位置,将分词库中每个词相对于di的if-idf值按照分词库中各词的位置进行依次对应,形成一个由if-idf值组成的向量mi。可以将获得的向量mi作为该脚本文件的特征向量。

按照上述方式,可以获得样本集合中每个phpwebshell脚本文件以及正常php脚本文件所对应的特征向量。

一些实施方式中,可以随机将样本集合划分为训练集和测试集,然后,可以利用监督学习算法对训练集中数据进行学习,获得webshell检测模型。并进一步利用测试集的数据进行测试,验证webshell检测模型的准确率,优化webshell检测模型,获得最终用于webshell网页检测的检测模型。

所述监督学习算法可以包括mlp算法(多层神经网络算法)、朴素贝叶斯分类算法等。

一些实施方式中,可以利用上述构建的webshell检测模型对待检测网页进行检测。可以将提取的特征向量m输入webshell检测模型,获得待检测网页的webshell检测结果。一些实施方式中,所述检测结果可以包括待检测网页是否为webshell或者待检测网页属于webshell的概率等。

分词库中的各词相对于不同类型的脚本文件,其tf-idf值会存在较大的差别。如某些处理函数在phpwebshell脚本对应的opcode中经常出现,但在正常php脚本对应的opcode中确很少出现。相应的,分词库中的各词对应于phpwebshell脚本对应的分词集合与正常php脚本对应的分词集合,其tf-idf值会存在较大的差别。通过计算各词相对于不同脚本文件的分词集合的tf-idf值,作为各脚本文件对应的特征向量。然后,利用该提取的特征进行webshell检测,可以进一步提高检测结果的准确性。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。具体的可以参照前述相关处理相关实施例的描述,在此不做一一赘述。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

本说明书一个或多个实施例提供的webshell检测方法,可以通过获取php脚本数据所对应的中间字节码数据,利用中间字节码数据来辅助进行phpwebshell的检测。中间字节码数据可以快速精确定位php脚本中可控函数及参数的调用,从而可以辅助确定出php脚本文件中是否包含webshell数据。然后,进一步基于中间字节码数据,利用监督学习算法智能检测webshell,从而可以提高对混淆后的webshell或者新型的webshell检测的准确性。

基于上述所述的webshell检测方法,本说明书一个或多个实施例还提供一种webshell检测装置。所述的装置可以包括使用了本说明书实施例所述方法的系统、软件(应用)、模块、组件、服务器等并结合必要的实施硬件的装置。基于同一创新构思,本说明书实施例提供的一个或多个实施例中的装置如下面的实施例所述。由于装置解决问题的实现方案与方法相似,因此本说明书实施例具体的装置的实施可以参见前述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。具体的,图4表示说明书提供的一种webshell检测装置实施例的模块结构示意图,如图4所示,所述装置可以包括:

数据获取模块202,可以用于获取待检测网页的php脚本数据对应的第一中间字节码数据;

检测模块204,可以用于利用构建的监督学习算法对所述第一中间字节码数据进行识别,获得所述待检测网页的webshell检测结果,其中,所述监督学习算法包括对确定为webshell的php脚本数据以及确定为正常的php脚本数据对应的第二中间字节码数据进行训练得到的webshell检测模型。

图5为本说明书提供的另一种webshell检测装置实施例的模块结构示意图。如图5所示,表示本说明书的另一个实施例中,所述检测模块204可以包括:

特征提取单元,可以用于基于预设的分词库,利用tf-idf算法对所述第一中间字节码数据进行特征提取,获得所述待检测网页的特征数据,其中,所述分词库包括对确定为webshell的php脚本数据以及确定为正常的php脚本数据对应的第二中间字节码数据进行分词处理后获得分词数据;

检测单元,可以用于利用构建的监督学习算法对所述待检测网页的特征数据进行识别。

本说明书的另一个实施例中,所述特征提取单元可以包括:

第一分词处理子单元,可以用于将所述第一中间字节码数据进行分词处理,获得所述待检测网页的php脚本数据对应的第一分词集合;

计算子单元,可以用于利用tf-idf算法计算所述分词库中每个词相对所述第一分词集合的tf-idf值;

特征确定子单元,可以用于将所述tf-idf值按照相应的词在分词库中的位置进行一一对应,获得由tf-idf值组成的向量,将该向量作为所述待检测网页的特征向量。

如图5所示,本说明书的一个或者多个实施例中,所述检测模块204还可以包括分词库构建单元,其中,所述分词库构建单元可以包括:

样本数据获取子单元,可以用于获取确定为webshell的php脚本数据以及确定为正常的php脚本数据,获得样本集合;

转换子单元,可以用于将所述样本集合中的各脚本数据转换成中间字节码数据,获得各脚本数据对应的第二中间字节码数据;

第二分词处理子单元,可以用于对所述第二中间字节码数据进行分词处理,获得各脚本数据对应的第二分词集合;

融合子单元,可以用于将所述第二分词集合进行融合处理,获得分词库。

如图5所示,本说明书的另一个实施例中,所述检测模块204还可以包括模型构建单元,其中,所述模型构建单元可以包括:

特征提取子单元,可以用于利用tf-idf算法计算所述分词库中每个词相对所述第二分词集合的tf-idf值,获得相应脚本数据的特征向量;

模型构建子单元,可以用于利用监督学习算法对所述确定为webshell的php脚本数据以及确定为正常的php脚本数据所对应的特征向量进行学习,获得webshell检测模型。

需要说明的,上述所述的装置根据方法实施例的描述还可以包括其他的实施方式。具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。

本说明书一个或多个实施例提供的webshell检测装置,可以通过获取php脚本数据所对应的中间字节码数据,利用中间字节码数据来辅助进行phpwebshell的检测。中间字节码数据可以快速精确定位php脚本中可控函数及参数的调用,从而可以辅助确定出php脚本文件中是否包含webshell数据。然后,进一步基于中间字节码数据,利用监督学习算法智能检测webshell,从而可以提高对混淆后的webshell或者新型的webshell检测的准确性。

本说明书提供的上述实施例所述的方法或装置可以通过计算机程序实现业务逻辑并记录在存储介质上,所述的存储介质可以计算机读取并执行,实现本说明书实施例所描述方案的效果。因此,本说明书还提供一种webshell检测设备,包括处理器及存储处理器可执行指令的存储器,所述指令被所述处理器执行时实现包括以下步骤:

获取待检测网页的php脚本数据对应的第一中间字节码数据;

利用构建的监督学习算法对所述第一中间字节码数据进行识别,获得所述待检测网页的webshell检测结果,其中,所述监督学习算法包括对确定为webshell的php脚本数据以及确定为正常的php脚本数据对应的第二中间字节码数据进行训练得到的webshell检测模型。

所述存储介质可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方式的媒体加以存储。所述存储介质有可以包括:利用电能方式存储信息的装置如,各式存储器,如ram、rom等;利用磁能方式存储信息的装置如,硬盘、软盘、磁带、磁芯存储器、磁泡存储器、u盘;利用光学方式存储信息的装置如,cd或dvd。当然,还有其他方式的可读存储介质,例如量子存储器、石墨烯存储器等等。

需要说明的,上述所述的设备根据方法实施例的描述还可以包括其他的实施方式。具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。

本说明书实施例所提供的方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图6是应用本说明书实施例的webshell检测的服务器的硬件结构框图。如图6所示,服务器10可以包括一个或多个(图中仅示出一个)处理器100(处理器100可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器200、以及用于通信功能的传输模块300。本邻域普通技术人员可以理解,图6所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器10还可包括比图6中所示更多或者更少的组件,例如还可以包括其他的处理硬件,如数据库或多级缓存、gpu,或者具有与图6所示不同的配置。

存储器200可用于存储应用软件的软件程序以及模块,如本发明实施例中的搜索方法对应的程序指令/模块,处理器100通过运行存储在存储器200内的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器200可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器200可进一步包括相对于处理器100远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输模块300用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输模块300包括一个网络适配器(networkinterfacecontroller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输模块300可以为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。

上述实施例所述的webshell检测设备,可以通过获取php脚本数据所对应的中间字节码数据,利用中间字节码数据来辅助进行phpwebshell的检测。中间字节码数据可以快速精确定位php脚本中可控函数及参数的调用,从而可以辅助确定出php脚本文件中是否包含webshell数据。然后,进一步基于中间字节码数据,利用监督学习算法智能检测webshell,从而可以提高对混淆后的webshell或者新型的webshell检测的准确性。

本说明书还提供一种webshell检测系统,所述系统可以为单独的webshell检测系统,也可以应用在多种计算机数据处理系统中。所述的系统可以为单独的服务器,也可以包括使用了本说明书的一个或多个所述方法或一个或多个实施例装置的服务器集群、系统(包括分布式系统)、软件(应用)、实际操作装置、逻辑门电路装置、量子计算机等并结合必要的实施硬件的终端装置。所述webshell检测系统可以包括至少一个处理器以及存储计算机可执行指令的存储器,所述处理器执行所述指令时实现上述任意一个或者多个实施例中所述方法的步骤。

需要说明的,上述所述的系统根据方法或者装置实施例的描述还可以包括其他的实施方式,具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。

上述实施例所述的webshell检测系统,可以通过获取php脚本数据所对应的中间字节码数据,利用中间字节码数据来辅助进行phpwebshell的检测。中间字节码数据可以快速精确定位php脚本中可控函数及参数的调用,从而可以辅助确定出php脚本文件中是否包含webshell数据。然后,进一步基于中间字节码数据,利用监督学习算法智能检测webshell,从而可以提高对混淆后的webshell或者新型的webshell检测的准确性。

需要说明的是,本说明书上述所述的装置或者系统根据相关方法实施例的描述还可以包括其他的实施方式,具体的实现方式可以参照方法实施例的描述,在此不作一一赘述。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类、存储介质+程序实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

尽管本说明书实施例内容中提到的中间字节码、数据训练等获取、定义、交互、计算、判断等操作和数据描述,但是,本说明书实施例并不局限于必须是符合标准数据模型/模板或本说明书实施例所描述的情况。某些行业标准或者使用自定义方式或实施例描述的实施基础上略加修改后的实施方案也可以实现上述实施例相同、等同或相近、或变形后可预料的实施效果。应用这些修改或变形后的数据获取、存储、判断、处理方式等获取的实施例,仍然可以属于本说明书的可选实施方案范围之内。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法或者设备中还存在另外的相同要素。

本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述并不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。

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