CN115270126B - 一种检测Java内存马的方法、装置、电子设备及存储介质 - Google Patents

一种检测Java内存马的方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN115270126B
CN115270126B CN202211199519.8A CN202211199519A CN115270126B CN 115270126 B CN115270126 B CN 115270126B CN 202211199519 A CN202211199519 A CN 202211199519A CN 115270126 B CN115270126 B CN 115270126B
Authority
CN
China
Prior art keywords
java
class
memory
obtaining
layer
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.)
Active
Application number
CN202211199519.8A
Other languages
English (en)
Other versions
CN115270126A (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 ThreatBook Technology Co Ltd
Original Assignee
Beijing ThreatBook 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 ThreatBook Technology Co Ltd filed Critical Beijing ThreatBook Technology Co Ltd
Priority to CN202211199519.8A priority Critical patent/CN115270126B/zh
Publication of CN115270126A publication Critical patent/CN115270126A/zh
Application granted granted Critical
Publication of CN115270126B publication Critical patent/CN115270126B/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/562Static detection
    • G06F21/563Static detection by source code analysis
    • 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)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本申请实施例提供一种检测Java内存马的方法、装置、电子设备及存储介质,其中,该方法包括:获取待检测的Java程序数据;根据所述Java程序数据获得Java虚拟机的访问内存权限;根据所述访问内存权限解析所述Java虚拟机的数据结构,得到底层类数组;根据所述底层类数组获得字节码;对所述字节码进行Java内存马检测,得到检测结果。实施本申请实施例,可以提高检测的准确率,减小了在检测Java内存马过程中可能遇到的风险,不会对Java程序数据造成影响,不易出现漏检。

Description

