Docker 容器入侵排查

VSole2023-06-15 10:00:29

随着越来越多的应用程序运行在容器里,各种容器安全事件也随之发生,例如攻击者可以通过容器应用获取容器控制权,利用失陷容器进行内网横向,并进一步逃逸到宿主机甚至攻击K8s集群。

容器的运行环境是相对独立而纯粹,当容器遭受攻击时,急需对可疑的容器进行入侵排查以确认是否已失陷,并进一步进行应急处理和溯源分析找到攻击来源。在应急场景下,使用docker命令可以最大程度利用docker自身的特性,快速的获取相关信息而无需进入容器内部,帮助我们进行溯源分析和解决问题。

1.1 检查容器运行情况

使用docker ps 查看当前运行的容器,创建时间、运行状态、端口映射。

[root@ecs-t /]# docker psCONTAINER ID   IMAGE                          COMMAND                  CREATED             STATUS             PORTS                          NAMESb06352ff26cc   sagikazarmark/dvwa             "/run.sh"                About an hour ago   Up About an hour   3306/tcp, 0.0.0.0:81->80/tcp   dvwa

1.2 检查运行容器详细信息

使用docker inspect来获取容器的详细信息。

//获取容器名docker inspect -f {{.Name}}  dvwa  
 //获取容器网络的相关信息docker inspect -f {{.NetworkSettings}} dvwa   docker inspect -f {{.NetworkSettings.IPAddress}} dvwa 
//目录在宿主机的具体挂载位置docker inspect -f="{{json .Mounts}}" dvwa   docker inspect -f "{{range .Mounts}} {{println .Source .Destination}} {{end}}" dvwa
//查看网络信息docker inspect -f="{{json .NetworkSettings}}" dvwa

1.3 检查容器资源的使用情况

使用docker stats 查看容器的CPU、内存、网络 I/O等情况,以确认是否存在资源异常的情况。

[root@ecs-t /]# docker stats dvwa
CONTAINER ID   NAME      CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O         PIDSb06352ff26cc   dvwa      0.00%     76.21MiB / 3.686GiB   2.02%     23.6kB / 57.6kB   24.1MB / 67.7MB   27

1.4 检查容器中进程信息

使用docker top 查看容器中的进程信息,通过PID/PPID/CMD等信息来辅助定位异常进程。

如下图:java父进程(PID:84010)触发bash反弹shell的子进程(PID:84281)。

1.5 查看容器中日志

使用docker logs查看容器日志,并通过关键字定位异常信息位置。

如下图:通过特征关键字找到可疑的jndi请求。

1.6 查看容器中的文件变化

使用docker diff命令可以找出容器内文件状态变化。备注:三种状态(A - Add, D - Delete, C - Change )。

如下图:通过新增文件目录快速定位webshell文件。

1.7 失陷容器应急处理

确认容器失陷后,一般我们可以采取暂停容器、隔离容器甚至杀死容器的方式来做紧急处理。

(1)使用docker pause,暂停容器中所有的进程。

(2)使用docker commit,用于将被入侵的容器来构建镜像,从而保留现场痕迹,以便溯源。

(3)将正在运行的Docker容器禁用网络。

//将运行中的容器与用户定义的网桥断开连接[root@localhost ~]#docker network disconnect bridge <container-name>
//禁用veth[root@localhost ~]#docker exec -it <container-name> cat /sys/class/net/eth0/iflink29[root@localhost ~]#ip link show |grep 2929: vethbf5239e@if28: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue masteefault [root@localhost ~]# ip link set vethbf5239e down

(4)使用docker kill 杀掉运行中的容器。

docker kill -s KILL <container-name>
dockerdocker命令
本作品采用《CC 协议》,转载必须注明作者和本文链接
此漏洞/攻击取决于 Kubernetes 集群的配置方式。
Docker容器入门指北
2022-05-11 06:43:31
Docker 是一种基于 Linux 的容器化技术,类似于轻量的虚拟机。它采用 C/S 架构,使用Go语言开发。Docker 分为 2 个版本:社区版和企业版,社区版免费,企业版是收费的
1Docker 迁移存储目录默认情况系统会将 Docker 容器存放在 /var/lib/docker 目录下[问题起因]?今天通过监控系统,发现公司其中一台服务器的磁盘快慢,随即上去看了下,发现?由上述原因,我们都知道,在?中存储的都是相关于容器的存储,所以也不能随便的将其删除掉。设备进行扩容来达到相同的目的。的详细参数,请点击查看?但是需要注意的一点就是,尽量不要用软链, 因为一些?容器编排系统不支持这样做,比如我们所熟知的?发现容器启动不了了
如果您希望启动并运行一个强大的 ERP 解决方案,Jack Wallen 可以通过 Odoo 和 Docker 提供解决方案。
七个杀手级Docker命令
2023-12-22 15:19:58
Docker是一个容器化平台,通过操作系统级别的虚拟化技术,实现软件的打包和容器化运行。借助Docker,开发人员能够将应用程序以容器的形式进行部署,但在此之前需要构建Docker镜像。只要熟悉相关Docker命令,开发人员就能轻松完成所有这些步骤,从而实现应用程序的容器化部署。本文将根据使用场景对 Docker 命令进行分类介绍。1 构建 Docker 镜像构建 Docker 镜像需要使用 Do
首先,对Docker架构以及基本安全特性进行介绍,分析了Docker面临的安全威胁。由于Docker拥有轻量化、高效率和易部署的特点,目前已被广泛应用于云计算和微服务架构中。本文对Docker安全相关的研究思路、方法和工具进行比较和分析,并指出未来可能的研究方向。此外,Iptables的限制范围有限,容器网络仍然容易受到数据链路层攻击,如ARP欺骗等。
独立的Docker Swarm1.2.3以上版本。旧版本的Portainer支持独立Docker Swarm,而Portainer 1.17.0和更新版本不支持它。但是,对于一般需求,Portainer可能并不适合。此外,DockStation在Docker Hub上十分的受欢迎。未来,会重构成 Spring Cloud Alibaba 。
你是否还在大量控制台窗口中监控容器,还是对使用终端命令充满热情?而使用Docker的图形用户界面(GUI)工具,则可以更简单的对容器进行管理,并提高效率。而且它们都是免费的。
事先准备一台linux主机,并且已安装好docker环境。centos安装docker环境如下:查询可安装版本:
VSole
网络安全专家