CN115774874A - 反弹shell进程的检测方法、装置、计算机设备及存储介质 - Google Patents

反弹shell进程的检测方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN115774874A
CN115774874A CN202211358490.3A CN202211358490A CN115774874A CN 115774874 A CN115774874 A CN 115774874A CN 202211358490 A CN202211358490 A CN 202211358490A CN 115774874 A CN115774874 A CN 115774874A
Authority
CN
China
Prior art keywords
connection
shell
network connection
data
target
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
CN202211358490.3A
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.)
Sangfor Technologies Co Ltd
Original Assignee
Sangfor Technologies 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 Sangfor Technologies Co Ltd filed Critical Sangfor Technologies Co Ltd
Priority to CN202211358490.3A priority Critical patent/CN115774874A/zh
Publication of CN115774874A publication Critical patent/CN115774874A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请公开了一种反弹shell进程的检测方法、装置、计算机设备及存储介质,该方法通过获取目标shell进程的索引节点和进程标识符;若当前的网络连接表中存在与索引节点以及进程标识符匹配的连接数据,则获取目标shell进程对应的IP地址以及端口;若当前的连接进程表中存在与IP地址以及端口匹配的进程数据,则确定目标shell进程为反弹shell进程。该方法通过在当前的网络连接表中存在与shell进程对应的连接数据的情况下,从连接进程表查找是否存在相应的进程数据,并且当前的网络连接表中仅包括当前时间段内所有请求建立网络连接的进程分别对应的连接数据,因此相比直接从连接进程表查找shell进程的进程数据,能够降低计算机资源的消耗,实现对反弹shell进程的轻量级探测效果。

Description

反弹shell进程的检测方法、装置、计算机设备及存储介质
技术领域
本申请涉及网络安全技术领域,更具体地,涉及一种反弹shell进程的检测方法、装置、计算机设备及存储介质。
背景技术
随着互联网应用的普及,网络安全越来越被重视。在Linux系统中,黑客利用漏洞入侵主机,通过反弹shell进程来控制被入侵主机是一种十分常见的手段,因此反弹shell进程的检测是网络安全中的一个比较重要的部分。通常情况下,根据shell进程的标准输入文件和标准输出文件是否被重定向至一个相同的socket文件,判断其是否属于反弹shell进程,该方法具有一定的准确性,但检索数据量较大,资源消耗较多。
发明内容
鉴于上述问题,本申请提出了一种反弹shell进程的检测方法、装置、计算机设备及存储介质,以实现提升反弹shell进程的检测效率,降低检测过程中的性能损耗。
第一方面,本申请实施例提供了一种反弹shell进程的检测方法,所述方法包括:获取目标shell进程的索引节点和进程标识符;若当前的网络连接表中存在与所述索引节点以及所述进程标识符匹配的连接数据,则从所述连接数据中获取所述目标shell进程对应的互联网协议IP地址以及端口,所述网络连接表中包括当前时间段内所有请求建立网络连接的进程分别对应的连接数据;若当前的连接进程表中存在与所述IP地址以及端口匹配的进程数据,则确定所述目标shell进程为反弹shell进程,所述连接进程表中包括当前所有与外部设备建立有网络连接的进程中每个进程对应的进程数据。
第二方面,本申请实施例提供了一种反弹shell进程的检测装置,所述装置包括:进程获取模块、第一匹配模块以及第二匹配模块,其中,所述进程获取模块用于获取目标shell进程的索引节点和进程标识符;所述第一匹配模块用于若当前的网络连接表中存在与所述索引节点以及所述进程标识符匹配的连接数据,则从所述连接数据中获取所述目标shell进程对应的互联网协议IP地址以及端口,所述网络连接表中包括当前时间段内所有请求建立网络连接的进程分别对应的连接数据;所述第二匹配模块用于若当前的连接进程表中存在与所述IP地址以及端口匹配的进程数据,则确定所述目标shell进程为反弹shell进程,所述连接进程表中包括当前所有与外部设备建立有网络连接的进程中每个进程对应的进程数据。
第三方面,本申请实施例提供了一种计算机设备,包括:一个或多个处理器;存储器;一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行上述第一方面提供的反弹shell进程的检测方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有程序代码,所述程序代码可被处理器调用执行上述第一方面提供的反弹shell进程的检测方法。
本申请提供的方案,通过获取目标shell进程的索引节点和进程标识符;若当前的网络连接表中存在与所述索引节点以及所述进程标识符匹配的连接数据,则从所述连接数据中获取所述目标shell进程对应的互联网协议IP地址以及端口;若当前的连接进程表中存在与所述IP地址以及端口匹配的进程数据,则确定所述目标shell进程为反弹shell进程,所述连接进程表中包括当前所有与外部设备建立有网络连接的进程中每个进程对应的进程数据。该方法通过在当前的网络连接表中存在与shell进程对应的连接数据的情况下,才从连接进程表查找是否存在相应的进程数据,并且当前的网络连接表中仅包括当前时间段内所有请求建立网络连接的进程分别对应的连接数据,因此相比直接从连接进程表查找shell进程的进程数据,能够降低计算机资源的消耗,实现对反弹shell进程的轻量级探测效果。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例提供的shell进程的结构示意图。
图2示出了本申请实施例提供的反弹shell进程的结构示意图。
图3示出了本申请一个实施例提供的反弹shell进程的检测方法的流程示意图。
图4示出了本申请另一个实施例提供的反弹shell进程的检测方法的流程示意图。
图5示出了本申请另一个实施例提供的反弹shell进程的检测方法中步骤S220的具体流程示意图。
图6示出了本申请另一个实施例提供的反弹shell进程的检测方法中步骤S250的具体流程示意图。
图7示出了本申请另一个实施例提供的反弹shell进程的检测方法的另一种流程示意图。
图8示出了本申请实施例提供的反弹shell进程的检测装置的结构框图。
图9示出了本申请实施例提供的计算机设备的结构框图。
图10示出了本申请实施例提供的计算机可读存储介质的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
在Linux系统中,Shell进程提供了用户与Linux内核之间即时交互的端口,在正常的攻击方式中,通常是攻击者攻击一台目标机器,在目标机器上打开一个端口,然后连接该目标机器,这种连接方式被称为正向连接。但多数情况下,被控端位于防火墙后,只能发送请求,不能接收请求,也就是攻击者的连接请求无法穿过防火墙。
因此出现了反弹shell或者反向shell,也就是利用远程命令执行漏洞的控制端监听某个端口,被控端主动发起连接请求到该端口,并将其命令行的输入、输出转到控制端的一种攻击方式。反弹shell主要表现为本地主机主动连接远端的攻击者,这样远端的攻击者会获得本地主机的执行环境,拥有所有权限,可以任意执行命令。反弹shell的本质是客户端和服务端角色反转,通过利用代码漏洞,使目标服务器主动发出连接请求,从而绕过防火墙的入站访问控制规则,在目标服务器上可以通过执行许多不同的内置命令或脚本来建立反弹shell连接。
为避免入侵主机对被入侵主机的控制,提高网络安全,需要对被入侵主机上的shell进程进行检测,判断其是否属于反弹shell进程。通常情况下,我们只需要根据shell进程的进程标识符追溯管道上游的进程,并判断进程的文件描述符,检查是否来自于一个socket文件。具体来说,/proc/net/tcp中会记录当前所有tcp进程的socket连接。对于一个shell进程的文件描述符,如果可以在/proc/net/tcp中找到对应的项,则表明该shell进程是一个反弹shell进程。
但在服务器场景中,/proc/net/tcp中的项数通常非常大。在查询反弹shell进程时,/proc/net/tcp中往往包含大量的冗余数据,这些冗余数据在确认反弹shell进程的过程中是不需要被关注的。也就是说,直接在/proc/net/tcp中查询反弹shell进程,计算机的性能损耗会比较大。
针对上述问题,发明人提出了本申请实施例提供的反弹shell进程的检测方法、装置、计算机设备以及存储介质,通过将目标shell进程分别依次在网络连接表以及连接进程表中进行匹配,减少了进程在连接进程表中的匹配次数,且降低了对进程匹配过程的性能损耗。其中,具体的反弹shell进程的检测方法在后续的实施例中进行详细的说明。
首先,对本申请所涉及的技术术语做介绍和说明。
Shell进程是用户按照shell规定的编程语法写的shell程序的一次运行过程。在Linux操作系统中所有的资源,例如键盘、显示器、硬盘驱动器、数据等等都是以文件的形式呈现。Shell进程会涉及多个文件,如在运行过程中从文件中读取数据,向文件输出运行结果等。Shell进程在运行过程中会打开多个文件,操作系统为shell进程涉及到的每个文件都分配一个文件描述符。如图1所示,对于一个正常shell进程而言,其标准输入是指向键盘,标准输入文件的文件描述符是0(键盘),其标准输出是指向显示器,标准输出文件的文件描述符是1(显示器)。
反弹shell进程就是利用该标准输入、标准输出的重定向功能,实现入侵主机对被入侵主机的远程控制的。如图2所示,反弹shell进程将一个shell命令的标准输入、标准输出重定向至一个与socket或pipe关联的文件上,这样入侵主机的输入就会成为该shell进程的输入、该shell进程的输出也会直接传递给远端的入侵者。
其次,结合附图对本申请实施例的技术场景进行说明。
请再次参阅图2,反弹shell进程工作的基本原理是:入侵主机在被入侵主机上创建一个网络套接字(socket),并将该socket与多个文件描述符向关联,再通过所关联的不同文件描述符将默认的键盘输入、显示器输出重定向至其他的位置。通常情况下,检测Linux系统的shell进程是否是反弹shell进程,也就是检测shell进程中的标准输入文件以及标准输出文件等对应的文件描述符,判断shell进程是否被重定向至同一个socket,也就是判断shell进程是否存在网络连接,若是,则可以确认该进程为反弹shell进程。
具体涉及的检测系统包括至少一个主机和运维管理设备,其中,每个主机包括检测程序,用于执行反弹shell进程的检测方法。若检测发现是反弹shell进程,则将包含反弹shell进程相关信息的检测结果上报给运维管理设备。运维管理设备接收到该上报的检测结果可以对主机进行相应的维护和告警。其中,运维管理设备可以时服务器、防火墙、网关设备等,检测程序可以运行于通用的计算机硬件平台上,或者通过存储器储存检测程序。
请参阅图3,图3示出了本申请一个实施例提供的反弹shell进程的检测方法的流程示意图,下面将针对图3所示流程进行详细阐述,具体可以包括以下步骤:
步骤S110:获取目标shell进程的索引节点和进程标识符。
在本申请实施例中,计算机设备可以通过进程采集插件获取目标shell进程的索引节点和进程标识符,判断目标shell进程是否属于反弹shell进程。其中,目标shell进程可以是创建时长超过第一预设时长的进程,也就是说,计算机设备并不会在进程采集插件采集到一个shell进程创建后,立刻检测其是否属于反弹shell进程。可以理解地,计算机设备是通过检测shell进程是否建立网络连接,来判断其是否属于反弹shell进程,并且,shell进程建立网络连接需要花费时间,因此计算机设备可以在目标shell进程创建的第一预设时长后,再通过目标shell进程的索引节点和进程标识符,判断其是否属于反弹shell进程。其中若目标shell进程为反弹shell进程,那么该进程会在创建后的第一预设时长内与外部设备建立网络连接。在第一预设时长后,计算机设备就可以基于目标shell进程对应的索引节点以及进程标识符,对目标shell进程进行判断,如此可以提高判断的准确性。
其中,第一预设时长可以根据所有进程建立网络连接的整体时长以及计算机设备的性能参数等综合确定。具体来说,第一预设时长可以处于10秒至15秒的范围内。在一些实施方式中,第一预设时长可以为12秒,该第一预设时长可以设置为大于计算机设备中至少95%以上的进程对应的网络连接时长,也就是自进程创建至进程实现网络连接的时长。
进一步地,目标shell进程的索引节点是指目标shell进程中标准输入输出文件分别对应的索引节点。可以理解地,文件的索引节点中包含了与该文件相关的元信息,比如文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等等,每个文件都与唯一一个索引节点对应,索引节点永远指向文件的具体存储位置,也就是说,计算机设备可以通过索引节点(而不是文件名)来定位一个文件。文件名可以随意更改,但索引节点对文件是唯一的,并且随文件的存在而存在。因此,计算机设备获取目标shell进程的索引节点,也就是获取了目标shell进程对应的标准输入输出文件对应的元信息,进而可以通过网络连接表以及连接进程表,判断出目标shell进程是否建立了网络连接,即目标shell进程是否为反弹shell进程。
相应地,计算机设备还可以获取目标shell进程的进程标识符。每个进程对应有唯一的进程标识符,系统内核通过标识符来识别不同的进程。进程标识符是进程运行时系统随机分配的,在进程运行时,其对应的进程标识符不会变化,进程终止后,进程标识符被系统回收,可以被分配至新运行的进程。计算机设备可以基于进程标识符以及索引节点唯一确定目标shell进程及其对应的标准输入输出文件。
步骤S120:若当前的网络连接表中存在与所述索引节点以及所述进程标识符匹配的连接数据,则从所述连接数据中获取所述目标shell进程对应的互联网协议IP地址以及端口,所述网络连接表中包括当前时间段内所有请求建立网络连接的进程分别对应的连接数据。
在本申请实施例中,当前时间段指的是当前时刻之前的第二预设时长。若一个shell进程请求建立网络连接,那么该shell进程对应的连接数据以及请求建立网络连接的时刻,将会被存储至网络连接表中,计算机设备可以基于请求建立网络连接的时刻对网络连接表进行更新,以确保网络连接表中所有连接数据对应的请求建立网络连接的时刻均处于当前时间段内。其中连接数据包括shell进程对应的进程标识符、shell进程中标准输入输出文件对应的索引节点、请求网络连接的IP地址以及端口等数据。若网络连接表中存在与目标shell进程的文件描述符以及索引节点相匹配的连接数据,则表明目标shell进程在创建后,有请求建立网络连接的动作,也就是目标shell进程有较大的概率为反弹shell进程,当然目标shell进程也可以建立网络连接失败。因此,计算机设备还需通过后续步骤对目标shell进程是否为反弹shell进程进行进一步的验证。
可以理解的是,为确保网络连接表中的数据是有效且精简的,计算机设备可以设置一个第二预设时长,若连接数据在网络连接表中的存在时长已经超过第二预设时长,那么计算机设备可以认为已经对连接数据对应的进程做出了准确的判断,由此将连接数据从网络连接表中删除,以实现对网络连接表中连接数据的精简。在一些实施方式中,第二预设时长可以被设置为50秒至70秒的范围内。也就是说,网络连接表中的所有连接数据分别对应的进程,均是在当前时刻之前第二预设时长内请求建立网络连接的进程。
在一些实施方式中,计算机设备可以通过网络采集插件得到网络连接表。可以理解地,Linux系统提供了一种kprobe调试技术,利用kprobe技术,计算机设备可以在内核中的绝大多数函数里动态插入探测点,以便于跟踪内核中各个函数执行状态。具体来说,计算机设备可以通过反弹shell组件在Linux系统内核中注册sys-connect函数,该函数能够检测所有连接函数调用情况,也就是将所有调用连接函数的进程对应的进程标识符、文件描述符、目标IP以及端口等信息返回给网络采集插件,网络采集插件可以将每个进程对应的进程标识符、文件描述符、目标IP以及端口等信息作为一项连接数据存入网络连接表中,用以对目标shell进程进行筛选判断。
步骤S130:若当前的连接进程表中存在与所述IP地址以及端口匹配的进程数据,则确定所述目标shell进程为反弹shell进程,所述连接进程表中包括当前所有与外部设备建立有网络连接的进程中每个进程对应的进程数据。
在本申请实施例中,若计算机设备在网络连接表中查找到了与目标shell进程的进程标识符和索引节点相匹配的连接数据,那么表明目标shell进程在创建后有请求建立网络连接的动作,也就是说目标shell进程有较大的概率为反弹shell进程。因此,计算机设备可以通过网络连接表得到目标shell进程对应的IP地址以及端口等信息,也就是目标shell进程请求建立网络连接的目标设备的IP地址以及请求在计算机设备中建立网络连接的端口信息,进而基于IP地址以及端口在进程连接表中进行匹配。其中,进程连接表中的每一项进程数据都对应一个与外部设备建立有网络连接的进程。若目标shell进程在进程连接表中查找到了相匹配的进程数据,那么计算机设备可以确认目标shell进程为反弹shell进程。
本申请实施例提供的反弹shell进程的检测方法,通过获取目标shell进程的索引节点和进程标识符;若当前的网络连接表中存在与索引节点以及进程标识符匹配的连接数据,则从连接数据中获取目标shell进程对应的互联网协议IP地址以及端口,其中网络连接表中包括当前时间段内所有请求建立网络连接的进程分别对应的连接数据;若当前的连接进程表中存在与IP地址以及端口匹配的进程数据,则确定目标shell进程为反弹shell进程,其中连接进程表中包括当前所有与外部设备建立有网络连接的进程中每个进程对应的进程数据。该方法通过在当前的网络连接表中存在与shell进程对应的连接数据的情况下,才从连接进程表查找是否存在相应的进程数据,并且当前的网络连接表中仅包括当前时间段内所有请求建立网络连接的进程分别对应的连接数据,因此相比直接从连接进程表查找shell进程的进程数据,能够降低计算机资源的消耗,实现对反弹shell进程的轻量级探测效果。
请参阅图4,图4示出了本申请另一个实施例提供的反弹shell进程的检测方法的流程示意图。在本实施例中,所述网络连接表包括每个连接数据对应的时间戳,所述时间戳用于表征请求建立网络连接的时刻,下面将针对图4所示流程进行详细阐述,具体可以包括以下步骤:
步骤S210:基于注册的探针函数,接收连接函数被进程调用时返回的目标数组,所述连接函数用于与外部设备建立网络连接,所述目标数组包括调用连接函数的进程对应的文件描述符、地址数据以及进程标识符。
在本申请实施例中,计算机设备可以通过反弹shell组件在内核中注册sys-connect函数,以在进程调用连接函数时得到进程对应的目标数组,用以基于目标数组得到网络连接表。其中,sys-connect函数能够在连接函数被调用时,返回调用连接函数的进程对应的目标数组,由此计算机设备可以基于接收到的各个目标数组,得到网络连接表中。具体来说,目标数组中的文件描述符是指调用连接函数的进程中标准输入输出文件分别对应的文件描述符;地址数据可以用于表征网络连接中的目标设备,进程标识符可以用于唯一标识进程数据。
步骤S220:基于所述目标数组,得到所述连接数组。
在本申请实施例中,网络连接表中并不会将由文件描述符、地址数据以及进程标识符等数据直接构成的目标数组存入网络连接表中,而是会将目标数组进行处理,将处理后得到的新的数组作为一项连接数据存入网络连接表中。这是由于目标数组虽然能够在进程创建的时刻唯一标识进程,但计算机设备并不是在进程创建后立刻判断其是否属于反弹shell进程,而是会等待第一预设时长,为进程的网络连接预留一段时间后,再基于进程的索引节点和进程标识符进行判断,那么,在不同的时刻可能会存在相同的目标数组却指向不同的进程的情况,并且,网络连接表中对应的连接数据会保持第二预设时长,而第二预设时长显然大于第一预设时长。因此,若将目标数组作为网络连接表中的表项,可能存在不同时刻的两个进程具有相同的进程标识符,而网络连接表中的表项并随着时间及时更新。
具体来说,假如网络连接表中以目标数组作为表项,那么在网络连接表中一个目标数组存在的第二预设时长内,也就是原进程请求网络连接后,假如原进程被计算机设备确认为反弹shell进程,并被强制终止,并且原进程对应的进程标识符再次被分配至一个新的进程,但网络连接表中进程标识符对应的目标数组还未被删除,并且仍然指向原进程对应的标准输入输出文件,那么在计算机设备通过网络连接表对新的进程的进程标识符以及文件描述符进行查找时,就会对新的进程产生误判。
因此,计算机设备可以对目标数组进行处理,得到能够在系统中唯一标识进程数据的连接数组,用以根据请求网络连接的各个进程分别对应的连接数组,得到网络连接表。
在一些实施方式中,如图5所示,步骤S220中基于目标数组,得到连接数组的方式可以包括以下步骤:
步骤S221:基于所述文件描述符以及进程标识符,得到调用连接函数的进程对应的索引节点。
在本申请实施例中,计算机设备在得到目标数组后,可以将当前时刻能够唯一标识进程数据的目标数组,转换为能够在系统中唯一标识进程数据的连接数组。也就是说,连接数组对应的进程,即使该进程已经终止,但在其调用连接函数后的第二预设时长内,连接数组仍然唯一指向该进程对应的标准输入输出文件,即使该进程的进程标识符可能被分配至别的进程。由此,可以避免计算机设备对不同时刻具有相同的进程标识符的不同进程之间的误判。
具体来说,计算机设备可以在得到进程对应的文件描述符以及进程标识符后,确定该进程的标准输入输出文件分别对应的索引节点。由上述分析可知,索引节点能够指向文件在存储系统中的具体存储位置,并且对文件是唯一的,随文件的存在而存在的。即使进程被终止,其对应的进程标识符被分配给别的进程,该进程的文件对应的索引节点仍然不会改变。
步骤S222:基于所述地址数据,得到调用连接函数的进程对应的IP地址以及端口。
在本申请实施例中,计算机设备还可以解析目标数组中的地址数据,得到调用连接函数的进程对应的目的IP地址以及端口等数据,并将目的IP地址和端口与调用连接函数的进程对应的索引节点相关联,作为网络连接表中连接数据的一部分。由此,能够使计算机设备在查找到调用连接函数的进程对应的连接数据后,直接从网络连接表中获取该进程对应的目的IP地址以及端口,用以基于目的IP地址以及端口在连接数据表中进行查找。
步骤S230:将所述连接数组及其对应的时间戳存入所述网络连接表中,所述时间戳用于表征所述请求建立网络连接的时刻。
在本申请实施例中,根据前述分析可知,在筛查反弹shell进程的过程中,为减少在进程连接表中的查找次数,计算机设备可以在进程连接表中查找目标shell进程对应的进程数据之前,先在网络连接表中查找目标shell进程对应的连接数据,通过数据量较少的网络连接表进行查找,能够剔除大部分目标shell进程,以减少在连接进程表中进行查找的次数,降低对计算机资源的消耗。因此,计算机设备在通过网络采集插件生成网络连接表时,可以将所有请求与外部设备建立网络连接的shell进程对应的连接数组,与shell进程调用连接函数的时刻相关联,并将一个连接数组及其对应的时间戳作为网络连接表中的一项连接数据。用以基于时间戳对网络连接表中的连接数据进行更新,及时删除网络连接表中的冗余数据,由此能够实现在确保对反弹shell筛选准确的情况下,降低对计算机资源的消耗。
步骤S240:基于所述每个连接数据对应的时间戳,从所述网络连接表中删除未处于所述当前时间段内的连接数据。
在本申请实施例中,为减少对目标shell进程进行判断的过程中的检索数据量,降低对计算机资源的消耗,计算机设备可以在将目标shell进程在进程连接表中进行匹配之前,先将目标shell进程在网络连接表中进行初次匹配,若初次匹配中能够查找到对应的连接数据,那么表明目标shell进程具有较大的概率是反弹shell进程,由此再将目标shell进程在进程连接表中进行第二次匹配,能够在准确判断出反弹shell进程的基础上减少在进程连接表中的查找次数。可以理解地,之所以先对目标shell进程进行初次匹配,是由于第二次匹配的连接进程表中具有大量的冗余数据,在进程连接表中匹配一次对计算机设备资源的消耗较大。所以计算机设备可以通过数据量较小的网络连接表,先对目标shell进程进行筛选,再使剩余可疑的目标shell进程通过连接进程表进行匹配。
由此,计算机设备可以通过为网络连接表中的每个连接数据设置一个对应的时间戳,并基于时间戳删除网络连接表中未处于当前时间段内的连接数据,以减少网络连接表中的数据量。其中,每项连接数据对应的时间戳用于表征该连接数据对应的进程请求建立网络连接的时刻,在一些实施方式中,计算机设备可以将时间戳的时刻设置为进程调用连接函数的时刻。在一些实施方式中,计算设备可以将“当前时间段内”设置为在当前时刻之前的第二预设时长内,也就是计算机设备会在进程调用连接函数的第二预设时长后,从网络连接表中删除该进程对应的连接数据。
可以理解地,计算机设备会在一个shell进程创建后等待第一预设时长,以使进程具有充足的时间请求进行网络连接,其后再通过该进程对应的索引节点以及进程标识符,判断其是否属于反弹shell进程。在一些实施方式中,计算机设备在进程创建后等待的第一预设时长可以为10秒至15秒之间的任意值。例如,目标shell进程创建后,若该进程为反弹shell进程,那么在第一预设时长内,目标shell进程必然会调用连接函数,进而进程对应的连接数据以及连接函数被调用的时刻会一并被存入网络连接表中,在第一预设时长后,计算机设备会通过目标shell进程的索引节点以及进程标识符,在网络连接表中进行查询。显然此时在网络连接表中,目标shell进程对应的连接数据仍然在当前时间段内,因此,计算机设备可以在网络连接表中找到与目标shell进程匹配的连接数据。
值得注意的是,步骤S240与步骤S210至步骤S230之间并不具有先后顺承的关系,步骤S240中,各个进程调用连接函数的时刻并不固定,因此基于时间戳对网络连接表进行更新的时间也并不固定,这取决于网络连接表中的各个进程调用连接函数的时刻。该时刻并不被限制于在步骤S210的动作之前或之后。
步骤S250:在通过进程采集插件检测到创建的目标shell进程的情况下,获取目标shell进程的索引节点和进程标识符。
在本申请实施例中,计算机设备可以通过网络采集插件在shell进程请求建立网络连接时,将shell进程对应的连接数据存储在网络连接表中。通常情况下,shell进程请求进行网络连接,是在进程创建后的第一预设时长内进行的。因此,计算机设可以通过进程采集插件,在任意目标shell进程创建的第一预设时长后,获取目标shell进程的进程标识符以及进程中标准输入标准输出文件对应的索引节点。用以基于索引节点以及进程标识符,通过网络连接表以及连接进程表,判断目标shell进程是否属于反弹shell进程。
具体来说,目标shell进程创建后,若进程需求与外部设备进行网络连接,那么该进程会在第一预设时长内调用连接函数,进而被网络采集插件获取到对应的连接数据,并将连接数据存入网络连接表中。在第一预设时长后,计算机设备可以通过获取目标shell进程的索引节点以及进程标识符,判断其是否属于反弹shell进程。此时由于网络连接表中存有目标shell进程对应的连接数据,因此,计算机设备可以在网络连接表中获取目标shell进程对应的IP地址和端口,进而在连接进程表中进行匹配,若连接进程表中也具有与目标shell进程匹配的进程数据,那么计算机设备可以确认目标shell进程为反弹shell进程。
相反,若目标shell进程不需求建立网络连接,那么预设时长内该进程也不会调用连接函数,其对应的连接数据也就不会被存入网络连接表中,那么计算机设备在第一预设时长后不能在网络连接表shell进程对应的连接数据,进而可以确认目标shell进程不是反弹shell进程。
在一些实施方式中,如图6所示,获取目标shell进程的索引节点以及进程标识符的方式,可以通过以下步骤:
步骤S251:获取所述目标shell进程的文件描述符以及所述进程标识符。
在本申请实施例中,计算机设备并不会直接获取的目标shell进程的索引节点,而是通过进程采集插件得到目标shell进程的标准输入文件以及标准输出文件分别对应的文件描述符,以及目标shell进程对应的进程标识符,用以基于文件描述符和进程标识符,进一步获取目标shell进程标准输入文件以及标准输出文件的索引节点。具体来说,每一个进程的标准输出文件对应的文件描述符默认为0,标准输出文件对应的文件描述符默认为1。
步骤S252:基于所述文件描述符得到所述目标shell进程的索引节点。
在本申请实施例中,由于进程标识符是操作系统内核用于唯一标识进程的数值,因此计算机设备在获取目标shell进程的进程标识符后,可以在此基础上,根据标准输入文件以及标准输出文件默认的文件描述符,得到目标shell进程中标准输入标准输出文件分别对应的索引节点。该索引节点可以在系统内核中唯一标识文件,即使在不同的时刻,进程标识符可能指向不同的进程,索引节点指向的文件存储位置依然不变。
步骤S260:若当前的网络连接表中存在与所述索引节点以及所述进程标识符匹配的连接数据,则从所述连接数据中获取所述目标shell进程对应的互联网协议IP地址以及端口。
步骤S270:若当前的连接进程表中存在与所述IP地址以及端口匹配的进程数据,则确定所述目标shell进程为反弹shell进程。
在本申请实施例中,步骤S260以及步骤S270可以参阅其他实施例的内容,在此不再赘述。
步骤S280:将所述目标shell进程对应的反弹shell日志上报至用户平台,所述用户平台用于对所述反弹shell日志进行分析并输出告警信息。
在本申请实施例中,当计算机设备发现一个反弹shell进程,可以向用户平台提供反弹shell进程的相关信息,包括攻击者的IP地址、攻击端口以及shell进程的名字等信息;还可以根据反弹shell进程信息,向建立对外网络连接的进程发送终止信号并将远端攻击者的IP加入黑名单,从而及时阻断反弹shell,增强主机对反弹shell攻击的安全防护能力,降低主机系统的安全风险。
在本申请实施例中,如图7所示,计算机设备可以通过进程采集插件及时获取新创建的各个shell进程,并将shell进程放入轮询队列中,等待查询,一旦计算机设备通过网络连接表以及连接进程表,确定目标shell进程为反弹shell进程,则可以将包含反弹shell进程相关信息的反弹shell日志发送至用户平台,用户平台可以对反弹shell日志进行分析,得到反弹shell进程的IP地址、攻击端口等信息,并输出告警信息提示用户处理。
本申请实施例提供的反弹shell检测方法,在进程请求建立网络连接时,将调用连接函数的进程对应的连接数据存储至网络连接表中,并基于网络连接表中各项连接数据对应的时间戳,对网络连接表进行更新,由此在判断目标shell进程是否为反弹shell进程时,先在网络连接表中查找,若网络连接表中具有目标shell进程对应的连接数据,则进一步在连接进程表中查找。通过在当前的网络连接表中存在与shell进程对应的连接数据的情况下,从连接进程表查找是否存在相应的进程数据,并且当前的网络连接表中仅包括当前时间段内所有请求建立网络连接的进程分别对应的连接数据,因此相比直接从连接进程表查找shell进程的进程数据,能够降低计算机资源的消耗,实现对反弹shell进程的轻量级探测效果。
请参阅图8,其示出了本申请实施例提供的一种反弹shell进程的检测装置300的结构框图,反弹shell进程的检测装置300包括:进程获取模块310、第一匹配模块320以及第二匹配模块330。其中,进程获取模块310用于获取目标shell进程的索引节点和进程标识符;第一匹配模块320用于若当前的网络连接表中存在与索引节点以及进程标识符匹配的连接数据,则从连接数据中获取目标shell进程对应的互联网协议IP地址以及端口,网络连接表中包括当前时间段内所有请求建立网络连接的进程分别对应的连接数据;第二匹配模块330用于若当前的连接进程表中存在与IP地址以及端口匹配的进程数据,则确定目标shell进程为反弹shell进程,连接进程表中包括当前所有与外部设备建立有网络连接的进程中每个进程对应的进程数据。
作为一种可能的实施方式,网络连接表包括每个连接数据对应的时间戳,时间戳用于表征请求建立网络连接的时刻。反弹shell进程的检测装置300还包括第一更新模块。其中,第一更新模块用于基于每个连接数据对应的时间戳,从网络连接表中删除未处于当前时间段内的连接数据。
作为一种可能的实施方式,反弹shell进程的检测装置300还包括数组接收模块、数据转换模块以及匹配更新模块。其中,数据接收模块用于基于注册的探针函数,接收连接函数被进程调用时返回的目标数组,连接函数用于与外部设备建立网络连接,目标数组包括调用连接函数的进程对应的文件描述符、地址数据以及进程标识符;数据转换模块用于基于目标数组,得到连接数据;匹配更新模块用于将连接数据及其对应的时间戳存入网络连接表中,时间戳用于表征连接函数被调用的时刻。
作为一种可能的实施方式,数据转换模块还用于基于文件描述符,得到调用连接函数的进程对应的索引节点;基于地址数据,得到调用连接函数的进程对应的IP地址以及端口。
作为一种可能的实施方式,进程获取模块310还用于获取目标shell进程的文件描述符以及进程标识符;基于文件描述符得到目标shell进程的索引节点。
作为一种可能的实施方式,反弹shell进程的检测装置300还包括信息上报模块,用于将目标shell进程对应的反弹shell日志上报至数据库,数据库用于对反弹shell日志进行分析并输出告警信息。
作为一种可能的实施方式,进程获取模块310还用于在通过进程采集插件检测到创建的目标shell进程的情况下,获取目标shell进程的索引节点和进程标识符。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,模块相互之间的耦合可以是电性,机械或其它形式的耦合。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
综上所述,本申请提供的反弹shell进程的检测方法中,通过获取目标shell进程的索引节点和进程标识符;若当前的网络连接表中存在与所述索引节点以及所述进程标识符匹配的连接数据,则从所述连接数据中获取所述目标shell进程对应的互联网协议IP地址以及端口;若当前的连接进程表中存在与所述IP地址以及端口匹配的进程数据,则确定所述目标shell进程为反弹shell进程,所述连接进程表中包括当前所有与外部设备建立有网络连接的进程中每个进程对应的进程数据。该方法通过将目标shell进程分别依次在网络连接表以及连接进程表中进行匹配,减少了进程在连接进程表中的匹配次数,且降低了对进程匹配过程的性能损耗。
请参考图9,其示出了本申请实施例提供的一种计算机设备100的结构框图。本申请中的计算机设备100可以包括一个或多个如下部件:处理器110、存储器120、以及一个或多个应用程序,其中一个或多个应用程序可以被存储在存储器120中并被配置为由一个或多个处理器110执行,一个或多个程序配置用于执行如前述方法实施例所描述的方法。
处理器110可以包括一个或者多个处理核。处理器110利用各种接口和线路连接整个计算机设备内的各个部分,通过运行或执行存储在存储器120内的指令、程序、代码集或指令集,以及调用存储在存储器120内的数据,执行计算机设备的各种功能和处理数据。可选地,处理器110可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器110可集成中央处理器(CentralProcessing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器110中,单独通过一块通信芯片进行实现。
存储器120可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器120可用于存储指令、程序、代码、代码集或指令集。存储器120可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储计算机设备在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
请参考图10,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读存储介质800中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质800可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质800包括非易失性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质800具有执行上述方法中的任何方法步骤的程序代码810的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码810可以例如以适当形式进行压缩。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (10)

1.反弹shell进程的检测方法,其特征在于,所述方法包括:
获取目标shell进程的索引节点和进程标识符;
若当前的网络连接表中存在与所述索引节点以及所述进程标识符匹配的连接数据,则从所述连接数据中获取所述目标shell进程对应的互联网协议IP地址以及端口,所述网络连接表中包括当前时间段内所有请求建立网络连接的进程分别对应的连接数据;
若当前的连接进程表中存在与所述IP地址以及端口匹配的进程数据,则确定所述目标shell进程为反弹shell进程,所述连接进程表中包括当前所有与外部设备建立有网络连接的进程中每个进程对应的进程数据。
2.根据权利要求1所述的方法,其特征在于,所述网络连接表包括每个连接数据对应的时间戳,所述时间戳用于表征请求建立网络连接的时刻,所述方法还包括:
基于所述每个连接数据对应的时间戳,从所述网络连接表中删除未处于所述当前时间段内的连接数据。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于注册的探针函数,接收连接函数被进程调用时返回的目标数组,所述连接函数用于与外部设备建立网络连接,所述目标数组包括调用连接函数的进程对应的文件描述符、地址数据以及进程标识符;
基于所述目标数组,得到所述连接数组;
将所述连接数组及其对应的时间戳存入所述网络连接表中,所述时间戳用于表征所述请求建立网络连接的时刻。
4.根据权利要求3所述的方法,其特征在于,所述基于所述目标数组,得到所述连接数据包括:
基于所述文件描述符以及所述进程标识符,得到调用连接函数的进程对应的索引节点;
基于所述地址数据,得到调用连接函数的进程对应的IP地址以及端口。
5.根据权利要求1所述的方法,其特征在于,所述获取目标shell进程的索引节点和进程标识符,包括:
获取所述目标shell进程的文件描述符以及所述进程标识符;
基于所述文件描述符得到所述目标shell进程的索引节点。
6.根据权利要求1-5任一项所述的方法,其特征在于,在所述若当前的连接进程表中存在与所述IP地址以及端口匹配的进程数据,则确定所述目标shell进程为反弹shell进程之后,所述方法还包括:
将所述目标shell进程对应的反弹shell日志上报至用户平台,所述用户平台用于对所述反弹shell日志进行分析并输出告警信息。
7.根据权利要求1-5任一项所述的方法,其特征在于,所述获取目标shell进程的索引节点和进程标识符,包括:
在通过进程采集插件检测到创建的目标shell进程的情况下,获取目标shell进程的索引节点和进程标识符。
8.一种反弹shell进程的检测装置,其特征在于,所述装置包括:进程获取模块、第一匹配模块以及第二匹配模块,其中,
所述进程获取模块用于获取目标shell进程的索引节点和进程标识符;
所述第一匹配模块用于若当前的网络连接表中存在与所述索引节点以及所述进程标识符匹配的连接数据,则从所述连接数据中获取所述目标shell进程对应的互联网协议IP地址以及端口,所述网络连接表中包括当前时间段内所有请求建立网络连接的进程分别对应的连接数据;
所述第二匹配模块用于若当前的连接进程表中存在与所述IP地址以及端口匹配的进程数据,则确定所述目标shell进程为反弹shell进程,所述连接进程表中包括当前所有与外部设备建立有网络连接的进程中每个进程对应的进程数据。
9.一种计算机设备,其特征在于,所述计算机设备包括:
一个或多个处理器;
存储器;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有程序代码,所述程序代码可被处理器调用执行如权利要求1-7任一项所述的方法。
CN202211358490.3A 2022-11-01 2022-11-01 反弹shell进程的检测方法、装置、计算机设备及存储介质 Pending CN115774874A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211358490.3A CN115774874A (zh) 2022-11-01 2022-11-01 反弹shell进程的检测方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211358490.3A CN115774874A (zh) 2022-11-01 2022-11-01 反弹shell进程的检测方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN115774874A true CN115774874A (zh) 2023-03-10

Family

ID=85388662

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211358490.3A Pending CN115774874A (zh) 2022-11-01 2022-11-01 反弹shell进程的检测方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN115774874A (zh)

Similar Documents

Publication Publication Date Title
CN108763031B (zh) 一种基于日志的威胁情报检测方法及装置
CN107294982B (zh) 网页后门检测方法、装置及计算机可读存储介质
CN108664793B (zh) 一种检测漏洞的方法和装置
CN108429721B (zh) 一种网络爬虫的识别方法及装置
CN109768992B (zh) 网页恶意扫描处理方法及装置、终端设备、可读存储介质
CN113489713B (zh) 网络攻击的检测方法、装置、设备及存储介质
KR102271545B1 (ko) 도메인 생성 알고리즘(dga) 멀웨어 탐지를 위한 시스템 및 방법들
CN110765464B (zh) 漏洞检测方法、装置、设备及计算机存储介质
CN110602270B (zh) 域名解析方法、装置、计算机设备及存储介质
CN111651757A (zh) 攻击行为的监测方法、装置、设备及存储介质
WO2021189257A1 (zh) 恶意进程的检测方法、装置、电子设备及存储介质
CN107171894A (zh) 终端设备、分布式云端检测系统以及样本检测的方法
US11568053B2 (en) Automated malware monitoring and data extraction
CN113301012A (zh) 一种网络威胁的检测方法、装置、电子设备及存储介质
CN104683330A (zh) 反域名劫持方法和装置
CN113761527B (zh) 一种反弹shell进程检测方法、装置、设备及存储介质
CN115314255B (zh) 攻击结果的检测方法、装置、计算机设备和存储介质
CN111740868A (zh) 告警数据的处理方法和装置及存储介质
CN113923008B (zh) 一种恶意网站拦截方法、装置、设备及存储介质
CN111371783B (zh) 一种sql注入攻击检测方法、装置、设备和存储介质
CN113206850A (zh) 恶意样本的报文信息获取方法、装置、设备及存储介质
CN113779437A (zh) 隐私检测方法及装置、计算机可存储介质
CN116996262A (zh) 低资源高仿真漏洞蜜罐方法及系统
CN115774874A (zh) 反弹shell进程的检测方法、装置、计算机设备及存储介质
CN114301872B (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