CN115469943B - Java虚拟终端命令执行的检测方法及装置 - Google Patents

Java虚拟终端命令执行的检测方法及装置 Download PDF

Info

Publication number
CN115469943B
CN115469943B CN202211160415.6A CN202211160415A CN115469943B CN 115469943 B CN115469943 B CN 115469943B CN 202211160415 A CN202211160415 A CN 202211160415A CN 115469943 B CN115469943 B CN 115469943B
Authority
CN
China
Prior art keywords
class
java
custom
subprocess
virtual terminal
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
CN202211160415.6A
Other languages
English (en)
Other versions
CN115469943A (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.)
Anxin Wangdun Beijing Technology Co ltd
Original Assignee
Anxin Wangdun Beijing 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 Anxin Wangdun Beijing Technology Co ltd filed Critical Anxin Wangdun Beijing Technology Co ltd
Priority to CN202211160415.6A priority Critical patent/CN115469943B/zh
Publication of CN115469943A publication Critical patent/CN115469943A/zh
Application granted granted Critical
Publication of CN115469943B publication Critical patent/CN115469943B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution
    • 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
    • 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
    • G06F2009/45591Monitoring or debugging support
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例涉及一种JAVA虚拟终端命令执行的检测方法及装置,所述方法包括:创建第一自定义类,第一自定义类包含所述标准输入类的私有成员;采用hook方式监控子进程启动;在检测到有子进程启动时,在子进程创建完成后对该子进程进行修改,把子进程的标准输入进程成员stdin赋值给第一自定义类的对象的标准输入成员mstdin,把第一自定义类的对象重新赋值给子进程的标准输入成员stdin;通过第一自定义类对JAVA虚拟终端所执行的命令进行监测。本发明实施例的技术方案,针对JAVA进程创建的子进程,因为替换了子进程的标准输入流对象,能够获取到所有父进程到子进程的数据,实现了虚拟终端远程命令执行的监控。

Description

