[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] 应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。