CN114936368A - 一种Java内存木马检测方法、终端设备及存储介质 - Google Patents

一种Java内存木马检测方法、终端设备及存储介质 Download PDF

Info

Publication number
CN114936368A
CN114936368A CN202210421397.6A CN202210421397A CN114936368A CN 114936368 A CN114936368 A CN 114936368A CN 202210421397 A CN202210421397 A CN 202210421397A CN 114936368 A CN114936368 A CN 114936368A
Authority
CN
China
Prior art keywords
class
passive
loader
information
threat
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
CN202210421397.6A
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.)
Xiamen Fuyun Information Technology Co ltd
Original Assignee
Xiamen Fuyun 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 Xiamen Fuyun Information Technology Co ltd filed Critical Xiamen Fuyun Information Technology Co ltd
Priority to CN202210421397.6A priority Critical patent/CN114936368A/zh
Publication of CN114936368A publication Critical patent/CN114936368A/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/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • 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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects

Landscapes

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

Abstract

本发明涉及一种Java内存木马检测方法、终端设备及存储介质,该方法中包括:S1:构建类加载器列表;S2:针对当前Java进程中的每个无源类进行以下判断;S3:判断无源类是否为匿名类,如果是,进入S4;否则,根据该无源类的类加载器信息和类信息判断该无源类是否有威胁;S4:判断该无源类的父类是否为有源类,如果是,根据其父类的类加载器信息判断该无源类是否有威胁;否则,进入S5;S5:判断该无源类的父类的类加载器是否与该无源类的类加载器相同,如果相同,根据该无源类的父类的类加载器信息和类信息判断该无源类是否有威胁;否则,判定该无源类有威胁。本发明可以提高检测的准确性。

Description