一种检测Java内存马的方法、装置、电子设备及存储介质
技术领域
本申请涉及网络安全技术领域,具体而言,涉及一种检测Java内存马的方法、装置、电子设备及计算机可读存储介质。
背景技术
近年来,网络安全问题日益突出,个人、企业、政府等正遭受着越来越多来自不同背景的攻击者发起的网络攻击,在大多数的Java中恶意攻击,攻击者通过业务存在的漏洞攻击成功后,往往会通过Java内存马的形式将恶意代码驻留在业务的内存当中,达到持久化的目的,为攻击者再次发起攻击提供便利。
现有技术通过侵入式Java agent的方式将查找内存马的功能代码注入到业务代码中,通过遍历所有的Java类来发现并且下载风险的类,再通过反编译的手段来判断是不是内存马。
但是,当无法注入检测内存马的Java agent时,会导致内存马无法检测。并且,侵入式Java agent对业务程序的影响大,如果Java agent的代码崩溃了可能会导致用户业务也崩溃,并且注入Java agent和下载风险类时可能挂起暂停业务,对业务的影响非常大。
发明内容
本申请实施例的目的在于提供一种检测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内存马检测的方式,减小了在检测Java内存马过程中可能遇到的风险,不会对Java程序数据造成影响,不易出现漏检。
进一步地,所述解析模块还用于:
根据所述访问内存权限解析所述Java虚拟机的数据结构,得到内存地址;
根据所述内存地址获得底层类数据结构;
根据所述底层类数据结构获得所述底层类数组。
在上述实现过程中,通过访问内存权限直接获得内存地址,再通过内存地址获得底层类数据结构,可以减少获得底层类数组的步骤,缩短时间。
第三方面,本申请实施例提供的一种电子设备,包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面任一项所述的方法的步骤。
第四方面,本申请实施例提供的一种计算机可读存储介质,所述存储介质上存储有指令,当所述指令在计算机上运行时,使得所述计算机执行如第一方面任一项所述的方法。
第五方面,本申请实施例提供的一种计算机程序产品,所述计算机程序产品在计算机上运行时,使得计算机执行如第一方面任一项所述的方法。
本公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本公开的上述技术即可得知。
并可依照说明书的内容予以实施,以下以本申请的较佳实施例并配合附图详细说明如后。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的检测Java内存马的方法的流程示意图;
图2为本申请实施例提供的检测Java内存马的装置的结构组成示意图;
图3为本申请实施例提供的电子设备的结构组成示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
下面结合附图和实施例,对本申请的具体实施方式作进一步详细描述。以下实施例用于说明本申请,但不用来限制本申请的范围。
实施例一
图1是本申请实施例提供的检测Java内存马的方法的流程示意图,如图1所示,该方法包括:
S1,获取待检测的Java程序数据;
S2,根据Java程序数据获得Java虚拟机的访问内存权限;
S3,根据访问内存权限解析Java虚拟机的数据结构,得到底层类数组;
S4,根据底层类数组获得字节码;
S5,对字节码进行Java内存马检测,得到检测结果。
在上述实现过程中,通过Java虚拟机的访问内存权限解析其数据结构,得到底层类数组,在根据底层类数据获得字节码,根据字节码进行Java内存马检测的方式,减小了在检测Java内存马过程中可能遇到的风险,不会对Java程序数据造成影响,不易出现漏检。
Java内存马是通过Agent机制或者上传jsp文件或者利用反序列化漏洞等方式向业务中间件中注入恶意的Listener(监听器)、Filter(滤镜)等属性的程序,使得攻击者可以直接通过对外开发的网页接口来执行任意代码,使得恶意代码存在于内存当中,没有实际的落地文件。
本申请实施例可以解决现有技术中侵入式的问题,以一种无侵入式的方法去获取并且下载风险类,不再使用侵入式的方式,绕过部分内存马的防御手段如禁止注入Javaagent,通过解析数据内存,保证业务的性能和安全。
在S2中,示例性地,在Windows平台中通过OpenProcess()函数获取需要检测的Java程序的句柄即Java程序数据,得到访问Java虚拟机的内存权限,在非Windows平台中则通过平台相应的API去获取Java程序数据。
进一步地,S3包括:
根据访问内存权限解析Java虚拟机的数据结构,得到内存地址;
根据内存地址获得底层类数据结构;
根据底层类数据结构获得底层类数组。
在上述实现过程中,通过访问内存权限直接获得内存地址,再通过内存地址获得底层类数据结构,可以减少获得底层类数组的步骤,缩短时间。
解析Java虚拟机的数据结构获取需要的关键符号(如gHotSpotVMStructEntryTypeNameOffset等符号)的内存地址,通过ReadProcessMemory等函数去获取内存地址的内容得到需要的数据,最终找到各个类的底层类(InstanceKlass)的数据结构信息即底层类数据结构,汇总为底层类(InstanceKlass)数组。
进一步地,根据底层类数组获得字节码的步骤,包括:
根据底层类数组获得底层类关键信息;
解析底层类关键信息,得到字节码。
在上述实现过程中,根据底层类关键信息获得字节码,使得字节码只包含底层类,可以更快地检测出内存马,提高检测效率。
进一步地,根据底层类数组获得底层类关键信息的步骤,包括:
遍历底层类数组,得到单个底层类数据结构;
解析单个底层类数据结构,得到底层类关键信息。
在上述实现过程中,解析得到单个底层类数据结构,可以简化解析过程,使得到的底层类关键信息更加准确、清楚,便于后续检测。
进一步地,解析底层类关键信息,得到字节码的步骤,包括:
判断底层类关键信息中的父类信息是否为风险父类,或底层类关键信息中的接口信息是否为风险接口类,或底层类关键信息中的注解信息是否为风险注解类;
若父类信息为风险父类,或接口信息为风险接口类,或注解信息为风险注解类,读取风险父类或风险接口类或风险注解类的字节码。
在上述实现过程中,将底层类关键信息中的父类信息、接口信息和注解信息提取出来进行判断,可以精确地读取到字节码,使得到的字节码更加准确,不易发生误差。
通过遍历底层类数组得到单个底层类数据结构,单个底层类数据机构为底层类数据结构拆分后得到的数据结构,再通过相应的API函数或者自定义解析函数去解析每个单个底层类数据结构得到父类信息、接口信息和注解信息等底层类关键信息。
判断解析出来的父类信息是否为风险父类(如javax.servlet.http.HttpServlet等),接口信息是否为风险接口类(如javax.servlet.Servlet,javax.servlet.Filter等)或者注解信息是否为风险注解类(如org.springframework.stereotype.Controller等),如果判断出有风险父类或风险接口类或风险注解类,则通过只读内存的方式把判断为风险父类或风险接口类或风险注解类的字节码下载下来。
进一步地,S5包括:
将字节码进行反编译,得到Java代码;
判断Java代码是否包含恶意的内存马;
若是,得到检测结果。
在上述实现过程中,对字节码进行反编译后再进行检测,可以确保检测结果的准确性,避免检测过程中发生差错,缩短检测时间。
将下载下来的字节码反编译为Java代码,再利用Yara规则对Java代码判断是否含有命令执行等恶意操作,如果发现含有恶意操作就产生告警通知用户,供后续处置。
本申请实施例,以第三方程序的形式,以只读权限解析Java虚拟机底层的数据结构,通过获取需要的符号地址,拿到需要的各个数据结构的内存,再通过组合各个数据结构,拿到各个类在Java虚拟机中的底层类(InstanceKlass),再通过解析InstanceKlass去判断是否为风险的类,最后进行下载、反编译。
通过无侵入式的内存马检测技术模式,减轻了用户业务的压力,避免了常规的Java agent带来的进程间通信和对业务的影响等问题。基于无侵入式的内存马检测技术模式,可以以第三方程序的角色运行在用户业务服务器中,定时扫描Java内存安全,保证用户Java业务的安全。
实施例二
为了执行上述实施例一对应的方法,以实现相应的功能和技术效果,下面提供一种检测Java内存马的装置,如图2所示,该装置包括:
获取模块1,用于获取待检测的Java程序数据;
权限获得模块2,用于根据Java程序数据获得Java虚拟机的访问内存权限;
解析模块3,用于根据访问内存权限解析Java虚拟机的数据结构,得到底层类数组;
字节码获得模块4,用于根据底层类数组获得字节码;
检测模块5,用于对字节码进行Java内存马检测,得到检测结果。
在上述实现过程中,通过Java虚拟机的访问内存权限解析其数据结构,得到底层类数组,在根据底层类数据获得字节码,根据字节码进行Java内存马检测的方式,减小了在检测Java内存马过程中可能遇到的风险,不会对Java程序数据造成影响,不易出现漏检。
进一步地,解析模块3还用于:
根据访问内存权限解析Java虚拟机的数据结构,得到内存地址;
根据内存地址获得底层类数据结构;
根据底层类数据结构获得底层类数组。
在上述实现过程中,通过访问内存权限直接获得内存地址,再通过内存地址获得底层类数据结构,可以减少获得底层类数组的步骤,缩短时间。
进一步地,字节码获得模块4还用于:
根据底层类数组获得底层类关键信息;
解析底层类关键信息,得到字节码。
进一步地,字节码获得模块4还用于:
遍历底层类数组,得到单个底层类数据结构;
解析单个底层类数据结构,得到底层类关键信息。
进一步地,字节码获得模块4还用于:
判断底层类关键信息中的父类信息是否为风险父类,或底层类关键信息中的接口信息是否为风险接口类,或底层类关键信息中的注解信息是否为风险注解类;
若父类信息为风险父类,或接口信息为风险接口类,或注解信息为风险注解类,读取风险父类或风险接口类或风险注解类的字节码。
进一步地,检测模块5还用于:
将字节码进行反编译,得到Java代码;
判断Java代码是否包含恶意的内存马;
若是,得到检测结果。
上述的检测Java内存马的装置可实施上述实施例一的方法。上述实施例一中的可选项也适用于本实施例,这里不再详述。
本申请实施例的其余内容可参照上述实施例一的内容,在本实施例中,不再进行赘述。
实施例三
本申请实施例提供一种电子设备,包括存储器及处理器,该存储器用于存储计算机程序,该处理器运行计算机程序以使电子设备执行实施例一的检测Java内存马的方法。
可选地,上述电子设备可以是服务器。
请参见图3,图3为本申请实施例提供的电子设备的结构组成示意图。该电子设备可以包括处理器31、通信接口32、存储器33和至少一个通信总线34。其中,通信总线34用于实现这些组件直接的连接通信。其中,本申请实施例中设备的通信接口32用于与其他节点设备进行信令或数据的通信。处理器31可以是一种集成电路芯片,具有信号的处理能力。
上述的处理器31可以是通用处理器,包括中央处理器(Central ProcessingUnit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器31也可以是任何常规的处理器等。
存储器33可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。存储器33中存储有计算机可读取指令,当计算机可读取指令由所述处理器31执行时,设备可以执行上述图1方法实施例涉及的各个步骤。
可选地,电子设备还可以包括存储控制器、输入输出单元。存储器33、存储控制器、处理器31、外设接口、输入输出单元各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通信总线34实现电性连接。处理器31用于执行存储器33中存储的可执行模块,例如设备包括的软件功能模块或计算机程序。
输入输出单元用于提供给用户创建任务以及为该任务创建启动可选时段或预设执行时间以实现用户与服务器的交互。输入输出单元可以是,但不限于,鼠标和键盘等。
可以理解,图3所示的结构仅为示意,电子设备还可包括比图3中所示更多或者更少的组件,或者具有与图3所示不同的配置。图3中所示的各组件可以采用硬件、软件或其组合实现。
另外,本申请实施例还提供一种计算机可读存储介质,其存储有计算机程序,该计算机程序被处理器执行时实现实施例一的检测Java内存马的方法。
本申请实施例还提供一种计算机程序产品,该计算机程序产品在计算机上运行时,使得计算机执行方法实施例所述的方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的装置来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (8)

1.一种检测Java内存马的方法,其特征在于,所述方法包括:
获取待检测的Java程序数据;
根据所述Java程序数据获得Java虚拟机的访问内存权限;
根据所述访问内存权限解析所述Java虚拟机的数据结构,得到底层类数组;
根据所述底层类数组获得字节码;
对所述字节码进行Java内存马检测,得到检测结果;
所述根据所述访问内存权限解析所述Java虚拟机的数据结构,得到底层类数组的步骤,包括:
根据所述访问内存权限解析所述Java虚拟机的数据结构,得到内存地址;
根据所述内存地址获得底层类数据结构;
根据所述底层类数据结构获得所述底层类数组;
所述根据所述底层类数组获得字节码的步骤,包括:
根据所述底层类数组获得底层类关键信息;
解析所述底层类关键信息,得到所述字节码。
2.根据权利要求1所述的检测Java内存马的方法,其特征在于,所述根据所述底层类数组获得底层类关键信息的步骤,包括:
遍历所述底层类数组,得到单个底层类数据结构;
解析所述单个底层类数据结构,得到所述底层类关键信息。
3.根据权利要求1所述的检测Java内存马的方法,其特征在于,所述解析所述底层类关键信息,得到所述字节码的步骤,包括:
判断所述底层类关键信息中的父类信息是否为风险父类,或所述底层类关键信息中的接口信息是否为风险接口类,或所述底层类关键信息中的注解信息是否为风险注解类;
若所述父类信息为风险父类,或所述接口信息为风险接口类,或所述注解信息为风险注解类,读取所述风险父类或所述风险接口类或所述风险注解类的字节码。
4.根据权利要求1所述的检测Java内存马的方法,其特征在于,所述对所述字节码进行Java内存马检测,得到检测结果的步骤,包括:
将所述字节码进行反编译,得到Java代码;
判断所述Java代码是否包含恶意的内存马;
若是,得到所述检测结果。
5.一种检测Java内存马的装置,其特征在于,所述装置包括:
获取模块,用于获取待检测的Java程序数据;
权限获得模块,用于根据所述Java程序数据获得Java虚拟机的访问内存权限;
解析模块,用于根据所述访问内存权限解析所述Java虚拟机的数据结构,得到底层类数组;
字节码获得模块,用于根据所述底层类数组获得字节码;
检测模块,用于对所述字节码进行Java内存马检测,得到检测结果;
解析模块还用于:
根据所述访问内存权限解析所述Java虚拟机的数据结构,得到内存地址;
根据所述内存地址获得底层类数据结构;
根据所述底层类数据结构获得所述底层类数组;
字节码获得模块还用于:
根据所述底层类数组获得底层类关键信息;
解析所述底层类关键信息,得到所述字节码。
6.根据权利要求5所述的检测Java内存马的装置,其特征在于,所述解析模块还用于:
根据所述访问内存权限解析所述Java虚拟机的数据结构,得到内存地址;
根据所述内存地址获得底层类数据结构;
根据所述底层类数据结构获得所述底层类数组。
7.一种电子设备,其特征在于,包括存储器及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述电子设备执行根据权利要求1至4中任一项所述的检测Java内存马的方法。
8.一种计算机可读存储介质,其特征在于,其存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4中任一项所述的检测Java内存马的方法。
CN202211199519.8A 2022-09-29 2022-09-29 一种检测Java内存马的方法、装置、电子设备及存储介质 Active CN115270126B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211199519.8A CN115270126B (zh) 2022-09-29 2022-09-29 一种检测Java内存马的方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211199519.8A CN115270126B (zh) 2022-09-29 2022-09-29 一种检测Java内存马的方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN115270126A CN115270126A (zh) 2022-11-01
CN115270126B true CN115270126B (zh) 2022-12-16

Family

ID=83757191

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211199519.8A Active CN115270126B (zh) 2022-09-29 2022-09-29 一种检测Java内存马的方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN115270126B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116502220B (zh) * 2023-02-22 2023-10-03 安芯网盾(北京)科技有限公司 一种对抗性Java内存马的检测方法及处理方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113312624A (zh) * 2021-06-21 2021-08-27 厦门服云信息科技有限公司 一种Java Web应用内存木马检测方法、终端设备及存储介质
CN113886825A (zh) * 2021-09-29 2022-01-04 中国工商银行股份有限公司 代码检测方法、装置、系统、设备及存储介质
CN114065196A (zh) * 2021-09-30 2022-02-18 奇安信科技集团股份有限公司 Java内存马检测方法、装置、电子设备与存储介质
CN114065204A (zh) * 2021-11-29 2022-02-18 中国工商银行股份有限公司 一种无文件木马查杀方法及装置
CN114692153A (zh) * 2022-04-11 2022-07-01 北京中睿天下信息技术有限公司 基于java程序的恶意代码检测方法、设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050183077A1 (en) * 2004-02-12 2005-08-18 International Business Machines Corporation System and method for JIT memory footprint improvement for embedded java devices

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113312624A (zh) * 2021-06-21 2021-08-27 厦门服云信息科技有限公司 一种Java Web应用内存木马检测方法、终端设备及存储介质
CN113886825A (zh) * 2021-09-29 2022-01-04 中国工商银行股份有限公司 代码检测方法、装置、系统、设备及存储介质
CN114065196A (zh) * 2021-09-30 2022-02-18 奇安信科技集团股份有限公司 Java内存马检测方法、装置、电子设备与存储介质
CN114065204A (zh) * 2021-11-29 2022-02-18 中国工商银行股份有限公司 一种无文件木马查杀方法及装置
CN114692153A (zh) * 2022-04-11 2022-07-01 北京中睿天下信息技术有限公司 基于java程序的恶意代码检测方法、设备及存储介质

Also Published As

Publication number Publication date
CN115270126A (zh) 2022-11-01

Similar Documents

Publication Publication Date Title
Sarmah et al. A survey of detection methods for XSS attacks
Gupta et al. XSS-secure as a service for the platforms of online social network-based multimedia web applications in cloud
Gupta et al. Enhancing the browser-side context-aware sanitization of suspicious HTML5 code for halting the DOM-based XSS vulnerabilities in cloud
Andronio et al. Heldroid: Dissecting and detecting mobile ransomware
Heiderich et al. mxss attacks: Attacking well-secured web-applications by using innerhtml mutations
Carmony et al. Extract Me If You Can: Abusing PDF Parsers in Malware Detectors.
US8850585B2 (en) Systems and methods for automated malware artifact retrieval and analysis
Doupe et al. deDacota: toward preventing server-side XSS via automatic code and data separation
Gupta et al. JS‐SAN: defense mechanism for HTML5‐based web applications against javascript code injection vulnerabilities
Wang et al. Jsdc: A hybrid approach for javascript malware detection and classification
US8635602B2 (en) Verification of information-flow downgraders
Junaid et al. Dexteroid: Detecting malicious behaviors in android apps using reverse-engineered life cycle models
Continella et al. Prometheus: Analyzing WebInject-based information stealers
CN106250761B (zh) 一种识别web自动化工具的设备、装置及方法
Wang et al. A new cross-site scripting detection mechanism integrated with HTML5 and CORS properties by using browser extensions
Gupta et al. A client‐server JavaScript code rewriting‐based framework to detect the XSS worms from online social network
CN115270126B (zh) 一种检测Java内存马的方法、装置、电子设备及存储介质
Gupta et al. Evaluation and monitoring of XSS defensive solutions: a survey, open research issues and future directions
Korine et al. DAEMON: dataset/platform-agnostic explainable malware classification using multi-stage feature mining
Kishore et al. Browser JS Guard: Detects and defends against Malicious JavaScript injection based drive by download attacks
Pieczul et al. Runtime detection of zero-day vulnerability exploits in contemporary software systems
KR20120070018A (ko) 후킹 기법을 이용한 난독화 자바 스크립트 자동해독 및 악성 웹 사이트 탐지 방법
Ding et al. Accurate and efficient exploit capture and classification
US20230177142A1 (en) Detecting sharing of passwords
Patil Request dependency integrity: validating web requests using dependencies in the browser environment

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