一种容器环境下的安全检测方法及系统技术方案

技术编号:37423101 阅读:13 留言:0更新日期:2023-04-30 09:45
本申请提供一种容器环境下的安全检测方法及系统,在新进程启动时,监测到新启动进程,识别这个新启动进程所属的目标容器,在目标容器下,对新启动进程进行反弹shell监测,从而实现了容器环境下的反弹shell检测,在获取反弹shell检测结果的同时,也能够获取到新启动进程所属的目标容器。程所属的目标容器。程所属的目标容器。

【技术实现步骤摘要】
一种容器环境下的安全检测方法及系统


[0001]本申请涉及容器
,具体而言,涉及一种容器环境下的安全检测方法及系统。

技术介绍

[0002]攻击者指定服务端,受害者主机主动连接攻击者的服务端程序,就叫反弹连接。反弹shell是一种反弹连接,所谓反弹shell(reverse shell),就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。反弹shell,本质上是网络概念的客户端与服务端的角色反转。反弹shell通过命令执行/网络通信接口调用的方式产生双向连接,完成主控端对受控端的控制,即主控端可以发起对受控端的攻击操作。
[0003]目前,容器化程度越来越高,例如基于云原生架构的服务集群内部署几万甚至几十万个容器,而这些容器容易遭受外部攻击出现安全风险,但是,现有技术的反弹shell检测还不适用在容器环境下。

技术实现思路

[0004]本申请实施例的目的在于提供一种容器环境下的安全检测方法及系统,用以解决现有技术的反弹shell检测还不适用在容器环境的问题。
[0005]本申请实施例提供的一种容器环境下的安全检测方法,包括:
[0006]监测容器环境下的进程,获取新启动进程;
[0007]识别新启动进程所属的目标容器;
[0008]将目标容器的新启动进程进行反弹shell检测,得到反弹shell检测结果。
[0009]上述技术方案中,在新进程启动时,监测到新启动进程,识别这个新启动进程所属的目标容器,在目标容器下,对新启动进程进行反弹shell监测,从而实现了容器环境下的反弹shell检测,在获取反弹shell检测结果的同时,也能够获取到新启动进程所属的目标容器。
[0010]在一些可选的实施方式中,得到反弹shell检测结果之后,方法还包括:
[0011]将反弹shell检测结果通过安全日志上报。
[0012]上述技术方案中,在得到反弹shell检测结果之后,将反弹shell检测结果传输给安全日志上报模块,使反弹shell检测结果能够通过安全日志上报。
[0013]在一些可选的实施方式中,识别新启动进程所属的目标容器之前,方法还包括:
[0014]维护容器与PID命名空间之间的关系。
[0015]在一些可选的实施方式中,维护容器与PID命名空间之间的关系,包括:
[0016]监听容器事件,在容器启动时,获取容器内的一个历史进程;
[0017]获取历史进程的PID命名空间;
[0018]缓存容器与历史进程的PID命名空间的对应关系。
[0019]上述技术方案中,监听容器事件,在容器启动时,通过docker top命令获取容器内
的一个历史进程,再通过readlink命令获取历史进程的PID命名空间,最后缓存容器与历史进程的PID命名空间的对应关系,即“容器

PID命名空间”。
[0020]Linux通过命名空间管理进程PID,对于同一进程,在不同的命名空间中,看到的PID号不同。每个PID命名空间有一套自己的PID管理方法,所以在不同的命名空间中调用getpid(),看到的PID号是不同的。
[0021]其中,PID namespace可以嵌套,就是有父子关系;父namespace可以看到其所有后代namespace的进程信息;子namespace看不到父namespace或兄弟namespace的进程信息;目前PID namespace最多可以嵌套32层,在内核中使用MAXPIDNSLEVEL来定义。
[0022]在linux系统中查看进程所属PID namespace,以及根据进程PID namespace判断其所属容器:容器的实现原理之一是使用linux的namespace做资源隔离,每个容器属内所有进程属于同一个命名空间;使用Cgroup做资源限制,限制容器内的cpu,内存等资源使用。理解了namespace原理并了解如何查看进程所在命名空间,就可以在主机上监控所有进程,并根据其命名空间识别出其所属容器了,从而实现主机进程安全检测技术到容器进程安全检测技术的移植。
[0023]在一些可选的实施方式中,识别新启动进程所属的目标容器,包括:
[0024]根据容器与PID命名空间之间的关系,利用新启动进程的PID命名空间,查询新启动进程所属的目标容器。
[0025]在一些可选的实施方式中,将目标容器的新启动进程进行反弹shell检测,得到反弹shell检测结果,包括:
[0026]若新启动进程用于打开交互式终端,且打开网络连接,且打开网络地址,则新启动进程为反弹shell进程。
[0027]上述技术方案中,反弹shell进程包括了打开交互式终端、打开网络连接以及打开网络地址的程序,因此,可以通过分析新启动进程是否用于打开交互式终端,且打开网络连接,且打开网络地址,来判断新启动进程是否为反弹shell进程。
[0028]具体地,可以通过使用lsof命令检测反弹shell、或是基于proc文件系统分析反弹shell的方式,来判断新启动进程是否为反弹shell进程。
[0029]这里的lsof(list open files)命令可以列出当前系统已经打开的所有文件。在Linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议(TCP)和用户数据报协议(UDP)套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表,这对系统监测以及排错是很有帮助的。
[0030]使用lsof命令检测反弹shell的方式,包括:监控新启动进程;判断新启动进程是否打开交互式终端;判断新启动进程是否打开网络连接的文件描述符,以及查看网络地址。
[0031]proc文件系统是一个虚拟文件系统,通过它可以使用一种新的方法在Linux内核空间和用户间之间进行通信。在proc文件系统中,可以将对虚拟文件的读写作为与内核中实体进行通信的一种手段,但是与普通文件不同的是,这些虚拟文件的内容都是动态创建的。
[0032]基于proc文件系统分析反弹shell的方式,包括:查看新启动进程的命令行信息;查看新启动进程打开的文件句柄,例如“socket(套接字)”字段;查看进程打开的网络地址,例如使用“socket(套接字)”字段的信息进行网络地址的查询。
[0033]本申请实施例提供的一种容器环境下的安全检测系统,该安全检测系统包括:
[0034]进程监控模块,用于监测容器环境下的进程,获取新启动进程;
[0035]容器识别模块,用于识别新启动进程所属的目标容器;
[0036]反弹she本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种容器环境下的安全检测方法,其特征在于,包括:监测容器环境下的进程,获取新启动进程;识别所述新启动进程所属的目标容器;将所述目标容器的所述新启动进程进行反弹shell检测,得到反弹shell检测结果。2.如权利要求1所述的方法,其特征在于,所述得到反弹shell检测结果之后,所述方法还包括:将所述反弹shell检测结果通过安全日志上报。3.如权利要求1所述的方法,其特征在于,所述识别所述新启动进程所属的目标容器之前,所述方法还包括:维护容器与PID命名空间之间的关系。4.如权利要求2所述的方法,其特征在于,所述维护容器与PID命名空间之间的关系,包括:监听容器事件,在容器启动时,获取容器内的一个历史进程;获取所述历史进程的PID命名空间;缓存所述容器与所述历史进程的PID命名空间的对应关系。5.如权利要求3所述的方法,其特征在于,所述识别所述新启动进程所属的目标容器,包括:根据容器与PID命名空间之间的关系,利用所述新启动进程的PID命名空间,查询所述新启动进程所属的所述目标容器...

【专利技术属性】
技术研发人员:梁李辉
申请(专利权)人:北京天融信科技有限公司北京天融信软件有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1