当发生容器安全事件时,需要从容器或镜像中提取恶意文件进行分析和处理。
本文主要介绍3种常见的方法:
(1) 从运行的容器中复制文件
首先,需要从镜像运行启动一个容器,然后,使用docker cp命令从容器中提取文件到宿主机。
docker run -d --name test test:v1.0 //运行容器
docker cp test:/tmp/evil.sh /tmp/eill.sh
docker rm test //删除容器
(2)从tar镜像压缩包提取文件
将镜像保存为tar文件,解压tar镜像文件到宿主机,从分层目录找到目标文件。
docker save -o test.tar test:v1.0
tar -xvf test.tar
tar -xvf cdbef1ee1b9602e5bd6c1897f0eb4f32c64380e97e0d456e85f7c0920b4d9e7b/layer.tar
eill.sh
(3)查找Docker容器内文件系统在宿主机上的具体位置
docker文件系统是分层的,镜像在宿主机上有自己的文件系统,可以通过docker inspect 快速定位容器文件系统在宿主机上对应的目录,直接从宿主机上获取目标文件。事实上,这也是最简单最安全的提取恶意文件的方式。
docker inspect --format={{.GraphDriver}} test:v1.0
cd /var/lib/docker/overlay2/f4mfds01uprpk0moaiz2vjg6m/diff