打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Docker 容器入侵排查
userphoto

2023.06.14 广东

关注

随着越来越多的应用程序运行在容器里,各种容器安全事件也随之发生,例如攻击者可以通过容器应用获取容器控制权,利用失陷容器进行内网横向,并进一步逃逸到宿主机甚至攻击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>
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Docker基础:容器元数据详解
Docker容器学习梳理--容器登陆方法梳理(attach、exec、nsenter)
docker常用命令
Docker入门系列6 如何打开多个终端进入Docker容器
查看 docker中对应容器的 IP
如何查看Docker容器环境变量,如何向容器传递环境变量
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服