一种对抗性Java内存马的检测方法及处理方法技术

技术编号:38349198 阅读:26 留言:0更新日期:2023-08-02 09:29
本发明专利技术的实施例公开了一种对抗性Java内存马的检测方法及处理方法。检测方法包括:获取待检测的Java应用的Java类,得到所述Java类的代码;检查是否包含Java内存马逻辑,并为所述Java类添加标记;若包含Java内存马逻辑,则检查是否包含Java内存马持久化逻辑,并检查所述Java类是否属于Java原有类,为所述Java类添加标记;若包含Java内存马持久化逻辑,或者所述Java类属于Java原有类,则判断为待检测的Java应用中包含对抗性Java内存马。处理方法包括:获取待检测的Java应用中包含对抗性Java内存马的检测结果;针对性删除具有持久化和热修改能力的对抗性Java内存马。本发明专利技术能够检测并彻底清除对抗性Java内存马,尤其是现有Java内存马检测方案检测不出的具有持久化、热修改能力的对抗性Java内存马。力的对抗性Java内存马。力的对抗性Java内存马。

【技术实现步骤摘要】
一种对抗性Java内存马的检测方法及处理方法


[0001]本专利技术涉及网络安全
,特别涉及一种对抗性Java内存马的检测方法及处理方法。

技术介绍

[0002]Java内存马是网络攻击者攻击存在漏洞的Java业务常用的技术手段。Java内存马可以有效地躲避传统安全软件的检测,基本没有痕迹,且难以清除,为攻击者后续的活动提供了便利。
[0003]随着网络攻防对抗技术的升级和演变,Java内存马的种类愈加多样、功能愈加丰富、角度愈加刁钻,逐渐出现了阻断检测、持久留存、运行时热修改等或绕过检测或绕过查杀的对抗性内存马。其中,阻断检测功能,利用了绝大部分Java内存马检测方案以Java Agent的形式注入的特性,注入后提前阻断了Agent接入的功能,导致检测Java内存马的程序无法生效;持久留存功能,能够以各种手段,将注入Java内存马的逻辑留存在服务器本地,并在攻击者设置的条件触发时,仍能再次执行将Java内存马注入服务器,从而持久地留存,不再因服务器重启、内存马被清除而失效;运行时热修改功能则可以在Java虚拟机运行时,热修改其中运行的类代码,向其中注入Java内存马,而本地Java类文件并没有改变,使得内存中运行的代码逻辑与本地源代码逻辑并不相同,从而绕过检测方案中基于本地文件的判断流程。
[0004]在现有的Java内存马检测方法中,主要是通过Java Agent方式接入Java虚拟机,具体的,通过Java Agent检测程序注入目标Java应用的Java虚拟机,然后通过Instrument接口,获取所有已经加载的Java敏感类以及新加载的类,寻找其本地文件,检查其中是否存在Java内存马逻辑;对于不存在本地文件的类,利用ASM或者Javassist等手段,从内存中还原出运行时字节码,然后对所属字节码进行反编译,来判断是不是内存马。
[0005]现有检测Java内存马的技术方案,在面对对抗性Java内存马时,有两大无法检测的点。一是只关注反编译以后的Java代码或者源代码中是否存在Java内存马本身,而忽视了对抗性Java内存马的持久化能力;二是现有检测Java内存马的技术方案,对于运行时热修改Java类注入的Java内存马,由于其本地文件存在且源代码正常,所以会存在无法准确检测的漏报情况,因此现行Java内存马检测方案存在检测不全面的问题。
[0006]这就进一步导致,现有的处理Java内存马的技术方案,只能清除检测到的恶意类本身,而没被检测到的恶意类以及恶意类提前贮存的持久化留存都没有被清除。进而导致每次清除检测到的Java内存马后,都只清除了普通的Java内存马,而对抗性Java内存马的持久化逻辑仍可以重新将Java内存马注入,且使用运行时热修改技术的Java内存马仍在运行,无法彻底根除内存马。

技术实现思路

