一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种内存WebShell检测方法、装置及电子设备与流程

2022-04-13 19:42:52 来源:中国专利 TAG:

一种内存webshell检测方法、装置及电子设备
技术领域
1.本技术涉及信息安全技术领域,特别是涉及一种内存webshell检测方法、装置及电子设备。


背景技术:

2.网络后台管理脚本webshell是一个以文件的形式存在与web容器内的恶意脚本文件,通过webshell可以控制服务器来执行任意指令,从而盗取敏感数据或凭据或者作为攻击内网主机的跳板。但是随着互联网的蓬勃发展,攻防实战演练范围的增加,防守方的防护手段逐渐完善,以文件形式存在于web容器中的webshell的攻击难度逐渐增加。因此,攻击方采用更加高明的攻击手段,如基于内存webshell的攻击方式,这种攻击方式在拥有一个web容器进程执行用户的权限时,攻击方便可以完全控制该进程对应的地址空间内的数据和代码,进而达到控制服务器的目的。在面临基于内存webshell的攻击方式时,传统的防护方式显得捉襟见肘,因此,急需一种webshell检测方法对内存webshell进行检测。
3.目前对内存webshell进行检测的方法,主要是基于webshell文件实体的检测方法,比如特征检测法,该方法从已知webshell样本中提取恶意特征进行模式匹配,从而检测出内存webshell;又如统计分析法,该方法利用一些统计学方法对webshell文件进行识别与检测,然后提取webshell文件中的特征代码、信息熵、最长单词、重合指数、压缩等特征进行异常检测,从而发现内存webshell;还有机器学习法,该方法利用决策树、深度学习等方式对样本进行训练得到检测模型,然后利用该检测模型对内存webshell进行检测。
4.然而,上述基于webshell文件实体的检测方法,难以检测出非文本类的webshell,并且也不能检测出经过混淆、加密等手段处理过后的文本类webshell,导致无论是特征检测法、还是统计分析法又或者机器学习法,都存在较大的误报以及漏报的可能性。


技术实现要素:

