CN116484360B - 一种基于rasp的注入方法、装置、介质及设备 - Google Patents

一种基于rasp的注入方法、装置、介质及设备 Download PDF

Info

Publication number
CN116484360B
CN116484360B CN202310745721.4A CN202310745721A CN116484360B CN 116484360 B CN116484360 B CN 116484360B CN 202310745721 A CN202310745721 A CN 202310745721A CN 116484360 B CN116484360 B CN 116484360B
Authority
CN
China
Prior art keywords
rasp
target
injection
container
application program
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
CN202310745721.4A
Other languages
English (en)
Other versions
CN116484360A (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 Antiy Network Technology Co Ltd
Original Assignee
Beijing Antiy Network 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 Antiy Network Technology Co Ltd filed Critical Beijing Antiy Network Technology Co Ltd
Priority to CN202310745721.4A priority Critical patent/CN116484360B/zh
Publication of CN116484360A publication Critical patent/CN116484360A/zh
Application granted granted Critical
Publication of CN116484360B publication Critical patent/CN116484360B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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
    • 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)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及网络安全领域,特别是涉及一种基于RASP的注入方法、装置、介质及设备。包括建立与目标进程号唯一对应的第一预设目录;将目标应用程序的RASP资源包解压到第一预设目录中;通过语言交互接口调用目标应用程序对应的java虚拟机中的jattach方法。由于jattach允许在JVM运行时加载和运行加载完成的Java类。基于该特性,本发明可以将目标应用程序对应的RASP资源包,作为一个要加载的Java类,通过调用jattach方法及时的将对应的RASP资源包加载到正在运行的目标应用程序中,并启动运行该RASP资源包,以及时对目标应用程序进行防护。

Description

