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
| PATH = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
| 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
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
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
-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 ↗