01、概述
當網絡流量監控發現某臺運行多個docker容器的主機主動連接到一個疑似挖礦礦池的地址時,需要快速響應和排查,以阻止進一步的損害。
面對docker容器的場景下,如何快速分析和識別惡意挖礦容器?本文將分享一種應急響應思路,用于排查運行多個Docker容器的主機中可能存在的惡意挖礦容器。
02、定位容器
在宿主機上通過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進行確認,找到異常的網絡連接地址。
#獲取容器PIDdocker inspect -f '{{.State.Pid}}' <containerId>#進入容器的network namespacensenter -n -t pid # 驗證是否進入容器的network namespacenetstat -an|grep xx.xx.xx.xx

03、分析排查
(1)進入容器,找到挖礦程序的進程,惡意腳本路徑為xmrig.sh。

(2)我們需要進一步確認的是挖礦程序時在容器運行過程中被植入了,還是鏡像文件中已經存在挖礦程序。
使用docker diff命令查看容器內文件狀態變化,未找到xmrig.sh。

通過docker inspect 快速定位鏡像文件系統在宿主機上對應的目錄,從鏡像中提取惡意文件進行對比,以確認入侵的源頭為惡意鏡像。

04、鏡像分析
追溯鏡像的來源,解析Dockerfile文件是關鍵步驟。
(1)使用docker history 命令查看指定鏡像的創建歷史,加上 --no-trunc,就可以看到全部信息。

(2)使用dfimage從鏡像中提取 Dockerfile,在這里可以清晰地看到惡意鏡像構建的過程,找到惡意挖礦程序的樣本。

05、問題處理
(1)查找惡意鏡像關聯的容器
docker ps -a|grep <IMAGE_NAME>

(2) 刪除相關容器或鏡像
docker rm -f <containerId>docker rmi <IMAGE_NAME>
Bypass
穿過叢林
信息安全與通信保密雜志社
虹科網絡安全
一顆小胡椒
Bypass
一顆小胡椒
安全圈
信息安全與通信保密雜志社
信息安全與通信保密雜志社
中國信息安全
Bypass