Loading search data...

Docker - Comment extraire d'une image toutes les informations pour la reconstruire

Publié le : 22 octobre 2021 | Mis à jour le : 27 juin 2023

logo docker

Whaler est une application écrite en Go permettant de faire du reverse engineering sur les images Docker. Vous allez pouvoir analyser comment sont produites les images officielles.

Cette application permet :

  • Générer un Dockerfile à partir l’image
  • D’indiquer les fichiers qui ont été ajoutés avec les instructions Docker ADD/COPY
  • Recherche des fichiers ajoutés pouvant contenir des secrets (token, mots de passe, certificats)
  • Il affiche également les ports ouverts, l’utilisateur d’exécution et les variables d’environnement.

Utiliser whaler

Le moyen le plus simple consiste à exécuter l’outil dans le conteneur Docker :

docker pull pegleg/whaler
docker run -t --rm -v /var/run/docker.sock:/var/run/docker.sock:ro pegleg/whaler  hashicorp/terraform

Si l’image n’est pas présente sur votre poste, elle se chargera de la récupérer.

Analyzing hashicorp/terraform
Docker Version: 17.09.0-ce
GraphDriver: overlay2
Environment Variables
|PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Image user
|User is root

Potential secrets:
|Found match etc/apk/keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub Possible public key \.pub$ 304e424bc2d24962ebf3497697c15f6c58bb58a8bf58832fa5286f30d0d36285/layer.tar
|Found match etc/apk/keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub Possible public key \.pub$ 304e424bc2d24962ebf3497697c15f6c58bb58a8bf58832fa5286f30d0d36285/layer.tar
|Found match etc/apk/keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub Possible public key \.pub$ 304e424bc2d24962ebf3497697c15f6c58bb58a8bf58832fa5286f30d0d36285/layer.tar
|Found match etc/udhcpd.conf DHCP server configs dhcpd[^ ]*.conf 304e424bc2d24962ebf3497697c15f6c58bb58a8bf58832fa5286f30d0d36285/layer.tar
|Found match etc/ssh/ssh_config Client SSH Config .?ssh_config[\s\S]* 3429ebdea5b8d86f0fe0d489c0617bc3e95252a54bdf76e65a213f4840aa7e2d/layer.tar
|Found match etc/ssh/sshd_config Server SSH Config .?sshd_config[\s\S]* 3429ebdea5b8d86f0fe0d489c0617bc3e95252a54bdf76e65a213f4840aa7e2d/layer.tar
Dockerfile:
CMD ["/bin/sh"]
ARG TERRAFORM_VERSION=UNSPECIFIED
LABEL com.hashicorp.terraform.version=1.0.9
|1 TERRAFORM_VERSION=1.0.9 RUN apk add --no-cache git openssh
COPY file:85b3c554c0ed26b376f944595ef6fc2f3561258e1c2318956ec6993299f3a0df in /bin/terraform
        bin/
        bin/terraform

ENTRYPOINT ["/bin/terraform"]

Pour extraire les layers il suffit d’utiliser la commande save permettant de sauver l’image au format tar :

docker save hashicorp/terraform -o terraform.tar
tar xvf terraform.tar
-rw-r--r-- 0/0            2438 2021-10-13 18:01 115504c439c97eedfea17008129f6b2db229626a9983782f9e42f0ebbd1e6887.json
drwxr-xr-x 0/0               0 2021-10-13 18:01 304e424bc2d24962ebf3497697c15f6c58bb58a8bf58832fa5286f30d0d36285/
-rw-r--r-- 0/0               3 2021-10-13 18:01 304e424bc2d24962ebf3497697c15f6c58bb58a8bf58832fa5286f30d0d36285/VERSION
-rw-r--r-- 0/0             401 2021-10-13 18:01 304e424bc2d24962ebf3497697c15f6c58bb58a8bf58832fa5286f30d0d36285/json
-rw-r--r-- 0/0         5865472 2021-10-13 18:01 304e424bc2d24962ebf3497697c15f6c58bb58a8bf58832fa5286f30d0d36285/layer.tar
drwxr-xr-x 0/0               0 2021-10-13 18:01 3429ebdea5b8d86f0fe0d489c0617bc3e95252a54bdf76e65a213f4840aa7e2d/
-rw-r--r-- 0/0               3 2021-10-13 18:01 3429ebdea5b8d86f0fe0d489c0617bc3e95252a54bdf76e65a213f4840aa7e2d/VERSION
-rw-r--r-- 0/0             477 2021-10-13 18:01 3429ebdea5b8d86f0fe0d489c0617bc3e95252a54bdf76e65a213f4840aa7e2d/json
-rw-r--r-- 0/0        19842048 2021-10-13 18:01 3429ebdea5b8d86f0fe0d489c0617bc3e95252a54bdf76e65a213f4840aa7e2d/layer.tar
drwxr-xr-x 0/0               0 2021-10-13 18:01 6022d1b9e59e923a389c0aea23a1ce85428001b15e489866eb3adf15688111ce/
-rw-r--r-- 0/0               3 2021-10-13 18:01 6022d1b9e59e923a389c0aea23a1ce85428001b15e489866eb3adf15688111ce/VERSION
-rw-r--r-- 0/0            1333 2021-10-13 18:01 6022d1b9e59e923a389c0aea23a1ce85428001b15e489866eb3adf15688111ce/json
-rw-r--r-- 0/0        79350272 2021-10-13 18:01 6022d1b9e59e923a389c0aea23a1ce85428001b15e489866eb3adf15688111ce/layer.tar
-rw-r--r-- 0/0             369 1970-01-01 00:00 manifest.json
-rw-r--r-- 0/0             102 1970-01-01 00:00 repositories

En regardant les informations générées par whaler il est possible d’identifier le layer à désarchiver pour récupérer l’info qu’il vous faut.

Source

Mots clés :

devops tutorials docker

Si vous avez apprécié cet article de blog, vous pouvez m'encourager à produire plus de contenu en m'offrant un café sur  Ko-Fi. Vous pouvez aussi passer votre prochaine commande sur amazon, sans que cela ne vous coûte plus cher, via  ce lien . Vous pouvez aussi partager le lien sur twitter ou Linkedin via les boutons ci-dessous. Je vous remercie pour votre soutien.

Autres Articles


Commentaires: