CN114491557A - 一种基于容器环境java内存木马威胁检测方法 - Google Patents
一种基于容器环境java内存木马威胁检测方法 Download PDFInfo
- 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
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 62
- ZXQYGBMAQZUVMI-GCMPRSNUSA-N gamma-cyhalothrin Chemical compound CC1(C)[C@@H](\C=C(/Cl)C(F)(F)F)[C@H]1C(=O)O[C@H](C#N)C1=CC=CC(OC=2C=CC=CC=2)=C1 ZXQYGBMAQZUVMI-GCMPRSNUSA-N 0.000 title claims abstract description 40
- 238000000034 method Methods 0.000 claims abstract description 48
- 230000008569 process Effects 0.000 claims abstract description 39
- 238000012502 risk assessment Methods 0.000 claims abstract description 4
- 230000006870 function Effects 0.000 claims description 8
- 238000002347 injection Methods 0.000 abstract description 8
- 239000007924 injection Substances 0.000 abstract description 8
- 238000004364 calculation method Methods 0.000 abstract description 2
- 239000003795 chemical substances by application Substances 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 3
- 238000002955 isolation Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012216 screening Methods 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000009545 invasion Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test 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内存木马威胁检测方法。
背景技术
业界通常将木马种类分成“有文件木马”和“无文件木马”两类。“有文件木马”也就是我们常见的“二进制木马、网马”;“无文件木马”是无文件攻击的一种方式,内存木马是常见的类型之一。一般情况下,木马病毒会以文件的形式存在于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系统调用操作。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116226846A (zh) * | 2022-12-28 | 2023-06-06 | 北京火山引擎科技有限公司 | 一种容器的安全检测方法、装置及设备 |
Citations (4)
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应用内存木马检测方法、终端设备及存储介质 |
-
2022
- 2022-01-27 CN CN202210096757.XA patent/CN114491557A/zh active Pending
Patent Citations (4)
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)
Title |
---|
TYCOON3: "《libcontainer nsexec + unshared + syscall》", 《博客园》 * |
Cited By (1)
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 |