JAVA虚拟终端命令执行的检测方法及装置
技术领域
本发明实施例涉及JAVA程序检测技术领域,尤其涉及一种JAVA虚拟终端命令执行的检测方法及装置。
背景技术
JAVA虚拟终端就是JAVA Web服务器启动敏感子进程,在linux上通常为/bin/bash,通过把命令间接传递给启动的bash子进程,并从启动的子进程获取命令结果,达到远程控制计算机的目的。
因为子进程可以有各种变形,名字也不一定是bash,但攻击最终的效果都是要执行命令,而这种创建‘类shell进程’的行为,就是建立虚拟终端的行为,和虚拟终端通信,即通过把命令传递给虚拟终端,从虚拟终端得到结果,就达到了间接执行命令的效果。
因此,如何对JAVA虚拟终端执行命令进行检测成为亟待解决的问题。
发明内容
基于现有技术的上述情况,本发明实施例的目的在于提供一种JAVA虚拟终端命令执行的检测方法及装置,在进程创建函数后hook,对进程的表述输入成员进行替换,达到监控父子进程通信的目的。
为达到上述目的,根据本发明的一个方面,提供了一种JAVA虚拟终端命令执行的检测方法,包括:
创建第一自定义类,所述第一自定义类继承自JAVA主机的标准输入类,第一自定义类包含所述标准输入类的私有成员;
采用hook方式监控子进程启动;
在检测到有子进程启动时,在子进程创建完成后对该子进程进行修改,把子进程的标准输入进程成员stdin赋值给第一自定义类的对象的标准输入成员mstdin,把第一自定义类的对象重新赋值给子进程的标准输入成员stdin;
通过第一自定义类对JAVA虚拟终端所执行的命令进行监测。
进一步的,通过第一自定义类对JAVA虚拟终端所执行的命令进行监测,包括:
若第一自定义类检测到回车换行符,则输出虚拟终端命令执行信号;若第一自定义类未检测到回车换行符,则返回上一步继续监测。
进一步的,所述采用hook方式监控子进程启动,包括:
在JAVA进程启动函数之后,插入自定义代码,执行替换子进程标准输入进程成员stdin的工作。根据权利要求3所述的方法,其特征在于,还包括:
使用JAVA探针进行hook,把自定义代码使用java.lang.instrument的工具包加入到JAVA虚拟终端进程中,检测当前已经加载的类;
如果该类为启动进程的类,则调用java.lang.instrument.Instrumentation中的retransformClasses函数,触发此类的重新加载,并使用javassist类工具,在该类的start函数末尾插入自定义的代码“创建第一自定义类对象,包装并替换子进程stdin对象”。
根据本发明的第二个方面,提供了一种JAVA虚拟终端命令执行的检测装置,包括:
自定义类创建模块,用于创建第一自定义类,所述第一自定义类继承自JAVA主机的标准输入类,第一自定义类包含所述标准输入类的私有成员;
进程启动模块,用于采用hook方式监控子进程启动;
对象替换模块,用于在检测到有子进程启动时,在子进程创建完成后对该子进程进行修改,把子进程的标准输入进程成员stdin赋值给第一自定义类的对象的标准输入成员mstdin,把第一自定义类的对象重新赋值给子进程的标准输入成员stdin;
命令监测模块,用于通过第一自定义类对JAVA虚拟终端所执行的命令进行监测。
进一步的,所述命令监测模块通过第一自定义类对JAVA虚拟终端所执行的命令进行监测,包括:
若第一自定义类检测到回车换行符,则输出虚拟终端命令执行信号;若第一自定义类未检测到回车换行符,则返回上一步继续监测。
进一步的,所述进程启动模块,采用hook方式监控子进程启动,包括:
在JAVA进程启动函数之后,插入自定义代码,执行替换子进程标准输入进程成员stdin的工作。根据权利要求7所述的装置,其特征在于,所述进程启动模块,采用hook方式监控子进程启动,还包括:
使用JAVA探针进行hook,把自定义代码使用java.lang.instrument的工具包加入到JAVA虚拟终端进程中,检测当前已经加载的类;
如果该类为启动进程的类,则调用java.lang.instrument.Instrumentation中的retransformClasses函数,触发此类的重新加载,并使用javassist类工具,在该类的start函数末尾插入自定义的代码“创建第一自定义类对象,包装并替换子进程stdin对象”。
根据本发明的第三个方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的可执行指令,所述处理器执行所述程序时实现如本发明第一个方面所述的方法。
根据本发明的第四个方面,提供了一种计算机可读存储介质,其上存储有计算机可执行指令,所述可执行指令被处理器执行时实现如本发明第一个方面所述的方法。
综上所述,本发明实施例提供了一种JAVA虚拟终端命令执行的检测方法及装置,所述方法包括:创建第一自定义类,所述第一自定义类继承自JAVA主机的标准输入类,第一自定义类包含所述标准输入类的私有成员;采用hook方式监控子进程启动;在检测到有子进程启动时,在子进程创建完成后对该子进程进行修改,把子进程的标准输入进程成员stdin赋值给第一自定义类的对象的标准输入成员mstdin,把第一自定义类的对象重新赋值给子进程的标准输入成员stdin;通过第一自定义类对JAVA虚拟终端所执行的命令进行监测。本发明实施例的技术方案,针对JAVA进程创建的子进程,因为替换了子进程的标准输入流对象,能够获取到所有父进程到子进程的数据,即实现了虚拟终端远程命令执行的监控,提高了JAVA虚拟终端命令执行的安全性和可靠性。
附图说明
图1是本发明实施例提供的JAVA虚拟终端命令执行的检测方法的流程图;
图2是通过第一自定义类对JAVA虚拟终端所执行的命令进行监测的原理的流程图;
图3是本发明实施例提供的JAVA虚拟终端命令执行的检测装置的构成框图;
图4是本发明实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
在JAVA中,java.lang.Process类有三个成员对象:
private OutputStream stdin;
private InputStream stdout;
private InputStream stderr;
分别代表进程的标准输入、标准输出和标准错误成员对象,分别定义了一个名称为stdin、stdout和stderr的成员,成员的类型分别是OutputStream、InputStream和InputStream类型,成员的访问属性均为私有private。在进程的创建过程中,会对这几个成员对象进行初始化。当进程的成员对象创建完毕后,进程成员对象内部的stdin、stdout和stderr三个成员对象,就都进行了初始化,有了初始值。
JAVA中启动进程有多种方式,比如通过Runtime.getRuntime函数或者通过ProcessBuilder函数等,最终的效果就是构造Process类对象,Process类对象创建成功,即进程创建完成,Process类对象内部的stdin、stdout和stderr就可以处理进程的输入、输出和错误信息。往成员对象stdin中写数据,Process类就能收到数据,Process类有输出或出错,外部则可以通过Process类的stdout和stderr获取到输出和错误信息。Process类用于描述进程在内存中的数据结构,进程存在,Process类对象就存在,进程退出,Process类对象就销毁了。Process类在不同的系统上名字有区别,比如Unix系统,名字一般为UNIXProcess。一旦Process对象创建完成,当前JAVA进程(调用Runtime.getRuntime或ProcessBuilder的进程)就成了父进程,而创建出的Process对象代表的进程,就成了当前JAVA进程的子进程。
JAVA进程启动的所有子进程,默认都被进行了输入输出的重定向,JAVA中获取子进程的stdin和stdout对象比较方便,Process类提供了特定的函数来获取,在父进程中,通过调用子进程Process对象的getOutputStream()函数可以得到子进程对象的stdin对象成员,通过调用子进程Process对象的getInputStream()函数可以得到子进程对象的stdout对象成员,父进程向子进程写入数据,就可以向子进程对象的stdin对象成员写数据,子进程处理完毕后,父进程可以从子进程的stdout对象成员得到处理结果。而如果子进程是/bin/bash之类的shell进程,就可以达到通过子进程执行任意命令的效果。
JAVA Agent又叫做JAVA探针,是在JDK1.5引入的一种可以动态修改JAVA字节码的技术,JAVA类编译之后形成字节码被JVM执行,在JVM在执行这些字节码之前获取这些字节码信息,并且通过字节码转换器对这些字节码进行修改,来完成一些额外的功能,java.lang.instrument的工具包就是做此用处的,比如可以在每个函数执行前和执行后插入自定义的代码(hook,hook指的是使用技术手段在运行时动态的将额外代码依附现进程,从而实现替换现有处理逻辑或插入额外功能的目的),达到监控和阻断的目的。如果在进程创建函数之前hook,可以在进程创建之前就获取到进程的参数信息,如果在进程创建函数之后hook,就可以在进程创建后的第一时间对进程进行修改,本发明实施例通过在进程创建函数后hook,对进程的对象成员stdin进行替换,达到监控父子进程通信的目的。
下面对结合附图对本发明实施例的技术方案进行详细说明。本发明的实施例中,提供了一种JAVA虚拟终端命令执行的检测方法,图1中示出了该方法的流程图,包括如下步骤:
S102、创建第一自定义类,所述第一自定义类继承自JAVA主机的标准输入类,第一自定义类包含所述标准输入类的私有成员。该步骤中,首先编写一个自定义的第一自定义类,比如取名为MyStream类,MyStream继承自系统的java.io.OutputSteam类,MySteam类包含一个私有的java.io.OutputSteam类型的成员,比如取名为mStdin成员,MyStream类实现java.io.OutputSteam类的所有方法,所有方法经过处理(即监控),最终都要调用成员mStdin的对应方法。
S104、采用hook方式监控子进程启动。即在JAVA的进程启动的函数之后,插入自定义代码,执行替换子进程标准输入成员stdin的工作;使用Java Agent技术进行Hook,把自定义的代码使用java.lang.instrument的工具包,加入到JVM进程中,检测当前已经加载的所有类,如果是启动进程的类,例如java.lang.ProcessImpl,则调用java.lang.instrument.Instrumentation的retransformClasses函数,触发此类的重新加载,重新加载时,使用javassist类工具,在类的start函数末尾插入自定义的代码“创建第一自定义类对象,包装并替换子进程stdin对象”。
S106、在检测到有子进程启动时,在子进程创建完成后对该子进程进行修改,把子进程的标准输入进程成员stdin赋值给第一自定义类的对象的标准输入成员mstdin,把第一自定义类的对象重新赋值给子进程的标准输入成员stdin。通过创建上面的MyStream类的对象,把子进程Process的stdin对象赋值给MyStream对象的mStdin成员,然后把MyStream对象重新赋值给子进程的stdin成员,即对MyStream对象对子进程的stdin成员进行了包装,又重新赋值给了子进程,这样所有向子进程写入数据的操作,都要写入子进程的stdin(即MyStream对象),MyStream对象又把数据传递给原始的stdin。即数据流向为:数据->MyStream->stdin。
S108、通过第一自定义类对JAVA虚拟终端所执行的命令进行监测。通过以上步骤可知MyStream对象对子进程的stdin进行了封装和替换,所有父进程到子进程stdin的数据,都经过了MyStream对象的传递,而传递的过程中,可获取到所有对子进程的输入,即可以知道究竟执行了哪些命令,达到检测虚拟终端命令执行的目的。图2中示出了通过第一自定义类对JAVA虚拟终端所执行的命令进行监测的原理的流程图如图2所示,实线表示数据的流动方向;外框表示实体的范围;虚线表示命令的识别与发送。
由于第一自定义类包装了子进程的stdin成员对象,数据要到达子进程的stdin,必然会流经第一自定义类的mstdin,在数据流转的过程中,可以获取到流转的数据,并发送给外部函数做处理。外部函数收到数据可以打印,或者执行其他上报逻辑。而针对所有数据,虽然通过第一自定义类对数据进行了判断,但是原始的数据还是传递给了stdin对象,原有的stdin写数据流程,不会受到影响。
进一步的,在检测过程中,若第一自定义类检测到回车换行符,则输出虚拟终端命令执行信号;若第一自定义类未检测到回车换行符,则返回上一步继续监测。
对于JAVA进程创建的子进程,因为替换了子进程的标准输入流对象,所有父进程到子进程的数据都能够获取到,即实现了虚拟终端远程命令执行的监控。
本发明的实施例,还提供了一种JAVA虚拟终端命令执行的检测装置,图3中示出了该装置的结构框图,包括:
自定义类创建模块301,用于创建第一自定义类,所述第一自定义类继承自JAVA主机的标准输入类,第一自定义类包含所述标准输入类的私有成员;
进程启动模块302,用于采用hook方式监控子进程启动;
对象替换模块303,用于在检测到有子进程启动时,在子进程创建完成后对该子进程进行修改,把子进程的标准输入进程成员stdin赋值给第一自定义类的对象的标准输入成员mstdin,把第一自定义类的对象重新赋值给子进程的标准输入成员stdin;
命令监测模块304,用于通过第一自定义类对JAVA虚拟终端所执行的命令进行监测。
上述JAVA虚拟终端命令执行的检测装置300中的各个模块的具体功能和操作已经在上述实施例的JAVA虚拟终端命令执行的检测方法中进行了详细介绍,因此,这里将省略其重复描述。
本发明的实施例中,还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的可执行指令,所述处理器执行所述程序时实现如本发明上述实施例中所述的方法。图4所示为本申请该实施例提供的电子设备400的结构示意图。如图4所示,该电子设备400包括:一个或多个处理器401和存储器402;以及存储在存储器402中的计算机可执行指令,可执行指令在被处理器401运行时使得处理器401执行如上述实施例的JAVA虚拟终端命令执行的检测的方法。处理器401可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备中的其他组件以执行期望的功能。存储器402可以包括一个或多个计算机程序产品,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器301可以运行程序指令,以实现上文的本发明实施例的JAVA虚拟终端命令执行的检测方法中的步骤以及/或者其他期望的功能。在一些实施例中,电子设备400还可以包括:输入装置403和输出装置404,这些组件通过总线系统和/或其他形式的连接机构(图4中未示出)互连。例如,在该电子设备是单机设备时,该输入装置403可以是通信网络连接器,用于从外部的可移动设备接收所采集的输入信号。此外,该输入设备403还可以包括例如键盘、鼠标、麦克风等。该输出装置404可以向外部输出各种信息,例如可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等。
本发明的实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如本发明上述实施例中所述的方法中的步骤。计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器((RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
应当理解的是,本发明实施例中的处理器可以为中央处理单元(CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
综上所述,本发明实施例涉及一种利用JAVA虚拟终端命令执行的检测方法、装置、电子设备和存储介质,所述方法包括:创建第一自定义类,所述第一自定义类继承自JAVA主机的标准输入类,第一自定义类包含所述标准输入类的私有成员;采用hook方式监控子进程启动;在检测到有子进程启动时,在子进程创建完成后对该子进程进行修改,把子进程的标准输入进程成员stdin赋值给第一自定义类的对象的标准输入成员mstdin,把第一自定义类的对象重新赋值给子进程的标准输入成员stdin;通过第一自定义类对JAVA虚拟终端所执行的命令进行监测。本发明实施例的技术方案,针对JAVA进程创建的子进程,因为替换了子进程的标准输入流对象,能够获取到所有父进程到子进程的数据,即实现了虚拟终端远程命令执行的监控,提高了JAVA虚拟终端命令执行的安全性和可靠性。
应当理解的是,以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明一个或多个实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。

Claims (8)

1.一种JAVA虚拟终端命令执行的检测方法,其特征在于,包括:
创建第一自定义类,所述第一自定义类继承自JAVA主机的标准输入类,第一自定义类包含所述标准输入类的私有成员;通过第一自定义类对JAVA虚拟终端所执行的命令进行监测,包括:若第一自定义类检测到回车换行符,则输出虚拟终端命令执行信号;
采用hook方式监控子进程启动,包括:使用JAVA探针进行hook,把自定义代码使用java.lang.instrument的工具包加入到JAVA虚拟终端进程中,检测当前已经加载的类;如果该当前已经加载的类为启动进程的类,则调用java.lang.instrument.Instrumentation中的retransformClasses函数,触发此当前已经加载的类的重新加载,并使用javassist类工具,在该当前已经加载的类的start函数末尾插入自定义的代码“创建第一自定义类对象,包装并替换子进程stdin对象”;在检测到有子进程启动时,在子进程创建完成后对该子进程进行修改,把子进程的标准输入进程成员stdin赋值给第一自定义类的对象的标准输入成员mstdin,把第一自定义类的对象重新赋值给子进程的标准输入成员stdin;
通过第一自定义类对JAVA虚拟终端所执行的命令进行监测。
2.根据权利要求1所述的方法,其特征在于,通过第一自定义类对JAVA虚拟终端所执行的命令进行监测,还包括:
若第一自定义类未检测到回车换行符,则返回上一步继续监测。
3.根据权利要求1所述的方法,其特征在于,所述采用hook方式监控子进程启动,还包括:
在JAVA进程启动函数之后,插入自定义代码,执行替换子进程标准输入进程成员stdin的工作。
4.一种JAVA虚拟终端命令执行的检测装置,其特征在于,包括:
自定义类创建模块,用于创建第一自定义类,所述第一自定义类继承自JAVA主机的标准输入类,第一自定义类包含所述标准输入类的私有成员;通过第一自定义类对JAVA虚拟终端所执行的命令进行监测,包括:若第一自定义类检测到回车换行符,则输出虚拟终端命令执行信号;
进程启动模块,用于采用hook方式监控子进程启动,包括:使用JAVA探针进行hook,把自定义代码使用java.lang.instrument的工具包加入到JAVA虚拟终端进程中,检测当前已经加载的类;如果该当前已经加载的类为启动进程的类,则调用java.lang.instrument.Instrumentation中的retransformClasses函数,触发此当前已经加载的类的重新加载,并使用javassist类工具,在该当前已经加载的类的start函数末尾插入自定义的代码“创建第一自定义类对象,包装并替换子进程stdin对象”;
对象替换模块,用于在检测到有子进程启动时,在子进程创建完成后对该子进程进行修改,把子进程的标准输入进程成员stdin赋值给第一自定义类的对象的标准输入成员mstdin,把第一自定义类的对象重新赋值给子进程的标准输入成员stdin;
命令监测模块,用于通过第一自定义类对JAVA虚拟终端所执行的命令进行监测。
5.根据权利要求4所述的装置,其特征在于,所述命令监测模块通过第一自定义类对JAVA虚拟终端所执行的命令进行监测,还包括:
若第一自定义类未检测到回车换行符,则返回上一步继续监测。
6.根据权利要求4所述的装置,其特征在于,所述进程启动模块,采用hook方式监控子进程启动,还包括:
在JAVA进程启动函数之后,插入自定义代码,执行替换子进程标准输入进程成员stdin的工作。
7.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的可执行指令,其特征在于,所述处理器执行所述可执行指令时实现如权利要求1-3中任一项所述的方法。
8.一种计算机可读存储介质,其上存储有计算机可执行指令,其特征在于,所述可执行指令被处理器执行时实现如权利要求1-3中任一项所述的方法。
CN202211160415.6A 2022-09-22 2022-09-22 Java虚拟终端命令执行的检测方法及装置 Active CN115469943B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211160415.6A CN115469943B (zh) 2022-09-22 2022-09-22 Java虚拟终端命令执行的检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211160415.6A CN115469943B (zh) 2022-09-22 2022-09-22 Java虚拟终端命令执行的检测方法及装置

Publications (2)

Publication Number Publication Date
CN115469943A CN115469943A (zh) 2022-12-13
CN115469943B true CN115469943B (zh) 2023-05-16

Family

ID=84335674

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211160415.6A Active CN115469943B (zh) 2022-09-22 2022-09-22 Java虚拟终端命令执行的检测方法及装置

Country Status (1)

Country Link
CN (1) CN115469943B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1995033235A1 (fr) * 1994-05-31 1995-12-07 Fujitsu Limited Systeme et procede d'execution d'un travail entre differents systemes d'exploitation
GB0031206D0 (en) * 2000-12-21 2001-01-31 Ibm Multi-platform command line interpretation
WO2009155469A2 (en) * 2008-06-18 2009-12-23 Eads Na Defense Security And Systems Solutions, Inc. Systems and methods for a simulated network environment and operation thereof
JP2010182287A (ja) * 2008-07-17 2010-08-19 Steven C Kays 適応型インテリジェント・デザイン
CN111399949A (zh) * 2020-04-02 2020-07-10 马瑞利汽车电子(广州)有限公司 一种开启汽车仪表后台调试功能的方法
CN113656152A (zh) * 2021-08-24 2021-11-16 上海道客网络科技有限公司 基于容器云环境的本地模拟方法、系统、介质和电子设备

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6490721B1 (en) * 1998-07-14 2002-12-03 Oc Systems Incorporated Software debugging method and apparatus
US20030214326A1 (en) * 2002-02-11 2003-11-20 Craimer Stephen G. Distributed dynamically optimizable processing communications and storage system
US9069782B2 (en) * 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
CN104156662B (zh) * 2014-08-28 2017-10-27 北京奇虎科技有限公司 进程监控的方法、装置和智能终端
CN105574406A (zh) * 2015-12-23 2016-05-11 北京奇虎科技有限公司 一种进程监控的方法和装置
CN107193577B (zh) * 2016-03-15 2021-08-03 斑马智行网络(香港)有限公司 一种应用启动方法、装置和智能终端
US10666618B2 (en) * 2016-09-15 2020-05-26 Paypal, Inc. Enhanced security techniques for remote reverse shell prevention
CN107943660A (zh) * 2017-12-05 2018-04-20 福建星瑞格软件有限公司 一种监测linux的进程信息的方法及计算机设备
CN109347698A (zh) * 2018-10-25 2019-02-15 北京凝思科技有限公司 一种Linux系统下用户终端操作命令及回显信息监控方法
US11029989B2 (en) * 2018-11-05 2021-06-08 International Business Machines Corporation Distributed notebook kernels in a containerized computing environment
US20200195531A1 (en) * 2018-12-14 2020-06-18 Hewlett Packard Enterprise Development Lp Analytics on network switch using multi-threaded sandboxing of a script
CN110399265A (zh) * 2019-06-29 2019-11-01 苏州浪潮智能科技有限公司 一种自动化监测Linux命令并实现调用的方法及装置
US11550944B2 (en) * 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
CN113449298B (zh) * 2020-03-24 2023-09-05 百度在线网络技术(北京)有限公司 一种反弹shell进程的检测方法、装置、设备和介质
CN113395287B (zh) * 2021-06-22 2022-06-28 杭州默安科技有限公司 一种记录网络攻击ip和命令执行回显的方法和系统
CN115033873A (zh) * 2022-06-27 2022-09-09 湖北天融信网络安全技术有限公司 一种动态注入方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1995033235A1 (fr) * 1994-05-31 1995-12-07 Fujitsu Limited Systeme et procede d'execution d'un travail entre differents systemes d'exploitation
GB0031206D0 (en) * 2000-12-21 2001-01-31 Ibm Multi-platform command line interpretation
WO2009155469A2 (en) * 2008-06-18 2009-12-23 Eads Na Defense Security And Systems Solutions, Inc. Systems and methods for a simulated network environment and operation thereof
JP2010182287A (ja) * 2008-07-17 2010-08-19 Steven C Kays 適応型インテリジェント・デザイン
CN111399949A (zh) * 2020-04-02 2020-07-10 马瑞利汽车电子(广州)有限公司 一种开启汽车仪表后台调试功能的方法
CN113656152A (zh) * 2021-08-24 2021-11-16 上海道客网络科技有限公司 基于容器云环境的本地模拟方法、系统、介质和电子设备

Also Published As

Publication number Publication date
CN115469943A (zh) 2022-12-13

Similar Documents

Publication Publication Date Title
CN107832059B (zh) 一种基于Makefile的代码静态分析方法和装置
CN105550585B (zh) 一种应用程序安全性测试方法、装置和系统
US20230036357A1 (en) Method and apparatus for authority control, computer device and storage medium
KR20080099247A (ko) 데이터 구조가 저장되어 있는 적어도 하나의 컴퓨터판독가능 매체 및 시스템
US8185876B2 (en) Method and implementation for constructing of corrected java native code
CN111290806A (zh) 应用程序接口的调用方法、装置、计算机设备及存储介质
CN104881318A (zh) 一种接口调用方法、装置及终端
US7385927B2 (en) Methods and structure for improved testing of embedded systems
CN111124870A (zh) 一种接口测试方法及装置
CN109241746B (zh) 代码处理方法、装置、计算设备以及存储介质
RU2431187C2 (ru) Декларативное определение действия средства управления
CN115469943B (zh) Java虚拟终端命令执行的检测方法及装置
US7036045B2 (en) Method and system for isolating exception related errors in Java JVM
CN113553578B (zh) 一种日志打印响应方法、装置、电子设备和存储介质
US7519719B2 (en) Automatic creation of protocol dependent control path for instrument application
EP3336626A1 (en) Memory analysis for industrial controllers
KR101476536B1 (ko) 프로그램 검수 방법 및 시스템
CN113032169B (zh) 跨语言软件系统的资源调用方法、设备及存储介质
CN111782282B (zh) 启动程序加载方法和装置、电子设备和存储介质
CN117112047B (zh) 一种usb设备的管控方法、设备及存储介质
CN112468531B (zh) 一种文件传输的控制方法和装置
CN110941459A (zh) 调用Replugin插件的方法及装置
CN112532677B (zh) 一种文件传输的控制方法和装置
CN114707149B (zh) 一种傀儡进程检测方法、装置、电子设备和存储介质
CN114996128B (zh) 基于asm框架的脚本处理方法、装置、设备及存储介质

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