[0007]有鉴于此,本专利技术实施例的目的在于提供一种对抗性Java内存马的检测方法及处
理方法,能够检测并彻底清除对抗性Java内存马,尤其是现有Java内存马检测方案检测不出的具有持久化、热修改能力的对抗性Java内存马。本专利技术删除了Java本地文件的判定路径,避免了该判断路径可能导致的Java内存马漏报问题;另外,本专利技术根据对抗性内存马技术,针对性的规划检测和处理流程,实现了高效简洁的流程路径。
[0008]第一方面,本专利技术实施例提供了一种对抗性Java内存马的检测方法方法,其中,包括:
[0009]获取待检测的Java应用的Java类,得到所述Java类的代码。
[0010]检查所述Java类的代码中是否包含Java内存马逻辑,并为所述Java类添加标记。
[0011]若包含Java内存马逻辑,则检查所述Java类的代码中是否包含Java内存马持久化逻辑,并检查所述Java类是否属于Java原有类,为所述Java类添加标记。
[0012]若所述Java类的代码中包含Java内存马持久化逻辑,或者所述Java类属于Java原有类,则判断为待检测的Java应用中包含对抗性Java内存马。
[0013]结合第一方面,本专利技术实施例提供了第一方面的第一种可能的实施方式,其中,所述获取待检测的Java应用的Java类,得到所述Java类的代码,包括:
[0014]从Java虚拟机中获取待检测的Java应用的Java类,检查待检测的Java应用的Java类是否属于预设敏感类。
[0015]若待检测的Java应用的Java类属于预设敏感类,则获取所述Java类运行时的类字节码并反编译,得到所述Java类的代码。
[0016]结合第一方面,本专利技术实施例提供了第一方面的第二种可能的实施方式,其中,所述检查待检测的Java应用的Java类是否属于预设敏感类,包括:
[0017]判断待检测的Java应用的Java类是否继承、实现、引入或者位于预设敏感类名单中。
[0018]所述预设敏感类名单包含Java内存马利用的Java容器组件类、Java责任链组件类和Java注解类。
[0019]结合第一方面,本专利技术实施例提供了第一方面的第三种可能的实施方式,其中,所述Java内存马逻辑包括:
[0020]命令执行,所述命令执行逻辑包括以一句话直接调用可执行命令或代码的函数。
[0021]文件写入,所述文件写入逻辑包括衍生留存的Java内存马。
[0022]外部类加载,所述外部类加载逻辑包括加载并执行外部类的Java内存马。
[0023]结合第一方面,本专利技术实施例提供了第一方面的第四种可能的实施方式,其中,所述Java内存马持久化逻辑包括:
[0024]添加shutdownhook钩子,所述shutdownhook钩子由Java虚拟机提供,用于在进程结束时进行操作。
[0025]修改startupClass或shutdownClass,所述startupClass为Java应用开始时执行的操作,所述shutdownClass为Java应用结束时执行的操作。
[0026]使用服务提供接口SPI注入外部模块,所述SPI是服务接口拓展机制,用于修改接口的实现方式。
[0027]替换或修改待检测的Java应用的原有Java类。
[0028]启动新进程。
[0029]结合第一方面,本专利技术实施例提供了第一方面的第五种可能的实施方式,其中,所述检查所述Java类是否属于Java原有类包括:
[0030]检查所述Java类是否在Java原有类全限定名的列表中。
[0031]若所述Java类的代码中包含Java内存马逻辑,且所述Java类在Java原有类全限定名的列表中,则所述Java类被热修改注入了对抗性内存马。
[0032]结合第一方面,本专利技术实施例提供了第一方面的第六种可能的实施方式,其中,若所述Java类的代码中包含Java内存马逻辑,则为所述Java类添加标记“内存马”。
[0033]若所述Java类的代码中本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种对抗性Java内存马的检测方法,其特征在于,包括:获取待检测的Java应用的Java类,得到所述Java类的代码;检查所述Java类的代码中是否包含Java内存马逻辑,并为所述Java类添加标记;若包含Java内存马逻辑,则检查所述Java类的代码中是否包含Java内存马持久化逻辑,并检查所述Java类是否属于Java原有类,为所述Java类添加标记;若所述Java类的代码中包含Java内存马持久化逻辑,或者所述Java类属于Java原有类,则判断为待检测的Java应用中包含对抗性Java内存马。2.根据权利要求1所述的对抗性Java内存马的检测方法,其特征在于,所述获取待检测的Java应用的Java类,得到所述Java类的代码,包括:从Java虚拟机中获取待检测的Java应用的Java类,检查待检测的Java应用的Java类是否属于预设敏感类;若待检测的Java应用的Java类属于预设敏感类,则获取所述Java类运行时的类字节码并反编译,得到所述Java类的代码。3.根据权利要求2所述的对抗性Java内存马的检测方法,其特征在于,所述检查待检测的Java应用的Java类是否属于预设敏感类,包括:判断待检测的Java应用的Java类是否继承、实现、引入或者位于预设敏感类名单中;所述预设敏感类名单包含Java内存马利用的Java容器组件类、Java责任链组件类和Java注解类。4.根据权利要求1所述的对抗性Java内存马的检测方法,其特征在于,所述Java内存马逻辑包括:命令执行,所述命令执行逻辑包括以一句话直接调用可执行命令或代码的函数;文件写入,所述文件写入逻辑包括衍生留存的Java内存马;外部类加载,所述外部类加载逻辑包括加载并执行外部类的Java内存马。5.根据权利要求1所述的对抗性Java内存马的检测方法,其特征在于,所述Java内存马持久化逻辑包括:添加shutdownhook钩子,所述shutdownhook钩子由Java虚拟机提供,用于在进程结束时进行操作;修改startupClass或shutdownClass,所述startupClass为Java应用开始时执行的操作,所述shutdownClass为Java应用结束时执行的操作;使用服务提供接口SPI注入外部模块,所述SPI是服务接口拓展机制,用于...

【专利技术属性】
技术研发人员:于昊平姚纪卫姜向前
申请(专利权)人:安芯网盾北京科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1