CN116775147B - 一种可执行文件处理方法、装置、设备及存储介质 - Google Patents
一种可执行文件处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN116775147B CN116775147B CN202310677889.6A CN202310677889A CN116775147B CN 116775147 B CN116775147 B CN 116775147B CN 202310677889 A CN202310677889 A CN 202310677889A CN 116775147 B CN116775147 B CN 116775147B
- Authority
- CN
- China
- Prior art keywords
- target
- executable file
- sub
- shellcode
- execution
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 20
- 238000000034 method Methods 0.000 claims abstract description 251
- 230000008569 process Effects 0.000 claims abstract description 167
- 230000006870 function Effects 0.000 claims description 52
- 230000035515 penetration Effects 0.000 claims description 10
- 238000012360 testing method Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 9
- 238000002347 injection Methods 0.000 claims description 4
- 239000007924 injection Substances 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44557—Code layout in executable memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44568—Immediately runnable code
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)
Abstract
本公开提供了一种可执行文件处理方法、装置、设备及存储介质,所述方法包括:首先,接收可执行文件执行请求,其中,可执行文件执行请求用于请求在目标进程中执行目标可执行文件,将目标壳代码shellcode注入到目标进程中,然后基于目标shellcode为目标进程创建子进程,以及利用子进程执行目标可执行文件。可见,本公开实施例中,通过将目标shellcode注入到目标进程的方式,在执行目标shellcode的过程中,将目标可执行文件隐藏在目标进程的子进程中执行,提升了可执行文件在执行过程中的隐蔽性。
Description
技术领域
本公开涉及数据处理领域,尤其涉及一种可执行文件处理方法、装置、设备及存储介质。
背景技术
渗透测试是一种评估计算机系统、网络或应用程序安全性的方法旨在模拟攻击者的行为,评估计算机系统、网络或应用程序的安全性。
在渗透测试场景中,在Linux主机上执行可执行文件时,通常会留下进程记录,导致可执行文件在执行过程中不够隐蔽。因此,如何提升可执行文件在执行过程中的隐蔽性,成为亟需解决的一个技术问题。
发明内容
为了解决上述技术问题,本公开实施例提供了一种可执行文件处理方法。
第一方面,本公开提供了一种可执行文件处理方法,所述方法包括:
接收可执行文件执行请求;其中,所述可执行文件执行请求用于请求在目标进程中执行目标可执行文件;
将目标壳代码shellcode注入到所述目标进程中;
基于所述目标shellcode为所述目标进程创建子进程,以及利用所述子进程执行所述目标可执行文件。
一种可选的实施方式中,所述将目标壳代码shellcode注入到所述目标进程之前,且在所述接收可执行文件执行请求之后,还包括:
记录所述目标进程的执行进度信息;
相应地,所述方法还包括:
在接收到针对所述目标shellcode的执行结束信号时,基于所述执行进度信息恢复执行所述目标进程。
一种可选的实施方式中,所述基于所述目标shellcode为所述目标进程创建子进程,以及利用所述子进程执行所述目标可执行文件,包括:
调用所述目标shellcode中的预设加载单元,为所述目标进程创建子进程,以及利用所述子进程执行所述目标可执行文件。
一种可选的实施方式中,所述基于所述目标shellcode为所述目标进程创建子进程,以及利用所述子进程执行所述目标可执行文件,包括:
调用所述目标shellcode中的预设函数标识对应的目标函数,并利用所述目标函数调用目标加载器;
利用所述目标加载器为所述目标进程创建子进程,以及利用所述子进程执行所述目标可执行文件。
一种可选的实施方式中,所述预设函数标识包括预设函数地址,所述预设函数地址为基于所述目标进程的内存映射确定。
一种可选的实施方式中,所述目标可执行文件为可执行可链接文件格式ELF文件。
一种可选的实施方式中,所述可执行文件处理方法应用于渗透测试场景中。
第二方面,本公开提供了一种可执行文件处理装置,所述装置包括:
接收模块,用于接收可执行文件执行请求;其中,所述可执行文件执行请求用于请求在目标进程中执行目标可执行文件;
注入模块,用于将目标壳代码shellcode注入到所述目标进程中;
创建模块,用于基于所述目标shellcode为所述目标进程创建子进程,以及利用所述子进程执行所述目标可执行文件。
第三方面,本公开提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备实现上述的方法。
第四方面,本公开提供了一种可执行文件处理设备,包括:存储器,处理器,及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现上述的方法。
第五方面,本公开提供了一种计算机程序产品,所述计算机程序产品包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现上述的方法。
本公开实施例提供的技术方案与现有技术相比至少具有如下优点:
本公开实施例提供了一种可执行文件处理方法,首先,接收可执行文件执行请求,其中,可执行文件执行请求用于请求在目标进程中执行目标可执行文件,将目标壳代码shellcode注入到目标进程中,然后基于目标shellcode为目标进程创建子进程,以及利用子进程执行目标可执行文件。可见,本公开实施例中,通过将目标shellcode注入到目标进程的方式,在执行目标shellcode的过程中,将目标可执行文件隐藏在目标进程的子进程中执行,提升了可执行文件在执行过程中的隐蔽性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的一种可执行文件处理方法的流程图;
图2为本公开实施例提供的另一种可执行文件处理的示意图;
图3为本公开实施例提供的一种可执行文件处理装置的结构示意图;
图4为本公开实施例提供的一种可执行文件处理设备的结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
下面就本公开提到的一些关键术语进行解释:
Linux:全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX(Portable Operating System Interface of UNIX,可移植操作系统接口)的多用户、多任务、支持多线程和多CPU(Central Processing Uni,中央处理器)的操作系统。
可执行文件:是一种计算机文件,包含了一组计算机指令,可以被计算机直接执行。通常情况下,可执行文件是由编译器将源代码编译成机器语言后生成的二进制文件,可以在特定的操作系统和硬件平台上运行,可以直接被操作系统解析并执行其中的代码,从而产生进程,对于Linux操作系统而言,可执行文件通常的格式为ELF(Executable andLinkable Format,可执行可链接文件格式),相应的,Linux操作系统中的可执行文件也可称为ELF文件。
Linux操作系统解析执行ELF文件的流程是由系统调用函数execve的系统调用实现,而本公开可以使用目标shellcode中的预设加载单元或目标加载器实现对ELF文件的解析和加载,并执行其代码。在此过程中,无需产生新的进程,从而ELF文件的运行更加隐蔽。
进程:是一个程序(可执行文件)经过操作系统解析加载形成的一个程序运行的状态,代表一个可执行文件正在被执行,其表现形式是拥有一定的内存空间和CPU时间,每一个可执行文件被系统执行时都会产生至少一个进程。
注入:是指通过特殊手段,使正在运行的进程暂停并加载执行额外的代码。
壳代码Shellcode:是指一段可以实现特定功能的汇编指令,用于直接替换当前进程的执行流程。
Glibc:是指Linux平台最常见的C运行库,通常每个Linux进程都会加载该库。
Ptrace(Process trace,进程跟踪):是指Linux系统调用,用于接管并控制一个目标进程,对其进行调试,本公开使用该调用注入shellcode,并最终恢复目标进程的运行。
shellcode的执行结束信号:可以由软件生成,本公开中的中断信号可用于与预设程序通信,以告知shellcode执行结束。
渗透测试:是指使用真实的黑客攻击手段对目标网络进行测试,用以检测目标是否存在可以被利用的安全问题。
在渗透测试过程中,测试人员通常需要在Linux主机上执行可执行文件时,通常有隐蔽性需求。
为了提升可执行文件在执行过程中的隐蔽性,本公开提供了一种可执行文件处理方法、装置、设备及存储介质。
具体地,首先,接收可执行文件执行请求,其中,可执行文件执行请求用于请求在目标进程中执行目标可执行文件,将目标壳代码shellcode注入到目标进程中,然后基于目标shellcode为目标进程创建子进程,以及利用子进程执行目标可执行文件。可见,本公开实施例中,通过将目标shellcode注入到目标进程的方式,在执行目标shellcode的过程中,将目标可执行文件隐藏在目标进程的子进程中执行,提升了可执行文件在执行过程中的隐蔽性。
基于此,本公开实施例提供了一种可执行文件处理方法,参考图1,为本公开实施例提供的一种可执行文件处理方法的流程图,该方法包括:
S101:接收可执行文件执行请求。
其中,可执行文件执行请求用于请求在目标进程中执行目标可执行文件。
一种可选的实施方式中,接收可执行文件执行请求可以为:操作系统接收到的可执行文件执行请求,也可以为应用程序接收到的可执行文件执行请求,以执行一个可执行文件。
具体地,该可执行文件执行请求可以由用户发起,也可以由程序发起,本公开实施例在此不做任何限定,例如用户双击一个可执行文件发起可执行文件执行请求,或者程序通过系统调用来执行一个可执行文件执行请求。
本公开实施例提供的可执行文件处理方法可以应用于渗透测试场景中。
为便于理解,本公开实施例以渗透测试场景为例进行介绍。
一种可选的实施方式中,目标可执行文件可以为可执行可链接文件格式ELF文件。
具体地,目标可执行文件可以为任一ELF文件,本公开实施例对此不做任何限定。
本公开实施例中,可执行文件执行请求可以为针对Linux主机中的目标进程执行目标可执行文件的请求。
S102:将目标壳代码shellcode注入到目标进程中。
其中,目标进程可以为预先设置的任一进程,本公开实施例在此不做任何限定。
本公开实施例中,可以利用Ptrace将目标shellcode注入到目标进程中。
具体地,首先查找目标进程的内存空间,以确定要注入Shellcode的位置,然后在目标进程的内存空间中分配一段可执行的内存,以便将Shellcode注入目标进程的内存空间中。
另外,为了在不影响目标进程的情况下执行目标可执行文件,在将目标shellcode注入到目标进程之前,且在接收可执行文件执行请求之后,一种可选的实施方式中,记录目标进程的执行进度信息,以基于执行进度信息恢复执行目标进程。
具体地,针对记录目标进程的执行进度信息,以基于执行进度信息恢复执行目标进程的具体描述可参考下述实施例,本公开实施例在此不做任何赘述。
S103:基于目标shellcode为目标进程创建子进程,以及利用子进程执行目标可执行文件。
本公开实施例中,基于目标shellcode为目标进程创建子进程,将目标可执行文件隐藏在目标进程的子进程中执行,提升了可执行文件在执行过程中的隐蔽性。
一种可选的实施方式中,调用目标shellcode中的预设加载单元,为目标进程创建子进程,以及利用子进程执行目标可执行文件。
其中,预设加载单元可以为包含在目标shellcode中的具有为目标进程创建子进程,以及利用子进程执行目标可执行文件功能的单元。
本公开实施例中,在将目标shellcode注入到目标进程中之后,开始执行目标shellcode,具体地,利用目标shellcode包括的预设加载单元,创建一个子进程,作为目标进程的子进程,以在该子进程中执行目标可执行文件,以使目标可执行文件可以在独立的进程空间(即子进程)中运行,从而防止目标可执行文件在执行过程中对目标进程的正常运行产生影响。
另一种可选的实施方式中,调用目标shellcode中的预设函数标识对应的目标函数,并利用目标函数调用目标加载器,利用目标加载器为目标进程创建子进程,以及利用子进程执行目标可执行文件。
其中,预设函数标识用于唯一标识一个函数,一种可选的实施方式中,预设函数标识可以为预设函数地址,相应地,预设函数地址为基于目标进程的内存映射确定。
本公开实施例中,假设目标进程加载了Glibc运行库,首先,读取目标进程的内存映射,查找Glibc运行库所在的内存区域,如该内存区域的起始地址、结束地址、偏移量等信息,以计算Glibc运行库中用于调用目标加载器的预设函数地址。
在确定预设函数地址之后,将该预设函数地址填充至目标shellcode中相应的地址值,并设置相应的调用参数(如目标加载器的路径),从而可以基于目标shellcode中的预设函数地址(即预设函数标识),调用目标shellcode中的预设函数地址(即预设函数标识)对应的目标函数,以利用该目标函数调用目标加载器,从而利用目标加载器为目标进程创建子进程,并利用该子进程执行目标可执行文件。
本公开实施例提供的可执行文件处理方法中,首先,接收可执行文件执行请求,其中,可执行文件执行请求用于请求在目标进程中执行目标可执行文件,将目标壳代码shellcode注入到目标进程中,然后基于目标shellcode为目标进程创建子进程,以及利用子进程执行目标可执行文件。可见,本公开实施例中,通过将目标shellcode注入到目标进程的方式,在执行目标shellcode的过程中,将目标可执行文件隐藏在目标进程的子进程中执行,提升了可执行文件在执行过程中的隐蔽性。
基于此,本公开实施例还提供了一种可执行文件处理方法,参考图2,为本公开实施例提供的另一种可执行文件处理的示意图,该方法包括:
S201:接收可执行文件执行请求。
其中,可执行文件执行请求用于请求在目标进程中执行目标可执行文件。
需要说明的是,步骤201与上述步骤101相同,具体参见对步骤101的描述,此处不再详述。
S202:记录目标进程的执行进度信息。
其中,执行进度信息用于恢复执行目标进程。
本公开实施例中,目标进程的执行进度信息可以为目标进程的当前运行状态,具体地,可以通过Ptrace记录目标进程的执行进度信息,并将该执行进度信息保存至预设程序的内存空间中,以便在接收到针对目标shellcode的执行结束信号时,可以基于预设程序的内存空间保存的执行进度信息恢复执行目标进程,即可以在不影响目标进程的情况下执行目标可执行文件。
其中,预设程序可以为下述实施例中的初始程序。
S203:将目标壳代码shellcode注入到目标进程中。
S204:基于目标shellcode为目标进程创建子进程,以及利用子进程执行目标可执行文件。
需要说明的是,步骤203-204与上述步骤102-103相同,具体参见对步骤102-103的描述,此处不再详述。
S205:在接收到针对目标shellcode的执行结束信号时,基于执行进度信息恢复执行目标进程。
其中,目标shellcode的执行结束信号可以为目标shellcode执行结束时触发的中断信号。
示例性地,如果目标shellcode包含十条指令,则目标shellcode在十条指令执行结束时触发的中断信号即为目标shellcode的执行结束信号。
本公开实施例中,预设程序在接收到针对目标shellcode的执行结束信号,利用Ptrace将预设程序中存储的执行进度信息进行恢复,以便目标进程继续按照执行进度信息所指示的运行状态恢复执行。
本公开实施例提供的可执行文件处理方法中,首先,接收可执行文件执行请求,其中,可执行文件执行请求用于请求在目标进程中执行目标可执行文件,记录目标进程的执行进度信息,将目标壳代码shellcode注入到目标进程中,然后基于目标shellcode为目标进程创建子进程,以及利用子进程执行目标可执行文件,在接收到针对目标shellcode的执行结束信号时,基于执行进度信息恢复执行目标进程。可见,本公开实施例中,通过将目标shellcode注入到目标进程的方式,在执行目标shellcode的过程中,将目标可执行文件隐藏在目标进程的子进程中执行,提升了可执行文件在执行过程中的隐蔽性。
另外,通过本公开实施例可以在不影响目标进程的情况下执行目标可执行文件。
在上述实施例的基础上,本公开实施例还提供了一种可执行文件处理方法,具体如下:
假设在Linux主机中拥有普通用户权限,可以读取并执行一个ELF文件。
本公开实施例中,提供一个初始程序(相当于目标shellcode注入器),在初始程序的运行过程中,利用Ptrace将目标shellcode注入到目标进程中,假设目标进程加载了Glibc运行库。
首先,接收可执行文件执行请求,读取目标进程的内存映射,查找Glibc运行库所在的内存区域,如该内存区域的起始地址、结束地址、偏移量等信息,以计算Glibc运行库中用于调用目标加载器的预设函数地址。
在确定预设函数地址之后,将该预设函数地址填充至目标shellcode中相应的地址值,并设置相应的调用参数(如目标加载器的路径)。
利用Ptrace接管目标进程,记录目标进程的执行进度信息(如目标进程的当前运行状态),并保存至初始程序的内存空间中。
将目标shellcode注入到目标进程中,开始执行目标shellcode。
基于目标shellcode中的预设函数地址,调用目标shellcode中的预设函数地址对应的目标函数,以利用该目标函数调用目标加载器。
利用目标函数调用目标加载器,以利用目标加载器为目标进程创建子进程,以及利用子进程执行目标可执行文件,至此,目标可执行文件已正常运行。
目标shellcode的执行结束抛出执行结束信号,被初始程序接收,初始程序将先前保存的目标进程的当前运行状态恢复,使之继续运行。
可见,本公开实施例中,通过将目标shellcode注入到目标进程的方式,在执行目标shellcode的过程中,将目标可执行文件隐藏在目标进程的子进程中执行,提升了可执行文件在执行过程中的隐蔽性。
另外,通过本公开实施例可以在不影响目标进程的情况下执行目标可执行文件。
实际应用中,渗透测试人员试图在一台已获取权限的Linux主机上执行工具程序(即目标可执行文件),但直接执行该工具程序会留下较可疑的进程记录。于是本公开实施例提供了一个初始程序,使得该工具程序可以经由初始程序的目标shellcode和后续加载操作进入一个已存在于该主机上的目标进程中,并以目标进程的子进程的形式正常运行,在此过程中,目标进程没有受到破坏,可以继续运行,需要执行的工具程序也没有经过系统执行而留下任何可疑的进程记录。
基于上述方法实施例,本公开还提供了一种可执行文件处理装置,参考图3,为本公开实施例提供的一种可执行文件处理装置的结构示意图,所述装置包括:
接收模块301,用于接收可执行文件执行请求;其中,所述可执行文件执行请求用于请求在目标进程中执行目标可执行文件;
注入模块302,用于将目标壳代码shellcode注入到所述目标进程中;
创建模块303,用于基于所述目标shellcode为所述目标进程创建子进程,以及利用所述子进程执行所述目标可执行文件。
一种可选的实施方式中,所述装置还包括:
记录模块,用于记录所述目标进程的执行进度信息;
相应地,所述装置还包括:
恢复模块,用于在接收到针对所述目标shellcode的执行结束信号时,基于所述执行进度信息恢复执行所述目标进程。
一种可选的实施方式中,所述创建模块具体用于:
调用所述目标shellcode中的预设加载单元,为所述目标进程创建子进程,以及利用所述子进程执行所述目标可执行文件。
一种可选的实施方式中,所述创建模块303包括:
调用子模块,用于调用所述目标shellcode中的预设函数标识对应的目标函数,并利用所述目标函数调用目标加载器;
创建子模块,用于利用所述目标加载器为所述目标进程创建子进程,以及利用所述子进程执行所述目标可执行文件。
一种可选的实施方式中,所述预设函数标识包括预设函数地址,所述预设函数地址为基于所述目标进程的内存映射确定。
一种可选的实施方式中,所述目标可执行文件为可执行可链接文件格式ELF文件。
一种可选的实施方式中,所述可执行文件处理方法应用于渗透测试场景中。
本公开实施例提供的可执行文件处理装置中,首先,接收可执行文件执行请求,其中,可执行文件执行请求用于请求在目标进程中执行目标可执行文件,将目标壳代码shellcode注入到目标进程中,然后基于目标shellcode为目标进程创建子进程,以及利用子进程执行目标可执行文件。可见,本公开实施例中,通过将目标shellcode注入到目标进程的方式,在执行目标shellcode的过程中,将目标可执行文件隐藏在目标进程的子进程中执行,提升了可执行文件在执行过程中的隐蔽性。
除了上述方法和装置以外,本公开实施例还提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备实现本公开实施例所述的可执行文件处理方法。
本公开实施例还提供了一种计算机程序产品,所述计算机程序产品包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现本公开实施例所述的可执行文件处理方法。
另外,本公开实施例还提供了一种可执行文件处理设备,参见图4所示,可以包括:
处理器401、存储器402、输入装置403和输出装置404。可执行文件处理设备中的处理器401的数量可以一个或多个,图4中以一个处理器为例。在本公开的一些实施例中,处理器401、存储器402、输入装置403和输出装置404可通过总线或其它方式连接,其中,图4中以通过总线连接为例。
存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行可执行文件处理设备的各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。输入装置403可用于接收输入的数字或字符信息,以及产生与可执行文件处理设备的用户设置以及功能控制有关的信号输入。
具体在本实施例中,处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现上述可执行文件处理设备的各种功能。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (8)
1.一种可执行文件处理方法,其特征在于,所述方法包括:
接收可执行文件执行请求;其中,所述可执行文件执行请求用于请求在目标进程中执行目标可执行文件;
将目标壳代码shellcode注入到所述目标进程中;
基于所述目标壳代码shellcode为所述目标进程创建子进程,以及利用所述子进程执行所述目标可执行文件;
所述基于所述目标壳代码shellcode为所述目标进程创建子进程,以及利用所述子进程执行所述目标可执行文件,包括:
调用所述目标壳代码shellcode中的预设函数标识对应的目标函数,并利用所述目标函数调用目标加载器;
利用所述目标加载器为所述目标进程创建子进程,以及利用所述子进程执行所述目标可执行文件。
2.根据权利要求1所述的方法,其特征在于,所述将目标壳代码shellcode注入到所述目标进程之前,且在所述接收可执行文件执行请求之后,还包括:
记录所述目标进程的执行进度信息;
相应地,所述方法还包括:
在接收到针对所述目标壳代码shellcode的执行结束信号时,基于所述执行进度信息恢复执行所述目标进程。
3.根据权利要求1所述的方法,其特征在于,所述预设函数标识包括预设函数地址,所述预设函数地址为基于所述目标进程的内存映射确定。
4.根据权利要求1所述的方法,其特征在于,所述目标可执行文件为可执行可链接文件格式ELF文件。
5.根据权利要求1所述的方法,其特征在于,所述可执行文件处理方法应用于渗透测试场景中。
6.一种可执行文件处理装置,其特征在于,所述装置包括:
接收模块,用于接收可执行文件执行请求;其中,所述可执行文件执行请求用于请求在目标进程中执行目标可执行文件;
注入模块,用于将目标壳代码shellcode注入到所述目标进程中;
创建模块,用于基于所述目标壳代码shellcode为所述目标进程创建子进程,以及利用所述子进程执行所述目标可执行文件;
所述创建模块,包括:
调用子模块,用于调用所述目标壳代码shellcode中的预设函数标识对应的目标函数,并利用所述目标函数调用目标加载器;
创建子模块,用于利用所述目标加载器为所述目标进程创建子进程,以及利用所述子进程执行所述目标可执行文件。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备实现如权利要求1-5任一项所述的方法。
8.一种可执行文件处理设备,其特征在于,包括:存储器,处理器,及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1-5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310677889.6A CN116775147B (zh) | 2023-06-08 | 2023-06-08 | 一种可执行文件处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310677889.6A CN116775147B (zh) | 2023-06-08 | 2023-06-08 | 一种可执行文件处理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116775147A CN116775147A (zh) | 2023-09-19 |
CN116775147B true CN116775147B (zh) | 2024-03-15 |
Family
ID=87992280
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310677889.6A Active CN116775147B (zh) | 2023-06-08 | 2023-06-08 | 一种可执行文件处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116775147B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102468985A (zh) * | 2010-11-01 | 2012-05-23 | 北京神州绿盟信息安全科技股份有限公司 | 针对网络安全设备进行渗透测试的方法和系统 |
CN105512548A (zh) * | 2015-12-02 | 2016-04-20 | 湘潭大学 | 基于隐藏可执行镜像并注入dll保护镜像代码的方法 |
CN107122656A (zh) * | 2017-04-26 | 2017-09-01 | 北京洋浦伟业科技发展有限公司 | 一种通过自调试防止外部调试的方法和装置 |
CN110837644A (zh) * | 2019-10-15 | 2020-02-25 | 深圳开源互联网安全技术有限公司 | 一种系统渗透测试方法、装置及终端设备 |
CN111581645A (zh) * | 2020-04-17 | 2020-08-25 | 北京墨云科技有限公司 | 一种基于ai的自动化渗透测试系统的迭代攻击方法 |
CN114297655A (zh) * | 2021-12-31 | 2022-04-08 | 科来网络技术股份有限公司 | 一种基于Linux系统的进程动态注入方法、装置及存储介质 |
CN115174221A (zh) * | 2022-07-06 | 2022-10-11 | 哈尔滨工业大学(威海) | 一种工控ot网络多目标渗透测试方法及系统 |
CN116015881A (zh) * | 2022-12-27 | 2023-04-25 | 北京天融信网络安全技术有限公司 | 渗透测试方法、装置、设备及存储介质 |
CN116055165A (zh) * | 2023-01-10 | 2023-05-02 | 国家电网有限公司信息通信分公司 | 一种恶意流量数据检测方法及系统 |
-
2023
- 2023-06-08 CN CN202310677889.6A patent/CN116775147B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102468985A (zh) * | 2010-11-01 | 2012-05-23 | 北京神州绿盟信息安全科技股份有限公司 | 针对网络安全设备进行渗透测试的方法和系统 |
CN105512548A (zh) * | 2015-12-02 | 2016-04-20 | 湘潭大学 | 基于隐藏可执行镜像并注入dll保护镜像代码的方法 |
CN107122656A (zh) * | 2017-04-26 | 2017-09-01 | 北京洋浦伟业科技发展有限公司 | 一种通过自调试防止外部调试的方法和装置 |
CN110837644A (zh) * | 2019-10-15 | 2020-02-25 | 深圳开源互联网安全技术有限公司 | 一种系统渗透测试方法、装置及终端设备 |
CN111581645A (zh) * | 2020-04-17 | 2020-08-25 | 北京墨云科技有限公司 | 一种基于ai的自动化渗透测试系统的迭代攻击方法 |
CN114297655A (zh) * | 2021-12-31 | 2022-04-08 | 科来网络技术股份有限公司 | 一种基于Linux系统的进程动态注入方法、装置及存储介质 |
CN115174221A (zh) * | 2022-07-06 | 2022-10-11 | 哈尔滨工业大学(威海) | 一种工控ot网络多目标渗透测试方法及系统 |
CN116015881A (zh) * | 2022-12-27 | 2023-04-25 | 北京天融信网络安全技术有限公司 | 渗透测试方法、装置、设备及存储介质 |
CN116055165A (zh) * | 2023-01-10 | 2023-05-02 | 国家电网有限公司信息通信分公司 | 一种恶意流量数据检测方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116775147A (zh) | 2023-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2704004B1 (en) | Computing device having a dll injection function, and dll injection method | |
CN107330320B (zh) | 应用进程监控的方法和装置 | |
US20070113291A1 (en) | Method for administrating the function access | |
CN111967017A (zh) | 生成依赖关系的方法、装置、终端设备及存储介质 | |
CN104008340A (zh) | 病毒查杀方法及装置 | |
CN109271789B (zh) | 恶意进程检测方法、装置、电子设备及存储介质 | |
CN109388946B (zh) | 恶意进程检测方法、装置、电子设备及存储介质 | |
CN110737892B (zh) | 一种针对apc注入的检测方法和相关装置 | |
CN114417335A (zh) | 一种恶意文件检测方法、装置、电子设备及存储介质 | |
CN113391874A (zh) | 一种虚拟机检测对抗方法、装置、电子设备及存储介质 | |
CN111625225A (zh) | 一种程序指定数据输出方法和装置 | |
CN116502220A (zh) | 一种对抗性Java内存马的检测方法及处理方法 | |
CN115017505A (zh) | 一种pe病毒检测方法、装置、电子设备及存储介质 | |
CN109472135B (zh) | 一种检测进程注入的方法、装置及存储介质 | |
CN113536242A (zh) | 动态库调用方法、装置、终端设备以及存储介质 | |
CN116775147B (zh) | 一种可执行文件处理方法、装置、设备及存储介质 | |
JP4643201B2 (ja) | バッファオーバーフロー脆弱性分析方法、データ処理装置、分析情報提供装置、分析情報抽出処理用プログラムおよび分析情報提供処理用プログラム | |
CN109597662B (zh) | 移动终端中非公开库的调用方法、装置及电子设备 | |
CN113609478A (zh) | 一种ios平台应用程序篡改检测方法及装置 | |
CN112464236A (zh) | 一种恶意程序检测方法、系统及相关装置 | |
CN106897588B (zh) | 一种标签函数的处理方法及装置 | |
CN117112047B (zh) | 一种usb设备的管控方法、设备及存储介质 | |
CN117150487A (zh) | 一种动态链接库文件注入检测方法及装置 | |
CN116010946A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN115185568A (zh) | 一种函数Hook更新方法、装置、电子设备及存储介质 |
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 |