LetsDefend-Docker取证
![](https://zgao.top/wp-content/uploads/2024/06/image-36.png)
您是一位熟练的数字取证调查员,面临着一项艰巨的任务。一个有趣的 Docker 镜像等待着您进行分析,其中的多个层次隐藏着关键信息和线索。您的目标是揭开这些隐藏的层次,检查其内容,并通过拼凑谜团来解开谜团。考验您的技能,因为每一层都包含新的惊喜和宝贵的见解。您能揭开隐藏在这个神秘的 Docker 镜像表面之下的秘密吗?
镜像名称:mmox/what-is-0xl4ugh
题目链接
https://app.letsdefend.io/challenge/docker-forensics
这个 Docker 容器有多少层?
这里需要用的dive命令统计容器的层数。
dive mmox/what-is-0xl4ugh
dive是一个容器镜像分析工具,可以直观的看到容器每一层变动了哪些文件,每一层占用的磁盘空间,这样也就可以看到镜像的历史构建过程;同时也可以看到镜像的磁盘空间使用率,面对特别大的镜像文件是,可以分析是否有优化的空间。
在dive的TUI界面中,tab键可以左右切换,↔键上下切换。
![](https://zgao.top/wp-content/uploads/2024/06/image-29-1024x782.png)
但是dive
本身没有专门的参数用于直接统计 Docker 镜像的层数,需要手动数一下层数。这里有23个。
镜像使用的web server是什么?
docker history --no-trunc mmox/what-is-0xl4ugh >history.txt
使用dive查看并不方便,docker history显示不完全,要加上–trunc参数查看完整的构建容器历史执行命令。
![](https://zgao.top/wp-content/uploads/2024/06/image-30-1024x437.png)
数据库用户名和密码是什么?
这个题目是为了查看镜像中文件的内容,这里有两种方式:
- 运行容器,进入容器查看文件的内容。
- 创建容器(非运行),将容器内的文件复制到宿主机查看。
- 将镜像导出为tar包,直接查看镜像中的文件内容。
使用docker run 和 docker exec
这种方式很常见,先让容器运行起来再进入内部查看。但并不推荐,很多容器需要特定的参数或者环境才能正常运行,否则无法进入容器内部。也是docker最常见的使用方式,就不演示了。
使用 docker create
和 docker cp
docker create --name temp_container mmox/what-is-0xl4ugh docker cp temp_container:/init.sh ./
![](https://zgao.top/wp-content/uploads/2024/06/image-31-1024x605.png)
使用 docker save 和 tar 命令
使用 docker save
命令将镜像保存为 tar 文件,解压保存的 tar 文件。
docker save -o image.tar mmox/what-is-0xl4ugh mkdir image_layers tar -xvf image.tar -C image_layers
解压后会看到一个包含所有镜像层的目录。每一层都是一个 tar 文件。
![](https://zgao.top/wp-content/uploads/2024/06/image-33-1024x585.png)
find ./image_layers/ -name "*.tar" -exec tar -O -xf {} init.sh 2>/dev/null \;
![](https://zgao.top/wp-content/uploads/2024/06/image-34-1024x579.png)
这种方式可以不用创建容器查看镜像内部文件。
被删除的SECRET是什么?
这个和上一题是有关联的,在init.sh中存在 rm /SUPER_SECRET.txt 的命令,如果启动容器后再去查看就已经被删除了,并且提示需要在文件被删除之前到达该层。
用上面相同的命令查看文件内容。
find ./image_layers/ -name "*.tar" -exec tar -O -xf {} SUPER_SECRET.txt 2>/dev/null \;
![](https://zgao.top/wp-content/uploads/2024/06/image-35-1024x558.png)
微信赞赏
支付宝赞赏
发表评论