当网络流量监控发现某台运行多个docker容器的主机主动连接到一个疑似挖矿矿池的地址时,需要快速响应和排查,以阻止进一步的损害。
面对docker容器的场景下,如何快速分析和识别恶意挖矿容器?本文将分享一种应急响应思路,用于排查运行多个Docker容器的主机中可能存在的恶意挖矿容器。
在宿主机上通过netstat -an 是看不到容器内的网络连接的,而一台台进入容器查看网络连接,排查效率很慢。
我们知道宿主机上的容器都是通过dokcer0进行通信的,因此,可以通过tcpdump找到异常网络连接的容器IP地址,然后进一步关联到容器。
(1)tcpdump抓包定位容器ip地址
tcpdump -i docker0 dst host xx.xx.xx.xx -v
可以看到与恶意ip建立网络连接的容器IP是:172.17.0.2
(2)一个命令获取所有容器名称及其IP地址,匹配172.17.0.2 ,从而定位到容器。
docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq) |grep 172.17.0.2
(3)进入容器network namespace进行确认,找到异常的网络连接地址。
#获取容器PID
docker inspect -f '{{.State.Pid}}' <containerId>
#进入容器的network namespace
nsenter -n -t pid
# 验证是否进入容器的network namespace
netstat -an|grep xx.xx.xx.xx