一种基于容器环境java内存木马威胁检测方法技术

技术编号:33445112 阅读:16 留言:0更新日期:2022-05-19 00:31
本发明专利技术提供了一种基于容器环境java内存木马威胁检测方法,包括以下检测步骤:S1:将内存木马的检测包拷贝到宿主机的目标容器内;S2:将检测进程的命名空间关联到目标进程的命名空间;S3:将拷贝到目标容器内的检测包注入到目标进程中;S4:检测包检测出的风险类以流的形式传给宿主机;S5:宿主机对风险类进行风险分析并输出检测结果。本发明专利技术利用系统调用进行容器命名空间的切换,实现跨命名空间注入操作,从而避免不同jvm版本的不兼容情况,并且,在容器内部不去进行分析,避免消耗业务容器计算资源,因此检测速度相对更快。因此检测速度相对更快。因此检测速度相对更快。

【技术实现步骤摘要】
一种基于容器环境java内存木马威胁检测方法


[0001]本专利技术涉及到信息安全
,尤其涉及到一种基于容器环境java内存木马威胁检测方法。

技术介绍

[0002]业界通常将木马种类分成“有文件木马”和“无文件木马”两类。“有文件木马”也就是我们常见的“二进制木马、网马”;“无文件木马”是无文件攻击的一种方式,内存木马是常见的类型之一。一般情况下,木马病毒会以文件的形式存在于Web容器当中,在特殊情况下,或不能在web目录下写入文件。
[0003]Java为我们提供了方便的接口,VirtualMachineAttachAPI是agent与JVM进程之间沟通的桥梁,底层通过socket通信,JVMA可以发送一些指令给JVMB。JavaAgent可以用独立于本jvm进程之外的代理程序来检测并协助运行在JVM上的应用程序。
[0004]总结概括来说,JavaAgent不能单独启动,必须依附在一个Java应用程序当中,动态的修改已加载或未加载的类,包括类的属性,方法。从攻击的角度来看,可以利用上述JVM的特性,恶意增加一个webshell的后门。入侵方法可以通过JavaAgent向JVM注入恶意代码。
[0005]目前,针对于木马的检测大多都停留在宿主机上,而在容器环境下执行内存木马检测的方案存量较少。容器是操作系统上一种轻量化的虚拟技术,其根本是依赖于Linux命名空间和Cgroup技术,通过内核提供的接口,可以快速构建出一个运行环境。由于Namespace隔离技术的存在,不同容器之间默认是具备一定隔离性的,这也为我们排查容器内部的内存木马带来了难度。
[0006]当目标JVM的进程命名空间与agent命名空间相似时,由于在容器环境下,不同进程的命名空间不一致,存在天然的隔离性。虽然在JDK11上,官方提供了跨命名空间注入,但对于目标进程和本进程所属命名空间不一致时,会出现问题。
[0007]假设在宿主机上runtime为jdk11,如图1、图2所示,不论是在相同的namespace,还是在不同的namespace,注入jdk8的Container进程,会提示注入失败,com.sun.tools.attach.AttachNotSupportedException:Unable to open socket file。
[0008]另外,由不同jre运行起来的jvm进程,在注入的时候也会发生不兼容情况。即使在流行的开源项目arthas(java性能分析工具,也是利用JavaAgent特性)当中,也存在这样的问题(issue

1519,issue

1521)。本质原因是由于官方JDK升级的时候,未做好兼容适配,未覆盖不同版本jvm数据通信的情况。
[0009]综上,导致现有木马检测技术有如下缺点:
[0010]一、在业务进程当中进行木马检测分析,占用业务进程的计算资源;
[0011]二、对于低版本jdk(低于等于8),无法使用官方attach注入高版本的jvm进程,不同版本jre在attach机制兼容性较差;
[0012]三、对于低版本jdk(低于等于8),无法进行跨命名空间注入。

技术实现思路

