CN114692153A - 基于java程序的恶意代码检测方法、设备及存储介质 - Google Patents

基于java程序的恶意代码检测方法、设备及存储介质 Download PDF

Info

Publication number
CN114692153A
CN114692153A CN202210375658.5A CN202210375658A CN114692153A CN 114692153 A CN114692153 A CN 114692153A CN 202210375658 A CN202210375658 A CN 202210375658A CN 114692153 A CN114692153 A CN 114692153A
Authority
CN
China
Prior art keywords
jvm
memory
jit
class
acquiring
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.)
Granted
Application number
CN202210375658.5A
Other languages
English (en)
Other versions
CN114692153B (zh
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 Zorelworld Information Technology Co ltd
Original Assignee
Beijing Zorelworld Information 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 Zorelworld Information Technology Co ltd filed Critical Beijing Zorelworld Information Technology Co ltd
Priority to CN202210375658.5A priority Critical patent/CN114692153B/zh
Publication of CN114692153A publication Critical patent/CN114692153A/zh
Application granted granted Critical
Publication of CN114692153B publication Critical patent/CN114692153B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种基于JAVA程序的恶意代码检测方法、设备及存储介质,本方法首先在目标进程中对JVM代码段内存进行检测;当检测到JVM代码段内存被修改后,获取JIT权限;在JIT权限下,获取到JVM加载的所有CLASS包名,对JVM所加载的类进行过滤,通过JIT接口获取过滤后的CLASS原数据,并通过YARA进行原数据扫描;最后获得扫描后的异常CLASS数据,并进行提取,可以看出,本发明通过系统级模块注入方式,绕开JVM层模块防加载机制实现了对于JAVA程序的恶意代码的检测。

Description

基于JAVA程序的恶意代码检测方法、设备及存储介质
技术领域
本发明涉及信息安全技术领域,特别涉及一种基于JAVA程序的恶意代码检测方法、设备及存储介质。
背景技术
内存马即无文件木马,运行成功后没有相关文件可以关联,并且依附在系统或安全应用软件进程中,一般内存木马是以shellcode的形式寄生在宿主进程,且体积可以小于KB,所以难以进行相关排查。
JAVA内存木马意指运行在JAVA/JVM进程中的木马程序,属于一种容器类木马,与传统系统级内存木马不同的是他所运行的字节码与CPU和操作系统无关,从而木马所产生的所有动作性能(即API调用)都是通过宿主JVM所中转触发。内存马本身很难通过传统杀毒软件检测。
目前JAVA内存马检测都是通过Agent插件的方式检测,对于Agent注入的方式具有很大对抗缺陷,一旦木马程序率先进入JVM中,木马程序将Agent加载相关API抹除,后续安全软件在通过Agent技术做检测将无法对目标JVM进程附加。
发明内容
基于此,本申请实施例提供了一种基于JAVA程序的恶意代码检测方法、设备及存储介质,通过系统级模块注入方式,将检测模块注入目标JVM进程,从而进行相关检测与取证还原。
第一方面,提供了一种基于JAVA程序的恶意代码检测方法,该方法包括:
通过注入器注入到目标进程;
在目标进程中对JVM代码段内存进行检测;当检测到JVM代码段内存被修改后,获取JIT权限;
在JIT权限下,获取到JVM加载的所有CLASS包名,对JVM所加载的类进行过滤,通过JIT接口获取过滤后的CLASS原数据,并通过YARA进行原数据扫描;
获得扫描后的异常CLASS数据,并进行提取。
可选地,所述通过注入器注入到目标进程,还包括:
获得目标进程中对JVM代码段内存进行检测的权限。
可选地,所述获得扫描后的异常CLASS数据,并进行提取,还包括:
获得扫描后的可疑CLASS数据,并进行提取以及分析。
可选地,所述当检测到JVM代码段内存被修改后,获取JIT权限,包括:
当检测到JVM导出函数JVM_EnqueueOperation接口被修改后,获取JIT权限。
可选地,所述获取JIT权限,具体包括:
通过重写JVM加载API实现自加载以获取JIT权限。
可选地,所述对JVM所加载的类进行过滤,包括:
通过白名单方式和/或模糊黑名单方式对JVM所加载的类进行过滤。
第二方面,提供了一种电子设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述第一方面任一所述的基于JAVA程序的恶意代码检测方法。
第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述第一方面任一所述的基于JAVA程序的恶意代码检测方法。
本申请实施例提供的技术方案中首先在目标进程中对JVM代码段内存进行检测;当检测到JVM代码段内存被修改后,获取JIT权限;在JIT权限下,获取到JVM加载的所有CLASS包名,对JVM所加载的类进行过滤,通过JIT接口获取过滤后的CLASS原数据,并通过YARA进行原数据扫描;最后获得扫描后的异常CLASS数据,并进行提取,可以看出,本发明通过系统级模块注入方式,绕开JVM层模块防加载机制实现了对于JAVA程序的恶意代码的检测。
附图说明
为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引伸获得其它的实施附图。
图1为本申请实施例提供的一种基于JAVA程序的恶意代码检测方法步骤图;
图2为本申请实施例提供的一种基于JAVA程序的恶意代码检测方法示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在本发明的描述中,除非另有说明“多个”的含义是两个或两个以上。术语“包括”、“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包括了一系列步骤或单元的过程、方法、系统、产品或设备不必限于已明确列出的那些步骤或单元,而是还可包含虽然并未明确列出的但对于这些过程、方法、产品或设备固有的其它步骤或单元,或者基于本发明构思进一步的优化方案所增加的步骤或单元。
在本申请中首先构造内存马进程检测对象,通过第三方工具或手动方式像JVM目标植入内存木马,本申请以冰蝎木马来做说明,冰蝎的shell管理工具恰好携带了内存防检测功能,在注入内存马的时候把这一项给打开,当内存木马注入成功后,往目标进程附加Agent会失败,所以传统通过Agent附加检测将失效。
本发明通过系统级模块注入方式,将检测模块注入目标JVM进程,从而进行相关检测与取证还原。具体地,请参考图1,其示出了本申请实施例提供的一种基于JAVA程序的恶意代码检测方法的步骤图,该方法可以包括以下步骤:
步骤101,通过注入器注入到目标进程。
在本申请实施例中,目标进程为通过第三方工具或手动方式植入内存木马的JVM目标,首先通过注入器将本申请的检测模块注入到目标进程中。
在本申请一个可选的实施例中,通过注入器注入到目标进程,还包括获得目标进程中对JVM代码段内存进行检测的权限。
步骤102,在目标进程中对JVM代码段内存进行检测;当检测到JVM代码段内存被修改后,获取JIT权限。
在本申请实施例中,注入到目标进程中的检测模块对JVM代码段内存进行检测,其中主要是检测JVM代码段内存是否有被修改,如本实施例中所植入的冰蝎木马,检测模块可以检测出冰蝎木马修改了JVM导出函数JVM_EnqueueOperation接口。
当检测到JVM代码段内存被修改后,获取JIT权限(Just In Time Compiler,即时编译器),实际上JAVA Agent底层就是走的JIT相关接口,检测模块通过重写JVM加载API实现自加载获取JIT权限
步骤103,在JIT权限下,获取到JVM加载的所有CLASS包名,对JVM所加载的类进行过滤,通过JIT接口获取过滤后的CLASS原数据,并通过YARA进行原数据扫描。
在本申请实施例中,步骤103主要是对威胁判定进行判定,首先获取到JVM加载的所有CLASS包名,通过白名单方式,排除掉不容易被利用的JAVA和容器的原始组件,例如白名单中包含正常JAVA应用常用或必加载的包;并通过模糊黑名单方式过滤比较可以的CLASS名称,然后通过JIT接口获取CLASS原数据,最后使用YARA进行原数据扫描,其中YARA为现有开源工具,用于识别和分类恶意软件样本。
步骤104,获得扫描后的异常CLASS数据,并进行提取。
最后将异常的CLASS保存到文件,通过YARA的检测可以有效的发现高危威胁,但内存马本身如果做了混淆或加密此步骤不一定能检测出来,所以检测模块最后将可疑数据CLASS一并也提取出去,方便后续分析。
具体地,本实施例中异常数据是指匹配到精确特征,比如本申请中的冰蝎木马,而可疑数据则是匹配一些不确定的内容但这些数据很大程度上是有问题的,比如这段数据中有大量的混淆加密,SHELL调用等,因为一个正常java应用不会轻易调用net user这种命令,亦或者这段数据特征上特别想一些开源工具比如挖矿,隧道转发等,这些都可以视为可疑数据。
如图2为提供的一种基于JAVA程序的恶意代码检测方法示意图,图中CLASS是JAVA字节序在文件系统中持久化的数据格式形态,KLASS是JVM在内存中的模型化对象,模型化对象具体是指JVM中的具体模型或类,KLASS可以实例化出来很多对象。
在一个实施例中,提供了一种电子设备,该电子设备可以是计算机。该电子设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该设备的处理器用于提供计算和控制能力。该设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于恶意代码检测数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种恶意代码检测方法。
在本申请的一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述恶意代码检测方法的步骤。
本实施例提供的计算机可读存储介质,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以M种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(SyMchliMk)DRAM(SLDRAM)、存储器总线(RaMbus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合(只要这些技术特征的组合不存在矛盾),为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述;这些未明确写出的实施例,也都应当认为是本说明书记载的范围。
上文中通过一般性说明及具体实施例对本申请作了较为具体和详细的描述。应当理解,基于本申请的技术构思,还可以对这些具体实施例作出若干常规的调整或进一步的创新;但只要未脱离本申请的技术构思,这些常规的调整或进一步的创新得到的技术方案也同样落入本申请的权利要求保护范围。

Claims (8)

1.一种基于JAVA程序的恶意代码检测方法,其特征在于,应用于检测模块,所述方法包括:
通过注入器注入到目标进程;
在目标进程中对JVM代码段内存进行检测;当检测到JVM代码段内存被修改后,获取JIT权限;
在JIT权限下,获取到JVM加载的所有CLASS包名,对JVM所加载的类进行过滤,通过JIT接口获取过滤后的CLASS原数据,并通过YARA进行原数据扫描;
获得扫描后的异常CLASS数据,并进行提取。
2.根据权利要求1所述的方法,其特征在于,所述通过注入器注入到目标进程,还包括:
获得目标进程中对JVM代码段内存进行检测的权限。
3.根据权利要求1所述的方法,其特征在于,所述获得扫描后的异常CLASS数据,并进行提取,还包括:
获得扫描后的可疑CLASS数据,并进行提取以及分析。
4.根据权利要求1所述的方法,其特征在于,所述当检测到JVM代码段内存被修改后,获取JIT权限,包括:
当检测到JVM导出函数JVM_EnqueueOperation接口被修改后,获取JIT权限。
5.根据权利要求1所述的方法,其特征在于,所述获取JIT权限,具体包括:
通过重写JVM加载API实现自加载以获取JIT权限。
6.根据权利要求1所述的方法,其特征在于,所述对JVM所加载的类进行过滤,包括:
通过白名单方式和/或模糊黑名单方式对JVM所加载的类进行过滤。
7.一种电子设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至6任一所述的基于JAVA程序的恶意代码检测方法。
8.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一所述的于JAVA程序的恶意代码检测方法。
CN202210375658.5A 2022-04-11 2022-04-11 基于java程序的恶意代码检测方法、设备及存储介质 Active CN114692153B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210375658.5A CN114692153B (zh) 2022-04-11 2022-04-11 基于java程序的恶意代码检测方法、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210375658.5A CN114692153B (zh) 2022-04-11 2022-04-11 基于java程序的恶意代码检测方法、设备及存储介质

Publications (2)

Publication Number Publication Date
CN114692153A true CN114692153A (zh) 2022-07-01
CN114692153B CN114692153B (zh) 2024-05-14

Family

ID=82143310

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210375658.5A Active CN114692153B (zh) 2022-04-11 2022-04-11 基于java程序的恶意代码检测方法、设备及存储介质

Country Status (1)

Country Link
CN (1) CN114692153B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115270126A (zh) * 2022-09-29 2022-11-01 北京微步在线科技有限公司 一种检测Java内存马的方法、装置、电子设备及存储介质
CN115795444A (zh) * 2023-01-31 2023-03-14 北京微步在线科技有限公司 一种mssql后门的检测方法及装置
CN117093404A (zh) * 2023-10-17 2023-11-21 西安热工研究院有限公司 可信动态度量过程中不可信进程自恢复方法、系统及设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080016339A1 (en) * 2006-06-29 2008-01-17 Jayant Shukla Application Sandbox to Detect, Remove, and Prevent Malware
CN112199678A (zh) * 2020-09-25 2021-01-08 杭州安恒信息技术股份有限公司 一种在线取证的方法、装置、计算机设备和可读存储介质
WO2021003982A1 (zh) * 2019-07-05 2021-01-14 深圳壹账通智能科技有限公司 业务系统漏洞处理方法、装置、计算机设备和存储介质
CN113312624A (zh) * 2021-06-21 2021-08-27 厦门服云信息科技有限公司 一种Java Web应用内存木马检测方法、终端设备及存储介质
CN113946825A (zh) * 2021-12-22 2022-01-18 北京微步在线科技有限公司 一种内存马处理方法及系统
CN114065204A (zh) * 2021-11-29 2022-02-18 中国工商银行股份有限公司 一种无文件木马查杀方法及装置
CN115840940A (zh) * 2022-10-28 2023-03-24 国网山东省电力公司电力科学研究院 一种无文件木马检测方法、系统、介质及设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080016339A1 (en) * 2006-06-29 2008-01-17 Jayant Shukla Application Sandbox to Detect, Remove, and Prevent Malware
WO2021003982A1 (zh) * 2019-07-05 2021-01-14 深圳壹账通智能科技有限公司 业务系统漏洞处理方法、装置、计算机设备和存储介质
CN112199678A (zh) * 2020-09-25 2021-01-08 杭州安恒信息技术股份有限公司 一种在线取证的方法、装置、计算机设备和可读存储介质
CN113312624A (zh) * 2021-06-21 2021-08-27 厦门服云信息科技有限公司 一种Java Web应用内存木马检测方法、终端设备及存储介质
CN114065204A (zh) * 2021-11-29 2022-02-18 中国工商银行股份有限公司 一种无文件木马查杀方法及装置
CN113946825A (zh) * 2021-12-22 2022-01-18 北京微步在线科技有限公司 一种内存马处理方法及系统
CN115840940A (zh) * 2022-10-28 2023-03-24 国网山东省电力公司电力科学研究院 一种无文件木马检测方法、系统、介质及设备

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
LEX1993: "一文看懂内存马", Retrieved from the Internet <URL:https://www.freebuf.com/articles/web/274466.html> *
ONG, T.‑M: "A Framework for Distributed Computing over the Internet", MASTER’S THESIS, NANYANG TECHNOLOGICAL UNIVERSITY, SINGAPORE, 31 December 2005 (2005-12-31) *
XYYLLL: "议题解析与复现--《Java内存攻击技术漫谈》(一)", Retrieved from the Internet <URL:https://www.cnblogs.com/xyylll/p/15515254.html> *
唐彰国;杨玲;李焕洲;张健;: "虚拟内存进程重构与恶意行为扩展识别模型", 北京工业大学学报, no. 04, 22 January 2018 (2018-01-22), pages 64 - 71 *
郑文庚 等: "Windows系统环境下基于内存分析的木马病毒取证", 刑事技术, vol. 45, no. 6, 9 December 2020 (2020-12-09), pages 572 - 576 *
马博林 等: "基于指令集随机化的抗代码注入攻击方法", 信息安全学报, vol. 5, no. 4, 15 July 2020 (2020-07-15), pages 30 - 43 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115270126A (zh) * 2022-09-29 2022-11-01 北京微步在线科技有限公司 一种检测Java内存马的方法、装置、电子设备及存储介质
CN115270126B (zh) * 2022-09-29 2022-12-16 北京微步在线科技有限公司 一种检测Java内存马的方法、装置、电子设备及存储介质
CN115795444A (zh) * 2023-01-31 2023-03-14 北京微步在线科技有限公司 一种mssql后门的检测方法及装置
CN117093404A (zh) * 2023-10-17 2023-11-21 西安热工研究院有限公司 可信动态度量过程中不可信进程自恢复方法、系统及设备
CN117093404B (zh) * 2023-10-17 2024-02-09 西安热工研究院有限公司 可信动态度量过程中不可信进程自恢复方法、系统及设备

Also Published As

Publication number Publication date
CN114692153B (zh) 2024-05-14

Similar Documents

Publication Publication Date Title
CN114692153A (zh) 基于java程序的恶意代码检测方法、设备及存储介质
CN109643343B (zh) 使用虚拟地址映射对目标应用功能的基于内核的检测
CN109033828B (zh) 一种基于计算机内存分析技术的木马检测方法
US7831791B2 (en) Method of address space layout randomization for windows operating systems
US10310992B1 (en) Mitigation of cyber attacks by pointer obfuscation
US20100306851A1 (en) Method and apparatus for preventing a vulnerability of a web browser from being exploited
US7607122B2 (en) Post build process to record stack and call tree information
Sihwail et al. An Effective Memory Analysis for Malware Detection and Classification.
CN103886252A (zh) 受信进程地址空间中执行的软件代码的恶意性的选择评估
US10216934B2 (en) Inferential exploit attempt detection
CN108763951B (zh) 一种数据的保护方法及装置
CN111835756A (zh) App隐私合规检测方法、装置、计算机设备及存储介质
CN113946825B (zh) 一种内存马处理方法及系统
CN114186239A (zh) 一种基于路径信息的程序白名单方法及装置
CN108763924B (zh) 一种安卓应用程序中不可信第三方库访问权限控制方法
CN108322458B (zh) Web应用入侵检测方法、系统、计算机设备和存储介质
CN115840940A (zh) 一种无文件木马检测方法、系统、介质及设备
Lanet et al. Memory forensics of a java card dump
CN111222122A (zh) 应用权限管理方法、装置及嵌入式设备
CN107168875B (zh) 一种基于安卓应用多入口特性的Activity构件泄露检测方法
CN115859289A (zh) 一种基于可信进程树的勒索病毒隔离方法
CN111125701B (zh) 文件检测方法、设备、存储介质及装置
CN110069936A (zh) 一种木马隐写方法和检测方法
CN114254314A (zh) 一种Linux下基于内核的防勒索病毒的方法
Mesbah et al. Reverse engineering a Java Card memory management algorithm

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
GR01 Patent grant
GR01 Patent grant