LetsDefend-Docker取证

LetsDefend-Docker取证

您是一位熟练的数字取证调查员,面临着一项艰巨的任务。一个有趣的 Docker 镜像等待着您进行分析,其中的多个层次隐藏着关键信息和线索。您的目标是揭开这些隐藏的层次,检查其内容,并通过拼凑谜团来解开谜团。考验您的技能,因为每一层都包含新的惊喜和宝贵的见解。您能揭开隐藏在这个神秘的 Docker 镜像表面之下的秘密吗?

镜像名称:mmox/what-is-0xl4ugh

题目链接

https://app.letsdefend.io/challenge/docker-forensics

这个 Docker 容器有多少层?

这里需要用的dive命令统计容器的层数。

dive mmox/what-is-0xl4ugh

dive是一个容器镜像分析工具,可以直观的看到容器每一层变动了哪些文件,每一层占用的磁盘空间,这样也就可以看到镜像的历史构建过程;同时也可以看到镜像的磁盘空间使用率,面对特别大的镜像文件是,可以分析是否有优化的空间。

在dive的TUI界面中,tab键可以左右切换,↔键上下切换。

但是dive 本身没有专门的参数用于直接统计 Docker 镜像的层数,需要手动数一下层数。这里有23个。

镜像使用的web server是什么?

docker history --no-trunc mmox/what-is-0xl4ugh >history.txt

使用dive查看并不方便,docker history显示不完全,要加上–trunc参数查看完整的构建容器历史执行命令。

数据库用户名和密码是什么?

这个题目是为了查看镜像中文件的内容,这里有两种方式:

  • 运行容器,进入容器查看文件的内容。
  • 创建容器(非运行),将容器内的文件复制到宿主机查看。
  • 将镜像导出为tar包,直接查看镜像中的文件内容。

使用docker run 和 docker exec

这种方式很常见,先让容器运行起来再进入内部查看。但并不推荐,很多容器需要特定的参数或者环境才能正常运行,否则无法进入容器内部。也是docker最常见的使用方式,就不演示了。

使用 docker createdocker cp

docker create --name temp_container mmox/what-is-0xl4ugh
docker cp temp_container:/init.sh ./

使用 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 文件。

find ./image_layers/ -name "*.tar" -exec tar -O -xf {} init.sh 2>/dev/null \;

这种方式可以不用创建容器查看镜像内部文件。

被删除的SECRET是什么?

这个和上一题是有关联的,在init.sh中存在 rm /SUPER_SECRET.txt 的命令,如果启动容器后再去查看就已经被删除了,并且提示需要在文件被删除之前到达该层。

用上面相同的命令查看文件内容。

find ./image_layers/ -name "*.tar" -exec tar -O -xf {} SUPER_SECRET.txt 2>/dev/null \;

赞赏

微信赞赏支付宝赞赏

Zgao

愿有一日,安全圈的师傅们都能用上Zgao写的工具。

发表评论