CN113312624B - 一种Java Web应用内存木马检测方法、终端设备及存储介质 - Google Patents
一种Java Web应用内存木马检测方法、终端设备及存储介质 Download PDFInfo
- Publication number
- CN113312624B CN113312624B CN202110685500.3A CN202110685500A CN113312624B CN 113312624 B CN113312624 B CN 113312624B CN 202110685500 A CN202110685500 A CN 202110685500A CN 113312624 B CN113312624 B CN 113312624B
- Authority
- CN
- China
- Prior art keywords
- java
- class
- memory
- byte stream
- web application
- 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
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/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Virology (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种Java Web应用内存木马检测方法、终端设备及存储介质,该方法中包括:S1:从运行中的Java虚拟机中获取Class字节流;S2:将Class字节流解析为可识别的Constant和Method;S3:根据由敏感规则构成的敏感规则库,对解析后的Constant和Method进行匹配,根据匹配结果判断Class字节流的风险。本发明相比于传统的检测方法消耗资源更低,进而对业务***运行的影响更小,且避免了大量I/O操作。
Description
技术领域
本发明涉及木马检测领域,尤其涉及一种Java Web应用内存木马检测方法、终端设备及存储介质。
背景技术
Web应用***现广泛应用于社交、购物和邮件等重要业务线上,在网络资产中占有非常重要的地位,***的受攻击面广和攻击技术多,导致***易被入侵。“无文件马”(内存马)是“主机层安全面”的无文件马,其实现方法有:进程注入(shellcode注入)、WMI后门(驻留恶意payload)、远程执行下载命令(如:powershell、mshta、regsvr32等)。“应用层安全面”的无文件马(即内存马)是通过web容器(如tomcat、WebLogic等)或容器中的Web应用漏洞(如:任意命令执行、文件上传、反序列化等)使恶意代码驻留在内存中,攻击者经常用内存马做权限维持。较之传统的“有文件马”攻击,这一攻击方式可以大大减少攻击者在靶机中留下的痕迹(传统的安全产品对这类攻击的检测能力不足)。攻击者可以利用Java、C#、PHP等不同开发语言构造不同类型的内存马。受限于检测技术消耗进程cpu资源较大。内存马注入方式以及实现变化不断,现有的检测方法很难低消耗的有效检测出。
现使用内存木马检测方法主要分为agent注入反编译Class文件检测、利用请求上下文StandardContext遍历成员变量filterMaps,servletMappings判断磁盘源检测等其他手段口。Agent注入方式通过Java instrumentation机制,将检测jar包attach到jvm进程,检查加载到jvm中的类是否异常。整体检测思路为:获取jvm中所有加载的类。遍历每个类,判断是否为风险类。这里把可能被攻击方新增/修改内存中的类,标记为风险类(比如实现了filter/servlet的类)。遍历风险类,检查是否为webshell;检查高风险类的Class文件是否存在;反编译风险类字节码,检查Java文件中包含恶意代码。其优势为内测木马检出率高,但对于目标进程cpu占用和对***IO占用资源消耗较大,用JDK官方工具JMC发现检测过程中在1核2G cpu使用率飚升到80%~90%之间,严重影响了业务应用,有概率直接导致进程异常崩溃。经研究消耗主要集中在dump Class文件和Class反编译。
发明内容
为了解决上述问题,本发明提出了一种Java Web应用内存木马检测方法、终端设备及存储介质。
具体方案如下:
一种Java Web应用内存木马检测方法,包括以下步骤:
S1:从运行中的Java虚拟机中获取Class字节流;
S2:将Class字节流解析为可识别的Constant和Method;
S3:根据由敏感规则构成的敏感规则库,对解析后的Constant和Method进行匹配,根据匹配结果判断Class字节流的风险。
进一步的,步骤S1中通过Java agent技术从运行中的Java虚拟机中获取Class字节流。
进一步的,通过Java agent技术从运行中的Java虚拟机中获取Class字节流的具体方法为:预先按照Java agent技术规范编写一个jar文件,利用VirtualMachine.attach(pid)将编写的jar文件注入到目标进程中,向Java虚拟机中注册转换Class文件类ClassFileTransformer,调用InstrumentationUtils#retransformClasses重定义Class后,即能抓取到运行在Java虚拟机中的Class字节流。
进一步的,步骤S2中先将Class字节流按16进制读取为Class字节码文件后,再进行解析。
进一步的,步骤S3中敏感规则为危险的Java api。
进一步的,步骤S3中根据匹配结果判断Class字节流的风险的具体方法为:当匹配结果中有命中规则、Class字节流所属包属于Javax.servlet.Filter、Javax.servlet.Servlet和Javax.servlet.ServletRequestListener三者中的任一下的实现类,和不存在磁盘源三个条件均满足时,才判断Class字节流为内存木马。
一种Java Web应用内存木马检测终端设备,包括处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例上述的方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例上述的方法的步骤。
本发明采用如上技术方案,相比于传统的检测方法消耗资源更低,进而对业务***运行的影响更小,且避免了大量I/O操作。
附图说明
图1所示为本发明实施例一的流程图。
图2所示为该实施例中从Java虚拟机中获取Class字节流的流程图。
图3所示为该实施例中16进制的Class字节码文件示意图。
具体实施方式
为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。
现结合附图和具体实施方式对本发明进一步说明。
实施例一:
本发明实施例提供了一种Java Web应用内存木马检测方法,如图1所示,所述方法包括以下步骤:
S1:从运行中的Java虚拟机(Java Virtual Machine,JVM)中获取Class字节流。
该实施例中通过Java agent技术从运行中的Java虚拟机中获取Class字节流,如图2所示,具体实现方法为:预先按照Java agent技术规范编写一个jar文件,利用VirtualMachine.attach(pid)将编写的jar文件注入到目标进程中,向Java虚拟机中注册转换Class文件类ClassFileTransformer,调用InstrumentationUtils#retransformClasses重定义Class后,即能抓取到运行在Java虚拟机中的Class字节流。
S2:将Class字节流解析为可识别的Constant和Method。
将获取到的Class字节流根据Java字节码特性解析为可以识别的Constant,Method。
该实施例中将获取的Class字节流按16进制读取为Class字节码文件,如图3所示。
Class字节码文件由于没有分隔符,因此每个位置代表什么、各个部分的长度等格式有着严格规定。
第一部分是magic在Class字节码文件开头的四个字节“CA FE BA BE”,存放着Class字节码文件的魔数,该魔数是Class字节码文件的标志,其为一个固定的值:0XCAFEBABE。通常可以用该魔数来作为判断一个文件是不是Class字节码文件的标准。
第二部分是minor_version(“00 00”)与major_version(“00 34”),紧接着魔数的四个字节是Class字节码文件的次版本号(minor_version)和主版本号(major_version)。
第三部分是constant_pool_count:u2,常量池中常量的数量,“00 24”代表有25个。常量池通常保存两种类型的数据:第一种为字面量,如字符串、final修饰的常量等;第二种为符号引用,如类/接口的全限定名、方法的名称和描述、字段的名称和描述等。
步骤S2中解析后的Constant表示常量池中的数据,该实施例中解析过程主要解析的常量池中数据类型为字面量CONSTANT_utf8_info。
第四部分是类的成员变量filed_info。
其中filed_info中的name_index和descriptor_index均指向的常量池索引位置。
第五部分是方法内容method_info。
其中method_info中的name_index和descriptor_index均指向的常量池索引位置。
其中,attribute_info用于记录字段或方法体结构;attribute_name_index指向的常量池索引位置。
步骤S2中解析后的Method表示方法内容method_info。
S3:根据由敏感规则构成的敏感规则库,对解析后的Constant和Method进行匹配,根据匹配结果判断Class字节流的风险。
该实施例中敏感规则为危险的Javaapi,如ProcessBuilder().command(),Runtime.getRuntime()等。
通过实验验证,本实施例方法整体消耗在1核2G cpu资源只有5~10%左右(jmc工具采集)。
该实施例中根据匹配结果判断Class字节流的风险的具体方法为:当匹配结果中有命中规则、Class字节流所属包属于Javax.servlet.Filter、Javax.servlet.Servlet和Javax.servlet.ServletRequestListener三者中的任一下的实现类,和不存在磁盘源三个条件均满足时,才判断Class字节流为内存木马,其余情况均判断Class字节流不为内存木马。
本发明实施例提出一种基于Java agent的低消耗低影响的检测内存木马方法,通过Java字节码的特征分析Java虚拟机运行时的字节流进行内存马检测。本实施例的检测方法优化使用直接识别文件流,避免了dump class和反编译操作,使得CPU资源消耗相比于目前的检测方式具有更低,而且由于相对稳定的资源消耗,对业务***运行影响也更低,同时避免了大量I/O操作。
实施例二:
本发明还提供一种Java Web应用内存木马检测终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例一的上述方法实施例中的步骤。
进一步地,作为一个可执行方案,所述Java Web应用内存木马检测终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述Java Web应用内存木马检测终端设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,上述JavaWeb应用内存木马检测终端设备的组成结构仅仅是Java Web应用内存木马检测终端设备的示例,并不构成对Java Web应用内存木马检测终端设备的限定,可以包括比上述更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述Java Web应用内存木马检测终端设备还可以包括输入输出设备、网络接入设备、总线等,本发明实施例对此不做限定。
进一步地,作为一个可执行方案,所称处理器可以是中央处理单元(CentralProcessing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述Java Web应用内存木马检测终端设备的控制中心,利用各种接口和线路连接整个Java Web应用内存木马检测终端设备的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述Java Web应用内存木马检测终端设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序;存储数据区可存储根据手机的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例上述方法的步骤。
所述Java Web应用内存木马检测终端设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)以及软件分发介质等。
尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。
Claims (5)
1.一种Java Web应用内存木马检测方法,其特征在于,包括以下步骤:
S1:通过Java agent技术从运行中的Java虚拟机中获取Class字节流,具体方法为:预先按照Java agent技术规范编写一个jar文件,利用VirtualMachine.attach(pid)将编写的jar文件注入到目标进程中,向Java虚拟机中注册转换Class文件类ClassFileTransformer,调用InstrumentationUtils#retransformClasses重定义Class后,即能抓取到运行在Java虚拟机中的Class字节流;
S2:将Class字节流解析为可识别的Constant和Method;
S3:根据由敏感规则构成的敏感规则库,对解析后的Constant和Method进行匹配,根据匹配结果判断Class字节流的风险;根据匹配结果判断Class字节流的风险的具体方法为:当匹配结果中有命中敏感规则、Class字节流所属包属于Javax.servlet.Filter、Javax.servlet.Servlet和Javax.servlet.ServletRequestListener三者中的任一项的实现类,和不存在磁盘源三个条件均满足时,才判断Class字节流为内存木马。
2.根据权利要求1所述的Java Web应用内存木马检测方法,其特征在于:步骤S2中先将Class字节流按16进制读取为Class字节码文件后,再进行解析。
3.根据权利要求1所述的Java Web应用内存木马检测方法,其特征在于:步骤S3中敏感规则为危险的Java api。
4.一种Java Web应用内存木马检测终端设备,其特征在于:包括处理器、存储器以及存储在所述存储器中并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1~3中任一所述方法的步骤。
5.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1~3中任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110685500.3A CN113312624B (zh) | 2021-06-21 | 2021-06-21 | 一种Java Web应用内存木马检测方法、终端设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110685500.3A CN113312624B (zh) | 2021-06-21 | 2021-06-21 | 一种Java Web应用内存木马检测方法、终端设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113312624A CN113312624A (zh) | 2021-08-27 |
CN113312624B true CN113312624B (zh) | 2023-06-30 |
Family
ID=77379693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110685500.3A Active CN113312624B (zh) | 2021-06-21 | 2021-06-21 | 一种Java Web应用内存木马检测方法、终端设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113312624B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113946825B (zh) * | 2021-12-22 | 2022-04-26 | 北京微步在线科技有限公司 | 一种内存马处理方法及*** |
CN114491557A (zh) * | 2022-01-27 | 2022-05-13 | 北京小佑网络科技有限公司 | 一种基于容器环境java内存木马威胁检测方法 |
CN114629711B (zh) * | 2022-03-21 | 2024-02-06 | 广东云智安信科技有限公司 | 一种针对Windows平台特种木马检测的方法及*** |
CN114692153B (zh) * | 2022-04-11 | 2024-05-14 | 北京中睿天下信息技术有限公司 | 基于java程序的恶意代码检测方法、设备及存储介质 |
CN115270126B (zh) * | 2022-09-29 | 2022-12-16 | 北京微步在线科技有限公司 | 一种检测Java内存马的方法、装置、电子设备及存储介质 |
CN115688106A (zh) * | 2022-11-16 | 2023-02-03 | 安芯网盾(北京)科技有限公司 | 一种Java agent无文件注入内存马的检测方法及装置 |
CN115935361B (zh) * | 2023-01-09 | 2023-06-16 | 北京微步在线科技有限公司 | Java内存马检测方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102663286A (zh) * | 2012-03-21 | 2012-09-12 | 奇智软件(北京)有限公司 | 一种病毒apk的识别方法及装置 |
CN102831043A (zh) * | 2011-06-17 | 2012-12-19 | 阿里巴巴集团控股有限公司 | 应用程序监控方法和装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109684027B (zh) * | 2017-10-18 | 2020-11-24 | 北京京东尚科信息技术有限公司 | 动态跟踪Java虚拟机运行的方法和装置 |
CN108038045B (zh) * | 2017-12-29 | 2020-09-29 | 上海新炬网络技术有限公司 | 基于无埋点的Android用户行为数据采集方法 |
US11314856B2 (en) * | 2019-04-29 | 2022-04-26 | ColorTokens, Inc. | Generating rule-based access control policies using a bytecode instrumentation system |
CN110866257A (zh) * | 2019-11-14 | 2020-03-06 | 贵州医渡云技术有限公司 | 木马检测方法及装置、电子设备、存储介质 |
-
2021
- 2021-06-21 CN CN202110685500.3A patent/CN113312624B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102831043A (zh) * | 2011-06-17 | 2012-12-19 | 阿里巴巴集团控股有限公司 | 应用程序监控方法和装置 |
CN102663286A (zh) * | 2012-03-21 | 2012-09-12 | 奇智软件(北京)有限公司 | 一种病毒apk的识别方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113312624A (zh) | 2021-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113312624B (zh) | 一种Java Web应用内存木马检测方法、终端设备及存储介质 | |
US11063974B2 (en) | Application phenotyping | |
US8307432B1 (en) | Generic shellcode detection | |
US7797743B2 (en) | File conversion in restricted process | |
US10079835B1 (en) | Systems and methods for data loss prevention of unidentifiable and unsupported object types | |
Tuncay et al. | Draco: A system for uniform and fine-grained access control for web code on android | |
US20160156646A1 (en) | Signal tokens indicative of malware | |
US11288344B2 (en) | Protecting an application via an intra-application firewall | |
CN102622439A (zh) | 一种在浏览器中展示文档的方法及装置 | |
US10242189B1 (en) | File format validation | |
US20120222116A1 (en) | System and method for detecting web browser attacks | |
US8645667B2 (en) | Operating system management of address-translation-related data structures and hardware lookasides | |
US20160134652A1 (en) | Method for recognizing disguised malicious document | |
CN111460448B (zh) | 一种恶意软件家族检测方法及装置 | |
CN102819703B (zh) | 用于防护网页攻击的方法和设备 | |
CN114936368A (zh) | 一种Java内存木马检测方法、终端设备及存储介质 | |
CN115454541A (zh) | 宏代码获取方法、装置、电子设备及存储介质 | |
CN115481397A (zh) | 基于内存结构逆向分析的代码注入攻击取证检测方法与*** | |
US20130133067A1 (en) | Pattern matching engine, terminal apparatus using the same, and method thereof | |
CN111262842B (zh) | 网页防篡改方法、装置、电子设备、及存储介质 | |
CN113722641A (zh) | 基于ai的注入请求保护方法、装置、终端设备及介质 | |
CN110347517B (zh) | 双***的通信方法及计算机可读存储介质 | |
EP3430524B1 (en) | Print interface technology agnostic data loss prevention through print operations | |
KR102494838B1 (ko) | MS-CFB의 DocumentSummaryInformation 스트림에서 Link의 무해화를 위한 방법 및 장치 | |
CN112580023B (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20221028 Address after: Unit 403, No.12, guanri Road, phase II, software park, Xiamen City, Fujian Province, 361000 Applicant after: XIAMEN FUYUN INFORMATION TECHNOLOGY CO.,LTD. Applicant after: Jianxin Financial Science and Technology Co.,Ltd. Address before: Unit 403, No.12, guanri Road, phase II, software park, Xiamen City, Fujian Province, 361000 Applicant before: XIAMEN FUYUN INFORMATION TECHNOLOGY CO.,LTD. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |