Docker image: steammaintainer/gearrepairimage
系统给了一个docker镜像,搜索镜像名称可以在dockerhub上找到它
在tag 里可以看到docker的history 或者docker pull拉镜像以后,分析它
在hub.docker.com的tag标签页的image layers里查看后门层加入的过程,
docker history 命令同样可以查看 Docker 镜像的构建历史,包括每一层镜像创建的时间、作者、大小变化以及使用的命令等信息。
docker history <image_name> --no-trunc #no trunc 显示完整的layer id而不是简短的
从输出中可以看到,攻击者使用了LD_PRELOAD来做 docker 镜像后门。每次执行二进制文件时,都会加载后门。
Docker 使用 Union File System(联合文件系统)来实现其分层结构。在 Dockerfile 中使用 RUN rm <file> 或类似命令删除了一个文件时,该文件实际上并没有从镜像中物理删除。它只是在一个新的层中被标记为已删除,并且上一层中的文件保持不变。这些文件仍然可以在后续的层中找到,因为它们是在上一层中存在的。我们通过 docker save 生成的 tar 文件会包含所有层,包括那些dockerfile删除了文件的层。可以解压 tar 文件并浏览各层的内容来查看这些文件。
docker save <image_name> -o image.tar
#遍历当前目录下的所有子目录,并在每个子目录中解压名为 layer.tar 的 tar 文件。
for d in `find * -maxdepth 0 -type d `; cd $d; tar -xf ./layer.tar;cd ..;done
解压后