CN114491557A - 一种基于容器环境java内存木马威胁检测方法 - Google Patents

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

Info

Publication number
CN114491557A
CN114491557A CN202210096757.XA CN202210096757A CN114491557A CN 114491557 A CN114491557 A CN 114491557A CN 202210096757 A CN202210096757 A CN 202210096757A CN 114491557 A CN114491557 A CN 114491557A
Authority
CN
China
Prior art keywords
container
detection
target
trojan horse
namespace
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210096757.XA
Other languages
English (en)
Inventor
张家伟
袁曙光
王震
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Xiaoyou Network Technology Co ltd
Original Assignee
Beijing Xiaoyou Network Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Xiaoyou Network Technology Co ltd filed Critical Beijing Xiaoyou Network Technology Co ltd
Priority to CN202210096757.XA priority Critical patent/CN114491557A/zh
Publication of CN114491557A publication Critical patent/CN114491557A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

一种基于容器环境java内存木马威胁检测方法
技术领域
本发明涉及到信息安全技术领域,尤其涉及到一种基于容器环境java内存木马威胁检测方法。
背景技术
业界通常将木马种类分成“有文件木马”和“无文件木马”两类。“有文件木马”也就是我们常见的“二进制木马、网马”;“无文件木马”是无文件攻击的一种方式,内存木马是常见的类型之一。一般情况下,木马病毒会以文件的形式存在于Web容器当中,在特殊情况下,或不能在web目录下写入文件。
Java为我们提供了方便的接口,VirtualMachineAttachAPI是agent与JVM进程之间沟通的桥梁,底层通过socket通信,JVMA可以发送一些指令给JVMB。JavaAgent可以用独立于本jvm进程之外的代理程序来检测并协助运行在JVM上的应用程序。
总结概括来说,JavaAgent不能单独启动,必须依附在一个Java应用程序当中,动态的修改已加载或未加载的类,包括类的属性,方法。从攻击的角度来看,可以利用上述JVM的特性,恶意增加一个webshell的后门。入侵方法可以通过JavaAgent向JVM注入恶意代码。
目前,针对于木马的检测大多都停留在宿主机上,而在容器环境下执行内存木马检测的方案存量较少。容器是操作系统上一种轻量化的虚拟技术,其根本是依赖于Linux命名空间和Cgroup技术,通过内核提供的接口,可以快速构建出一个运行环境。由于Namespace隔离技术的存在,不同容器之间默认是具备一定隔离性的,这也为我们排查容器内部的内存木马带来了难度。
当目标JVM的进程命名空间与agent命名空间相似时,由于在容器环境下,不同进程的命名空间不一致,存在天然的隔离性。虽然在JDK11上,官方提供了跨命名空间注入,但对于目标进程和本进程所属命名空间不一致时,会出现问题。
假设在宿主机上runtime为jdk11,如图1、图2所示,不论是在相同的namespace,还是在不同的namespace,注入jdk8的Container进程,会提示注入失败,com.sun.tools.attach.AttachNotSupportedException:Unable to open socket file。
另外,由不同jre运行起来的jvm进程,在注入的时候也会发生不兼容情况。即使在流行的开源项目arthas(java性能分析工具,也是利用JavaAgent特性)当中,也存在这样的问题(issue-1519,issue-1521)。本质原因是由于官方JDK升级的时候,未做好兼容适配,未覆盖不同版本jvm数据通信的情况。
综上,导致现有木马检测技术有如下缺点:
一、在业务进程当中进行木马检测分析,占用业务进程的计算资源;
二、对于低版本jdk(低于等于8),无法使用官方attach注入高版本的jvm进程,不同版本jre在attach机制兼容性较差;
三、对于低版本jdk(低于等于8),无法进行跨命名空间注入。
发明内容
本发明的目的是为了克服现有技术的不足,提供了一种基于容器环境java内存木马威胁检测方法。
本发明是通过以下技术方案实现:
本发明提供了一种基于容器环境java内存木马威胁检测方法,该基于容器环境java内存木马威胁检测方法包括以下检测步骤:
S1:将内存木马的检测包拷贝到宿主机的目标容器内;
S2:将检测进程的命名空间关联到目标进程的命名空间;
S3:将拷贝到目标容器内的检测包注入到目标进程中;
S4:检测包检测出的风险类以流的形式传给宿主机;
S5:宿主机对风险类进行风险分析并输出检测结果。
在步骤S1中,将内存木马的检测包拷贝到宿主机的目标容器内时,先获取目标容器在宿主机的目录,将检测包拷贝到目标容器所在宿主机的目录下。
在步骤S2中,通过setns系统调用,将检测进程的命名空间关联到目标进程的命名空间。
在步骤S2中,通过CGO编程函数,使检测进程在启动多线程环境之前完成setns系统调用操作。
本发明的有益效果是:本发明利用系统调用进行容器命名空间的切换,实现跨命名空间注入操作,从而避免不同jvm版本的不兼容情况,并且,在容器内部不去进行分析,避免消耗业务容器计算资源,因此检测速度相对更快。
附图说明
图1是目前在runtime为jdk11的宿主机上注入jdk8的Container进程的代码文件示意图一;
图2是目前在runtime为jdk11的宿主机上注入jdk8的Container进程的代码文件示意图二;
图3是本发明实施例提供的基于容器环境java内存木马威胁检测方法的流程图;
图4是本发明实施例提供的基于容器环境java内存木马威胁检测方法的架构图;
图5是获取目标容器在宿主机的根目录的代码文件示意图;
图6是获取目标容器在宿主机的根目录的代码文件示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参阅图3、图4,图3是本发明实施例提供的基于容器环境java内存木马威胁检测方法的流程图,图4是本发明实施例提供的基于容器环境java内存木马威胁检测方法的架构图。
本发明实施例提供了一种基于容器环境java内存木马威胁检测方法,如图3、图4所示,该基于容器环境java内存木马威胁检测方法包括以下检测步骤:
S1:将内存木马的检测包拷贝到宿主机的目标容器内;
S2:将检测进程的命名空间关联到目标进程的命名空间;
S3:将拷贝到目标容器内的检测包注入到目标进程中;
S4:检测包检测出的风险类以流的形式传给宿主机;
S5:宿主机对风险类进行风险分析并输出检测结果。
已知,内存木马入侵方法可以通过JavaAgent向JVM注入恶意代码。检测逻辑也可以利用attach api,向目标JVM注入检测代码。检测是否存在恶意代码,可以通过Instrumentation.getAllLoadedClasses(),拿到所有的class。并通过java特性,利用反射拿到相关信息(例如注解,方法,类),筛选可能被木马劫持的对象。最后分析这些初筛对象,查看是否真正存在执行shell命令。
在检测过程当中,将用于检测内存木马的检测包拷贝到目标容器当中,目标容器即可能被注入内存木马的容器。如图4所示,命名空间A为目标容器的命名空间,命名空间B为业务容器的命名空间,检测进程在业务容器内执行。在步骤S1中,将内存木马的检测包拷贝到宿主机的目标容器内时,先获取目标容器在宿主机的目录,将检测包拷贝到目标容器所在宿主机的目录下。具体的即为我们需要事前获取目标容器在宿主机的目录。
获取目标容器在宿主机的目录,主要可以有两种方案获取,一种是直接通过相应的runtime api,拿docker为例,在官方提供的docker sdk当中,CopyToContainer方法可以将文件传入到目标容器内部,另一种我们可以通过overlay2驱动,找到相关容器的Merged目录,将检测agent拷贝到目标容器内部。此外,如图5所示,我们还可以直接通过相应的API,拿到MergedDir目录,这是在Overlay引擎下,目标容器在宿主机的根目录。
在步骤S2中,我们通过setns系统调用,将检测进程的命名空间关联到目标进程的命名空间。具体的,我们可以利用setns系统调用,加入到目标容器对应的namespace当中,但是需要注意的是,setns,syscall并不能正确的在Go这种多线程环境下工作,我们必须让新的进程在启动go runtime多线程环境之前完成setns相关调用操作。
Go语言提供了CGO编程,C语言可以通过gcc的扩展__attribute__((constructor))来实现程序启动前执行特定代码。在步骤S2中,通过CGO编程函数,使检测进程在启动多线程环境之前完成setns系统调用操作。我们可以通过cgo嵌入,使得goruntime启动前执行CGO编程函数(CGO编程函数为图6所示的c代码)。在Go程序启动前先执行init函数,然后执行nsexec函数,最后通过nsexec函数就可以写我们执行注入的检测包(检测包为图4中所示用于检测内存木马的java agent,文件格式为jar),对目标进程(即jvm进程)执行检测逻辑。
通过上述描述不难看出,本发明利用系统调用进行容器命名空间的切换,实现跨命名空间注入操作,从而避免不同jvm版本的不兼容情况,并且,在容器内部不去进行分析,避免消耗业务容器计算资源,因此检测速度相对更快。
以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (4)

1.一种基于容器环境java内存木马威胁检测方法,其特征在于,包括以下检测步骤:
S1:将内存木马的检测包拷贝到宿主机的目标容器内;
S2:将检测进程的命名空间关联到目标进程的命名空间;
S3:将拷贝到目标容器内的检测包注入到目标进程中;
S4:检测包检测出的风险类以流的形式传给宿主机;
S5:宿主机对风险类进行风险分析并输出检测结果。
2.根据权利要求1所述的基于容器环境java内存木马威胁检测方法,其特征在于,在步骤S1中,将内存木马的检测包拷贝到宿主机的目标容器内时,先获取目标容器在宿主机的目录,将检测包拷贝到目标容器所在宿主机的目录下。
3.根据权利要求1所述的基于容器环境java内存木马威胁检测方法,其特征在于,在步骤S2中,通过setns系统调用,将检测进程的命名空间关联到目标进程的命名空间。
4.根据权利要求3所述的基于容器环境java内存木马威胁检测方法,其特征在于,在步骤S2中,通过CGO编程函数,使检测进程在启动多线程环境之前完成setns系统调用操作。
CN202210096757.XA 2022-01-27 2022-01-27 一种基于容器环境java内存木马威胁检测方法 Pending CN114491557A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210096757.XA CN114491557A (zh) 2022-01-27 2022-01-27 一种基于容器环境java内存木马威胁检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210096757.XA CN114491557A (zh) 2022-01-27 2022-01-27 一种基于容器环境java内存木马威胁检测方法

Publications (1)

Publication Number Publication Date
CN114491557A true CN114491557A (zh) 2022-05-13

Family

ID=81476822

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210096757.XA Pending CN114491557A (zh) 2022-01-27 2022-01-27 一种基于容器环境java内存木马威胁检测方法

Country Status (1)

Country Link
CN (1) CN114491557A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116226846A (zh) * 2022-12-28 2023-06-06 北京火山引擎科技有限公司 一种容器的安全检测方法、装置及设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10922386B1 (en) * 2018-01-15 2021-02-16 Trend Micro Incorporated System and methods for security inspection and protection of software containers at runtime
CN112989330A (zh) * 2021-02-08 2021-06-18 网宿科技股份有限公司 容器的入侵检测方法、装置、电子设备及存储介质
CN113158204A (zh) * 2021-04-09 2021-07-23 深圳市联软科技股份有限公司 一种docker容器访问控制宿主机的方法及系统
CN113312624A (zh) * 2021-06-21 2021-08-27 厦门服云信息科技有限公司 一种Java Web应用内存木马检测方法、终端设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10922386B1 (en) * 2018-01-15 2021-02-16 Trend Micro Incorporated System and methods for security inspection and protection of software containers at runtime
CN112989330A (zh) * 2021-02-08 2021-06-18 网宿科技股份有限公司 容器的入侵检测方法、装置、电子设备及存储介质
CN113158204A (zh) * 2021-04-09 2021-07-23 深圳市联软科技股份有限公司 一种docker容器访问控制宿主机的方法及系统
CN113312624A (zh) * 2021-06-21 2021-08-27 厦门服云信息科技有限公司 一种Java Web应用内存木马检测方法、终端设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
TYCOON3: "《libcontainer nsexec + unshared + syscall》", 《博客园》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116226846A (zh) * 2022-12-28 2023-06-06 北京火山引擎科技有限公司 一种容器的安全检测方法、装置及设备

Similar Documents

Publication Publication Date Title
Corina et al. Difuze: Interface aware fuzzing for kernel drivers
US10698684B2 (en) Code injection and code interception in an operating system with multiple subsystem environments
US9864600B2 (en) Method and system for virtualization of software applications
Clause et al. Dytan: a generic dynamic taint analysis framework
US9779111B2 (en) Method and system for configuration of virtualized software applications
US8316448B2 (en) Automatic filter generation and generalization
KR101966754B1 (ko) 소프트웨어 코드의 생성 및 캐싱 기법
US8904537B2 (en) Malware detection
US20050108562A1 (en) Technique for detecting executable malicious code using a combination of static and dynamic analyses
US6698016B1 (en) Method for injecting code into another process
US20100153693A1 (en) Code execution with automated domain switching
US8429648B2 (en) Method and apparatus to service a software generated trap received by a virtual machine monitor
US20030177129A1 (en) Extensible loader
JP2000172512A (ja) バイトコ―ドを実行するための方法およびデ―タ処理システム
Fratantonio et al. Shellzer: a tool for the dynamic analysis of malicious shellcode
CN112214267A (zh) 一种安卓脱壳加速方法、装置、存储介质及计算机设备
CN114491557A (zh) 一种基于容器环境java内存木马威胁检测方法
CN113176926A (zh) 一种基于虚拟机自省技术的api动态监控方法及系统
CN116668202A (zh) 一种容器环境下内存马检测方法及系统
US20220147376A1 (en) Selective substitution of legacy load module programs with classes for execution in a java virtual machine
US8745605B2 (en) Execution contexts with polymorphic type implementations
Santos Filho et al. Evasion and countermeasures techniques to detect dynamic binary instrumentation frameworks
CN100458700C (zh) 带有安全需求的应用程序的构建方法和装置
Zhu et al. Dytaint: The implementation of a novel lightweight 3-state dynamic taint analysis framework for x86 binary programs
Kneuss et al. Runtime instrumentation for precise flow-sensitive type analysis

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20220513