CN114065196A - Java内存马检测方法、装置、电子设备与存储介质 - Google Patents
Java内存马检测方法、装置、电子设备与存储介质 Download PDFInfo
- Publication number
- CN114065196A CN114065196A CN202111165493.0A CN202111165493A CN114065196A CN 114065196 A CN114065196 A CN 114065196A CN 202111165493 A CN202111165493 A CN 202111165493A CN 114065196 A CN114065196 A CN 114065196A
- Authority
- CN
- China
- Prior art keywords
- class
- detected
- loaded
- horse
- java
- 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
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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
-
- 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/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- 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/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- 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)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种Java内存马检测方法、装置、电子设备与存储介质,方法包括:从Java虚拟机中获取待检测的已加载类;在待检测的已加载类为非可信类的情况下,检测待检测的已加载类是否为敏感类;其中,敏感类为以下情况中的任意一种:服务器用于接收请求的类、过滤器以及监听器;在待检测的已加载类为敏感类的情况下,检测待检测的已加载类在服务器上是否存在对应的文件;在待检测的已加载类在服务器上不存在对应的文件的情况下,发出待检测的已加载类为Java内存马的报警信息。本发明可有效发现运行于Java虚拟机内的内存马,克服了现有技术无法发现Java内存马的缺陷,提高了Java内存马检测的准确率。
Description
技术领域
本发明涉及网络安全技术领域,尤其涉及一种Java内存马检测方法、装置、电子设备与存储介质。
背景技术
内存马是无文件攻击的一种技术手段,无文件攻击可以有效地躲避传统安全软件的检测,它们可以在系统的内存中远程加载执行、驻留在注册表中或滥用常用的白名单工具。无文件攻击技术允许攻击者访问系统,从而启用后续的恶意活动。通过操纵漏洞,利用程序、合法工具、宏和脚本,攻击者可以破坏系统、提升特权或在网络上横向传播恶意代码。而且,无文件攻击在执行后不会留下任何痕迹,这使其难以被检测和清除。
在现有的内存马检测方法中,通过判断进程所对应的可执行文件在目标存储区域内是否具有存储地址来确定进程内是否存在内存马。Java内存马运行在Java虚拟机进程中,而Java虚拟机进程可以在目标存储区域内找到对应可执行文件的存储地址,因此现有技术中的内存马检测方法无法实现对Java内存马的检测。
发明内容
本发明提供一种Java内存马检测方法、装置、电子设备与存储介质,用以解决现有的内存马检测方法中无法检测到运行在Java虚拟机进程上的Java内存马,提高了针对特定的java虚拟机进程的内存马的检测效率。
本发明提供一种Java内存马检测方法,包括:
从Java虚拟机中获取待检测的已加载类;
在所述待检测的已加载类为非可信类的情况下,检测所述待检测的已加载类是否为敏感类;其中,所述敏感类为以下情况中的任意一种:服务器用于接收请求的类、过滤器以及监听器;
在所述待检测的已加载类为敏感类的情况下,检测所述待检测的已加载类在服务器上是否存在对应的文件;
在所述待检测的已加载类在服务器上不存在对应的文件的情况下,发出所述待检测的已加载类为Java内存马的报警信息。
根据本发明提供的一种Java内存马检测方法,在所述检测所述待检测的已加载类在服务器上是否存在对应的文件之后,方法还包括:
在所述待检测的已加载类在服务器上存在对应的文件的情况下,检测所述文件内是否包含敏感内容;
在所述文件内包含敏感内容的情况下,发出所述待检测的已加载类为Java内存马的报警信息。
根据本发明提供的一种Java内存马检测方法,在所述检测所述文件是否包含敏感内容之后,方法还包括:
在所述文件内不包含敏感内容的情况下,将所述待检测的已加载类设置为可信类,并记录被设置为可信类的时刻。
根据本发明提供的一种Java内存马检测方法,在所述检测所述待检测的已加载类是否为敏感类之后,方法还包括:
在所述待检测的已加载类为非敏感类的情况下,将所述待检测的已加载类设置为可信类,并将所述待检测的已加载类被设置为可信类的时间长度值设置为小于预设阈值的第一时间长度值。
根据本发明提供的一种Java内存马检测方法,在所述从Java虚拟机中获取待检测的已加载类之后,方法还包括:
在所述待检测的已加载类为可信类的情况下,检测所述待检测的已加载类被设置为可信类的时间长度值是否超出预设的阈值;其中,所述待检测的已加载类被设置为可信类的时间长度值是根据当前时刻以及待检测的已加载类被设置为可信类的时刻得到的,或是在先设置的第一时间长度值;
在超出预设的阈值的情况下,重新执行所述检测所述待检测的已加载类在服务器上是否存在对应的文件的步骤。
根据本发明提供的一种Java内存马检测方法,所述从Java虚拟机中获取待检测的已加载类,包括:
利用Instrument特性,周期性地从Java虚拟机中获取待检测的已加载类。
根据本发明提供的一种Java内存马检测方法,所述检测所述待检测的已加载类在服务器上是否存在对应的文件,包括:
获取所述待检测的已加载类的类加载器;
根据所述类加载器,回溯所述待检测的已加载类在服务器上是否存在对应的文件。
本发明还提供一种Java内存马检测装置,包括:
加载类获取模块,用于从Java虚拟机中获取待检测的已加载类;
敏感类判断模块,用于在所述待检测的已加载类为非可信类的情况下,检测所述待检测的已加载类是否为敏感类;其中,所述敏感类为以下情况中的任意一种:服务器用于接收请求的类、过滤器以及监听器;
文件判断模块,用于在所述待检测的已加载类为敏感类的情况下,检测所述待检测的已加载类在服务器上是否存在对应的文件;
报警模块,用于在所述待检测的已加载类在服务器上不存在对应的文件的情况下,发出所述待检测的已加载类为Java内存马的报警信息。
本发明还提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如所述Java内存马检测方法的步骤。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如所述Java内存马检测方法的步骤。
本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,所述指令在被执行时用于实现如所述Java内存马检测方法的步骤。
本发明提供的Java内存马检测方法、装置、电子设备与存储介质,通过从Java虚拟机中获取待检测的已加载类;在待检测的已加载类为非可信类的情况下,检测待检测的已加载类是否为敏感类;在待检测的已加载类为敏感类的情况下,检测待检测的已加载类在服务器上是否存在对应的文件;在待检测的已加载类在服务器上不存在对应的文件的情况下,发出待检测的已加载类为Java内存马的报警信息;本发明通过对Java虚拟机内部的已加载类进行内存马检测,可有效发现运行于Java虚拟机内的内存马,克服了现有技术无法发现Java内存马的缺陷,提高了Java内存马检测的准确率。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的Java内存马检测方法的流程示意图;
图2是本发明提供的Java内存马检测方法的技术方案流程示意图;
图3是本发明提供的Java内存马检测方法装置的结构示意图;
图4是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合图1-图4描述本发明的Java内存马检测方法、装置、电子设备与存储介质。
图1为本发明提供的Java内存马检测方法的流程图,如图1所示,本发明提供的Java内存马检测方法包括:
步骤110、从Java虚拟机中获取待检测的已加载类。
在本实施例中,Java虚拟机是一种抽象化的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java程序在对某个类进行引用或使用时,首先需要加载该类。类的加载是通过Java虚拟机的类加载子系统完成的。因此,从Java虚拟机中能够得到当前时刻的已加载类,这些已加载类是当前时刻正在被引用或使用的类,或即将被引用或使用的类。
从Java虚拟机所获取的待检测的已加载类的数量不受限制,可以是一个或多个。在本实施例中,从Java虚拟机所获取的已加载类可以存储在一个列表中,即采用已加载类列表的方式来存储待检测的已加载类。在后续步骤中,通过遍历列表来实现对已加载类的逐个操作。
步骤120、在所述待检测的已加载类为非可信类的情况下,检测所述待检测的已加载类是否为敏感类;其中,所述敏感类为以下情况中的任意一种:服务器用于接收请求的类、过滤器以及监听器。
可信类是指已经被认定不存在安全隐患、能够被信任的类。反之,非可信类是指未被认定为可信类的类。在本实施例中,已经被认定为可信类的类可以存储在可信类缓存中,若待检测的已加载类未被包含在可信类缓存中,则该已加载类被认为是非可信类。
对于已经被认定为非可信类的已加载类,需要进一步判断其是否为敏感类。可通过类的类型来判断已加载类是否为敏感类。
敏感类一般包括三种类型:服务器用于接收请求的类、过滤器以及监听器。
具体的说,在Java中,敏感类判断逻辑如下:
1、实现以下接口,包括javax.servlet.Filter,javax.servlet.Servlet和javax.servlet.ServletRequestListener。
2、继承或就是以下类,包括javax.servlet.http.HttpServlet和org.springframework.web.servlet.handler.AbstractHandlerMapping。
3、使用以下注解,包括org.springframework.stereotype.Controller,org.springframework.web.bind.annotation.RestController,
org.springframework.web.bind.annotation.RequestMapping,org.springframework.web.bind.annotation.GetMapping,
org.springframework.web.bind.annotation.PostMapping,org.springframework.web.bind.annotation.PatchMapping,
org.springframework.web.bind.annotation.PutMapping,org.springframework.web.bind.annotation.Mapping。
若已加载类满足以上情况中的任意一种,则被认定为敏感类,否则为非敏感类。
步骤130、在所述待检测的已加载类为敏感类的情况下,检测所述待检测的已加载类在服务器上是否存在对应的文件。
在本实施例中,利用了内存马常驻内存和无文件的特性来发现内存马,避免通过监控点检测内存马容易被绕过的问题。
其中,内存马常驻内存,它可以在系统的内存中远程加载执行、驻留在注册表中或滥用常用的白名单工具,例如PowerShell,Windows Management Instrumentation(WMI)和PsExec等。而且,内存马又被称为无文件木马,在执行后不会留下任何痕迹,这使其难以被检测和清除。
在本实施例中,检测出待检测的已加载类为敏感类,则继续检测此次的待检测的已加载类在服务器上是否存在对应的文件。
步骤140、在所述待检测的已加载类在服务器上不存在对应的文件的情况下,发出所述待检测的已加载类为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内存马的效率。
基于上述任一实施例,在本实施例中,在所述检测所述待检测的已加载类是否为敏感类之后,方法还包括:
在所述待检测的已加载类为非敏感类的情况下,将所述待检测的已加载类设置为可信类,并将所述待检测的已加载类被设置为可信类的时间长度值设置为小于预设阈值的第一时间长度值。
在本实施例中,待检测的已加载类为非敏感类,是指待检测的已加载类不属于服务器用于接收请求的类、过滤器以及监听器中的任何一种。此时,待检测的已加载类被默认不会含有Java内存马。因此,可将待检测的已加载类认定为可信类,如将已加载类保存在可信类缓存中。
由于该类并不是敏感类,被认定为可信类的可信度较高,因此可以为该类设置一个小于预设阈值的第一时间长度值,第一时间长度值是一个固定值,不会随着时间的变化而发生改变,如将第一时间长度值设置为代表永不超时的0值。在其他实施例中,由于第一时间长度值小于预设阈值(一般阈值为大于0的值),因此此种可信类会被一直认为是可信类,不会再接受是否为敏感类的检测。
本发明提供的Java内存马检测方法,通过将被判定为非敏感类的待检测的已加载类的时间长度值设置为小于预设阈值的第一时间长度值,使其一直被归为可信类且永不超时,降低了对可信类的二次检测的工作量,优化了检测流程,对提升检测Java内存马的效率有极大的促进作用。
基于上述任一实施例,在本实施例中,在所述从Java虚拟机中获取待检测的已加载类之后,方法还包括:
在所述待检测的已加载类为可信类的情况下,检测所述待检测的已加载类被设置为可信类的时间长度值是否超出预设的阈值;其中,所述待检测的已加载类被设置为可信类的时间长度值是根据当前时刻以及待检测的已加载类被设置为可信类的时刻得到的,或是在先设置的第一时间长度值;
在超出预设的阈值的情况下,重新执行所述检测所述待检测的已加载类在服务器上是否存在对应的文件的步骤。
对于有些内存马在攻击时有文件,攻击结束后无文件的情况,在本实施例中,通过将被判定为敏感类且存在对应文件而文件内容又不包含敏感内容的类设置为可信类,并检查时间长度值是否超过预设的阈值,可以发现此类情况。
时间长度值存在两种,一种是所述待检测的已加载类被设置为可信类的时间长度值为在先设置的第一时间长度值,是固定值,且比预设的阈值小,即永不超时,这种情况是指待检测的已加载类被判定为非敏感类,并被设置为可信类的情况;另一种是所述待检测的已加载类被设置为可信类的时间长度值为:当前时刻减去待检测的已加载类被设置为可信类的时刻,这种情况是指被判定为敏感类且存在对应文件而文件内容又不包含敏感内容的类设置为可信类的情况。
针对被判定为敏感类且存在对应文件而文件内容又不包含敏感内容的类设置为可信类的情况,这种类的时间长度值是变化的,随着当前时刻的增大,时间长度值不断变大。当超过预设的阈值时,这种类会被重新检测在服务器上是否存在对应的文件。如果不存在对应的文件,就会发出待检测的已加载类为Java内存马的报警;如果存在对应的文件,则进一步检测对应的文件是否包含敏感内容,包含敏感内容则发出待检测的已加载类为Java内存马的报警,否则再次将所述待检测的已加载类设置为可信类,并记录被设置为可信类的时刻。
具体来说,针对被判定为敏感类且存在对应文件,而文件内容又不包含敏感内容的类设置为可信类的情况,假设待检测的类上次被设置为可信类时,记录的时刻为00:00:00,当前时刻为00:00:05,预设的阈值为6秒,则此时的待检测的已加载类的时间长度值为5秒,没有超过预设的阈值,程序结束。假设当前时刻为00:00:07,则此时的待检测的已加载类的时间长度值为7秒,超过预设的阈值6秒,重新执行上述步骤130中的检测所述待检测的已加载类在服务器上是否存在对应的文件以及后续程序。
本发明提供的Java内存马检测方法,通过设置预设的阈值,来检测待检测的已加载类的时间长度值是否超过预设的阈值,从而降低了对被判定为敏感类且又被设置为可信类的待检测的已加载类的检测频次,并使非敏感类的可信类不再受到二次检测,降低了整个检测流程的工作量,有效的提升了检测Java内存马的效率。
基于上述任一实施例,在本实施例中,所述从Java虚拟机中获取待检测的已加载类,方法还包括:
利用Instrument特性,周期性地从Java虚拟机中获取待检测的已加载类。
Instrument是指java.lang.instrument包的简称,java.lang.instrument包的最大功能就是可以在已有的类上附加(修改)字节码来实现增强的逻辑。
在本实施例中,利用Instrument特性,按预先设定的时间周期,周期性地从Java虚拟机中获取待检测的已加载类。周期性的获取可以使动态变化的已加载类一直处于被检测状态,使每一个新加载的类都会受到检测,最大限度的排除Java虚拟机进程中的Java内存马的存在。
本发明提供的Java内存马检测方法,通过利用Instrument特性,周期性地从Java虚拟机中获取待检测的已加载类,从而保证所有的加载类都可以受到针对Java虚拟机进程的Java内存马的检测,进一步的提升了检测Java内存马的效率。
基于上述任一实施例,在本实施例中,所述检测所述待检测的已加载类在服务器上是否存在对应的文件,方法还包括:
获取所述待检测的已加载类的类加载器;
根据所述类加载器,回溯所述待检测的已加载类在服务器上是否存在对应的文件。
类加载器负责加载所有的类,其为所有被载入内存中的类生成一个java.lang.Class实例对象。在Java虚拟机中,一个类用其全限定类名和其类加载器作为其唯一标识。
在本实施例中,待检测的已加载类用其全限定类名和其类加载器作为其唯一标识,获取待检测的已加载类的类加载器就可以根据类加载器得到待检测的已加载类的唯一标识,进而基于唯一标识回溯待检测的已加载类在服务器上是否存在对应的文件。
本发明提供的Java内存马检测方法,通过获取所述待检测的已加载类的类加载器,进而回溯所述待检测的已加载类在服务器上是否存在对应的文件,基于类加载器得到的已加载类的唯一标识,精准识别已加载类是否存在对应文件,有效的提升了检测Java内存马的效率。
下面进一步详细说明本发明的技术方案,图2是本发明提供的Java内存马检测方法的技术方案流程示意图,结合图2所示,完整的技术方案如下所述:
1、利用Instrument特性,周期性地从Java虚拟机中获取待检测的已加载类,其中,已加载类是以已加载类列表的形式获得的。
2、遍历加载类列表。
3、检测待检测的已加载类是否为包含在可信类缓存中。
4-1、待检测的已加载类没有包含在可信类缓存中,则进一步检测是否超时,超时则进一步检测对应文件是否存在,没有超时则程序结束。
4-2、待检测的已加载类包含在可信类缓存中,则进一步检测是否是敏感类,其中,敏感类为以下情况中的任意一种:服务器用于接收请求的类、过滤器以及监听器。
5-1、待检测的已加载类不是敏感类时,将其加入可信类缓存并设置永不超时,程序结束。
5-2、待检测的已加载类是敏感类时,则进一步获取类的类加载器,溯源其加载文件,检测对应文件是否存在。
6-1、待检测的已加载类的对应文件不存在时,发出待检测的已加载类为Java内存马的报警信息,程序结束。
6-2、待检测的已加载类的对应文件存在时,则进一步检测对应文件的内容是否包含敏感内容。
7-1、待检测的已加载类的对应文件的内容包含敏感内容时,发出待检测的已加载类为Java内存马的报警信息,程序结束。
7-2、待检测的已加载类的对应文件的内容不包含敏感内容时,则将待检测的已加载类加入可信类缓存,记录当前时刻,程序结束。
下面对本发明提供的一种Java内存马检测装置进行描述,下文描述的Java内存马检测装置与上文描述的Java内存马检测方法可以相互对应参照。
图3为本发明提供的Java内存马检测装置的结构图,如图3所示,本发明提供的Java内存马检测装置,包括:
加载类获取模块310,用于从Java虚拟机中获取待检测的已加载类;
敏感类判断模块330,用于在所述待检测的已加载类为非可信类的情况下,检测所述待检测的已加载类是否为敏感类;其中,所述敏感类为以下情况中的任意一种:服务器用于接收请求的类、过滤器以及监听器;
文件判断模块330,用于在所述待检测的已加载类为敏感类的情况下,检测所述待检测的已加载类在服务器上是否存在对应的文件;
报警模块340,用于在所述待检测的已加载类在服务器上不存在对应的文件的情况下,发出所述待检测的已加载类为Java内存马的报警信息。
本发明提供的Java内存马检测装置,通过加载类获取模块310从Java虚拟机中获取待检测的已加载类,进而敏感类判断模块330检测所述待检测的已加载类是否为敏感类,进一步文件判断模块330检测所述待检测的已加载类在服务器上是否存在对应的文件,最后报警模块340发出所述待检测的已加载类为Java内存马的报警信息。本发明通过对Java虚拟机内部的已加载类进行内存马检测,可有效发现运行于Java虚拟机内的内存马,克服了现有技术无法发现Java内存马的缺陷,提高了Java内存马检测的准确率。
基于上述任一实施例,在本实施例中,根据本发明提供的一种Java内存马检测装置,装置还包括:
敏感内容检测模块,用于在所述待检测的已加载类在服务器上存在对应的文件的情况下,检测所述文件内是否包含敏感内容;
报警模块,用于在所述文件内包含敏感内容的情况下,发出所述待检测的已加载类为Java内存马的报警信息。
本发明提供的Java内存马检测装置,通过敏感内容检测模块检测待检测的已加载类在服务器上存在的对应文件的内容是否包含敏感内容,文件包含敏感内容则认为对应的类为Java内存马,避免了有漏检的Java内存马,进一步扩大了Java内存马的检测范围,也提高了Java内存马检测的准确率。
基于上述任一实施例,在本实施例中,根据本发明提供的一种Java内存马检测装置,装置还包括:
记录时刻模块,用于在所述文件内不包含敏感内容的情况下,将所述待检测的已加载类设置为可信类,并记录被设置为可信类的时刻。
本发明提供的Java内存马检测装置,通过记录时刻模块记录的对应文件不包含敏感内容的已加载类被设置为可信类的时刻,为后续二次检测提供的数据支撑,这样既降低了潜在Java内存马攻击系统的风险,又优化精简了检测流程,进一步有效的提升了检测Java内存马的效率。
基于上述任一实施例,在本实施例中,根据本发明提供的一种Java内存马检测装置,装置还包括:
非敏感类处置模块,用于在所述待检测的已加载类为非敏感类的情况下,将所述待检测的已加载类设置为可信类,并将所述待检测的已加载类被设置为可信类的时间长度值设置为大于预设阈值的第一时间长度值。
本发明提供的Java内存马检测装置,通过非敏感类处置模块将被判定为非敏感类的待检测的已加载类的时间长度值设置为小于预设阈值的第一时间长度值,使其一直被归为可信类且永不超时,降低了对可信类的二次检测的工作量,优化了检测流程,对提升检测Java内存马的效率有极大的促进作用。
基于上述任一实施例,在本实施例中,根据本发明提供的一种Java内存马检测装置,装置还包括:
超时检测模块,用于在所述待检测的已加载类为可信类的情况下,检测所述待检测的已加载类被设置为可信类的时间长度值是否超出预设的阈值;其中,所述待检测的已加载类被设置为可信类的时间长度值是根据当前时刻以及待检测的已加载类被设置为可信类的时刻得到的,或是在先设置的第一时间长度值;在超出预设的阈值的情况下,重新执行所述检测所述待检测的已加载类在服务器上是否存在对应的文件的步骤。
本发明提供的Java内存马检测装置,超时检测模块通过设置预设的阈值,来检测待检测的已加载类的时间长度值是否超过预设的阈值,从而降低了对被判定为敏感类且又被设置为可信类的待检测的已加载类的检测频次,并使非敏感类的可信类不在受到二次检测,降低了整个检测流程的工作量,有效的提升了检测Java内存马的效率。
基于上述任一实施例,在本实施例中,根据本发明提供的一种Java内存马检测装置,装置还包括:
加载类获取单元,用于利用Instrument特性,周期性地从Java虚拟机中获取待检测的已加载类。
本发明提供的Java内存马检测装置,通过加载类获取单元利用Instrument特性,周期性地从Java虚拟机中获取待检测的已加载类,从而保证所有的加载类都可以受到针对Java虚拟机进程的Java内存马的检测,进一步的提升了检测Java内存马的效率。
基于上述任一实施例,在本实施例中,根据本发明提供的一种Java内存马检测装置,装置还包括:
文件检测单元,用于获取所述待检测的已加载类的类加载器;根据所述类加载器,回溯所述待检测的已加载类在服务器上是否存在对应的文件。
本发明提供的Java内存马检测装置,通过文件检测单元获取所述待检测的已加载类的类加载器,进而回溯所述待检测的已加载类在服务器上是否存在对应的文件,基于类加载器得到的已加载类的唯一标识,精准识别已加载类是否存在对应文件,有效的提升了检测Java内存马的效率。
另一方面,本发明还提供一种电子设备,图4示例了一种电子设备的实体结构示意图,如图4所示,该电子设备可以包括处理器410、通信总线420、存储器440、通信接口440以及存储在所述存储器440上并可在所述处理器410上运行的计算机程序,其中,处理器410、通信接口410、存储器440通过通信总线440完成相互间的通信,处理器410可以调用存储器440中的逻辑指令,以执行Java内存马检测方法,该方法包括:
从Java虚拟机中获取待检测的已加载类;
在所述待检测的已加载类为非可信类的情况下,检测所述待检测的已加载类是否为敏感类;其中,所述敏感类为以下情况中的任意一种:服务器用于接收请求的类、过滤器以及监听器;
在所述待检测的已加载类为敏感类的情况下,检测所述待检测的已加载类在服务器上是否存在对应的文件;
在所述待检测的已加载类在服务器上不存在对应的文件的情况下,发出所述待检测的已加载类为Java内存马的报警信息。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被处理器执行时,可以实现Java内存马检测方法,该方法包括:
从Java虚拟机中获取待检测的已加载类;
在所述待检测的已加载类为非可信类的情况下,检测所述待检测的已加载类是否为敏感类;其中,所述敏感类为以下情况中的任意一种:服务器用于接收请求的类、过滤器以及监听器;
在所述待检测的已加载类为敏感类的情况下,检测所述待检测的已加载类在服务器上是否存在对应的文件;
在所述待检测的已加载类在服务器上不存在对应的文件的情况下,发出所述待检测的已加载类为Java内存马的报警信息。
最后,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够实现Java内存马检测方法,该方法包括:
从Java虚拟机中获取待检测的已加载类;
在所述待检测的已加载类为非可信类的情况下,检测所述待检测的已加载类是否为敏感类;其中,所述敏感类为以下情况中的任意一种:服务器用于接收请求的类、过滤器以及监听器;
在所述待检测的已加载类为敏感类的情况下,检测所述待检测的已加载类在服务器上是否存在对应的文件;
在所述待检测的已加载类在服务器上不存在对应的文件的情况下,发出所述待检测的已加载类为Java内存马的报警信息。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (11)
1.一种Java内存马检测方法,其特征在于,包括:
从Java虚拟机中获取待检测的已加载类;
在所述待检测的已加载类为非可信类的情况下,检测所述待检测的已加载类是否为敏感类;其中,所述敏感类为以下情况中的任意一种:服务器用于接收请求的类、过滤器以及监听器;
在所述待检测的已加载类为敏感类的情况下,检测所述待检测的已加载类在服务器上是否存在对应的文件;
在所述待检测的已加载类在服务器上不存在对应的文件的情况下,发出所述待检测的已加载类为Java内存马的报警信息。
2.根据权利要求1所述的Java内存马检测方法,其特征在于,在所述检测所述待检测的已加载类在服务器上是否存在对应的文件之后,方法还包括:
在所述待检测的已加载类在服务器上存在对应的文件的情况下,检测所述文件内是否包含敏感内容;
在所述文件内包含敏感内容的情况下,发出所述待检测的已加载类为Java内存马的报警信息。
3.根据权利要求2所述的Java内存马检测方法,其特征在于,在所述检测所述文件是否包含敏感内容之后,方法还包括:
在所述文件内不包含敏感内容的情况下,将所述待检测的已加载类设置为可信类,并记录被设置为可信类的时刻。
4.根据权利要求1所述的Java内存马检测方法,其特征在于,在所述检测所述待检测的已加载类是否为敏感类之后,方法还包括:
在所述待检测的已加载类为非敏感类的情况下,将所述待检测的已加载类设置为可信类,并将所述待检测的已加载类被设置为可信类的时间长度值设置为小于预设阈值的第一时间长度值。
5.根据权利要求3或4所述的Java内存马检测方法,其特征在于,在所述从Java虚拟机中获取待检测的已加载类之后,方法还包括:
在所述待检测的已加载类为可信类的情况下,检测所述待检测的已加载类被设置为可信类的时间长度值是否超出预设的阈值;其中,所述待检测的已加载类被设置为可信类的时间长度值是根据当前时刻以及待检测的已加载类被设置为可信类的时刻得到的,或是在先设置的第一时间长度值;
在超出预设的阈值的情况下,重新执行所述检测所述待检测的已加载类在服务器上是否存在对应的文件的步骤。
6.根据权利要求1至5任一项所述的Java内存马检测方法,其特征在于,所述从Java虚拟机中获取待检测的已加载类,包括:
利用Instrument特性,周期性地从Java虚拟机中获取待检测的已加载类。
7.根据权利要求1至5任一项所述的Java内存马检测方法,其特征在于,所述检测所述待检测的已加载类在服务器上是否存在对应的文件,包括:
获取所述待检测的已加载类的类加载器;
根据所述类加载器,回溯所述待检测的已加载类在服务器上是否存在对应的文件。
8.一种Java内存马检测装置,其特征在于,包括:
加载类获取模块,用于从Java虚拟机中获取待检测的已加载类;
敏感类判断模块,用于在所述待检测的已加载类为非可信类的情况下,检测所述待检测的已加载类是否为敏感类;其中,所述敏感类为以下情况中的任意一种:服务器用于接收请求的类、过滤器以及监听器;
文件判断模块,用于在所述待检测的已加载类为敏感类的情况下,检测所述待检测的已加载类在服务器上是否存在对应的文件;
报警模块,用于在所述待检测的已加载类在服务器上不存在对应的文件的情况下,发出所述待检测的已加载类为Java内存马的报警信息。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述Java内存马检测方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述Java内存马检测方法的步骤。
11.一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,其特征在于,所述指令在被执行时用于实现如权利要求1至7任一项权利要求所述Java内存马检测方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111165493.0A CN114065196A (zh) | 2021-09-30 | 2021-09-30 | Java内存马检测方法、装置、电子设备与存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111165493.0A CN114065196A (zh) | 2021-09-30 | 2021-09-30 | Java内存马检测方法、装置、电子设备与存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114065196A true CN114065196A (zh) | 2022-02-18 |
Family
ID=80234142
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111165493.0A Pending CN114065196A (zh) | 2021-09-30 | 2021-09-30 | Java内存马检测方法、装置、电子设备与存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114065196A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115270126A (zh) * | 2022-09-29 | 2022-11-01 | 北京微步在线科技有限公司 | 一种检测Java内存马的方法、装置、电子设备及存储介质 |
CN115688106A (zh) * | 2022-11-16 | 2023-02-03 | 安芯网盾(北京)科技有限公司 | 一种Java agent无文件注入内存马的检测方法及装置 |
CN115758351A (zh) * | 2022-11-14 | 2023-03-07 | 安芯网盾(北京)科技有限公司 | 一种php内存马的检测方法及装置 |
CN116502220A (zh) * | 2023-02-22 | 2023-07-28 | 安芯网盾(北京)科技有限公司 | 一种对抗性Java内存马的检测方法及处理方法 |
CN118157989A (zh) * | 2024-05-08 | 2024-06-07 | 安徽华云安科技有限公司 | Webshell内存马检测方法、装置、设备以及存储介质 |
-
2021
- 2021-09-30 CN CN202111165493.0A patent/CN114065196A/zh active Pending
Cited By (8)
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内存马的方法、装置、电子设备及存储介质 |
CN115758351A (zh) * | 2022-11-14 | 2023-03-07 | 安芯网盾(北京)科技有限公司 | 一种php内存马的检测方法及装置 |
CN115758351B (zh) * | 2022-11-14 | 2023-06-30 | 安芯网盾(北京)科技有限公司 | 一种php内存马的检测方法及装置 |
CN115688106A (zh) * | 2022-11-16 | 2023-02-03 | 安芯网盾(北京)科技有限公司 | 一种Java agent无文件注入内存马的检测方法及装置 |
CN116502220A (zh) * | 2023-02-22 | 2023-07-28 | 安芯网盾(北京)科技有限公司 | 一种对抗性Java内存马的检测方法及处理方法 |
CN116502220B (zh) * | 2023-02-22 | 2023-10-03 | 安芯网盾(北京)科技有限公司 | 一种对抗性Java内存马的检测方法及处理方法 |
CN118157989A (zh) * | 2024-05-08 | 2024-06-07 | 安徽华云安科技有限公司 | Webshell内存马检测方法、装置、设备以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11687653B2 (en) | Methods and apparatus for identifying and removing malicious applications | |
EP3113063B1 (en) | System and method for detecting malicious code in random access memory | |
CN114065196A (zh) | Java内存马检测方法、装置、电子设备与存储介质 | |
US10033748B1 (en) | System and method employing structured intelligence to verify and contain threats at endpoints | |
US9547765B2 (en) | Validating a type of a peripheral device | |
US10397261B2 (en) | Identifying device, identifying method and identifying program | |
US11086983B2 (en) | System and method for authenticating safe software | |
US8782791B2 (en) | Computer virus detection systems and methods | |
CN109586282B (zh) | 一种电网未知威胁检测系统及方法 | |
US20090133125A1 (en) | Method and apparatus for malware detection | |
US20120005755A1 (en) | Infection inspection system, infection inspection method, storage medium, and program | |
EP2790122A2 (en) | System and method for correcting antivirus records to minimize false malware detections | |
CN105760787B (zh) | 用于检测随机存取存储器中的恶意代码的系统及方法 | |
CN111125688B (zh) | 一种进程控制方法、装置及电子设备和存储介质 | |
JP6282217B2 (ja) | 不正プログラム対策システムおよび不正プログラム対策方法 | |
CN108898012B (zh) | 检测非法程序的方法和装置 | |
US8561195B1 (en) | Detection of malicious code based on its use of a folder shortcut | |
US20070006297A1 (en) | Identifying dependencies of an application upon a given security context | |
CN109818972B (zh) | 一种工业控制系统信息安全管理方法、装置及电子设备 | |
KR101130088B1 (ko) | 악성 코드 탐지 장치 및 그 방법, 이를 위한 프로그램이 기록된 기록 매체 | |
US20070006323A1 (en) | Identifying dependencies of an application upon a given security context | |
KR101439207B1 (ko) | 해킹 프로세스 감지 방법 및 장치 | |
CN115048643A (zh) | 数据处理方法、装置、电子设备和存储介质 | |
CN115470479A (zh) | 应用程序的权限控制方法、电子设备和存储介质 | |
CN116961977A (zh) | 安全检测方法、装置、设备及计算机程序产品 |
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 |