一种Java内存木马检测方法、终端设备及存储介质
技术领域
本发明涉及木马检测领域,尤其涉及一种Java内存木马检测方法、终端设备及存储介质。
背景技术
Java内存木马是一种利用JSP动态编译或Java字节码技术进行动态注入的内存木马,对于动态注入的内存木马有一个通用的特点,即在编译注入完成后,不会形成对应的class文件,而且无源内存木马为了兼容所有版本的Web容器和Java版本,不会使用新的语法和特性来构建内存木马,因此现有的检测方式均为判断该类是否存在源文件,或者是否存在执行Shell脚本命令等方式进行判断。
在实际的Java开发过程中,有可能会使用字节码工具,或者是匿名内部类、代理等方式进行实际的业务操作,而以上的操作均会动态产生无源类,但是所产生的无源类是正常的,并且大部分不具备威胁性,因为内部是在进行正常的业务逻辑的调用,业界一般只会将使用Java动态代理和Spring等框架生成的动态代理类排除,而一些自主研发的代理框架,或者动态生成Class并加载的工具类并不能正常识别。
发明内容
为了解决上述问题,本发明提出了一种Java内存木马检测方法、终端设备及存储介质。
具体方案如下:
一种Java内存木马检测方法,包括以下步骤:
S1:构建类加载器列表,用于记录Java系统的类加载器和Web容器的类加载器;
S2:读取并记录当前Java进程中的所有无源类以及对应的类信息,对每个无源类进行以下步骤的判断;
S3:判断无源类是否为匿名类,如果是,进入S4;否则,获取该无源类的类加载器信息和类信息,根据类加载器信息和类信息判断该无源类是否有威胁;
S4:判断该无源类的父类是否为有源类,如果是,获取其父类的类加载器信息,根据类加载器信息判断该无源类是否有威胁;否则,进入S5;
S5:判断该无源类的父类的类加载器是否与该无源类的类加载器相同,如果相同,获取该无源类的父类的类加载器信息和类信息,根据类加载器信息和类信息判断该无源类是否有威胁;否则,判定该无源类有威胁。
进一步的,根据类加载器信息和类信息判断该无源类是否有威胁的方法为:只有当根据类加载器信息和类信息判断该无源类均无威胁时,才判定该无源类无威胁。
进一步的,根据类加载器信息判断该无源类是否有威胁的方法包括以下步骤:
S101:判断类加载器是否为自定义类加载器,如果是,进入S102;否则,进入S104;
S102:判断类加载器是否为有源类,如果是,进入S103;否则,判定该无源类有威胁;
S103:判断类加载器是否与该无源类的父类存在于相同package中,如果是,则判定该无源类无威胁;否则,判定该无源类有威胁;
S104:判断类加载器是Java系统的类加载器还是Web容器的类加载器,如果是Java系统的类加载器则判定该无源类无威胁,如果是Web容器的类加载器则判定该无源类有威胁。
进一步的,步骤S101中判断类加载器是否为自定义类加载器的方法为:根据将类加载器与类加载器列表中的各类加载器相匹配,当类加载器既不属于Java系统的类加载器,也不属于Web容器的类加载器时,则判定其为自定义类加载器。
进一步的,根据类信息判断该无源类是否有威胁的方法为:根据类信息提取类的package信息,并根据package信息查找对应的package位置,进而判断package位置是否在Web容器启动时的加载路径中,如果不在则判定该无源类有威胁,如果在则判定该无源类无威胁。
一种Java内存木马检测终端设备,包括处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例上述的方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例上述的方法的步骤。
本发明采用如上技术方案,可以避免受到部分自主研发的Java组件或Java新版本语言特性所带来的误测情况,提高检测的准确性,更快的帮助安全人员确定是否存在入侵威胁。
附图说明
图1所示为本发明实施例一方法的流程图。
图2所示为该实施例中根据类加载器信息判断该无源类是否有威胁的方法的流程图。
具体实施方式
为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。
现结合附图和具体实施方式对本发明进一步说明。
实施例一:
本发明实施例提供了一种Java内存木马检测方法,如图1所示,其为本发明实施例所述的Java内存木马检测方法的流程图,所述方法包括以下步骤:
S1:构建类加载器列表,用于记录Java系统的类加载器和Web容器的类加载器。
S2:读取并记录当前Java进程中的所有无源类以及对应的类信息,对每个无源类进行以下步骤的判断。
有源类指有实体文件的类,无源类指没有实体文件的类。
S3:判断无源类是否为匿名类,如果是,进入S4;否则,获取该无源类的类加载器信息和类信息,根据类加载器信息和类信息判断该无源类是否有威胁。
S4:判断该无源类的父类是否为有源类,如果是,获取其父类的类加载器信息,根据类加载器信息判断该无源类是否有威胁;否则,进入S5。
S5:判断该无源类的父类的类加载器是否与该无源类的类加载器相同,如果相同,获取该无源类的父类的类加载器信息和类信息,根据类加载器信息和类信息判断该无源类是否有威胁;否则,判定该无源类有威胁。
通过步骤S3-S5对每个无源类进行是否有威胁的判定,可以得出当前Java进程中所有具有威胁的无源类(即无源内存木马)。
根据类加载器信息和类信息判断该无源类是否有威胁的方法为:只有当根据类加载器信息和类信息判断该无源类均无威胁时,才判定该无源类无威胁。当两者中的一者判定该无源类有威胁时,则判定该无源类有威胁。
(1)如图2所示,根据类加载器信息判断该无源类是否有威胁的方法包括以下步骤:
S101:判断类加载器是否为自定义类加载器,如果是,进入S102;否则,进入S104。
根据类加载器列表,当类加载器既不属于Java系统的类加载器,也不属于Web容器的类加载器时,则判定其为自定义类加载器。
S102:判断类加载器是否为有源类,如果是,进入S103;否则,判定该无源类有威胁。
S103:判断类加载器是否与该无源类的父类存在于相同package中,如果是,则判定该无源类无威胁;否则,判定该无源类有威胁。
S104:判断类加载器是Java系统的类加载器还是Web容器的类加载器,如果是Java系统的类加载器则判定该无源类无威胁,如果是Web容器的类加载器则判定该无源类有威胁。
(2)根据类信息判断该无源类是否有威胁的方法为:根据类信息提取类的package信息,并根据package信息查找对应的package位置,进而判断package位置是否在Web容器启动时的加载路径中,如果不在,则判定该无源类有威胁,如果在,则判定该无源类无威胁。
本发明实施例可以避免受到部分自主研发的Java组件或Java新版本语言特性所带来的误测情况,提高检测的准确性,更快的帮助安全人员确定是否存在入侵威胁。
实施例二:
本发明还提供一种Java内存木马检测终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例一的上述方法实施例中的步骤。
进一步地,作为一个可执行方案,所述Java内存木马检测终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述Java内存木马检测终端设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,上述Java内存木马检测终端设备的组成结构仅仅是Java内存木马检测终端设备的示例,并不构成对Java内存木马检测终端设备的限定,可以包括比上述更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述Java内存木马检测终端设备还可以包括输入输出设备、网络接入设备、总线等,本发明实施例对此不做限定。
进一步地,作为一个可执行方案,所称处理器可以是中央处理单元(CentralProcessing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述Java内存木马检测终端设备的控制中心,利用各种接口和线路连接整个Java内存木马检测终端设备的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述Java内存木马检测终端设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据手机的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例上述方法的步骤。
所述Java内存木马检测终端设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)以及软件分发介质等。
尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。

Claims (7)