一种基于RASP的注入方法、装置、介质及设备
技术领域
本发明涉及网络安全领域,特别是涉及一种基于RASP的注入方法、装置、介质及设备。
背景技术
RASP(Runtime Application Self Protection,运行时应用程序自我保护)是一种应用程序安全技术,用于抑制对应用程序的任何运行时的攻击。旨在通过检查任何隐藏的漏洞并提供对整个应用程序结构的实时可视性来对抗应用程序层内的任何运行时攻击。它与应用程序集成,并不断拦截对应用程序的任何调用并检查其安全性。它不用于保护整个网络或用于端点保护,其重点是保护单个应用程序。
现有技术中,对于RASP的部署方案是如下:
下载RASP相关的资源,并解压到被保护主机中。 然后找到主机中需要被保护的应用程序的启动目录。并通过修改环境变量或修改启动脚本的方式,增加应用程序启动时的JVM参数,并使该参数指向RASP中的jar包,由此,可以在应用重新启动之后来加载RASP,以对应用程序提供对应的防护。
但是现有技术中的防护方法需要重新启动应用程序之后,RASP对应的防护能力才能够生效。由此,不能够在RASP安装后更加及时的对应用程序形成保护。
发明内容
针对上述不能够在RASP安装后更加及时的对应用程序形成保护的技术问题,本发明采用的技术方案为:
根据本发明的第一个方面,提供了一种基于RASP的注入方法,该方法包括如下步骤:
建立与目标进程号唯一对应的第一预设目录;第一预设目录内所有文件均具有可读、可写及可执行权限;目标进程号为目标应用程序运行时对应的进程号;目标应用程序为JAVA应用程序;
将目标应用程序的RASP资源包解压到第一预设目录中;RASP资源包中包括RASP引擎,RASP引擎具有对目标应用程序进行异常攻击防御的能力;
通过语言交互接口调用目标应用程序对应的java虚拟机中的jattach方法;jattach方法用于启动目标应用程序对应的RASP资源包中的RASP引擎;其中,调用参数包括目标进程号、load instrument命令以及RASP资源包中RASP启动jar包的存放路径。
进一步的,在建立与目标进程号唯一对应的第一预设目录之前,该方法还包括:
根据注入请求指令,确定进行注入保护的对象类型;
若注入保护的对象为容器,则对注入请求指令中指定的目标容器进行注入预处理;
注入预处理包括:
通过容器控制器将RASP总资源包解压到第二预设目录中;第二预设目录位于目标容器内;RASP总资源包包括多个RASP资源包;
遍历第一proc目录,生成目标容器内包括的至少一个目标进程号;第一proc目录为目标容器的proc目录。
进一步的,在将目标应用程序的RASP资源包解压到第一预设目录中之前,该方法还包括:
根据目标应用程序对应的语言类型、JDK类型及JDK版本,从多个RASP资源包中确定目标应用程序对应的RASP资源包。
进一步的,在根据注入请求指令,确定进行注入保护的对象类型之后,方法还包括:
若注入保护的对象为进程,则将注入请求指令中指定进程的进程号确定为目标进程号。
进一步的,遍历第一proc目录,生成目标容器内包括的至少一个目标进程号,包括:
通过容器控制器将注入程序拷贝到第二预设目录中;
调用容器控制器的exec功能,运行注入程序;注入程序用于遍历第一proc目录,生成目标容器内包括的至少一个目标进程号。
进一步的,在通过语言交互接口调用目标应用程序对应的java虚拟机中的jattach方法之后,该方法还包括:
当jattach方法执行成功后,生成实例Id;实例Id与目标应用程序对应的进程号唯一对应。
进一步的,在根据注入请求指令,确定进行注入保护的对象类型之前,该方法还包括:
实时获取新增待注入进程标识;
根据新增待注入进程标识,获取新增待注入进程标识对应的启动类名;
若新增待注入进程标识对应的启动类名属于预设启动类名,则生成新增待注入进程标识对应的注入请求指令。
实时获取新增待注入容器标识;
根据新增待注入容器标识,获取新增待注入容器标识对应的镜像标识;
若新增待注入容器标识对应的镜像标识属于预设镜像标识,则生成新增待注入容器标识对应的注入请求指令。
根据本发明的第二个方面,还提供了一种基于RASP的注入装置,该装置包括:
创建模块,用于建立与目标进程号唯一对应的第一预设目录;第一预设目录内所有文件均具有可读、可写及可执行权限;目标进程号为目标应用程序运行时对应的进程号;目标应用程序为JAVA应用程序;
部署模块,用于将目标应用程序的RASP资源包解压到第一预设目录中;RASP资源包中包括RASP引擎,RASP引擎具有对目标应用程序进行异常攻击防御的能力;
调用模块,用于通过语言交互接口调用目标应用程序对应的java虚拟机中的jattach方法;jattach方法用于启动目标应用程序对应的RASP资源包中的RASP引擎;其中,调用参数包括目标进程号、load instrument命令以及RASP资源包中RASP启动jar包的存放路径。
根据本发明的第三个方面,提供了一种非瞬时性计算机可读存储介质,非瞬时性计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述的一种基于RASP的注入方法。
根据本发明的第四个方面,提供了一种电子设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述的一种基于RASP的注入方法。
本发明至少具有以下有益效果:
本发明会对每一个启动的进程,配置对应的RASP资源包。然后通过语言交互接口调用目标应用程序对应的java虚拟机中的jattach方法,来实现将RASP直接加载到正在运行的进程对应的应用程序,以对正在运行的目标应用程序及时提供防护。
jattach是一个基于Java虚拟机的连接器,它可以将一个Java应用程序连接到一个正在运行的JVM(Java VirtualMachine,Java虚拟机)中,以便在JVM中运行指定的Java类。jattach允许在JVM运行时加载和运行加载完成的Java类,由此无需重新启动JVM即可运行新加载的Java类。基于该特性,本发明可以将目标应用程序对应的RASP资源包,作为一个要加载的Java类,通过调用jattach方法可以及时的将对应的RASP资源包加载到正在运行的目标应用程序中,并启动运行该RASP资源包,以及时对目标应用程序进行防护。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于RASP的注入方法的流程框图。
图2为本发明实施例提供的一种基于RASP的注入装置的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
根据本发明的第一个方面,如图1所示,提供了一种基于RASP的注入方法,该方法包括如下步骤:
S100:建立与目标进程号唯一对应的第一预设目录。第一预设目录内所有文件均具有可读、可写及可执行权限。目标进程号为目标应用程序运行时对应的进程号。目标应用程序为JAVA应用程序。
具体的,当一个应用程序被启动时,***会分配一个新的进程来执行这个应用程序。对应的也会产生一个对应的Pid(Process Identification,进程标识符)。如进程号或进程名称。
一个Pid会创建一个唯一对应的第一预设目录,也即RASP的安装及运行文件夹。该文件夹中会放置目标应用程序对应的RASP资源包,以便后续进行运行使用。且该文件夹会被配置文件夹内所有文件均具有可读、可写及可执行权限。如以Linux***为例,设置文件夹内所有文件权限为0777。以便于RASP的正常运行以及写入相关的安全日志。
S200:将目标应用程序的RASP资源包解压到第一预设目录中。RASP资源包中包括RASP引擎,RASP引擎具有对目标应用程序进行异常攻击防御的能力。
RASP资源包中包含:RASP启动jar包(Java ARchive,一种规定格式的文件压缩包)、RASP引擎jar包(RASP引擎)及RASP配置文件三项。第一预设目录可以为根据实际的使用习惯进行设定。其中,配置文件中包含相关的授权Id(Identity document,身份证标识号)和授权密文,该授权Id和授权密文可以作为本地与管理后台之间的通信凭证,以提高数据的通信安全。
S300:通过语言交互接口调用目标应用程序对应的java虚拟机中的jattach方法。jattach方法用于启动目标应用程序对应的RASP资源包中的RASP引擎。其中,调用参数包括目标进程号、load instrument命令以及RASP资源包中RASP启动jar包的存放路径。
上述S100-S300可以通过Helper程序来实现。具体的,调用参数还包括设定RASP启动jar包的存放路径为绝对路径的Flag为False的指令参数。由此,可以便于后期对RASP启动jar包的存放路径的更改与调整。
调用参数中的目标进程号用于表示要将RASP注入的目标应用程序。RASP启动jar包的存放路径用于按照RASP配置文件将对应的RASP引擎jar包启动,以提供对应的防护服务。
Instrumentation是JVM的一项功能。load instrument是jattach工具包一个方法。用来动态加载java Agent。在本实施例中,load instrument命令用来动态加载RASP启动jar包,以启动RASP防护服务。
jattach是一个基于Java虚拟机的连接器,它可以将一个Java应用程序连接到一个正在运行的JVM(Java Virtual Machine,Java虚拟机)中,以便在JVM中运行指定的Java类。jattach允许在JVM运行时加载和运行加载完成的Java类,由此无需重新启动JVM即可运行新加载的Java类。基于该特征,本发明可以将目标应用程序对应的RASP资源包,作为一个要加载的Java类,通过调用jattach方法可以及时的将对应的RASP资源包加载到正在运行的目标应用程序中,并启动运行该RASP资源包,以及时对目标应用程序进行防护。
进一步的,在S300之后,该方法还包括:
S400:当jattach方法执行成功后,生成实例Id。实例Id与目标应用程序对应的进程号唯一对应。
该实例Id与目标进程号唯一相关。也可以和进程号相同。对应的,生成的实例Id可以发送至管理后台用于展示。同时,管理后端收到对应的实例Id后,可以标记实例成功上线。由此,通过实例Id可以更加快速的确定出,哪一个进程正在被保护。
作为本发明的一种可能的实施例,在建立与目标进程号唯一对应的第一预设目录之前,该方法还包括:
S110:根据注入请求指令,确定进行注入保护的对象类型。
通常在一个操作***,应用程序有可能在本地的操作***运行,也有可能的在操作***中的容器中运行。容器是一种便携式软件单元,可将应用及其所有依赖项合并为一个软件包,该软件包不受底层主机操作***限制。容器部署后,其中的应用可以在容器内进行运行。在本实施例中容器可以看做是一个隔离运行在本地操作***中的一个独立的小的操作***。
S120:若注入保护的对象为容器,则对注入请求指令中指定的目标容器进行注入预处理。
由于,容器内的应用仅在容器内部隔离运行,由此对相关进程进行RASP注入保护,需要在容器内部来完成。由此,需要进行注入预处理,以确定容器中需要进行注入的进程的进程号,并将每一进程对应的RASP资源包放置到容器中与该进程对应的第一预设目录中。
具体的,注入预处理包括:
S121:通过容器控制器将RASP总资源包解压到第二预设目录中。第二预设目录位于目标容器内。RASP总资源包包括多个RASP资源包。
具体为,通过docker_client将RASP总资源包解压到第二预设目录中。
第二预设目录可以为容器内部的临时目录文件夹。不同的RASP资源包可以为不同的应用程序提供防护。由于,容器与本地操作***相互隔离,而独立运行,所以需要将RASP总资源解压到第二预设目录中,否则RASP无法对容器内应用程序提供服务。
进一步的,在S121之前,该方法还包括:
S021:根据目标应用程序对应的语言类型、JDK类型及JDK版本,从RASP总资源包中确定目标应用程序对应的RASP资源包。
根据目标应用程序的语言类型、JDK类型(如:OracleJDK或者OpenJDK)以及JDK版本,来为目标应用程序选择下载最合适的RASP资源包。
由于RASP是通过hook技术将自身的一些防御函数***到用户空间(目标应用程序)内,来进行运行。同时,RASP引擎在运行过程中会依赖多种工具类,不同的工具类的JDK版本存在差异。由此,需要目标应用程序的JDK版本与RASP中依赖的工具类的JDK版本要适配。由此,通过JDK版本信息可以为目标应用程序选择到最佳的RASP资源包,以提高兼容性以及可以提高RASP运行时的安全性及运行性能。
S122:遍历第一proc目录,生成目标容器内包括的至少一个目标进程号。第一proc目录为目标容器的proc目录。
在 Linux***中,proc目录也即/proc目录,是一个位于内存中的伪文件***。该目录下保存的并不是真正的文件和目录,而是一些运行时的信息,如CPU信息、负载信息、***内存信息、磁盘IO信息等。proc目录是内核提供给我们的查询中心,通过查询该目录下的文件内容,可以获取到有关***硬件及当前运行进程的信息。
对应的,当容器内的应用程序进行运行时,其产生的相关信息会存入容器中的proc目录(也即第一proc目录)中。由此,本实步骤可以应用于对Linux***中的容器内的进程信息进行获取场景。
由此,通过上述注入预处理可以将RASP总资源包放置到容器内,另外也可以将容器内正在运行的进程全部确定出来。此时,就相当于将该容器作为一个独立的操作***,对应的若要对容器中的进程进行RASP注入保护,则可以将上述的S100-S300在容器中进行运行,以为容器中的每一个运行的进程提供RASP注入保护。此时,S100中的第一预设目录设置在容器内。
进一步的,在S110之后,该方法还包括:
S130:若注入保护的对象为进程,则将注入请求指令中指定进程的进程号确定为目标进程号。
当然,在本地的操作***中,除部分运行在容器中的应用程序之外,剩余的大部分的应用程序是运行在操作***中。其运行时对应的产生的进程的即为普通进程。
若要对普通进程对应的目标应用程序进行RASP保护注入,可以直接执行S100-S300来实现。此时,S100中的第一预设目录设置在本地操作***内。
作为本发明的一种可能的实施例,S122:遍历第一proc目录,生成目标容器内包括的至少一个目标进程号,包括:
S1221:通过容器控制器(也即docker_client)将注入程序拷贝到第二预设目录中。
S1222:调用容器控制器(也即docker_client)的exec功能,运行注入程序。注入程序用于遍历第一proc目录,生成目标容器内包括的至少一个目标进程号。
本实施例中,可以通过运行注入程序来自动的确定出目标容器内包括的每一正在运行的进程,并获取到其对应的进程号。为后续对目标容器内的进程提供RASP保护注入提供基础。
作为本发明的一种可能的实施例,在S110:根据注入请求指令,确定进行注入保护的对象类型之前,该方法还包括:
S111:实时获取新增待注入进程标识。
S112:根据新增待注入进程标识,获取新增待注入进程标识对应的启动类名;
S113:若新增待注入进程标识对应的启动类名属于预设启动类名,则生成新增待注入进程标识对应的注入请求指令。
上述S111及S112为用来对新增的普通进行实时监控。在实际使用过程中,即使是同一个应用程序在重启之后,其对应的进程号也会发生改变。同时在一些应用平台中,往往又存在应用程序反复重启的场景。如Kubernetes(也称为 K8s)是一个用于自动部署、扩展和管理容器化应用程序的开源平台。该平台中的应用程序会存在反复重启的情况。而本发明中对于应用程序的RASP保护注入是依据其对应的进程号来开展的。所以,当一个应用程序在重启之后其对应的进程号会发生变化,对应的本发明中的方案会由于进程号的不同,不会再对重启之后的应用程序进行RASP保护注入。进而存在较大的安全隐患。
由于在***运行过程中,同一个应用程序对应的启动类名是不会发生变化的,所以无论应用程序重启多少次其对应的启动类名并不会发生变化。所以可以先将本地操作***中的存在的所有需要进行RASP保护注入的启动类名确定出来,将这些启动类名作为预设启动类名。本实施例中通过对启动类名的比对,可以为具有相同功能的应用程序或者同一个应用程序,提供持续不断的RASP保护注入。
本实施例中以Linux***为例,对本地操作***中存在的启动类名的获取方法包括如下步骤:
S10:通过遍历/proc目录中的条目来获取进程信息。每个进程都对应于一个子目录,且子目录名是进程的Pid。
S20:根据/proc/{pid}/ns读取每一个进程的命名空间;
S30:若进程的命名空间与本地的预设命名空间不同的,则对该进程对应的信息进行跳过。不再从进程对应的信息中,获取该进程对应的启动类名。该启动类名可以为MainClassName的值。
S40:若进程的命名空间与本地的预设命名空间相同,则根据该进程对应的信息获取该进程对应的启动类名。该启动类名可以为MainClassName的值。
由于,容器会具有自己独立的命名空间,该命名空间与本地操作***的预设命名空间不同。而存在于本地操作***中的普通进程的命名空间会与预设命名空间相同。基于,该特征可以排除操作***中容器的影响,以保证获取到的信息均为普通进程的信息。
另外,由于需要在管理后台中对每一个进程进行展示,所以可以获取更多的关于该进程的特征信息,以便于用户可以获取更多的相关信息,进而便于进行管理。
具体的,还可以按照如下方法获取进程更多的相关信息。
S41:通过读取/proc/{pid}/cmdline 获取进程命令行参数,
S42:读取/proc/{pid}/exe获取进程启动程序路径。
若启动程序路径包含java字样,可以确定该应用程序为JAVA应用程序。上述通过S40-S42获取到的信息。可以通过本地与管理后台之间建立的Websocket通信返回给管理后台。
本实施例中以Windows***为例,对本地操作***中存在的启动类名的获取方法包括如下步骤:
S60:通过Windows的相关API函数如:CreateToolhelp32Snapshot获取操作***的进程列表。
S70:将进程列表中进程名包含java或者进程加载的模块名包含java字符串的进程,确定为java进程。
S80:通过进程列表中包括的信息,获取java进程对应的启动类名。
同样的,由于在***运行过程中,同一个容器在重新启动后,会产生一个不同的容器标识与之对应。由此,为了对同一个容器在重启之后,还可以进行持续不断的RASP保护注入。所以需要执行如下步骤。
S114:实时获取新增待注入容器标识。具体的,容器标识可以为容器名称或容器Id。
S115:根据新增待注入容器标识,获取新增待注入容器标识对应的镜像标识;
S116:若新增待注入容器标识对应的镜像标识属于预设镜像标识,则生成新增待注入容器标识对应的注入请求指令。具体的,预设镜像标识可以为预设的镜像名称或镜像Tag。
同一容器在重启之后其对应的容器标识会发生改变,而其对应的镜像名称或镜像Tag会一直保持不变。所以S114至S116使用与S111至S113同样的原理,来实现对同一个容器进行持续不断的RASP保护注入的功能。
具体的,可以按照如下方法获本地操作***中的预设镜像标识。
S50:通过本地Socket与Docker Host建立通信,并读取主机中每一容器的容器信息,进而生成容器列表信息。其中,容器信息包括容器Id、容器名称、镜像名称、镜像Tag、创建时间、对外端口及容器状态等信息。
本实施例中,通过启动类或镜像标识可以实现对同一进程或同一容器的持续追踪与监控。进而可以及时对重启后的应用程序进行RASP保护注入。
根据本发明的第二个方面,如图2所示,还提供了一种基于RASP的注入装置,该装置包括:
创建模块,用于建立与目标进程号唯一对应的第一预设目录。第一预设目录内所有文件均具有可读、可写及可执行权限。目标进程号为目标应用程序运行时对应的进程号。目标应用程序为JAVA应用程序。
部署模块,用于将目标应用程序的RASP资源包解压到第一预设目录中。RASP资源包中包括RASP引擎,RASP引擎具有对目标应用程序进行异常攻击防御的能力。
调用模块,用于通过语言交互接口调用目标应用程序对应的java虚拟机中的jattach方法;jattach方法用于启动目标应用程序对应的RASP资源包中的RASP引擎;其中,调用参数包括目标进程号、load instrument命令以及RASP资源包中RASP启动jar包的存放路径。
根据本发明的第三个方面,提供了一种非瞬时性计算机可读存储介质,非瞬时性计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述的一种基于RASP的注入方法。
根据本发明的第四个方面,提供了一种电子设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述的一种基于RASP的注入方法。
本发明的实施例还提供一种计算机程序产品,其包括程序代码,当程序产品在电子设备上运行时,程序代码用于使该电子设备执行本说明书上述描述的根据本发明各种示例性实施方式的方法中的步骤。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。
在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为***、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“***”。
根据本发明的这种实施方式的电子设备。电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
电子设备以通用计算设备的形式表现。电子设备的组件可以包括但不限于:上述至少一个处理器、上述至少一个储存器、连接不同***组件(包括储存器和处理器)的总线。
其中,储存器存储有程序代码,程序代码可以被处理器执行,使得处理器执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
储存器可以包括易失性储存器形式的可读介质,例如随机存取储存器(RAM)和/或高速缓存储存器,还可以进一步包括只读储存器(ROM)。
储存器还可以包括具有一组(至少一个)程序模块的程序/实用工具,这样的程序模块包括但不限于:操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线可以为表示几类总线结构中的一种或多种,包括储存器总线或者储存器控制器、***总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线。
电子设备也可以与一个或多个外部设备(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备交互的设备通信,和/或与使得该电子设备能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口进行。并且,电子设备还可以通过网络适配器与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器通过总线与电子设备的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (7)

1.一种基于RASP的注入方法,其特征在于,所述方法包括如下步骤:
建立与目标进程号唯一对应的第一预设目录;所述第一预设目录内所有文件均具有可读、可写及可执行权限;所述目标进程号为目标应用程序运行时对应的进程号;所述目标应用程序为JAVA应用程序;
将目标应用程序的RASP资源包解压到所述第一预设目录中;所述RASP资源包中包括RASP引擎,RASP引擎具有对目标应用程序进行异常攻击防御的能力;
通过语言交互接口调用目标应用程序对应的java虚拟机中的jattach方法;jattach方法用于启动目标应用程序对应的RASP资源包中的RASP引擎;其中,调用参数包括目标进程号、load instrument命令以及RASP资源包中RASP启动jar包的存放路径;
在建立与所述目标进程号唯一对应的第一预设目录之前,所述基于RASP的注入方法还包括:
根据注入请求指令,确定进行注入保护的对象类型;
若所述注入保护的对象类型为容器,则对所述注入请求指令中指定的目标容器进行注入预处理;
所述注入预处理包括:
通过容器控制器将RASP总资源包解压到第二预设目录中;所述第二预设目录位于所述目标容器内;所述RASP总资源包包括多个RASP资源包;每一所述RASP资源包对应一种应用程序;
遍历第一proc目录,生成所述目标容器内包括的至少一个目标进程号;所述第一proc目录为所述目标容器的proc目录;
遍历第一proc目录,生成所述目标容器内包括的至少一个目标进程号,包括:
通过容器控制器将注入程序拷贝到第二预设目录中;
调用容器控制器的exec功能,运行所述注入程序;所述注入程序用于遍历第一proc目录,生成所述目标容器内包括的至少一个目标进程号;
在根据注入请求指令,确定进行注入保护的对象类型之后,所述基于RASP的注入方法还包括:
若所述注入保护的对象类型为进程,则将所述注入请求指令中指定进程的进程号确定为目标进程号。
2.根据权利要求1所述的基于RASP的注入方法,其特征在于,在将目标应用程序的RASP资源包解压到所述第一预设目录中之前,所述基于RASP的注入方法还包括:
根据目标应用程序对应的语言类型、JDK类型及JDK版本,从多个RASP资源包中确定所述目标应用程序对应的RASP资源包。
3.根据权利要求1所述的基于RASP的注入方法,其特征在于,在通过语言交互接口调用目标应用程序对应的java虚拟机中的jattach方法之后,所述基于RASP的注入方法还包括:
当jattach方法执行成功后,生成实例Id;所述实例Id与目标应用程序对应的进程号唯一对应。
4.根据权利要求1所述的基于RASP的注入方法,其特征在于,在根据注入请求指令,确定进行注入保护的对象类型之前,所述基于RASP的注入方法还包括:
实时获取新增待注入进程标识;
根据所述新增待注入进程标识,获取新增待注入进程标识对应的启动类名;
若所述新增待注入进程标识对应的启动类名属于预设启动类名,则生成所述新增待注入进程标识对应的注入请求指令;
实时获取新增待注入容器标识;
根据所述新增待注入容器标识,获取新增待注入容器标识对应的镜像标识;
若所述新增待注入容器标识对应的镜像标识属于预设镜像标识,则生成所述新增待注入容器标识对应的注入请求指令。
5.一种基于RASP的注入装置,其特征在于,包括:
创建模块,用于建立与目标进程号唯一对应的第一预设目录;所述第一预设目录内所有文件均具有可读、可写及可执行权限;所述目标进程号为目标应用程序运行时对应的进程号;所述目标应用程序为JAVA应用程序;
部署模块,用于将目标应用程序的RASP资源包解压到所述第一预设目录中;所述RASP资源包中包括RASP引擎,RASP引擎具有对目标应用程序进行异常攻击防御的能力;
调用模块,用于通过语言交互接口调用目标应用程序对应的java虚拟机中的jattach方法;jattach方法用于启动目标应用程序对应的RASP资源包中的RASP引擎;其中,调用参数包括目标进程号、load instrument命令以及RASP资源包中RASP启动jar包的存放路径;
创建模块,还用于在建立与所述目标进程号唯一对应的第一预设目录之前,根据注入请求指令,确定进行注入保护的对象类型;
创建模块,还用于若所述注入保护的对象类型为容器,则对所述注入请求指令中指定的目标容器进行注入预处理;
所述注入预处理包括:
通过容器控制器将RASP总资源包解压到第二预设目录中;所述第二预设目录位于所述目标容器内;所述RASP总资源包包括多个RASP资源包;每一所述RASP资源包对应一种应用程序;
遍历第一proc目录,生成所述目标容器内包括的至少一个目标进程号;所述第一proc目录为所述目标容器的proc目录;
遍历第一proc目录,生成所述目标容器内包括的至少一个目标进程号,包括:
通过容器控制器将注入程序拷贝到第二预设目录中;
调用容器控制器的exec功能,运行所述注入程序;所述注入程序用于遍历第一proc目录,生成所述目标容器内包括的至少一个目标进程号;
创建模块,还用于若所述注入保护的对象类型为进程,则将所述注入请求指令中指定进程的进程号确定为目标进程号。
6.一种非瞬时性计算机可读存储介质,所述非瞬时性计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述的一种基于RASP的注入方法。
7.一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至4任一项所述的一种基于RASP的注入方法。
CN202310745721.4A 2023-06-25 2023-06-25 一种基于rasp的注入方法、装置、介质及设备 Active CN116484360B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310745721.4A CN116484360B (zh) 2023-06-25 2023-06-25 一种基于rasp的注入方法、装置、介质及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310745721.4A CN116484360B (zh) 2023-06-25 2023-06-25 一种基于rasp的注入方法、装置、介质及设备

Publications (2)

Publication Number Publication Date
CN116484360A CN116484360A (zh) 2023-07-25
CN116484360B true CN116484360B (zh) 2023-09-08

Family

ID=87214149

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310745721.4A Active CN116484360B (zh) 2023-06-25 2023-06-25 一种基于rasp的注入方法、装置、介质及设备

Country Status (1)

Country Link
CN (1) CN116484360B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111931166A (zh) * 2020-09-24 2020-11-13 中国人民解放军国防科技大学 基于代码注入和行为分析的应用程序防攻击方法和***
CN114371859A (zh) * 2021-12-28 2022-04-19 安天科技集团股份有限公司 应用软件rasp程序更新方法、服务器、电子设备及存储介质
CN115525902A (zh) * 2022-10-09 2022-12-27 广州云迪科技有限公司 一种资源包源代码的保护方法及装置
CN115618344A (zh) * 2022-08-29 2023-01-17 浙江华云信息科技有限公司 一种基于RASP的拦截java内存马注入的防护技术
CN115809118A (zh) * 2022-12-21 2023-03-17 北京奇艺世纪科技有限公司 一种java进程动态防护方法、装置、设备及介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10713028B2 (en) * 2018-06-05 2020-07-14 Microsoft Technology Licensing, Llc On-demand installer for resource packages

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111931166A (zh) * 2020-09-24 2020-11-13 中国人民解放军国防科技大学 基于代码注入和行为分析的应用程序防攻击方法和***
CN114371859A (zh) * 2021-12-28 2022-04-19 安天科技集团股份有限公司 应用软件rasp程序更新方法、服务器、电子设备及存储介质
CN115618344A (zh) * 2022-08-29 2023-01-17 浙江华云信息科技有限公司 一种基于RASP的拦截java内存马注入的防护技术
CN115525902A (zh) * 2022-10-09 2022-12-27 广州云迪科技有限公司 一种资源包源代码的保护方法及装置
CN115809118A (zh) * 2022-12-21 2023-03-17 北京奇艺世纪科技有限公司 一种java进程动态防护方法、装置、设备及介质

Also Published As

Publication number Publication date
CN116484360A (zh) 2023-07-25

Similar Documents

Publication Publication Date Title
US20240048631A1 (en) Demand resources
RU2421785C2 (ru) Автоматизированное управление драйверами устройств
US20070289019A1 (en) Methodology, system and computer readable medium for detecting and managing malware threats
KR101150091B1 (ko) 효과적 패칭
US20150332043A1 (en) Application analysis system for electronic devices
US9880824B2 (en) On demand resources
CN104008340B (zh) 病毒查杀方法及装置
US20050091192A1 (en) Dynamically identifying dependent files of an application program or an operating system
US8701104B2 (en) System and method for user agent code patch management
EP4100829A1 (en) Firmware update patch
US11126417B2 (en) System and method for application plug-in distribution
KR20060045811A (ko) 효과적 패칭
KR20050009198A (ko) 취약한 파일의 자동 검출 및 패치
JP2005327239A (ja) セキュリティ関連プログラミング・インターフェース
MXPA05003944A (es) Parchado eficiente.
US20100070971A1 (en) Method for enabling the installation of software applications on locked-down computers
JP2008524686A (ja) コンピュータ装置においてアプリケーションを保守する方法
CN111052117B (zh) 在没有多元化创作的情况下安全地定义操作***组成
CN111078367A (zh) 一种请求处理方法、装置、电子设备和存储介质
JP2013196310A (ja) アプリケーション解析装置、アプリケーション解析システム、およびプログラム
CN116484360B (zh) 一种基于rasp的注入方法、装置、介质及设备
US11928214B2 (en) Enabling SPI firmware updates at runtime
CN107667343B (zh) 用于加载按需加载资源的***和方法
CN112464225A (zh) 一种请求处理方法、请求处理装置及计算机可读存储介质
US20210240364A1 (en) Storing new settings for write-protected systems on non-write-protected storage

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