webshell检测方法、装置、设备及可读存储介质转让专利

申请号 : CN202110930565.X

文献号 : CN113810375B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘卓龙

申请人 : 网宿科技股份有限公司

摘要 :

本申请公开了一种webshell检测方法、装置、设备及可读存储介质,电子设备提取网页文件中的可打印字符串以得到字符串集合,进而确定字符串集合中是否存在目标代码,若字符串集合中存在目标代码,则确定网页文件为webshell文件。其中,目标代码是字符串集合中除正常字符串以外的可打印字符串。采用该种方案,无需对整个网页文件进行webshell检测,而是仅判断网页文件的字符串集合中是否存在目标代码就能够对网页文件进行webshell检测,由于一个网页文件的字符串集合中可打印字符串的数量比较小,因此,能够实现降低webshell检测的资源消耗、提高webshell检测速度的目的。

权利要求 :

1.一种webshell检测方法,其特征在于,包括:

从网页文件中提取可打印字符串以得到字符串集合;

确定所述字符串集合中是否存在目标代码,所述目标代码是所述字符串集合中除正常字符串以外的可打印字符串;其中,所述确定所述字符串集合中是否存在目标代码,包括:确定所述字符串集合中是否存在长度超过预设长度的可打印字符串;

若所述字符串集合中存在长度超过预设长度的可打印字符串,则将所述长度超过预设长度的可打印字符串标记为可疑字符串,并根据所述可疑字符串得到第一子集,根据第一子集确定所述字符串集合中是否存在目标代码;

根据第一子集确定所述字符串集合中是否存在目标代码,包括:

确定所述第一子集中是否存在无法与白名单匹配的可打印字符串;

若所述第一子集中存在无法与所述白名单匹配的可打印字符串,则确定第二子集中是否存在与黑名单匹配的可打印字符串,所述第二子集包含的每个可打印字符串的长度超过预设长度、且无法与白名单匹配;

根据第二子集确定所述字符串集合中是否存在目标代码,若所述第二子集中存在至少一个与所述黑名单匹配的可打印字符串,则确定所述字符串集合中存在目标代码;

若所述字符串集合中存在所述目标代码,则确定所述网页文件为webshell文件。

2.根据权利要求1所述的方法,其特征在于,所述根据第一子集确定所述字符串集合中是否存在目标代码,包括:将所述第一子集中的可打印字符串输入至webshell检测工具,以输出代码检测结果,所述代码检测结果用于指示所述字符串集合中是否存在所述目标代码。

3.根据权利要求1所述的方法,其特征在于,所述根据第二子集确定所述字符串集合中是否存在目标代码,包括:将所述第二子集中的可打印字符串输入至webshell检测工具,以输出代码检测结果,所述代码检测结果用于指示所述字符串集合中是否存在目标代码,所述第二子集包含的每个可打印字符串的长度超过预设长度、且无法与白名单匹配。

4.根据权利要求1所述的方法,其特征在于,所述根据第二子集确定所述字符串集合中是否存在目标代码,还包括:若所述第二子集中存在至少一个与所述黑名单匹配的可打印字符串,则将第三子集中的可打印字符串输入至webshell检测工具,以输出代码检测结果,所述代码检测结果用于指示所述字符串集合中是否存在目标代码,所述第三子集包含的每个可打印字符串的长度超过预设长度、与白名单不匹配、且与黑名单匹配。

5.根据权利要求1或4所述的方法,其特征在于,所述确定所述第一子集中是否存在无法与白名单匹配的可打印字符串,包括:确定所述第一子集中的每个可打印字符串是否均为所述白名单中的关键字;或者,确定所述第一子集中的每个可打印字符串是否均包含所述白名单中的关键字;或者,确定所述第一子集中的每个可打印字符串是否均包含所述白名单中的关键字,且所述可打印字符串中关键字对应的字符是否位于所述可打印字符串的开头。

6.根据权利要求1所述的方法,其特征在于,所述确定所述字符串集合中是否存在目标代码,包括:将所述字符串集合中的可打印字符串输入至webshell检测工具,以输出代码检测结果,所述代码检测结果用于指示所述字符串集合中是否存在目标代码。

7.根据权利要求1所述的方法,其特征在于,所述确定所述字符串集合中是否存在目标代码,包括:从所述字符串集合中确定出与黑名单匹配的可打印字符串以得到第四子集;