5.本技术提供了一种内存webshell检测方法、装置及电子设备,在对目标应用对应虚拟机中的所有类作初步筛选后,在不需要将目标应用进程信息对应的字节码文件与原始字节码文件进行对比的情况下,对筛选后的类在内存中的字节码对应的代码文件进一步作内存webshell检测和标注,这种方式适用于非文本类的内存webshell检测,也能适应加密处理和混淆处理后的文本类的内存webshell检测,提高内存webshell检测准确率。
6.第一方面,本技术提供了一种内存webshell检测方法,所述方法包括:
7.获取目标应用对应虚拟机中的所有类,并在所述所有类中筛选出存在内存webshell风险的m个第一类,其中,所述m为大于或等于1的整数;
8.确定出所述m个第一类中的每个第一类在内存中的字节码分别对应的代码,得到m个代码文件;
9.通过k个第一预设规则对所述m个代码文件进行内存webshell风险检测,得到存在内存webshell风险的n个代码文件,其中,一个所述第一预设规则对应着一种内存webshell
风险,k和n均为大于或等于1的整数;
10.用第一预设标识对所述n个代码文件对应的类进行风险标注,并将包含所述第一预设标识的类作为第一内存webshell检测结果。
11.通过上述方法,在对目标应用对应虚拟机中的所有类作初步筛选后,在不需要将目标应用进程信息对应的字节码文件与原始字节码文件进行对比的情况下,对筛选后的类在内存中的字节码对应的代码文件进一步作内存webshell检测和标注,降低误报率,同时,由于代码文件是由从内存中提取的字节码转化而来,适用于对非文本类的内存webshell进行检测,也能适应加密处理和混淆处理后的文本类的内存webshell,因此,能够提高内存webshell检测准确率。
12.进一步,所述在所述所有类中筛选出存在webshell风险的m个第一类,包括:
13.在所述所有类中筛选出在本地不存在源字节码文件的第二类,并将所述第二类作为所述存在webshell风险的第一类;和/或
14.在所述所有类中筛选出与h个第二预设规则中任一第二预设规则相匹配的第三类,并将所述第三类作为所述存在webshell风险的第一类,其中,一个所述第二预设规则对应着一种内存webshell风险,h为大于或等于1的整数。
15.通过上述方法,对目标应用对应虚拟机中的所有类进行初步筛选,缩小后续代码风险扫描的排查范围,同时,获取所有不存在本地源字节码实体文件的类信息,不存在实体文件的内存webshell有很好的针对效果,提高内存webshell的检测精度及检测准确率。
16.进一步,所述分别确定出每个所述第一类分别对应的代码,得到m个代码文件,包括:
17.提取m个第一类分别对应内存中的字节码;
18.将所述字节码转换为m个预设类型的代码文件。
19.通过上述方法,将提取的类对应内存中的字节码转换成预设类型的代码文件,便于后续进一步进行代码风险排查能够适用于非文本类的内存webshell,同时也能适用于加密处理和混淆处理后的文本类内存webshell,提高内存webshell检测准确率。
20.进一步,所述通过k个第一预设规则对所述m个代码文件进行内存webshell风险检测,得到存在内存webshell风险的n个代码文件,包括:
21.将所述m个代码文件中每个代码文件对应的文本分别与预设风险等级字符串进行匹配;
22.若任一代码文件对应的文本中存在与所述预设风险等级字符串一致的第一字符串,则确定所述第一字符串所属的代码文本存在内存webshell风险;和/或
23.检测所述m个代码文件中每个代码文件对应文本中预设风险字符的个数值;
24.判断所述个数值是否大于预设阈值;
25.若存在风险字符个数值大于预设阈值的第一代码文本,则确定所述第一代码文本存在内存webshell风险。
26.通过上述方法,利用检测不同风险类型的k个第一预设规则对m个第一类进行检测,能够适应不同种类内存webshell风险,提高内存webshell检测的准确率。
27.在一种可能的设计中,在获取目标应用对应的虚拟机中的所有类之前,还包括:
28.对当前正在运行的所有应用进行扫描,得到所有应用分别对应的基本信息以及所
有应用分别对应的进程信息,其中,所述基本信息至少包括应用入口完整类信息;
29.根据所有应用对应的基本信息,在所述所有应用中选定出目标应用;
30.将所述目标应用对应的基本信息以及所述目标应用对应的进程信息加载到所述目标应用对应的虚拟机。
31.通过上述方法,获取到目标应用正在运行时对应虚拟机的诸多信息,相较于访问与分析静态文件或对正在运行的目标应用以外部访问方式获取信息而言,能够获取的信息更加全面,提高检测准确率。
32.在一种可能的设计中,在用第一预设标识对所述n个代码文件对应的类进行风险标注,并将包含所述第一预设标识的类作为第一内存webshell检测结果之后,还包括:
33.确定所述第一内存webshell检测结果中包含所述第一预设标识的类对应的风险类型;
34.将所述风险类型对应的信息添加到所述第一内存webshell检测结果中,得到第二内存webshell检测结果。
35.通过上述方法,进一步确定具有内存webshell风险的类对应的风险类型,完善内存webshell检测结果中内存webshell对应的风险信息,提高内存webshell检测准确率。
36.进一步,确定所述第一内存webshell检测结果中包含所述第一预设标识的类对应的风险类型,包括:
37.将所述第一内存webshell检测结果中包含所述第一预设标识的类对应预设类型的第二代码文件与任何一个所述第一预设规则进行匹配;
38.若匹配一致,将与所述第二代码文件匹配一致的第一预设规则对应的内存webshell风险作为风险类型。
39.通过上述方法,根据不同的规则确定具有内存webshell风险的类对应的风险类型为字符串风险和/或字符风险,细化内存webshell检测结果,提高检测准确率。
40.在一种可能的设计中,在用第一预设标识对所述n个代码文件对应的类进行风险标注,并将包含所述第一预设标识的类作为第一内存webshell检测结果之后,还包括:
41.用第二预设标识对所述第三类进行标注,其中,所述第二预设标识对应着一种内存webshell风险;
42.将标注后的第三类添加到所述第一内存webshell检测结果中,得到第三内存webshell检测结果;或
43.将标注后的第三类添加到所述第二内存webshell检测结果中,得到第三内存webshell检测结果。
44.通过上述方法,将与第二预设规则相匹配的类进行标注,并将标注后的类添加到内存webshell检测结果中,使得内存webshell检测结果更加全面,提高检测的准确率。
45.第二方面,本技术提供了一种内存webshell检测装置,所述装置包括:
46.筛选模块,用于获取目标应用对应虚拟机中的所有类,并在所述所有类中筛选出存在内存webshell风险的m个第一类,其中,所述m为大于或等于1的整数;
47.第一确定模块,用于确定出所述m个第一类中的每个第一类在内存中的字节码分别对应的代码,得到m个代码文件;
48.检测模块,用于通过k个第一预设规则对所述m个代码文件进行内存webshell风险
检测,得到存在内存webshell风险的n个代码文件,其中,一个所述第一预设规则对应着一种内存webshell风险,k和n均为大于或等于1的整数;
49.第一标注模块,用于用第一预设标识对所述n个代码文件对应的类进行风险标注,并将包含所述第一预设标识的类作为第一内存webshell检测结果。
50.进一步,所述筛选模块具体用于:
51.在所述所有类中筛选出在本地不存在源字节码文件的第二类,并将所述第二类作为所述存在webshell风险的第一类;和/或
52.在所述所有类中筛选出与h个第二预设规则中任一第二预设规则相匹配的第三类,并将所述第三类作为所述存在webshell风险的第一类,其中,一个所述第二预设规则对应着一种内存webshell风险,h为大于或等于1的整数。
53.进一步,所述第一确定模块具体用于:
54.提取m个第一类分别对应内存中的字节码;
55.将所述字节码转换为m个预设类型的代码文件。
56.进一步,所述检测模块具体用于:
57.将所述m个代码文件中每个代码文件对应的文本分别与预设风险等级字符串进行匹配;
58.若任一代码文件对应的文本中存在与所述预设风险等级字符串一致的第一字符串,则确定所述第一字符串所属的代码文本存在内存webshell风险;和/或
59.检测所述m个代码文件中每个代码文件对应文本中预设风险字符的个数值;
60.判断所述个数值是否大于预设阈值;
61.若存在风险字符个数值大于预设阈值的第一代码文本,则确定所述第一代码文本存在内存webshell风险。
62.在一种可能的设计中,所述装置还包括:
63.扫描模块,用于对当前正在运行的所有应用进行扫描,得到所有应用分别对应的基本信息以及所有应用分别对应的进程信息,其中,所述基本信息至少包括应用入口完整类信息;
64.选定模块,用于根据所有应用对应的基本信息,在所述所有应用中选定出目标应用;
65.加载模块,用于将所述目标应用对应的基本信息以及所述目标应用对应的进程信息加载到所述目标应用对应的虚拟机。
66.在一种可能的设计中,所述装置还包括:
67.第二确定模块,用于确定所述第一内存webshell检测结果中包含所述第一预设标识的类对应的风险类型;
68.第一添加模块,用于将所述风险类型对应的信息添加到所述第一内存webshell检测结果中,得到第二内存webshell检测结果。
69.进一步,所述第二确定模块具体用于:
70.将所述第一内存webshell检测结果中包含所述第一预设标识的类对应预设类型的第二代码文件与任何一个所述第一预设规则进行匹配;
71.若匹配一致,则确定与所述第二代码文件匹配一致的第一预设规则对应的内存
webshell风险作为风险类型。
72.在一种可能的设计中,所述装置还包括:
73.第二标注模块,用于用第二预设标识对所述第三类进行标注,其中,所述第二预设标识对应着一种内存webshell风险;
74.第二添加模块,用于将标注后的第三类添加到所述第一内存webshell检测结果中,得到第三内存webshell检测结果;或将标注后的第三类添加到所述第二内存webshell检测结果中,得到第三内存webshell检测结果。
75.第三方面,本技术提供了一种电子设备,包括:
76.存储器,用于存放计算机程序;
77.处理器,用于执行所述存储器上所存放的计算机程序时,实现上述内存webshell检测方法步骤。
78.第四方面,本技术提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述内存webshell检测方法步骤。
79.基于上述内存webshell检测方法,在对目标应用对应虚拟机中的所有类作初步筛选后,在不需要将目标应用进程信息对应的字节码文件与原始字节码文件进行对比的情况下,对筛选后的类在内存中的字节码对应的代码文件进一步作内存webshell检测和标注,降低误报率。同时,由于代码文件是由从内存中提取的字节码转化而来,适用于对非文本类的内存webshell进行检测,也能适应加密处理和混淆处理后的文本类的内存webshell,因此,能够提高内存webshell检测效率。
80.上述第二方面至第四方面中的各个方面以及各个方面可能达到的技术效果参照上述针对第一方面或者第一方面中的各种可能方案可以达到的技术效果说明,这里不再重复赘述。
附图说明
81.图1为本技术提供的一种内存webshell检测方法的流程图;
82.图2为本技术提供的一种内存webshell检测方法示意图;
83.图3为本技术提供的一种内存webshell检测装置的结构示意图;
84.图4为本技术提供的一种电子设备结构示意图。
具体实施方式
85.为了使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术作进一步地详细描述。方法实施例中的具体操作方法也可以应用于装置实施例或系统实施例中。需要说明的是,在本技术的描述中“多个”理解为“至少两个”。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。a与b连接,可以表示:a与b直接连接和a与b通过c连接这两种情况。另外,在本技术的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
86.下面结合附图,对本技术实施例进行详细描述。
87.目前对内存webshell进行检测的方法,主要是基于webshell文件实体的检测方法,比如特征检测法,该方法从已知webshell样本中提取恶意特征进行模式匹配,从而检测出内存webshell;又如统计分析法,该方法利用一些统计学方法对webshell文件进行识别与检测,然后提取webshell文件中的特征代码、信息熵、最长单词、重合指数、压缩等特征进行异常检测,从而发现内存webshell;还有机器学习法,该方法利用决策树、深度学习等方式对样本进行训练得到检测模型,然后利用该检测模型对内存webshell进行检测。
88.然而,上述基于webshell文件实体的检测方法,难以检测出非文本类的webshell,并且也不能检测出经过混淆、加密等手段处理过后的文本类webshell,使得无论是特征检测法、还是统计分析法又或者机器学习法,都存在较大的误报以及漏报的可能性,导致内存webshell检测的准确率低。
89.为了解决上述问题,本技术提供了一种内存取证方法,在对目标应用对应虚拟机中的所有类作初步筛选后,对筛选后的类在内存中的字节码对应的代码文件进一步作内存webshell检测和标注,由于代码文件是由从内存中提取的字节码转化而来,适用于对非文本类的内存webshell进行检测,也能适应加密处理和混淆处理后的文本类的内存webshell,提高内存webshell检测效率。
90.其中,本技术实施例所述方法和装置基于同一技术构思,由于方法及装置所解决问题的原理相似,因此装置与方法的实施例可以相互参见,重复之处不再赘述。
91.如图1所示,为本技术提供的一种三维模型生成方法的流程图,具体包括如下步骤:
92.s11,获取目标应用对应虚拟机中的所有类,并在所有类中筛选出存在内存webshell风险的m个第一类;
93.在本技术实施例中,在对目标应用进行内存webshell检测之前,首先需要在当前正在运行的所有应用中选定出目标应用,并将目标应用相关信息加载到目标应用对应的虚拟机器中,具体来讲可以为:
94.扫描主机上正在运行的所有应用,得到所有应用中每个应用分别对应的基本信息以及每个应用分别对应的进程信息,其中,基本信息至少包括应用入口完整类信息,还可以包括名称、版本号、权限、签名摘要信息等,在这个过程中,若当前应用为java应用,那么可以使用sun.jvmstat.monitor包编写扫描代码,根据扫描代码实现对当前应用的扫描,其中,当前代码的进程信息也可以使用软件开发工具包jdk提供的显示当前所有进程信息的命令jps获取,也可以通过应用平台提供的进程信息指令来获取;
95.接下来,根据每个应用对应的基本信息,基于用户需求在所有应用中选定出目标应用,然后将目标应用对应的基本信息以及目标应用对应的进程信息加载到目标应用对应的虚拟机中,举例来讲,若目标应用为java应用,那么可以使用native的方式和通过java instrumentation接口的方式来编写agent程序,然后通过agent程序将目标应用对应的进程信息和目标应用对应的基本信息作为参数加载到目标应用对应的java虚拟机(java virtual machine,jvm)中,具体加载时间可以是jvm启动之前,也可以是jvm运行的过程中。
96.在将目标应用对应的基本信息和目标应用对应的进程信息加载到目标应用对应的虚拟机中以后,获取虚拟机中的所有类,并在所有类中筛选出存在内存webshell风险的m个第一类,其中,m为大于或等于1的整数,具体筛选方法可以是:
97.检测所有类中的每个类在本地源字节码文件路径信息,若任何一个类不存在本地源字节码文件路径信息,表明该不存在路径信息的类在本地不存在源字节码文件,然后在所有类中筛选出在本地不存在源字节码文件的第二类,并将第二类作为存在webshell风险的第一类;
98.除了上述方法外,在所有类中筛选出存在内存webshell风险的m个第一类的具体方法还可以是:
99.确定h个第二预设规则,其中,h为大于或等于1的整数,第二预设规则根据预设类型的内存webshell特征进行设定,一个第二预设规则对应着一种内存webshell风险,比如,若预设类型的webshell特征为不存在实体文件,那么该webshell特征对应的第一预设规则用于检测出不存在实体文件的内存webshell风险。在确定出第二预设规则以后,将所有类中的每一个类分别与h个第二预设规则中的每一个第二预设规则进行匹配,并将与任何一个第二预设规则匹配一致的第三类,作为存在webshell风险的第一类。
100.上述两种筛选方式可以同时使用,也可以分别使用。
101.通过上述方式,对目标应用对应虚拟机中的所有类进行初步筛选,缩小后续代码风险扫描的排查范围,同时,获取所有不存在本地源字节码实体文件的类信息,对不存在实体文件的内存webshell有很好的针对效果,提高内存webshell的检测精度及检测效率。
102.s12,确定出m个第一类中的每个第一类在内存中的字节码分别对应的代码,得到m个代码文件;
103.在申请实施例中,在所有类中初步筛选出存在内存webshell风险的m个第一类以后,需针对m个第一类作进一步处理,具体处理方法可以是:
104.使用字节码增强技术提取m个第一类分别对应内存中的字节码,然后将字节码转换为m个预设类型的代码文件,其中,预设类型可以是java,也可以是其他类型的代码文件,具体根据用户需求来确性。
105.通过上述处理方法,将内存中的字节码转换成对应的代码,使得后续进一步进行代码风险排查能够适用于非文本类的内存webshell,同时也能适用于加密处理和混淆处理后的webshell。
106.s13,通过k个第一预设规则对m个代码文件进行内存webshell风险检测,得到存在内存webshell风险的n个代码文件;
107.在本技术实施例中,在将m个第一类分别转化成对应的m个代码文件之后,进一步,使用k个第一预设规则对m个代码文件进行内存webshell风险检测,k为大于或等于1的整数,其中,一个第一预设规则对应着一种内存webshell风险,并且,第一预设规则对应的内存webshell风险与第二预设规则对应的webshell风险类型可以不相同,具体来讲,第一预设规则对应的检测方法可以是:
108.将m个代码文件中每个代码文件对应的文本分别与预设风险等级字符串进行匹配,其中,预设风险等级的字符串为提前设置好的,可以分为高风险字符串、中风险字符串以及低风险字符串。当然也可以将预设风险等级的字符串分为1级风险字符串、2级风险字符串或者3级风险字符串等,具体的风险等级分类方法此处不做限定;
109.若任一代码文件对应的文本中存在与预设风险等级字符串一致的第一字符串,则确定第一字符串所属的代码文本存在内存webshell风险。比如,当代码文件对应的文本中
存在与高风险字符串一致的字符串,则可认定代码文件存在内存webshell风险,且风险等级为高风险。
110.此外,第一预设规则对应的检测方法还可以是:
111.检测m个代码文件中每个代码文件对应文本中预设风险字符的个数值,比如,若“a”“b”为预设风险字符,当存在代码文件对应的文本中包含“a”或“b”时,那么“a”的个数和“b”的个数值之和即为预设风险字符的个数值;
112.判断个数值是否大于预设阈值;
113.若存在风险字符个数值大于预设阈值的第一代码文本,则确定第一代码文本存在内存webshell风险。
114.当然,还可以使用正则匹配规则,对上述m个代码文件进行内存webshell风险检测,具体检测方式此处不详细阐述。
115.通过上述方法,对m个代码文件进行内存webshell风险检测,可以筛选出存在内存webshell风险的n个代码文件,其中,n为大于或等于1的整数。
116.s14,用第一预设标识对n个代码文件对应的类进行风险标注,并将包含第一预设标识的类作为第一内存webshell检测结果。
117.在本技术实施例中,在确定出存在内存webshell风险的n个代码文件以后,进一步,使用第一预设标识对n个代码文件对应的类进行风险标注,并将包含第一预设标识的类作为第一内存webshell检测结果。
118.在一种可能的设计中,为了使得第一内存webshell检测结果包含的信息更加全面,还可以将上述n个代码文件对应的类的风险类型添加到第一内存webshell检测结果中,具体来讲:
119.首先,确定第一内存webshell检测结果中包含第一预设标识的类对应的风险类型,具体确定风险类型的方法为:
120.将第一内存webshell检测结果中包含第一预设标识的类对应预设类型的第二代码文件与任何一个第一预设规则进行匹配;若匹配一致,将与第二代码文件匹配一致的第一预设规则对应的内存webshell风险作为风险类型。
121.举例来讲,将第一内存webshell检测结果中包含第一预设标识的类对应预设类型的第二代码文件与预设风险等级字符串进行匹配;若第二代码文件中存在与预设风险等级字符串一致的字符串,则确定风险类型为字符串风险。
122.又例如,检测第二代码文件中预设风险字符的个数值,并判断个数值是否大于预设阈值;若是,则确定风险类型为字符风险。
123.进一步,将风险类型对应的信息添加到第一内存webshell检测结果中,得到第二内存webshell检测结果。
124.通过上述方法,进一步确定具有内存webshell风险的类对应的风险类型,完善内存webshell检测结果中内存webshell对应的风险信息,提高内存webshell检测准确率。
125.在一种可能的设计中,对图1所示检测方法中的与任何一个第二预设规则匹配一致的第三类进行标注,并将标注后的第三类添加到上述第一内存webshell检测或者第二内存webshell检测中,提高内存webshell检测准确率,具体而言:
126.用第二预设标识对第三类进行标注,其中,所述第二预设标识对应着一种内存
webshell风险;
127.将标注后的第三类添加到所述第一内存webshell检测结果中,得到第三内存webshell检测结果;或
128.将标注后的第三类添加到所述第二内存webshell检测结果中,得到第三内存webshell检测结果;
129.将第三内存webshell检测结果作为最终内存webshell检测结果。
130.通过上述方法,将与第二预设规则相匹配的类进行标注,并将标注后的类添加到内存webshell检测结果中,使得内存webshell检测结果更加全面,提高检测的准确率。
131.基于本技术提供的内存webshell检测方法,在对目标应用对应虚拟机中的所有类作初步筛选后,在不需要将目标应用进程信息对应的字节码文件与原始字节码文件进行对比的情况下,对筛选后的类在内存中的字节码对应的代码文件进一步作内存webshell检测和标注,降低误报率,同时,由于代码文件是由从内存中提取的字节码转化而来,适用于对非文本类的内存webshell进行检测,也能适应加密处理和混淆处理后的文本类的内存webshell,因此,能够提高内存webshell检测准确率。
132.进一步,为了更加详细阐述本技术实施例中提供的内存webshell检测方法,下面通过具体的应用场景对本技术所提供的方法进行详细说明。
133.具体来讲,参考图2,在图2中,对目标应用进行内存webshell检测之前,首先对主机上正在运行的java应用进行扫描,并列出所有java应用基本信息与进程信息,扫描主机上所有java应用的方式包括但不限于:直接使用jdk提供的jps获取所有java进程信息;使用sun.jvmstat.monitor包编写扫描代码;在平台上获取进程信息的指令。
134.接下来,根据所有java应用中每一个java应用对应的基本信息,在所有java应用中选定出目标java应用,然后使用java agent技术将目标java应用对应的基本信息以及目标java应用对应的进程信息加载到目标java应用对应的目标jvm中。
135.进一步,获取目标jvm中当前加载的所有类,其中,获取目标jvm中加载的所有类方式包括但不限于利用instrumentation接口。
136.接下来,在所有类中初步提取出存在webshell风险的类信息与字节码,在本示例中,采用了两种方式,其中一种是在所有类中提取本地不存在字节码文件的类信息与字节码,即:在所有类信息中搜索源字节码文件的路径信息,如果任一类不存在路径信息,则表明该类在本地不存在对应的字节码文件,此时,提取该类信息与其在内存中字节码,其中,内存中字节码的提取采用的是字节码增强技术;另一种方法是使用第一自定义规则来提取,其中,第一自定义规则包括但不限于特征匹配规则。
137.进一步,对上述过程中提取出的存在webshell风险的所有类进行第一次风险判定与标注,在提取类的过程中,每个被提取的类都对应着一个规则,而每一个规则都对着一种java应用内存webshell风险。
138.进一步,将上述提取的所有类对应内存中的字节码转换为java代码,字节码转换为java代码的过程可利用已开源的反编译技术或利用已实现的反编译工具来实现。
139.进一步,使用第二自定义规则对java代码进行检测,其中,第二自定义规则可以是采用常规字符串匹配、频次匹配或者正则匹配等方式对java代码进行检测,并根据检测结果对类进行第二次风险判定与标注,其中,进行风险包括但不限于存在指定高风险字符串,
或者风险字符串出现的频次超过指定阈值或者使用正则匹配法匹配到了风险字符串等。由此,可对检测结果进行风险标注。
140.最后,将上述过程中所有存在内存webshell风险的类、第一次风险判定与标注信息及第二次风险判定与标注信息作为目标java应用的内存webshell的检测结果。
141.通过上述内存webshell检测方法,在对目标jvm中的所有类作初步筛选后,对初步筛选出的类作第一次内存webshell检测风险判定与标注,缩小后续代码风险扫描的排查范围,然后对初步筛选后的类在内存中的字节码对应的代码文件作第二次内存webshell检测和标注,在两次风险判定与标注的过程中,都不需要将目标应用进程信息对应的字节码文件与原始字节码文件进行对比,因而可以降低误报率。同时,由于代码文件是由从内存中提取的字节码转化而来,适用于对非文本类的内存webshell进行检测,也能适应加密处理和混淆处理后的文本类的内存webshell,因此能够提高内存webshell检测准确率。最后,将两次风险判定与标注的结果作为目标java应用的内存webshell检测结果,能够进一步提高内存webshell检测准确率。
142.基于同一发明构思,本技术实施例中还提供了一种内存webshell检测装置,如图3所示,为本技术中一种内存webshell检测装置的结构示意图,该装置包括:
143.筛选模块31,用于获取目标应用对应虚拟机中的所有类,并在所述所有类中筛选出存在内存webshell风险的m个第一类,其中,所述m为大于或等于1的整数;
144.第一确定模块32,用于确定出所述m个第一类中的每个第一类在内存中的字节码分别对应的代码,得到m个代码文件;
145.检测模块33,用于通过k个第一预设规则对所述m个代码文件进行内存webshell风险检测,得到存在内存webshell风险的n个代码文件,其中,一个所述第一预设规则对应着一种内存webshell风险,k和n均为大于或等于1的整数;
146.第一标注模块34,用于用第一预设标识对所述n个代码文件对应的类进行风险标注,并将包含所述第一预设标识的类作为第一内存webshell检测结果。
147.进一步,所述筛选模块31具体用于:
148.在所述所有类中筛选出在本地不存在源字节码文件的第二类,并将所述第二类作为所述存在webshell风险的第一类;和/或
149.在所述所有类中筛选出与h个第二预设规则中任一第二预设规则相匹配的第三类,并将所述第三类作为所述存在webshell风险的第一类,其中,一个所述第二预设规则对应着一种内存webshell风险,h为大于或等于1的整数。
150.进一步,所述第一确定模块32具体用于:
151.提取m个第一类分别对应内存中的字节码;
152.将所述字节码转换为m个预设类型的代码文件。
153.进一步,所述检测模块33具体用于:
154.将所述m个代码文件中每个代码文件对应的文本分别与预设风险等级字符串进行匹配;
155.若任一代码文件对应的文本中存在与所述预设风险等级字符串一致的第一字符串,则确定所述第一字符串所属的代码文本存在内存webshell风险;和/或
156.检测所述m个代码文件中每个代码文件对应文本中的预设风险字符个数值;
157.判断所述个数值是否大于预设阈值;
158.若存在风险字符个数值大于预设阈值的第一代码文本,则确定所述第一代码文本存在内存webshell风险。
159.在一种可能的设计中,所述装置还包括:
160.扫描模块,用于对当前正在运行的所有应用进行扫描,得到所有应用分别对应的基本信息以及所有应用分别对应的进程信息,其中,所述基本信息至少包括应用入口完整类信息;
161.选定模块,用于根据所有应用对应的基本信息,在所述所有应用中选定出目标应用;
162.加载模块,用于将所述目标应用对应的基本信息以及所述目标应用对应的进程信息加载到所述目标应用对应的虚拟机。
163.在一种可能的设计中,所述装置还包括:
164.第二确定模块,用于确定所述第一内存webshell检测结果中包含所述第一预设标识的类对应的风险类型;
165.第一添加模块,用于将所述风险类型对应的信息添加到所述第一内存webshell检测结果中,得到第二内存webshell检测结果。
166.进一步,所述第二确定模块具体用于:
167.将所述第一内存webshell检测结果中包含所述第一预设标识的类对应预设类型的第二代码文件与任何一个所述第一预设规则进行匹配;
168.若匹配一致,则确定与所述第二代码文件匹配一致的第一预设规则对应的内存webshell风险作为风险类型。
169.在一种可能的设计中,所述装置还包括:
170.第二标注模块,用于用第二预设标识对所述第三类进行标注,其中,所述第二预设标识对应着一种内存webshell风险;
171.第二添加模块,用于将标注后的第三类添加到所述第一内存webshell检测结果中,得到第三内存webshell检测结果;或将标注后的第三类添加到所述第二内存webshell检测结果中,得到第三内存webshell检测结果。
172.基于上述内存webshell检测装置,在对目标应用对应虚拟机中的所有类作初步筛选后,对筛选后的类在内存中的字节码对应的代码文件进一步作内存webshell检测和标注,由于代码文件是由从内存中提取的字节码转化而来,适用于对非文本类的内存webshell进行检测,也能适应加密处理和混淆处理后的文本类的内存webshell,提高内存webshell检测准确率。
173.基于同一发明构思,本技术实施例中还提供了一种电子设备,所述电子设备可以实现前述一种内存webshell检测装置的功能,参考图4,所述电子设备包括:
174.至少一个处理器41,以及与至少一个处理器41连接的存储器42,本技术实施例中不限定处理器41与存储器42之间的具体连接介质,图4中是以处理器41和存储器42之间通过总线40连接为例。总线40在图4中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线40可以分为地址总线、数据总线、控制总线等,为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。或者,处理器41也可以
称为控制器,对于名称不做限制。
175.在本技术实施例中,存储器42存储有可被至少一个处理器41执行的指令,至少一个处理器41通过执行存储器42存储的指令,可以执行前文论述内存webshell检测方法。处理器41可以实现图3所示的装置中各个模块的功能。
176.其中,处理器41是该装置的控制中心,可以利用各种接口和线路连接整个该控制设备的各个部分,通过运行或执行存储在存储器42内的指令以及调用存储在存储器42内的数据,该装置的各种功能和处理数据,从而对该装置进行整体监控。
177.在一种可能的设计中,处理器41可包括一个或多个处理单元,处理器41可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器41中。在一些实施例中,处理器41和存储器42可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
178.处理器41可以是通用处理器,例如中央处理器(cpu)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本技术实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本技术实施例所公开的内存webshell检测方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
179.存储器42作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器42可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(random access memory,ram)、静态随机访问存储器(static random access memory,sram)、可编程只读存储器(programmable read only memory,prom)、只读存储器(read only memory,rom)、带电可擦除可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、磁性存储器、磁盘、光盘等。存储器42是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本技术实施例中的存储器42还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
180.通过对处理器31进行设计编程,可以将前述实施例中介绍的内存webshell检测方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行图1所示的实施例的内存webshell检测方法的步骤。如何对处理器41进行设计编程为本领域技术人员所公知的技术,这里不再赘述。
181.基于同一发明构思,本技术实施例还提供一种存储介质,该存储介质存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行前文论述内存webshell检测方法。
182.在一些可能的实施方式中,本技术提供的内存webshell检测方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在装置上运行时,程序代码用于使该控制设备执行本说明书上述描述的根据本技术各种示例性实施方式的内存webshell检测方法中的步骤。
183.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
184.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
185.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
186.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
187.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献