1.一种Java内存木马检测方法,其特征在于,包括以下步骤:
S1:构建类加载器列表,用于记录Java系统的类加载器和Web容器的类加载器;
S2:读取并记录当前Java进程中的所有无源类以及对应的类信息,对每个无源类进行以下步骤的判断;
S3:判断无源类是否为匿名类,如果是,进入S4;否则,获取该无源类的类加载器信息和类信息,根据类加载器信息和类信息判断该无源类是否有威胁;
S4:判断该无源类的父类是否为有源类,如果是,获取其父类的类加载器信息,根据类加载器信息判断该无源类是否有威胁;否则,进入S5;
S5:判断该无源类的父类的类加载器是否与该无源类的类加载器相同,如果相同,获取该无源类的父类的类加载器信息和类信息,根据类加载器信息和类信息判断该无源类是否有威胁;否则,判定该无源类有威胁。
2.根据权利要求1所述的Java内存木马检测方法,其特征在于:根据类加载器信息和类信息判断该无源类是否有威胁的方法为:只有当根据类加载器信息和类信息判断该无源类均无威胁时,才判定该无源类无威胁。
3.根据权利要求1所述的Java内存木马检测方法,其特征在于:根据类加载器信息判断该无源类是否有威胁的方法包括以下步骤:
S101:判断类加载器是否为自定义类加载器,如果是,进入S102;否则,进入S104;
S102:判断类加载器是否为有源类,如果是,进入S103;否则,判定该无源类有威胁;
S103:判断类加载器是否与该无源类的父类存在于相同package中,如果是,则判定该无源类无威胁;否则,判定该无源类有威胁;
S104:判断类加载器是Java系统的类加载器还是Web容器的类加载器,如果是Java系统的类加载器则判定该无源类无威胁,如果是Web容器的类加载器则判定该无源类有威胁。
4.根据权利要求3所述的Java内存木马检测方法,其特征在于:步骤S101中判断类加载器是否为自定义类加载器的方法为:根据将类加载器与类加载器列表中的各类加载器相匹配,当类加载器既不属于Java系统的类加载器,也不属于Web容器的类加载器时,则判定其为自定义类加载器。
5.根据权利要求1所述的Java内存木马检测方法,其特征在于:根据类信息判断该无源类是否有威胁的方法为:根据类信息提取类的package信息,并根据package信息查找对应的package位置,进而判断package位置是否在Web容器启动时的加载路径中,如果不在则判定该无源类有威胁,如果在则判定该无源类无威胁。
6.一种Java内存木马检测终端设备,其特征在于:包括处理器、存储器以及存储在所述存储器中并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1~5中任一所述方法的步骤。
7.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1~5中任一所述方法的步骤。
CN202210421397.6A 2022-04-21 2022-04-21 一种Java内存木马检测方法、终端设备及存储介质 Pending CN114936368A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210421397.6A CN114936368A (zh) 2022-04-21 2022-04-21 一种Java内存木马检测方法、终端设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210421397.6A CN114936368A (zh) 2022-04-21 2022-04-21 一种Java内存木马检测方法、终端设备及存储介质

Publications (1)

Publication Number Publication Date
CN114936368A true CN114936368A (zh) 2022-08-23

Family

ID=82863202

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210421397.6A Pending CN114936368A (zh) 2022-04-21 2022-04-21 一种Java内存木马检测方法、终端设备及存储介质

Country Status (1)

Country Link
CN (1) CN114936368A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116668202A (zh) * 2023-08-02 2023-08-29 杭州默安科技有限公司 一种容器环境下内存马检测方法及系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116668202A (zh) * 2023-08-02 2023-08-29 杭州默安科技有限公司 一种容器环境下内存马检测方法及系统

Similar Documents

Publication Publication Date Title
CN103778373A (zh) 病毒检测方法及装置
CN113961919B (zh) 恶意软件检测方法和装置
US10229273B2 (en) Identifying components for static analysis of software applications
CN113312618A (zh) 程序漏洞检测方法、装置、电子设备及介质
CN112579146A (zh) 接口变化的检测方法及装置
EP2856306B1 (en) Virtualizing integrated calls to provide access to resources in a virtual namespace
CN112214267A (zh) 一种安卓脱壳加速方法、装置、存储介质及计算机设备
CN111338716A (zh) 基于规则引擎的数据处理方法、装置及终端设备
CN114936368A (zh) 一种Java内存木马检测方法、终端设备及存储介质
CN113176907A (zh) 接口数据调用方法、装置、计算机系统及可读存储介质
CN114816772B (zh) 基于兼容层运行的应用的排错方法、排错系统及计算设备
CN113282541B (zh) 文件调用方法、装置和电子设备
CN111045746A (zh) 代码扩展方法和框架
CN112925523B (zh) 对象比较方法、装置、设备及计算机可读介质
CN113986592A (zh) 日志记录方法、装置、终端设备及可读存储介质
CN112052054A (zh) 函数调用方法、装置、电子设备及存储介质
CN117540124A (zh) 埋点数据生成方法、系统、计算设备及存储介质
CN113722715B (zh) 一种导入文件检查方法、检查系统及计算设备
CN114338580B (zh) 一种公众号项目开发方法、装置及存储介质
CN113805889B (zh) 一种智能合约调用执行方法、装置、设备及可读存储介质
CN114638004B (zh) 一种数据保护方法、装置及存储介质
CN112214220B (zh) 用于集成系统的方法、装置和设备
US20210194501A1 (en) Method for compressing behavior event in computer and computer device therefor
CN114168957A (zh) 解析恶意应用程序的方法、装置、设备、介质和程序产品
CN116243966A (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