将所述第四子集中的可打印字符串输入至webshell检测工具,以输出代码检测结果,所述代码检测结果用于指示所述字符串集合中是否存在目标代码。

8.一种webshell检测装置,其特征在于,包括:

提取模块,用于从网页文件中提取可打印字符串以得到字符串集合;

确定模块,用于确定所述字符串集合中是否存在目标代码,所述目标代码是所述字符串集合中除正常字符串以外的可打印字符串;其中,所述确定所述字符串集合中是否存在目标代码,包括:确定所述字符串集合中是否存在长度超过预设长度的可打印字符串;若所述字符串集合中存在出长度超过预设长度的可打印字符串,则将所述长度超过预设长度的可打印字符串标记为可疑字符串,并根据所述可疑字符串得到第一子集,根据第一子集确定所述字符串集合中是否存在目标代码;根据第一子集确定所述字符串集合中是否存在目标代码,包括:确定所述第一子集中是否存在无法与白名单匹配的可打印字符串;若所述第一子集中存在无法与所述白名单匹配的可打印字符串,则确定第二子集中是否存在与黑名单匹配的可打印字符串,所述第二子集包含的每个可打印字符串的长度超过预设长度、且无法与白名单匹配;根据第二子集确定所述字符串集合中是否存在目标代码,若所述第二子集中存在至少一个与所述黑名单匹配的可打印字符串,则确定所述字符串集合中存在目标代码;

处理模块,用于若所述字符串集合中存在所述目标代码,则确定所述网页文件为webshell文件。

9.一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时使得所述电子设备实现如权利要求1至7任一所述的方法。

10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一所述的方法。

说明书 :

webshell检测方法、装置、设备及可读存储介质

技术领域

[0001] 本申请涉及信息安全技术领域,特别涉及一种webshell检测方法、装置、设备及可读存储介质。

背景技术

[0002] webshell是一种以网页文件形式存在的命令执行环境,是一种恶意网页后门文件。黑客在入侵一个网站服务器后,将网页后门文件与网站服务器Web目录下正常的网页文件混在一起,以达到对网站服务器进行数据删除或者修改等恶意操作。
[0003] 为防止黑客入侵网站服务器,需要对网页文件进行webshell检测。常见的webshell检测方法包括正则匹配、机器学习算法等。网页文件包括文本文件、图片文件等。
[0004] 然而,由于图片文件体积较大,采用上述的webshell检测方式耗费大量资源、速度慢且影响网站服务器的其他业务。

发明内容

[0005] 本申请实施例提供一种webshell检测方法、装置、设备及可读存储介质,通过判断从网页文件中提取出的可打印字符串中是否存在目标代码的方式对网页文件进行webshell检测,实现降低webshell检测的资源消耗、提高webshell检测速度的目的。
[0006] 第一方面,本申请实施例提供一种webshell检测方法,包括:
[0007] 从网页文件中提取可打印字符串以得到字符串集合;
[0008] 确定所述字符串集合中是否存在目标代码,所述目标代码是所述字符串集合中除正常字符串以外的可打印字符串;
[0009] 若所述字符串集合中存在所述目标代码,则确定所述网页文件为webshell文件。
[0010] 第二方面,本申请实施例提供一种webshell检测装置,包括:
[0011] 提取模块,用于从网页文件中提取可打印字符串以得到字符串集合;
[0012] 确定模块,用于确定所述字符串集合中是否存在目标代码,所述目标代码是所述字符串集合中除正常字符串以外的可打印字符串;
[0013] 处理模块,用于若所述字符串集合中存在所述目标代码,则确定所述网页文件为webshell文件。
[0014] 第三方面,本申请实施例提供一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时使得所述电子设备实现如上第一方面或第一方面各种可能的实现方式所述的方法。
[0015] 第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,所述计算机指令在被处理器执行时用于实现如上第一方面或第一方面各种可能的实现方式所述的方法。
[0016] 第五方面,本申请实施例提供一种包含计算程序的计算机程序产品,所述计算机程序被处理器执行时实现如上第一方面或第一方面各种可能的实现方式所述的方法。
[0017] 本申请实施例提供的webshell检测方法、装置、设备及可读存储介质,电子设备提取网页文件中的可打印字符串以得到字符串集合,进而确定字符串集合中是否存在目标代码,若字符串集合中存在目标代码,则确定网页文件为webshell文件。其中,目标代码是所述字符串集合中除了正常字符串以外的可打印字符串。采用该种方案,无需对整个网页文件进行webshell检测,而是仅判断网页文件的字符串集合中是否存在目标代码就能够对网页文件进行webshell检测,由于一个网页文件的字符串集合中可打印字符串的数量比较小,因此,能够实现降低webshell检测的资源消耗、提高webshell检测速度的目的。