[0013]本专利技术的目的是为了克服现有技术的不足,提供了一种基于容器环境java内存木马威胁检测方法。
[0014]本专利技术是通过以下技术方案实现:
[0015]本专利技术提供了一种基于容器环境java内存木马威胁检测方法,该基于容器环境java内存木马威胁检测方法包括以下检测步骤:
[0016]S1:将内存木马的检测包拷贝到宿主机的目标容器内;
[0017]S2:将检测进程的命名空间关联到目标进程的命名空间;
[0018]S3:将拷贝到目标容器内的检测包注入到目标进程中;
[0019]S4:检测包检测出的风险类以流的形式传给宿主机;
[0020]S5:宿主机对风险类进行风险分析并输出检测结果。
[0021]在步骤S1中,将内存木马的检测包拷贝到宿主机的目标容器内时,先获取目标容器在宿主机的目录,将检测包拷贝到目标容器所在宿主机的目录下。
[0022]在步骤S2中,通过setns系统调用,将检测进程的命名空间关联到目标进程的命名空间。
[0023]在步骤S2中,通过CGO编程函数,使检测进程在启动多线程环境之前完成setns系统调用操作。
[0024]本专利技术的有益效果是:本专利技术利用系统调用进行容器命名空间的切换,实现跨命名空间注入操作,从而避免不同jvm版本的不兼容情况,并且,在容器内部不去进行分析,避免消耗业务容器计算资源,因此检测速度相对更快。
附图说明
[0025]图1是目前在runtime为jdk11的宿主机上注入jdk8的Container进程的代码文件示意图一;
[0026]图2是目前在runtime为jdk11的宿主机上注入jdk8的Container进程的代码文件示意图二;
[0027]图3是本专利技术实施例提供的基于容器环境java内存木马威胁检测方法的流程图;
[0028]图4是本专利技术实施例提供的基于容器环境java内存木马威胁检测方法的架构图;
[0029]图5是获取目标容器在宿主机的根目录的代码文件示意图;
[0030]图6是获取目标容器在宿主机的根目录的代码文件示意图。
具体实施方式
[0031]为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。
[0032]请参阅图3、图4,图3是本专利技术实施例提供的基于容器环境java内存木马威胁检测方法的流程图,图4是本专利技术实施例提供的基于容器环境java内存木马威胁检测方法的架构图。
[0033]本专利技术实施例提供了一种基于容器环境java内存木马威胁检测方法,如图3、图4
所示,该基于容器环境java内存木马威胁检测方法包括以下检测步骤:
[0034]S1:将内存木马的检测包拷贝到宿主机的目标容器内;
[0035]S2:将检测进程的命名空间关联到目标进程的命名空间;
[0036]S3:将拷贝到目标容器内的检测包注入到目标进程中;
[0037]S4:检测包检测出的风险类以流的形式传给宿主机;
[0038]S5:宿主机对风险类进行风险分析并输出检测结果。
[0039]已知,内存木马入侵方法可以通过JavaAgent向JVM注入恶意代码。检测逻辑也可以利用attach api,向目标JVM注入检测代码。检测是否存在恶意代码,可以通过Instrumentation.getAllLoadedClasses(),拿到所有的class。并通过java特性,利用反射拿到相关信息(例如注解,方法,类),筛选可能被木马劫持的对象。最后分析这些初筛本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于容器环境java内存木马威胁检测方法,其特征在于,包括以下检测步骤:S1:将内存木马的检测包拷贝到宿主机的目标容器内;S2:将检测进程的命名空间关联到目标进程的命名空间;S3:将拷贝到目标容器内的检测包注入到目标进程中;S4:检测包检测出的风险类以流的形式传给宿主机;S5:宿主机对风险类进行风险分析并输出检测结果。2.根据权利要求1所述的基于容器环境java内存木马威胁检测方法,其特征在于,在步骤S1中,将内存木马的检测包拷贝...

【专利技术属性】
技术研发人员:张家伟袁曙光王震
申请(专利权)人:北京小佑网络科技有限公司
类型:发明
国别省市:

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

1