JavaWeb应用的攻击行为的识别和防御方法及其装置与流程
未命名
07-29
阅读:115
评论:0
javaweb应用的攻击行为的识别和防御方法及其装置
技术领域
1.本公开涉及计算机技术领域和网络安全技术领域,尤其涉及一种javaweb应用的攻击行为的识别和防御方法及其装置。
背景技术:
2.javaweb技术广泛应用各个重要业务线上,占据着重要地位。相关技术中,javaweb应用中,网站恶意控制脚本(页面)木马病毒,或者叫webshell,对javaweb网站及服务端应用带来恶意操控、篡改数据、信息泄漏等众多安全风险。木马病毒注入方式一般有形式:通过漏洞上传文件的有文件webshell,及利用web组件或者应用程序注册访问路由执行控制代码的无文件webshell(内存马)。webshell是一种面向web程序的恶意脚本(木马),其目的是获得服务器的执行操作权限,而内存马只在内存中运行,没有文件落地或者运行后能够删除自身的木马。有文件webshell容易利用,攻击广度大,但容易被扫描发现。无文件webshell特点是文件无落盘,且攻击原理结合了众多复杂漏洞,给检测带来巨大难度。
3.木马病毒对javaweb应用危害极大,如何准确识别木马病毒的注入及攻击行为,并进行防御,已经成为重要的研究方向之一。
技术实现要素:
4.本公开旨在至少在一定程度上解决相关技术中的技术问题之一。
5.本公开第一方面实施例提出了一种javaweb应用的攻击行为的识别和防御方法,该方法包括:
6.修改关键底层类的字节码,并增强指定的关键底层方法,使得关键底层方法被调用时可被感知及可控制执行;
7.确定javaweb应用的风险类集合,并对http容器对象注册请求监听器,请求监听器用于监听http请求对象的创建和销毁;
8.若http容器接收到http请求,请求监听器监听到http请求对象的创建,且确定关键底层方法调用,通过堆栈中风险类集合的命中结果和关键底层方法调用入参的攻击性判断javaweb应用是否存在攻击行为;
9.若javaweb应用存在攻击行为,执行中断底层关键方法调用和对请求响应设置设定的错误信息的防御策略,并对攻击行为进行报警提示。
10.本公开第二方面实施例提出了一种javaweb应用的攻击行为的识别和防御装置,包括:
11.关键底层方法增强模块,用于修改关键底层类的字节码,并增强指定的关键底层方法,使得关键底层方法被调用时可被感知及可控制执行;
12.风险分析模块,用于确定javaweb应用的风险类集合,并对http容器对象注册请求监听器,请求监听器用于监听http请求对象的创建和销毁;
13.攻击识别模块,用于若http容器接收到http请求,请求监听器监听到http请求对
象的创建,且确定关键底层方法调用,通过堆栈中风险类集合的命中结果和关键底层方法调用入参的攻击性判断javaweb应用是否存在攻击行为;
14.攻击防御模块,用于若javaweb应用存在攻击行为,执行中断底层关键方法调用和对请求响应设置设定的错误信息的防御策略,并对攻击行为进行报警提示。
15.本公开第三方面实施例提出了一种电子设备,包括:
16.至少一个处理器;以及
17.与至少一个处理器通信连接的存储器;其中,
18.存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行本公开第一方面实施例中提供的javaweb应用的攻击行为的识别和防御方法。
19.本公开第四方面实施例提出了一种计算机可读存储介质,其上存储有计算机指令,其中,计算机指令用于使计算机执行根据本公开第一方面实施例中提供的javaweb应用的攻击行为的识别和防御方法。
20.本公开第五方面实施例提出了一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现本公开第一方面实施例中提供的javaweb应用的攻击行为的识别和防御方法。
21.本技术可以准确识别木马病毒注入及攻击行为,并进行防御,增强识别java页面应用的攻击行为的通用性,提高java页面应用的安全性和稳定性。
附图说明
22.图1是本公开第一实施例的java页面应用的攻击行为的识别方法的流程图;
23.图2是本公开第二实施例的java页面应用的攻击行为的识别方法的流程图;
24.图3是本公开第三实施例的java页面应用的攻击行为的识别方法的示意图;
25.图4是本公开第一实施例的java页面应用的攻击行为的识别方法的流程图;
26.图5是本公开第二实施例的java页面应用的攻击行为的识别方法的流程图;
27.图6是本公开第二实施例的java页面应用的攻击行为的识别方法的流程图;
28.图7是本公开第五实施例的java页面应用的攻击行为的识别方法的示意图;
29.图8是本公开第五实施例的java页面应用的攻击行为的识别方法的示意图;
30.图9是本公开第四实施例的java页面应用的攻击行为的识别方法的流程图;
31.图10是本公开第四实施例的java页面应用的攻击行为的识别方法的流程图;
32.图11是本公开第五实施例的java页面应用的攻击行为的识别方法的示意图;
33.图12是本公开第一实施例的java页面应用的攻击行为的识别装置的结构框图;
34.图13是本公开第一实施例的电子设备的结构示意图。
具体实施方式
35.下面详细描述本公开的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本公开,而不能理解为对本公开的限制。
36.需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第
二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。本技术技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
37.下面结合附图来描述本公开实施例的javaweb应用的攻击行为的识别和防御方法及其装置。
38.java是一门面向对象的编程语言,java语言具有功能强大和简单易用两个特征。java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许以简单的思维方式进行复杂的编程。本技术实施例中,javaweb应用的攻击行为的识别和防御方法作用对象为web容器,使用javaagent技术封装javaagent包,web容器集成javaagent包,javaagent包中功能随web容器启动而启动。其中,javaweb应用是使用java语言开发的网页(web)应用程序。
39.图1是本公开第一实施例的javaweb应用的攻击行为的识别和防御方法的流程图,如图1所示,该方法包括以下步骤:
40.在步骤s101中,修改关键底层类的字节码,并增强指定的关键底层方法,使得关键底层方法被调用时可被感知及可控制执行。
41.其中,关键底层类,是攻击行为经常利用的最为关键的java的类,能执行操作系统命令或者文件输入输出io操作的java类,是java代码能调用到的最底层的类,在这些类的功能是由本地native方法实现,native方法是由java虚拟机(java virtual machine,简称jvm)的c库实现。
42.其中,关键底层方法,是攻击行为执行操作命令或文件io操作时,调用关键底层类的特定方法。
43.其中,修改类的字节码,可修改字节码中类的信息,包含增加删除属性,增加删除或修改类的方法。通过javaagent技术在java程序运行时修改类的字节码并重新加载,增强类及方法的功能,对java程序开发者或程序使用者无感,具有无代码入侵的灵活性。
44.其中,字节码文件是指.java文件编译后jvm可执行的.class文件,包含java类的全部信息。java agent可以叫为java代理或java探针,该功能是java虚拟机提供的一整套后门,用来监测和协助运行在jvm上的程序,甚至能够动态替换和修改某些类的定义。这样的特性实际上提供了一种虚拟机级别的aop实现。
45.在步骤s102中,确定javaweb应用的风险类集合,并对http容器对象注册请求监听器,请求监听器用于监听http请求对象的创建和销毁。
46.其中,风险类,是攻击行为经常利用作为容器或者跳板的相关的类。通过匹配规则匹配出疑似风险类,规则中包含预设配置的类名、类的父类名、类的实现接口类名、类注解名、类加载器名。疑似风险类通过字节码文件反编译及代码安全扫描判定是否为风险类。
47.其中,每个javaweb应用都有一个http容器,一个web容器包含多个http容器。http容器收到外部http请求报文解析后创建request请求对象,request请求对象传递到javaweb应用中处理,javaweb应用返回response响应对象,http容器接收response响应对
象并组装http响应报文并响应外部。可在http容器上注册监听器,监听request请求对象的创建及销毁。
48.在步骤s103中,若http容器接收到http请求,请求监听器监听到http请求对象的创建,且确定关键底层方法调用,通过堆栈中风险类集合的命中结果和关键底层方法调用入参的攻击性判断javaweb应用是否存在攻击行为。
49.本技术实施例中,请求监听器监听到http请求对象的创建,记录请求信息和请求对象,以便于后续对于javaweb应用是否存在攻击行为进一步分析,及以便于步骤s104中对于javaweb应用存在攻击行为时执行防御策略。
50.本技术实施例中,若关键底层方法被调用,表示javaweb应用可能存在攻击行为,因此,需要在http请求业务处理过程中监控关键底层方法是否被调用,以便于步骤s105中对于javaweb应用是否存在攻击行为进一步分析。
51.在一些实现中,若关键底层方法被调用,表示javaweb应用可能存在攻击行为,进一步地,需要分析堆栈中风险类集合的命中结果和关键底层方法调用入参的攻击性,从而确定javaweb应用是否存在攻击行为。
52.在步骤s104中,若javaweb应用存在攻击行为,执行中断底层关键方法调用和对请求响应设置设定的错误信息的防御策略,并对攻击行为进行报警提示。
53.在一些实现中,javaweb应用存在攻击行为,程序确定中断关键底层关键方法调用,在未使用关键底层方法的增强功能抛出异常或返回预设值之前,在此时机设置请求响应,关键底层方法的增强功能抛出异常或返回预设值,业务逻辑收到底层方法抛出的错误或预设值再按照原有逻辑继续业务流程。
54.由于response对象响应的输出流只能设置一次,若先让关键底层方法的增强功能抛出异常或返回预设值,业务逻辑识别到异常将立刻为response对象设置响应的输出流,可能造成某些javaweb应用实现不佳、对外响应中暴露出程序运行的堆栈信息,及造成请求响应不到预设的错误报文或重定向页面,为了避免这种情况,需要在上述时机设置请求响应,从而提高javaweb应用的安全性及业务连续性。
55.java的web容器如tomcat、weblogic,这些容器本身也是java应用,在其容器启动配置文件中,可设置java命令启动参数。在容器的java命令启动参数中加入javaagent包的路径及其参数,在容器启动时,javaagent包中功能就可以随着容器的启动而启动。
56.在javaagent功能应用过程中,需要封装javaagent包,设置代理类,以及类中实现premain()方法(premain是程序在运行时执行的逻辑,可以在这部分逻辑中做字节码的修改等操作),web容器集成javaagent包。premain()方法在web容器启动时而执行。premain()方法的入参可获取参数设置和instrumentation对象。premain()方法中实现本实施例的功能。其中,web容器为一种部署javaweb应用程序的中间件。
57.木马病毒是一种用于远程控制计算机的恶意程序,将控制程序寄生于被控制的计算机系统中,对被感染木马病毒的计算机实施操作。本技术可以识别木马病毒攻击行为特征,根据木马病毒攻击行为特征确定攻击行为及采取防御措施。
58.本技术实施例中,修改关键底层类的字节码,并增强指定的关键底层方法,使得关键底层方法被调用时可被感知及可控制执行;确定javaweb应用的风险类集合,并对http容器对象注册请求监听器,请求监听器用于监听http请求对象的创建和销毁;若http容器接
收到http请求,请求监听器监听到http请求对象的创建,且确定关键底层方法调用,通过堆栈中风险类集合的命中结果和关键底层方法调用入参的攻击性判断javaweb应用是否存在攻击行为;若javaweb应用存在攻击行为,执行中断底层关键方法调用和对请求响应设置设定的错误信息的防御策略,并对攻击行为进行报警提示。本技术可以在javaweb应用使用过程中,识别木马病毒攻击行为特征,根据木马病毒攻击行为特征确定攻击行为及采取防御措施,提高javaweb应用的安全性和稳定性。
59.图2是本公开第一实施例的javaweb应用的攻击行为的识别和防御方法的流程图,如图2所示,若http请求业务处理过程中涉及关键底层方法调用,分析堆栈中风险类集合的命中结果和关键底层方法调用入参的攻击性,通过命中结果和攻击性判断javaweb应用是否存在攻击行为,包括以下步骤:
60.在步骤s201中,若http请求处理过程中涉及关键底层方法调用,判断线程堆栈中是否命中风险类集合中一个或多个风险类。
61.在一些实现中,在当前线程中,通过thread.currentthread()方法可获取当前线程对象的引用,调用线程对象getallstacktraces()方法并处理,可以获取线程调用堆栈信息,堆栈信息包含全限定类名和方法名。通过字符串查找可在堆栈信息中统计风险类的全限定类名的出现次数。
62.在步骤s202中,若堆栈中命中风险类集合中的一个或多个风险类,确定javaweb应用存在疑似攻击行为,若堆栈中未出现风险类集合中的一个或多个风险类,继续判断关键底层方法的入参是否具有攻击性。
63.在一些实现中,通过关键底层方法的增强功能记录方法入参并获取方法入参。
64.在步骤s203中,若关键底层方法的入参具备攻击性,确定javaweb应用存在疑似攻击行为,若关键底层方法的入参不具备攻击性,确定javaweb应用未存在攻击行为。
65.在一些实现中,判定关键底层方法的入参是否具备攻击性,是由关键底层方法预设配置中预设其方法入参的攻击判定规则判定。如runtime类的exec()方法,在linux环境下方法入参开头有出现“sh”、“ls”、“pwd”、“hostname”等字符串,或在windows环境下方法入参开头有出现“cmd”、“hostname”等字符串时,可判定方法入参有攻击性。
66.木马病毒想获取主机的控制权,会运用到系统的操作命令。操作命令有细分为获取信息,如操作系统信息、目录的文件信息、读取文件信息;对文件或目录增删改操作;对系统操作及网络传输操作;等等。
67.在步骤s204中,若确定javaweb应用存在疑似攻击行为,通过误报过滤组件的预设规则判断疑似攻击行为是否为误报。
68.在一些实现中,误报过滤组件提供配置开放到使用者配置,可对使用过程中误报的攻击行为配置到误报过滤组件。可配的参数有请求url、业务处理执行中的全限定类名、业务处理执行中方法名等。
69.在步骤s205中,若疑似攻击行为为误报,确定javaweb应用未存在攻击行为,若疑似攻击行为为非误报,确定javaweb应用存在攻击行为。
70.在一些实现中,若http请求业务处理过程中涉及关键底层方法调用,且通过攻击分析判断当前请求无攻击行为,允许关键底层方法的继续调用,http请求后续业务处理正常执行。
71.如图3所示,本技术实施例中,若http请求处理过程中涉及关键底层方法调用,判断线程堆栈中是否出现风险类,若堆栈中出现风险类,判定为疑似攻击,若堆栈中未出现风险类,进一步判断关键底层方法的入参是否具有攻击性,若关键底层方法的入参具有攻击性,判定为疑似攻击,若关键底层方法的入参不具有攻击性,判定为无攻击行为。进一步地,若确定javaweb应用存在疑似攻击行为,通过误报过滤组件的预设规则判断疑似攻击行为是否为误报,若疑似攻击行为为误报,确定javaweb应用未存在攻击行为,若疑似攻击行为为非误报,确定javaweb应用存在攻击行为。
72.本技术可以在javaweb应用使用过程中,识别木马病毒攻击行为特征,根据木马病毒攻击行为特征确定攻击行为及采取防御措施,提高javaweb应用的安全性和稳定性。
73.图4是本公开第一实施例的javaweb应用的攻击行为的识别和防御方法的流程图,如图4所示,若javaweb应用存在攻击行为,执行中断底层关键方法调用和对请求响应设置设定的错误信息的防御策略,并对攻击行为进行报警提示,包括:
74.在步骤s401中,若javaweb应用的http请求分析判定存在攻击行为,基于关键底层方法的增强功能,在关键底层方法原生代码执行前终止类的方法的调用,并在关键底层方法抛出异常或返回预设值,业务终止。
75.在一些实现中,关键底层方法原生代码执行前终止类的方法的调用,抛出的预设值,是由关键底层方法预设配置中预设其方法被终止的错误设置决定。默认抛出运行时异常,亦可返回预设的具体的值。
76.在步骤s402中,对http请求的响应对象设置返回指定的错误报文或重定向页面。
77.在一些实现中,获取请求对象的引用后,在请求对象中获取响应对象的引用,对响应对象的响应报文头和响应实体设置返回错误。响应设置开放到使用者设置,使用者可根据系统的实际情况,返回固定格式的json报文、xml报文或重定向已有的错误页面。
78.在步骤s403中,对攻击行为记录请求地址、请求信息、堆栈信息、风险类信息、触发的关键底层方法名称及方法入参,并进行报警提示。
79.在一些实现中,监控到有攻击行为后,攻击记录会以本地日志文件形式记录下来。提供http协议攻击记录推送接口,使用者可按照约定的接口定义实现接口并接收实时攻击记录推送。
80.本技术实施例中,若javaweb应用的http请求分析判定存在攻击行为,基于关键底层方法的增强功能,在关键底层方法原生代码执行前终止类的方法的调用,并在关键底层方法抛出异常或返回预设值,业务终止,对http请求的响应对象设置返回指定的错误报文或重定向页面,对攻击行为记录请求地址、请求信息、堆栈信息、风险类信息、触发的关键底层方法名称及方法入参,并进行报警提示。本技术可以在javaweb应用使用过程中,识别木马病毒攻击行为特征,根据木马病毒攻击行为特征确定攻击行为及采取防御措施,提高javaweb应用的安全性和稳定性。
81.图5是本公开第一实施例的javaweb应用的攻击行为的识别和防御方法的流程图,如图5所示,修改关键底层类的字节码,并增强指定的关键底层方法,使得关键底层方法被调用时可被感知及可控制执行,包括:
82.在步骤s501中,构建并注册增强关键底层方法的类文件转换器,类文件转换器可作用于一个或多个包含关键底层方法的关键底层类。
83.在一些实现中,在代理的premain()方法获取instrumentation对象,调用instrumentation对象中addtransformer()方法注册类文件转换器。类文件转换器实现classfiletransformer接口,实现transform()方法。transform()可在类被实例化时,记录重要信息、获取类对象进行检测、对类的字节码进行修改及替换。
84.在步骤s502中,通过代理获取若有已加载的类的引用,以判断关键底层类是否已实例化。
85.在一些实现中,调用instrumentation对象getallloadedclasses()方法获取所有类已加载的类。若类对象在getallloadedclasses()返回的数组中出现,则判断为该类已被实例化。
86.在步骤s503中,若有关键底层类已实例化,则代理触发重新加载关键底层类,以触发增强关键底层方法的类文件转换器。
87.在一些实现中,调用instrumentation对象retransformclasses()方法可触发已实例化的类重新加载及实例化。
88.在步骤s504中,若关键底层类未被实例化,则等待其实例化时,触发增强关键底层方法的类文件转换器。
89.在步骤s505中,增强关键底层方法的类文件转换器,通过字节码修改技术修改关键底层类的字节码,从而增强关键底层方法,使得在关键底层方法被调用时能感知及阻塞方法执行,并控制关键底层方法的执行结果。
90.其中,控制关键底层方法的执行结果包括关键底层方法已执行或关键底层方法未执行。
91.在一些实现中,增强关键底层方法的类文件转换器,通过字节码修改技术修改关键底层类的字节码,包括:通过全限定类名获取字节码的类操作对象;通过方法名和入参类型获取字节码方法的操作对象;在方法头部插入方法调用通知及执行阻塞代码、执行结果控制代码,作用是为攻击分析提供关键底层方法的类名、方法名、调用参数,在攻击分析完成前阻塞关键底层方法继续调用,等待攻击分析的结果放行继续执行代码或终止代码执行。
92.在步骤s506中,将修改的字节码加载至jvm,使得关键底层类被首次或再次实例化。
93.如图6所示,本技术实施例中,构建并注册增强关键底层方法的类文件转换器,若有关键底层类已实例化,则代理触发重新加载关键底层类,以触发增强关键底层方法的类文件转换器;若关键底层类未被实例化,则等待其实例化时,触发增强关键底层方法的类文件转换器。增强关键底层方法的类文件转换器,通过字节码修改技术修改关键底层类的字节码,从而增强关键底层方法,使得在关键底层方法被调用时能感知及阻塞方法执行,并控制关键底层方法的执行结果,将修改的字节码加载至jvm,使得关键底层类被首次或再次实例化。
94.本技术可以在javaweb应用使用过程中,识别木马病毒攻击行为特征,根据木马病毒攻击行为特征确定攻击行为及采取防御措施,提高javaweb应用的安全性和稳定性。
95.图7是本公开第一实施例的javaweb应用的攻击行为的识别和防御方法的流程图,如图7所示,获取javaweb应用的所有类对象引用,并通过规则匹配及代码扫描,从所有类中
筛选出风险类,以获取风险类集合,包括:
96.在步骤s701中,通过代理获取所有类对象的引用,所有类对象包括已实例化的类及将被实例化的类。
97.其中,获取途径分为,获取当前所有已实例化的类的引用,及通过注册类文件转换器,未实例化的类被实例化后获取类的引用。
98.在一些实现中,调用instrumentation对象的addtransformer()方法注册风险类筛选的类文件转换器。
99.在步骤s702中,针对任一类对象引用,判断类对象的字节码class文件是否落盘。
100.其中,文件落盘,是该文件有实体文件并保存到磁盘上,文件具有磁盘的路径。
101.其中,类加载器负责动态加载java类(字节码文件)到java虚拟机的内存空间中。
102.本技术实施例中,拼装类对象引用的全限定类名的class文件名。获取类对象引用的类加载器对象,通过类加载器对象获取资源方法,传入全限定类名的class文件名为方法入参,以获取资源定位url对象。若url对象获取的资源文件位置有实体文件,确定字节码class文件有落盘,否则确定字节码class文件无落盘。
103.在步骤s703中,若类对象字节码class文件无落盘,将其标记为第一类,若类对象的字节码class文件有落盘,将其标记为第二类。
104.在步骤s704中,将第一类加入风险类集合中,并判断第二类是否命中风险类规则。
105.本技术实施例中,获取第二类的类名和类加载器。若第二类的类名与预设风险类列表中的类名匹配,确定第二类命中风险类规则。若第二类的类加载器与预设风险类加载器列表中的类名匹配,确定第二类命中风险类规则。若第二类是javaweb组件相关的子类、实现类或注解类,确定第二类命中风险类规则。
106.在一些实现中,规则定义javaweb组件高风险父类有javax.servlet.http.httpservlet、org.apache.jasper.runtime.httpjspbase等等。规则定义javaweb组件高风险接口有javax.servlet.filter、javax.servlet.servlet、javax.servlet.servletrequestlistener、javax.servlet.servletcontextlistener、com.netflix.zuul.zuulfilter等等。规则定义javaweb组件高风险注解有org.springframework.stereotype.controller、javax.servlet.annotation.webfilter、javax.servlet.annotation.weblistener、javax.servlet.annotation.webservlet等等。
107.其中,javaweb组件至少包括以下3种:
108.servlet:全称java servlet,javaweb的一种组件。servlet是运行在web服务器或应用服务器上的程序,它是作为来自web浏览器或其他http客户端的请求和http服务器上的数据库或应用程序之间的中间层。
109.过滤器filter,javaweb的一种组件。在web中的过滤器,对请求进行拦截过滤,做相应的处理,实现特殊功能。如登录控制,权限管理,过滤敏感词汇等。
110.监听器listener,javaweb的一种组件。它用于监听web应用程序中的servletcontext,httpsession和httpservletrequest等域对象的创建与销毁事件,以及监听这些域对象中的属性发生修改的事件,对监听事件触发预设的代码执行。
111.在步骤s705中,若第二类命中风险类规则,将第二类标记为第三类。
112.在步骤s706中,对第三类进行代码检测,若检测到代码异常时,将第三类加入风险
类集合。
113.其中,未加入到风险类集合的类,均判定为无风险类。
114.本技术实施例中,读取对第三类的内存中已加载的字节码。将第三类的字节码文件内容通过反编译技术翻译成可读的java代码文本。对java代码文本进行代码检测,以获取java代码文本与预设风险关键词的命中次数。若java代码文本与风险关键词的命中次数大于预设阈值,确定检测到代码异常,并将第三类加入风险类集合。
115.在一些实现中,风险关键词包含“shell”、“$$bcel$$”、“javax.crypto.”、“processbuilder”、“getruntime”、“.exec”、“/bin/bash”等等。
116.如图8所示,本技术实施例中,通过代理获取所有类对象的引用,对每一个类进行分析,也就是说,针对任一类对象引用,判断类对象的字节码class文件是否落盘。若类对象字节码class文件无落盘,将该类加入风险类集合中,若类对象的字节码class文件有落盘,进一步判断该类是否命中风险类规则,若未命中风险类规则,将该类判定为无风险类;若命中风险类规则,进一步进行代码检测,若检测到代码异常时,将该类加入风险类集合,否则将该类判定为无风险类。
117.本技术可以在javaweb应用使用过程中,识别木马病毒攻击行为特征,根据木马病毒攻击行为特征确定攻击行为及采取防御措施,提高javaweb应用的安全性和稳定性。
118.图9是本公开第一实施例的javaweb应用的攻击行为的识别和防御方法的流程图,如图9所示,修改web容器中http容器类的字节码,在http容器实例化时获取http容器对象的引用,对http容器对象注册请求监听器,请求监听器用于监听http请求对象的创建和销毁,包括:
119.在步骤s901中,构建并注册增强web容器中http容器类构造器的类文件转换器,类文件转换器作用于web容器中http容器类。
120.在一些实现中,调用instrumentation对象的addtransformer()方法注册增强web容器中http容器类构造器的类文件转换器。
121.在步骤s902中,在http容器类被实例化时,触发增强http容器类构造器的类文件转换器。
122.其中,http容器类实例化时间比premain()执行时间靠后,无需把http容器类重新加载。
123.在步骤s903中,由增强http容器类构造器的类文件转换器,通过字节码修改技术修改http容器类的字节码,以增强http容器类的构造器,其增强功能用于http容器类的对象被创建时被感知及获取http容器类的对象的引用。
124.在一些实现中,通过全限定类名获取http容器类字节码的类操作对象;获取http容器类所有构造器的操作对象;在构造器方法的尾部插入代码,将自身对象的引用通知到请求监听器注册类的方法中。
125.在步骤s904中,将修改的字节码加载至jvm,使得http容器类被实例化。
126.在步骤s905中,在http容器类对象被创建时,通过反射技术和动态代理技术,构建对http请求对象的创建和销毁监听的请求监听器,向http容器类对象注册请求监听器。
127.其中,动态代理为java动态代理,是指在运行时动态地创建一个代理对象。java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解
任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。
128.在一些实现中,获取http容器类对象后,通过反射技术获取http容器类对象的状态信息查询方法对象和注册监听器(listener)的方法对象。确认http容器类对象状态正常的情况下,通过动态代理技术创建请求监听器的实现类。上述请求监听器在requestinitialized方法的实现中将请求对象的创建通知到特定类的方法中,在requestdestroyed方法的实现中将请求对象的销毁通知到特定类的方法中。
129.本技术实施例中,构建并注册增强web容器中http容器类构造器的类文件转换器,类文件转换器作用于web容器中http容器类,在http容器类被实例化时,触发增强http容器类构造器的类文件转换器,由增强http容器类构造器的类文件转换器,通过字节码修改技术修改http容器类的字节码,将修改的字节码加载至jvm,使得http容器类被实例化,在http容器类对象被创建时,通过反射技术和动态代理技术,构建对http请求对象的创建和销毁监听的请求监听器,向http容器类对象注册请求监听器。本技术可以在javaweb应用使用过程中,识别木马病毒攻击行为特征,根据木马病毒攻击行为特征确定攻击行为及采取防御措施,提高javaweb应用的安全性和稳定性。
130.图10是本公开第一实施例的javaweb应用的攻击行为的识别和防御方法的流程图,如图10所示,若http容器接收到http请求,且请求监听器监听到http请求对象的创建,记录请求信息和请求对象,并在http请求业务处理过程中监控关键底层方法是否被调用,还包括:
131.在步骤s1001中,若http请求业务处理过程中涉及关键底层方法的调用,通过关键底层方法的增强功能,感知关键底层方法被调用及堵塞方法执行,业务暂停处理,并把当前方法执行信息及堆栈信息转至攻击分析。
132.在web容器中,每个http请求对象都有独立的线程处理其请求内容,每个线程相互独立,可以通过获取当前线程对象获取堆栈信息。
133.在步骤s1002中,若http请求业务处理过程中不涉及关键底层方法的调用,http请求后续业务处理正常执行。
134.在步骤s1003中,若收到请求监听器http请求对象销毁的通知,释放请求对象的引用。
135.如图11所示,本技术实施例中,web容器集成javaagent包,web容器启动,触发代理实现类的premain()方执行。启动关键底层方法增强功能、风险类分析功能、请求监听器注册功能。以上3个功能正常启动后,请求监控功能即可正常工作。有监测到风险的请求时,通过攻击分析功能判定是否有攻击行为,攻击防御功能为攻击行为提供处置手段。
136.本技术可以在javaweb应用使用过程中,识别木马病毒攻击行为特征,根据木马病毒攻击行为特征确定攻击行为及采取防御措施,提高javaweb应用的安全性和稳定性。
137.图12为根据本公开第一实施例的javaweb应用的攻击行为的识别和防御装置的框图。如图12所示,本公开实施例的javaweb应用的攻击行为的识别和防御装置1200,包括:
138.关键底层方法增强模块1210,用于修改关键底层类的字节码,并增强指定的关键底层方法,使得关键底层方法被调用时可被感知及可控制执行;
139.风险分析模块1220,用于确定javaweb应用的风险类集合,并对http容器对象注册
请求监听器,请求监听器用于监听http请求对象的创建和销毁;
140.攻击识别模块1230,用于若http容器接收到http请求,请求监听器监听到http请求对象的创建,且确定关键底层方法调用,通过堆栈中风险类集合的命中结果和关键底层方法调用入参的攻击性判断javaweb应用是否存在攻击行为;
141.攻击防御模块1240,用于若javaweb应用存在攻击行为,执行中断底层关键方法调用和对请求响应设置设定的错误信息的防御策略,并对攻击行为进行报警提示。
142.在一些实施方式中,攻击识别模块1230,还包括:
143.请求监控单元1231,用于若http容器接收到http请求,且请求监听器监听到http请求对象的创建,记录请求信息和请求对象,并在http请求业务处理过程中监控关键底层方法是否被调用;
144.攻击识别单元1232,用于若http请求业务处理过程中涉及关键底层方法调用,分析堆栈中风险类集合的命中结果和关键底层方法调用入参的攻击性,通过命中结果和攻击性判断javaweb应用是否存在攻击行为。
145.在一些实施方式中,请求监控单元1231,还用于:
146.若http请求业务处理过程中涉及关键底层方法的调用,通过关键底层方法的增强功能,感知关键底层方法被调用及堵塞方法执行,业务暂停处理,并把当前方法执行信息及堆栈信息转至攻击分析;
147.若http请求业务处理过程中不涉及关键底层方法的调用,http请求后续业务处理正常执行;
148.若收到请求监听器http请求对象销毁的通知,释放请求对象的引用。
149.在一些实施方式中,攻击识别单元1232,还用于:
150.若http请求处理过程中涉及关键底层方法调用,判断线程堆栈中是否命中风险类集合中一个或多个风险类;
151.若堆栈中命中风险类集合中的一个或多个风险类,确定javaweb应用存在疑似攻击行为,若堆栈中未出现风险类集合中的一个或多个风险类,继续判断关键底层方法的入参是否具有攻击性;
152.若关键底层方法的入参具备攻击性,确定javaweb应用存在疑似攻击行为,若关键底层方法的入参不具备攻击性,确定javaweb应用未存在攻击行为;
153.若确定javaweb应用存在疑似攻击行为,通过误报过滤组件的预设规则判断疑似攻击行为是否为误报;
154.若疑似攻击行为为误报,确定javaweb应用未存在攻击行为,若疑似攻击行为为非误报,确定javaweb应用存在攻击行为。
155.在一些实施方式中,攻击防御模块1240,还用于:
156.若javaweb应用的http请求分析判定存在攻击行为,基于关键底层方法的增强功能,在关键底层方法原生代码执行前终止类的方法的调用,并在关键底层方法抛出异常或返回预设值,业务终止;
157.对http请求的响应对象设置返回指定的错误报文或重定向页面;
158.对攻击行为记录请求地址、请求信息、堆栈信息、风险类信息、触发的关键底层方法名称及方法入参,并进行报警提示。
159.在一些实施方式中,攻击识别单元1232,还用于:
160.若http请求业务处理过程中涉及关键底层方法调用,且通过攻击分析判断当前请求无攻击行为,允许关键底层方法的继续调用,http请求后续业务处理正常执行。
161.在一些实施方式中,关键底层方法增强模块1210,还用于:
162.构建并注册增强关键底层方法的类文件转换器,类文件转换器可作用于一个或多个包含关键底层方法的关键底层类;
163.通过代理获取若有已加载的类的引用,以判断关键底层类是否已实例化;
164.若有关键底层类已实例化,则代理触发重新加载关键底层类,以触发增强关键底层方法的类文件转换器;
165.若关键底层类未被实例化,则等待其实例化时,触发增强关键底层方法的类文件转换器;
166.增强关键底层方法的类文件转换器,通过字节码修改技术修改关键底层类的字节码,从而增强关键底层方法,使得在关键底层方法被调用时能感知及阻塞方法执行,并控制关键底层方法的执行结果;
167.将修改的字节码加载至jvm,使得关键底层类被首次或再次实例化。
168.在一些实施方式中,风险分析模块1220,还包括:
169.风险类分析单元1221,用于获取javaweb应用的所有类对象引用,并通过规则匹配及代码扫描,从所有类中筛选出风险类,以获取风险类集合;
170.请求监听器注册单元1222,用于修改web容器中http容器类的字节码,在http容器实例化时获取http容器对象的引用,对http容器对象注册请求监听器,请求监听器用于监听http请求对象的创建和销毁。
171.在一些实施方式中,风险类分析单元1221,还用于:
172.通过代理获取所有类对象的引用,所有类对象包括已实例化的类及将被实例化的类;
173.针对任一类对象,判断类对象的字节码class文件是否落盘;
174.若类对象字节码class文件无落盘,将其标记为第一类,若类对象的字节码class文件有落盘,将其标记为第二类;
175.将第一类加入风险类集合中,并判断第二类是否命中风险类规则;
176.若第二类命中风险类规则,将第二类标记为第三类;
177.对第三类进行代码检测,若检测到代码异常时,将第三类加入风险类集合。
178.在一些实施方式中,风险类分析单元1221,还用于:
179.拼装类对象的全限定类名的class文件名;
180.获取类对象的类加载器对象,通过类加载器对象获取资源方法,传入全限定类名的class文件名为方法入参,以获取资源定位url对象;
181.若url对象获取的资源文件位置有实体文件,确定字节码class文件有落盘,否则确定字节码class文件无落盘。
182.在一些实施方式中,风险类分析单元1221,还用于:
183.获取第二类的类名和类加载器;
184.若第二类的类名与预设风险类列表中的类名匹配,确定第二类命中风险类规则;
185.若第二类的类加载器与预设风险类加载器列表中的类名匹配,确定第二类命中风险类规则;
186.若第二类是javaweb组件相关的子类、实现类或注解类,确定第二类命中风险类规则。
187.在一些实施方式中,风险类分析单元1221,还用于:
188.读取对第三类的内存中已加载的字节码;
189.将第三类的字节码内容通过反编译技术翻译成可读的java代码文本;
190.对java代码文本进行代码检测,以获取java代码文本与预设风险关键词的命中次数;
191.若java代码文本与风险关键词的命中次数大于预设阈值,确定检测到代码异常,并将第三类加入风险类集合。
192.在一些实施方式中,请求监听器注册单元1222,还用于:
193.构建并注册增强web容器中http容器类构造器的类文件转换器,类文件转换器作用于web容器中http容器类;
194.在http容器类被实例化时,触发增强http容器类构造器的类文件转换器;
195.由增强http容器类构造器的类文件转换器,通过字节码修改技术修改http容器类的字节码,以增强http容器类的构造器,其增强功能用于http容器类的对象被创建时被感知及获取http容器类的对象的引用;
196.将修改的字节码加载至jvm,使得http容器类被实例化;
197.在http容器类对象被创建时,通过反射技术和动态代理技术,构建对http请求对象的创建和销毁监听的请求监听器,向http容器类对象注册请求监听器。
198.本技术可以在javaweb应用使用过程中,识别木马病毒攻击行为特征,根据木马病毒攻击行为特征确定攻击行为及采取防御措施,提高javaweb应用的安全性和稳定性。
199.图13是根据一示例性实施例示出的一种电子设备的框图。应说明的是,电子设备可为客户端、银行系统、卡组织系统中的任一种电子设备。
200.如图13所示,上述电子设备1300包括:
201.存储器1310及处理器1320,连接不同组件(包括存储器1310和处理器1320)的总线1330,存储器1310存储有计算机程序,当处理器1320执行所述程序时实现本公开实施例所述的javaweb应用的攻击行为的识别和防御方法。
202.总线1330表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。
203.电子设备1300典型地包括多种电子设备可读介质。这些介质可以是任何能够被电子设备1300访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
204.存储器1310还可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)1340和/或高速缓存存储器1350。电子设备1300可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统1360可以用于
读写不可移动的、非易失性磁介质(图13未显示,通常称为“硬盘驱动器”)。尽管图13中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线1330相连。存储器1310可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本公开各实施例的功能。
205.具有一组(至少一个)程序模块1370的程序/实用工具1380,可以存储在例如存储器1310中,这样的程序模块1370包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块1370通常执行本公开所描述的实施例中的功能和/或方法。
206.电子设备1300也可以与一个或多个外部设备1390(例如键盘、指向设备、显示器1391等)通信,还可与一个或者多个使得用户能与该电子设备1300交互的设备通信,和/或与使得该电子设备1300能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口1392进行。并且,电子设备1300还可以通过网络适配器1393与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图13所示,网络适配器1393通过总线1330与电子设备1300的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1300使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
207.处理器1320通过运行存储在存储器1310中的程序,从而执行各种功能应用以及数据处理。
208.需要说明的是,本实施例的电子设备的实施过程和技术原理参见前述对本公开实施例的javaweb应用的攻击行为的识别和防御方法的解释说明,此处不再赘述。
209.为了实现上述实施例,本公开还提出一种计算机可读存储介质。
210.其中,该计算机可读存储介质中的指令由业务服务器的处理器执行时,使得业务服务器能够执行如前所述的javaweb应用的攻击行为的识别和防御方法。可选的,计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
211.为了实现上述实施例,本公开还提供一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如前所述的javaweb应用的攻击行为的识别和防御方法。
212.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
技术特征:
1.一种javaweb应用的攻击行为的识别和防御方法,其特征在于,包括:修改关键底层类的字节码,并增强指定的关键底层方法,使得所述关键底层方法被调用时可被感知及可控制执行;确定所述javaweb应用的风险类集合,并对http容器对象注册请求监听器,所述请求监听器用于监听http请求对象的创建和销毁;若所述http容器接收到http请求,所述请求监听器监听到所述http请求对象的创建,且确定所述关键底层方法调用,通过堆栈中风险类集合的命中结果和所述关键底层方法调用入参的攻击性判断所述javaweb应用是否存在攻击行为;若所述javaweb应用存在攻击行为,执行中断底层关键方法调用和对请求响应设置设定的错误信息的防御策略,并对所述攻击行为进行报警提示。2.根据权利要求1所述的方法,其特征在于,所述若所述http容器接收到http请求,所述请求监听器监听到所述http请求对象的创建,且确定所述关键底层方法调用,通过堆栈中风险类集合的命中结果和所述关键底层方法调用入参的攻击性判断所述javaweb应用是否存在攻击行为,包括:若所述http容器接收到http请求,且所述请求监听器监听到所述http请求对象的创建,记录请求信息和请求对象,并在http请求业务处理过程中监控所述关键底层方法是否被调用;若所述http请求业务处理过程中涉及所述关键底层方法调用,分析堆栈中风险类集合的命中结果和所述关键底层方法调用入参的攻击性,通过所述命中结果和所述攻击性判断所述javaweb应用是否存在攻击行为。3.根据权利要求2所述的方法,其特征在于,所述若所述http容器接收到http请求,且所述请求监听器监听到http请求对象的创建,记录请求信息和请求对象,并在http请求业务处理过程中监控所述关键底层方法是否被调用,还包括:若http请求业务处理过程中涉及关键底层方法的调用,通过所述关键底层方法的增强功能,感知所述关键底层方法被调用及堵塞方法执行,业务暂停处理,并把当前方法执行信息及堆栈信息转至攻击分析;若http请求业务处理过程中不涉及关键底层方法的调用,所述http请求后续业务处理正常执行;若收到所述请求监听器http请求对象销毁的通知,释放所述请求对象的引用。4.根据权利要求2所述的方法,其特征在于,所述若所述http请求业务处理过程中涉及所述关键底层方法调用,分析堆栈中风险类集合的命中结果和所述关键底层方法调用入参的攻击性,通过所述命中结果和所述攻击性判断所述javaweb应用是否存在攻击行为,包括:若所述http请求处理过程中涉及关键底层方法调用,判断线程堆栈中是否命中所述风险类集合中一个或多个风险类;若堆栈中命中所述风险类集合中的一个或多个风险类,确定所述javaweb应用存在疑似攻击行为,若堆栈中未出现所述风险类集合中的一个或多个风险类,继续判断所述关键底层方法的入参是否具有攻击性;若所述关键底层方法的入参具备攻击性,确定所述javaweb应用存在疑似攻击行为,若
所述关键底层方法的入参不具备攻击性,确定所述javaweb应用未存在攻击行为;若确定所述javaweb应用存在疑似攻击行为,通过误报过滤组件的预设规则判断所述疑似攻击行为是否为误报;若所述疑似攻击行为为误报,确定所述javaweb应用未存在攻击行为,若所述疑似攻击行为为非误报,确定所述javaweb应用存在攻击行为。5.根据权利要求1所述的方法,其特征在于,所述若所述javaweb应用存在攻击行为,执行中断底层关键方法调用和对请求响应设置设定的错误信息的防御策略,并对所述攻击行为进行报警提示,包括:若所述javaweb应用的http请求分析判定存在攻击行为,基于所述关键底层方法的增强功能,在所述关键底层方法原生代码执行前终止类的方法的调用,并在所述关键底层方法抛出异常或返回预设值,业务终止;对所述http请求的响应对象设置返回指定的错误报文或重定向页面;对所述攻击行为记录请求地址、请求信息、堆栈信息、风险类信息、触发的关键底层方法名称及方法入参,并进行报警提示。6.根据权利要求4所述的方法,其特征在于,还包括:若所述http请求业务处理过程中涉及所述关键底层方法调用,且通过所述攻击分析判断当前请求无攻击行为,允许所述关键底层方法的继续调用,所述http请求后续业务处理正常执行。7.根据权利要求1所述的方法,其特征在于,所述修改关键底层类的字节码,并增强指定的关键底层方法,使得所述关键底层方法被调用时可被感知及可控制执行,包括:构建并注册增强关键底层方法的类文件转换器,所述类文件转换器可作用于一个或多个包含所述关键底层方法的关键底层类;通过代理获取若有已加载的类的引用,以判断所述关键底层类是否已实例化;若有所述关键底层类已实例化,则代理触发重新加载所述关键底层类,以触发增强关键底层方法的类文件转换器;若所述关键底层类未被实例化,则等待其实例化时,触发增强关键底层方法的类文件转换器;所述增强关键底层方法的类文件转换器,通过字节码修改技术修改所述关键底层类的字节码,从而增强所述关键底层方法,使得在关键底层方法被调用时能感知及阻塞方法执行,并控制关键底层方法的执行结果;将修改的字节码加载至jvm,使得所述关键底层类被首次或再次实例化。8.根据权利要求1所述的方法,其特征在于,所述确定所述javaweb应用的风险类集合,并对http容器对象注册请求监听器,包括:获取所述javaweb应用的所有类对象引用,并通过规则匹配及代码扫描,从所有类中筛选出风险类,以获取风险类集合;修改web容器中http容器类的字节码,在http容器实例化时获取http容器对象的引用,对http容器对象注册请求监听器。9.根据权利要求8所述的方法,其特征在于,所述获取所述javaweb应用的所有类对象引用,并通过规则匹配及代码扫描,从所有类中筛选出风险类,以获取风险类集合,包括:
通过代理获取所述所有类对象的引用,所述所有类对象包括已实例化的类及将被实例化的类;针对任一类对象,判断所述类对象的字节码class文件是否落盘;若所述类对象字节码class文件无落盘,将其标记为第一类,若所述类对象的字节码class文件有落盘,将其标记为第二类;将所述第一类加入所述风险类集合中,并判断所述第二类是否命中风险类规则;若所述第二类命中所述风险类规则,将所述第二类标记为第三类;对所述第三类进行代码检测,若检测到代码异常时,将所述第三类加入所述风险类集合。10.根据权利要求9所述的方法,其特征在于,所述针对任一类对象,判断所述类对象的字节码class文件是否落盘,包括:拼装所述类对象的全限定类名的class文件名;获取所述类对象的类加载器对象,通过所述类加载器对象获取资源方法,传入所述全限定类名的class文件名为方法入参,以获取资源定位url对象;若所述url对象获取的资源文件位置有实体文件,确定所述字节码class文件有落盘,否则确定所述字节码class文件无落盘。11.根据权利要求9所述的方法,其特征在于,判断所述第二类是否命中风险类规则的过程,包括:获取所述第二类的类名和类加载器;若所述第二类的类名与预设风险类列表中的类名匹配,确定所述第二类命中风险类规则;若所述第二类的类加载器与预设风险类加载器列表中的类名匹配,确定所述第二类命中风险类规则;若所述第二类是javaweb组件相关的子类、实现类或注解类,确定所述第二类命中风险类规则。12.根据权利要求9所述的方法,其特征在于,所述对所述第三类进行代码检测,若检测到代码异常时,将所述第三类加入所述风险类集合,包括:读取对所述第三类的内存中已加载的字节码;将所述第三类的字节码内容通过反编译技术翻译成可读的java代码文本;对所述java代码文本进行代码检测,以获取所述java代码文本与预设风险关键词的命中次数;若所述java代码文本与所述风险关键词的命中次数大于预设阈值,确定检测到代码异常,并将所述第三类加入所述风险类集合。13.根据权利要求8所述的方法,其特征在于,所述修改web容器中http容器类的字节码,在http容器实例化时获取http容器对象的引用,对http容器对象注册请求监听器,包括:构建并注册增强所述web容器中http容器类构造器的类文件转换器,所述类文件转换器作用于所述web容器中http容器类;在所述http容器类被实例化时,触发增强所述http容器类构造器的类文件转换器;
由所述增强http容器类构造器的类文件转换器,通过字节码修改技术修改所述http容器类的字节码,以增强所述http容器类的构造器,其增强功能用于所述http容器类的对象被创建时被感知及获取所述http容器类的对象的引用;将修改的字节码加载至jvm,使得所述http容器类被实例化;在所述http容器类对象被创建时,通过反射技术和动态代理技术,构建对http请求对象的创建和销毁监听的请求监听器,向所述http容器类对象注册请求监听器。14.一种javaweb应用的攻击行为的识别和防御装置,其特征在于,包括:关键底层方法增强模块,用于修改关键底层类的字节码,并增强指定的关键底层方法,使得所述关键底层方法被调用时可被感知及可控制执行;风险分析模块,用于确定所述javaweb应用的风险类集合,并对http容器对象注册请求监听器,所述请求监听器用于监听http请求对象的创建和销毁;攻击识别模块,用于若所述http容器接收到http请求,所述请求监听器监听到所述http请求对象的创建,且确定所述关键底层方法调用,通过堆栈中风险类集合的命中结果和所述关键底层方法调用入参的攻击性判断所述javaweb应用是否存在攻击行为;攻击防御模块,用于若所述javaweb应用存在攻击行为,执行中断底层关键方法调用和对请求响应设置设定的错误信息的防御策略,并对所述攻击行为进行报警提示。15.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;所述存储器存储计算机执行指令;所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-13中任一项所述的方法。16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-13中任一项所述的方法。17.一种计算机程序产品,其特征在于,包括计算机程序,该计算机程序被处理器执行时实现权利要求1-13中任一项所述的方法。
技术总结
本公开提出了JavaWeb应用的攻击行为的识别和防御方法及其装置,涉及计算机技术领域和网络安全技术领域。该方法作用于Web容器,包括:修改关键底层类的字节码增强关键底层方法;获取所述所有类引用筛选出风险类;修改Web容器中HTTP容器类的字节码,在HTTP容器实例化时注册请求监听器;收到HTTP请求时记录请求信息和请求对象,并监控关键底层方法调用情况;分析堆栈中风险类的命中结果和关键底层方法调用入参的攻击性判断是否存在攻击行为;在JavaWeb应用存在攻击行为时执行防御策略及报警提示。本申请可以在JavaWeb应用使用过程中,识别木马病毒攻击行为特征,根据木马病毒攻击行为特征确定攻击行为及采取防御措施,提高JavaWeb应用的安全性和稳定性。JavaWeb应用的安全性和稳定性。JavaWeb应用的安全性和稳定性。
技术研发人员:李梓铭 解敏 陈泽智 廖敏飞
受保护的技术使用者:建信金融科技有限责任公司
技术研发日:2023.04.06
技术公布日:2023/7/28
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:车架总成及车辆的制作方法 下一篇:电子控制器刷写方法、电子控制器、管理服务器与流程