附图说明

[0018] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0019] 图1是本申请实施例提供的webshell检测方法的流程图;
[0020] 图2是JPEG格式的图片文件的字符串集合的一个示意图;
[0021] 图3是JPEG格式的图片文件的字符串集合的另一个示意图;
[0022] 图4是GIF格式的图片文件的字符串集合的示意图;
[0023] 图5是本申请实施例提供的webshell检测方法的过程示意图;
[0024] 图6是图5对应的流程图;
[0025] 图7为本申请实施例提供的一种webshell检测装置的示意图;
[0026] 图8为本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

[0027] 为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
[0028] Webshell也称之为网页脚本木马、网页后门等,是一种以动态服务器页面(Active Server Pages,ASP)、超文本预处理器(Hypertext Preprocessor,PHP)和Java服务器页面(JavaServer Pages,JSP)等网页文件形式存在的命令执行环境。黑客将包含Webshell的网页文件上传至服务器,之后利用webshell来获取服务器的访问权限,并借助服务器来执行任意的系统命令、对系统上的文件进行增删改查、植入恶意软件或者进一步攻击内网等操作。因此,为了维护网站(Web)服务器的安全性,有必要对网页文件进行webshell检测。
[0029] 传统的webshell检测方法包括正则匹配、机器学习算法等。通过传统的webshell检测方法,能够对图片文件、文本文件等网页文件进行webshell检测。该些传统检测过程中,需要对网页文件进行编码、向量转换等计算。
[0030] 然而,由于图片文件的体积比较大,通常远大于文本文件的体积,例如,文本文件的大小为4K,而图片文件的大小为4M,是文本文件大小的100倍。对4K的文本文件进行编码、向量转换等消耗的资源,远远小于对4M的图片文件进行编码、向量转换等消耗的资源。
[0031] 显然,相较于对文本文件进行webshell检测,若采用传统的webshell检测方法对图片文件进行webshell检测需要消耗大量的计算资源、网络资源、存储资源等。而且,检测速度很慢。显然,传统的webshell检测方法无法对图片较多的网站,如图库网站等进行webshell检测。
[0032] 基于此,本申请实施例提供一种webshell检测方法、装置、设备及可读存储介质,通过判断从网页文件中提取出的可打印字符串中是否存在目标代码的方式,对网页文件进行webshell检测,实现降低webshell检测的资源消耗、提高webshell检测速度的目的。
[0033] 本申请实施例所述的webshell检测方法应用于对网页文件进行webshell检测的场景,网页文件例如是图片文件、压缩包文件等,本申请实施例的执行主体是电子设备,该电子设备可以是服务器、终端设备等。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
[0034] 终端设备可以是硬件也可以是软件。当终端设备为硬件时,终端设备例如为手机、平板电脑、电子书阅读器、膝上型便携电脑、台式计算机等。当终端设备为软件时,其可以安装在上述列举的硬件设备中,此时,终端设备例如为多个软件模块或单个软件模块等,本申请实施例并不限制。
[0035] 图1是本申请实施例提供的webshell检测方法的流程图。本实施例的执行主体是上述的电子设备,本实施例包括:
[0036] 101、从网页文件中提取可打印字符串以得到字符串集合。
[0037] 本申请实施例中,网页文件例如为图片文件、压缩包文件等。电子设备可以定期的对网页文件进行webshell检测。或者,电子设备为一个图片较多的网站服务器,当终端设备从网站服务器请求获取图片文件时,电子设备对终端设备请求的图片文件进行webshell检测。
[0038] 通常情况下,网页文件均以二进制序列的形式存储在电子设备中。电子设备利用linux命令等工具从网页文件中提取出可打印字符串从而得到字符串集合。
[0039] 102、确定所述字符串集合中是否存在目标代码,所述目标代码是所述字符串集合中除正常字符串以外的可打印字符串。若字符串集合中存在目标代码,则执行步骤103;若字符串集合中不存在目标代码,则执行步骤104。
[0040] 通常情况下,电子设备的操作系统中的可执行文件的内容除非通过逆向工程等方式还原成代码,否则难以完全被人类所阅读和理解,除了少量可被识别的字符串,如文字、字母、数字、符号及其组合,大部分呈现出来的都是乱码。该些可被识别的字符串可被提取打印出来,称之为可打印字符串,这些如文字、字母、数字、符号及其组合的字符串本身并无特殊意义,也并非为代码,以下称之为正常字符串。以操作系统为centos7.1为例,从可执行文件中提取出的可打印字符串例如abc4、b34r等。对于可执行文件,可通过判断可打印字符串与预设字符串的相似度来确定可执行文件是否为安全文件。
[0041] 大多数正常网页文件的可打印字符串的长度较短、较为固定。以网页文件为图片文件、且该图片文件未插入webshell为例,联合图像专家小组(Joint Photographic Experts Group,JPEG)格式的图片文件的正常字符串的长度为4‑7个字符,图形交换格式(Graphics Interchange Format,GIF)的图片文件的正常字符串长度通常为8个字符左右。
[0042] 一旦一个图片文件内嵌了webshell,或者,一个webshell文件伪装成图片文件,则该图片文件的字符串集合除了少量正常字符串,其余的可打印字符串可能为表征webshell代码的字符串,称该些字符串为目标代码,目标代码例如可以是一句话webshell的代码或代码片段。例如一句话webshell代码,一句话php webshell:<?php@eval($_POST[pp]);?>,一句话jsp webshell:<%Runtime.getRuntime().exec(request.getParameter("cmd"));%>,一句话asp webshell:<%eval request("chopper")%>等。
[0043] 图2是JPEG格式的图片文件的字符串集合的一个示意图。图2仅示意出字符串集合中的一部分可打印字符串。图2中每一行表示一个可打印字符串,如C
[0044] 图3是JPEG格式的图片文件的字符串集合的另一个示意图。图3仅示意出JPEG格式的图片文件的一部分可打印字符串。图3中每一行表示一个可打印字符串,该些可打印字符串也都为正常字符串,需要说明的是,该些正常字符串中除了包含有些数字、字母、符号的组合形成的字符串,还可能包含了一些起标识作用的字符串。图中粗黑矩形框内共5个字符串,其中3个可打印字符串包含“Adobe”,起标识作用,另外两个正常字符串中的一个为时间字符串,另一个为一串数字。
[0045] 上述图2和图3所示的图片文件中没有嵌入webshell。
[0046] 图4是GIF格式的图片文件的字符串集合的示意图,该图片文件内嵌了webshell。图4示意出字符串集合中的一部分可打印字符串。图4中的每一行表示一个可打印字符串,除了最后一行外,其他行的可打印字符串的长度为8个字符左右。最后一行可打印字符串的长度远远大于8个字符,是因为图片文件为webshell文件原因导致的。也就是说,最后一行可打印字符串用于表征图片文件为webshell文件的目标代码,其他行可打印字符串均为正常字符串。
[0047] 因此,可根据字符串集合中是否存在目标代码的方式来判断一个网页文件是否为可webshell文件。例如,电子设备根据白名单、黑名单等确定字符串集合中是否存在目标代码。再如,电子设备利用webshell检测工具确定字符串集合中是否存在目标代码。Webshell检测工具用于检测可打印字符串是否为目标代码,可采用正则匹配引擎、机器学习模型等,本申请实施例并不限制。
[0048] 103、确定所述网页文件为webshell文件。
[0049] 104、确定网页文件不是webshell文件。
[0050] 本申请实施例提供的webshell检测方法,电子设备提取网页文件中的可打印字符串以得到字符串集合,进而确定字符串集合中是否存在目标代码,若字符串集合中存在目标代码,则确定网页文件为webshell文件。其中,目标代码是字符串集合中除正常字符串以外的可打印字符串。采用该种方案,无需对整个网页文件进行webshell检测,而是仅判断网页文件的字符串集合中是否存在目标代码就能够对网页文件进行webshell检测,由于一个网页文件的字符串集合中可打印字符串的数量比较小,因此,能够实现降低webshell检测的资源消耗、提高webshell检测速度的目的。
[0051] 可选的,上述实施例中,电子设备确定所述字符串集合中是否存在目标代码时,先确定所述字符串集合中是否存在长度超过预设长度的可打印字符串。若所述字符串集合中不存在出长度超过预设长度的可打印字符串,则确定所述网页文件不是webshell文件。若所述字符串集合中存在出长度超过预设长度的可打印字符串,则根据第一子集确定所述字符串集合中是否存在目标代码,所述第一子集中的每个可打印字符串的长度超过预设长度。
[0052] 示例性的,特定格式的网页文件中正常字符串的长度较为固定。例如,JPEG图片文件中的可打印字符串的长度为4‑7个字符,GIF图片文件中的可打印字符串的长度为8个字符左右。因此,电子设备预先针对不同格式的网页文件设置预设长度。比如,针对JPEG格式的图片文件,预设长度为7个字符,针对GIF格式的图片文件,预设长度为8个字符。
[0053] 电子设备提取出网页文件的可打印字符串后,以换行符间隔,即以每行一串的行形式输出。也就是说,字符串集合中存在多行,每行代表一个可打印字符串,行数即为可打印字符串的个数。之后,电子设备确定字符串集合中每个可打印字符串的长度。若某行可打印字符串的长度大于预设长度,则将该行的可打印字符串标记为可疑字符串。如果字符串集合中没有可疑字符串,则确定该网页文件为正常文件而非webshell文件。若字符串集合中存在长度超过预设长度的可打印字符串,则根据长度超过预设长度的可打印字符串得到第一集合。
[0054] 电子设备得到第一集合后,根据第一集合确定网页文件是否为webshell文件。例如,电子设备根据第一集合、白名单、黑名单等确定网页文件是否为webshell文件。再如,电子设备根据第一集合和webshell检测工具等,确定网页文件是否为webshell文件。
[0055] 采用该种方案,电子设备根据字符串集合中可打印字符串的长度确定字符串集合中是否存在目标代码,耗费资源少且速度快。
[0056] 图5是本申请实施例提供的webshell检测方法的过程示意图。本实施例中,电子设备不借助webshell检测工具,而是分析字符串集合中可打印字符串的长度、是否与白名单匹配、是否与黑名单匹配等,一步步的确定出字符串集合中是否存在目标代码,进而确定网页文件是否为webshell文件。
[0057] 图6是图5对应的流程图。本实施例包括:
[0058] 601、采集网页文件中的可打印字符串以得到字符串集合。
[0059] 602、确定所述字符串集合中是否存在长度超过预设长度的可打印字符串,若存在长度超过预设长度的可打印字符串,则执行步骤603;若不存在长度超过预设长度的可打印字符串,则执行步骤606。
[0060] 603、确定所述第一子集中是否存在无法与白名单匹配的可打印字符串,若第一集合中的各可打印字符串均与白名单匹配,则执行步骤606;若第一子集中存在无法与所述白名单匹配的可打印字符串,则执行步骤604。
[0061] 其中,第一子集中的每个可打印字符串的长度超过预设长度。第一集合中的各可打印字符串均与白名单匹配是指:对于第一集合中的任意一个可打印字符串,白名单中存在与该可打印字符串匹配的关键字。第一子集中存在无法与白名单匹配的可打印字符串是指:第一集合中存在至少一个可打印字符串,白名单中不存在与该可打印字符串对应的关键字。
[0062] 电子设备预先建立白名单,白名单中的关键字例如为“Adobe”、“Microsoft”、“<?xpacket”等。电子设备可建立一个总的白名单,或者,针对不同格式的网页文件分别建立白名单。
[0063] 电子设备确定第一子集中是否存在无法与白名单匹配的可打印字符串时,可根据需求采用全匹配方式、包含匹配方式或开头匹配方式等。
[0064] 全匹配方式中,要求第一子集中的可打印字符串与关键字完全相同,即电子设备确定第一子集中的每个可打印字符串是否均为所述白名单中的关键字。该种方式中,对于第一子集中的每个可打印字符串,电子设备确定白名单中是否存在一模一样的关键字。若第一子集中的每个可打印字符串均为白名单中的关键字,则电子设备确定字符串集合中不存在目标代码,进而确定网页文件不是webshell文件。若第一子集中的至少一个可打印字符串不是白名单中的关键字,则电子设备进一步的根据第二子集确定字符串集合中是否存在目标代码。第二子集包含的每个可打印字符串的长度超过预设长度、且无法与白名单匹配。
[0065] 包含匹配方式中,要求第一子集中的可打印字符串至少包含关键字,即电子设备确定第一子集中的每个可打印字符串是否均包含白名单中的关键字。若第一子集中的每个可打印字符串均包含所述白名单中的关键字,则确定字符串集合中不存在目标代码,进而确定网页文件不是webshell文件;若第一子集中的至少一个可打印字符串不包含白名单中的关键字,则电子设备进一步的根据第二子集确定字符串集合中是否存在目标代码,进而确定网页文件是否为webshell文件。第二子集包含的每个可打印字符串的长度超过预设长度、且无法与白名单匹配。
[0066] 开头匹配方式中,要求第一子集中的可打印字符串开头的几个字符为白名单中的关键字,即电子设备确定所述第一子集中的每个可打印字符串是否均包含所述白名单中的关键字,且所述可打印字符串中关键字对应的字符是否位于所述可打印字符串的开头。若第一子集中的每个可打印字符串均包含白名单中的关键字,且可打印字符串中关键字对应的字符位于可打印字符串的开头,则确定字符串集合中不存在目标代码,进而确定网页文件不是webshell文件;若第一子集中的至少一个可打印字符串不包含白名单中的关键字,和/或,关键字并未位于可打印字符串的开头,则电子设备进一步的根据第二子集确定字符串集合中是否存在目标代码,进而确定网页文件是否为webshell文件。
[0067] 上述的全匹配方式准确度最高,包含匹配方式和开头匹配方式次之。电子设备可根据需求灵活选择合适的匹配方式,灵活度高、速度快。
[0068] 604、确定第二子集中是否存在与黑名单匹配的可打印字符串,若第二子集中的各可打印字符串均与所述黑名单不匹配,则执行步骤606;若第二子集中的存在至少一个与所述黑名单匹配的字符串,则执行步骤605。
[0069] 电子设备预先建立黑名单,黑名单中的关键字例如为“php”、“asp”、“jsp”等。电子设备可建立一个总的黑名单,或者,针对不同格式的网页文件分别建立黑名单。
[0070] 电子设备确定第二子集中是否存在与黑名单匹配的可打印字符串时,可根据需求采用全匹配方式、包含匹配方式或开头匹配方式等,可参见上述白名单匹配过程,此处不再赘述。
[0071] 605、确定所述网页文件是webshell文件。
[0072] 606、确定所述网页文件不是webshell文件。
[0073] 采用该种方案,电子设备通过分析字符串集合中的可打印字符串的长度、是否与白名单中的关键字匹配、是否与黑名单中的关键字匹配等,确定网页文件是否为webshell文件,由于可打印字符串的数量少、长度短,因此可以降低资源消耗并提高检测效率。
[0074] 上述实施例中,电子设备直接分析可打印字符串的长度、是否与白名单匹配等对网页文件进行webshell检测。然而,本申请实施例并不限制,其他可行的实现方式中,电子设备得到字符串集合后,还可以借助webshell检测工具确定网页文件是否为webshell文件。
[0075] 例如,电子设备获得字符串集合后,直接将字符串集合中的可打印字符串输入至webshell检测工具,以使得webshell检测工具输出目标代码检测结果,该目标代码检测结果用于指示所述字符串集合中是否存在目标代码。以下将该种方式称之为方式一。
[0076] 该方案中,无需根据长度、白名单、黑名单等对可打印字符串进行过滤,而是将字符串集合中的所有可打印字符串输入至webshell检测模型,适用于安全需求比较高的场景,而且,仅需要将字符串集合中的可打印字符串输入至webshell检测工具,无需将整个网页文件输入至webshell检测工具,降低资源消耗压力的同时提高检测效率。
[0077] 再如,电子设备获得字符串集合后,确定字符串集合中是否存在长度超过预设长度的可打印字符串。若字符串集合中存在出长度超过预设长度的可打印字符串,则根据长度超过预设长度的可打印字符串生成第一子集。之后,将第一子集中的可打印字符串输入至webshell检测工具,以使得webshell检测工具输出目标代码检测结果,所述目标代码检测结果用于指示所述字符串集合中是否存在目标代码。以下将该种方式称之为方式二。
[0078] 该种方案中,根据长度对字符串集合中的可打印字符串进行过滤,只保留长度超过预设长度的可打印字符串,目标代码检测结果的精度低于上述方式一,但是由于输入至webshell检测工具的可打印字符串的量小于上述的方式一,因此,方式二的速度更快、资源消耗更低。
[0079] 又如,电子设备获得字符串集合后,确定字符串集合中是否存在长度超过预设长度的可打印字符串。若字符串集合中存在出长度超过预设长度的可打印字符串,则根据长度超过预设长度的可打印字符串生成第一子集。之后,电子设备进一步的确定第一子集中是否存在无法与白名单匹配的可打印字符串。若第一子集中存在无法与白名单匹配的可打印字符串,则根据无法与白名单匹配的可打印字符串生成第二子集,并将第二子集中的可打印字符串输入至webshell检测工具,以输出目标代码检测结果,该目标代码检测结果用于指示字符串集合中是否存在目标代码,第二子集包含的每个可打印字符串的长度超过预设长度、且无法与白名单匹配。以下将该种方式称之为方式三。
[0080] 相较于上述的方式二,方式三过滤掉的可打印字符串更多,因此,目标代码检测结果的精度进一步降低,但是速度更快、资源消耗更低。
[0081] 又如,电子设备根据无法与白名单匹配的可打印字符串生成第二子集后,进一步的确定第二子集中是否存在与黑名单匹配的可打印字符串。若第二子集中存在能够与黑名单匹配的可打印字符串,则根据能够与黑名单匹配的可打印字符串生成第三子集,将第三子集中的可打印字符串输入至webshell检测工具,以输出目标代码检测结果,所述目标代码检测结果用于指示所述字符串集合中是否存在目标代码。显然,第三子集包含的每个可打印字符串的长度超过预设长度、与白名单不匹配、且与黑名单匹配。以下将该种方式称之为方式四。
[0082] 相较于上述的方式三,方式是过滤掉的可打印字符串更多,因此,目标代码检测结果的精度进一步降低,但是速度更快、资源消耗更低,适用于安全要求最低的场景。
[0083] 又如,电子设备获得字符串集合后,直接将字符串集合中的各可打印字符串与黑名单进行匹配。若字符串中存在能够与黑名单匹配的可打印字符串,则根据能够与黑名单匹配的可打印字符串生成第四子集,将第四子集中的可打印字符串输入至webshell检测工具,以输出目标代码检测结果,目标代码检测结果用于指示字符串集合中是否存在目标代码。以下将该种方式称之为方式五。
[0084] 相较于上述的方式一,方式五过滤掉的可打印字符串更多,因此,目标代码检测结果的精度进一步降低,但是速度更快、资源消耗更低。
[0085] 上述的webshell检测工具例如为正则匹配引擎、机器学习模型等,本申请实施例并不限制。
[0086] 需要说明的是,借助webshell检测工具对网页文件进行检测时,webshell检测工具还可能会进行编码、解码等,本申请实施例并不限定webshell检测工具的逻辑。
[0087] 电子设备借助webshell检测工具对网页文件进行webshell检测时,可灵活选择将字符串集合、第一子集、第二子集、第三子集或第四子集中的可打印字符串输入至webshell检测工具,灵活度高、速度快。
[0088] 下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
[0089] 图7为本申请实施例提供的一种webshell检测装置的示意图。该webshell检测装置700包括:提取模块71、确定模块72和处理模块73。
[0090] 提取模块71,用于从网页文件中提取可打印字符串以得到字符串集合;
[0091] 确定模块72,确定所述字符串集合中是否存在目标代码,所述目标代码是所述字符串集合中除正常字符串以外的可打印字符串;
[0092] 处理模块73,用于若所述字符串集合中存在所述目标代码,则确定所述网页文件为webshell文件。
[0093] 一种可行的实现方式中,所述确定模块72,用于确定所述字符串集合中是否存在长度超过预设长度的可打印字符串;若所述字符串集合中存在出长度超过预设长度的可打印字符串,则根据第一子集确定所述字符串集合中是否存在目标代码,所述第一子集中的每个可打印字符串的长度超过预设长度。
[0094] 一种可行的实现方式中,所述确定模块72根据第一子集确定所述字符串集合中是否存在目标代码时,用于确定所述第一子集中是否存在无法与白名单匹配的可打印字符串;若所述第一子集中存在无法与所述白名单匹配的可打印字符串,则确定第二子集中是否存在与黑名单匹配的可打印字符串,所述第二子集包含的每个可打印字符串的长度超过预设长度、且无法与白名单匹配;若所述第二子集中存在至少一个与所述黑名单匹配的可打印字符串,则确定所述字符串集合中存在目标代码。
[0095] 一种可行的实现方式中,所述确定模块72根据第一子集确定所述字符串集合中是否存在目标代码时,用于将所述第一子集中的可打印字符串输入至webshell检测工具,以输出目标代码检测结果,所述目标代码检测结果用于指示所述字符串集合中是否存在目标代码。
[0096] 一种可行的实现方式中,所述确定模块72根据第一子集确定所述字符串集合中是否存在目标代码时,用于确定所述第一子集中是否存在无法与白名单匹配的可打印字符串;若所述第一子集中存在无法与所述白名单匹配的可打印字符串,则将第二子集中的可打印字符串输入至webshell检测工具,以输出目标代码检测结果,所述目标代码检测结果用于指示所述字符串集合中是否存在目标代码,所述第二子集包含的每个可打印字符串的长度超过预设长度、且无法与白名单匹配。
[0097] 一种可行的实现方式中,所述确定模块72根据第一子集确定所述字符串集合中是否存在目标代码时,用于确定所述第一子集中是否存在无法与白名单匹配的可打印字符串;若所述第一子集中存在无法与所述白名单匹配的可打印字符串,则确定第二子集中是否存在与黑名单匹配的可打印字符串,所述第二子集包含的每个可打印字符串的长度超过预设长度、且无法与白名单匹配;将第三子集中的可打印字符串输入至webshell检测工具,以输出目标代码检测结果,所述目标代码检测结果用于指示所述字符串集合中是否存在目标代码,所述第三子集包含的每个可打印字符串的长度超过预设长度、与白名单不匹配、且与黑名单匹配。
[0098] 一种可行的实现方式中,所述确定模块72确定所述第一子集中是否存在无法与白名单匹配的可打印字符串时,确定所述第一子集中的每个可打印字符串是否均为所述白名单中的关键字;或者,确定所述第一子集中的每个可打印字符串是否均包含所述白名单中的关键字;或者,确定所述第一子集中的每个可打印字符串是否均包含所述白名单中的关键字,且所述可打印字符串中关键字对应的字符是否位于所述可打印字符串的开头。
[0099] 一种可行的实现方式中,所述确定模块72,用于将所述字符串集合集合中的可打印字符串输入至webshell检测工具,以输出目标代码检测结果,所述目标代码检测结果用于指示所述字符串集合中是否存在目标代码。
[0100] 一种可行的实现方式中,所述确定模块72,用于从所述字符串集合中确定出与黑名单匹配的可打印字符串以得到第四子集;将所述第四子集中的可打印字符串输入至webshell检测工具,以输出目标代码检测结果,所述目标代码检测结果用于指示所述字符串集合中是否存在目标代码。
[0101] 本申请实施例提供的webshell检测装置,可以执行上述实施例中电子设备的动作,其实现原理和技术效果类似,在此不再赘述。
[0102] 图8为本申请实施例提供的一种电子设备的结构示意图。如图8所示,该电子设备800包括:
[0103] 处理器801和存储器802;
[0104] 所述存储器802存储计算机指令;
[0105] 所述处理器801执行所述存储器802存储的计算机指令,使得所述处理器801执行如上所述的webshell检测方法。
[0106] 处理器801的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
[0107] 可选地,该电子设备800还包括通信部件803。其中,处理器801、存储器802以及通信部件803可以通过总线804连接。
[0108] 本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,所述计算机指令被处理器执行时用于实现如上电子设备实施的webshell检测方法。
[0109] 本申请实施例还提供一种计算机程序产品,该计算机程序产品包含计算机程序,计算机程序被处理器执行时实现如上电子设备实施的webshell检测方法。
[0110] 本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
[0111] 应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。