Docker Forensics
Reading time: 5 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépôts github.
Modification de conteneur
Il y a des soupçons qu'un certain conteneur docker a été compromis :
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cc03e43a052a lamp-wordpress "./run.sh" 2 minutes ago Up 2 minutes 80/tcp wordpress
Vous pouvez facilement trouver les modifications apportées à ce conteneur par rapport à l'image avec :
docker diff wordpress
C /var
C /var/lib
C /var/lib/mysql
A /var/lib/mysql/ib_logfile0
A /var/lib/mysql/ib_logfile1
A /var/lib/mysql/ibdata1
A /var/lib/mysql/mysql
A /var/lib/mysql/mysql/time_zone_leap_second.MYI
A /var/lib/mysql/mysql/general_log.CSV
...
Dans la commande précédente, C signifie Changed et A signifie Added.
Si vous constatez qu'un fichier intéressant comme /etc/shadow
a été modifié, vous pouvez le télécharger depuis le conteneur pour vérifier une activité malveillante avec :
docker cp wordpress:/etc/shadow.
Vous pouvez également le comparer avec l'original en exécutant un nouveau conteneur et en extrayant le fichier à partir de celui-ci :
docker run -d lamp-wordpress
docker cp b5d53e8b468e:/etc/shadow original_shadow #Get the file from the newly created container
diff original_shadow shadow
Si vous constatez que un fichier suspect a été ajouté, vous pouvez accéder au conteneur et le vérifier :
docker exec -it wordpress bash
Modifications d'images
Lorsque vous recevez une image docker exportée (probablement au format .tar
), vous pouvez utiliser container-diff pour extraire un résumé des modifications :
docker save <image> > image.tar #Export the image to a .tar file
container-diff analyze -t sizelayer image.tar
container-diff analyze -t history image.tar
container-diff analyze -t metadata image.tar
Ensuite, vous pouvez décompresser l'image et accéder aux blobs pour rechercher des fichiers suspects que vous avez pu trouver dans l'historique des modifications :
tar -xf image.tar
Analyse de base
Vous pouvez obtenir des informations de base à partir de l'image en exécutant :
docker inspect <image>
Vous pouvez également obtenir un résumé historique des modifications avec :
docker history --no-trunc <image>
Vous pouvez également générer un dockerfile à partir d'une image avec :
alias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm alpine/dfimage"
dfimage -sV=1.36 madhuakula/k8s-goat-hidden-in-layers>
Dive
Pour trouver des fichiers ajoutés/modifiés dans les images docker, vous pouvez également utiliser l'outil dive (téléchargez-le depuis releases) :
#First you need to load the image in your docker repo
sudo docker load < image.tar 1 ⨯
Loaded image: flask:latest
#And then open it with dive:
sudo dive flask:latest
Cela vous permet de naviguer à travers les différents blobs des images docker et de vérifier quels fichiers ont été modifiés/ajoutés. Rouge signifie ajouté et jaune signifie modifié. Utilisez tab pour passer à l'autre vue et espace pour réduire/ouvrir des dossiers.
Avec die, vous ne pourrez pas accéder au contenu des différentes étapes de l'image. Pour ce faire, vous devrez décompresser chaque couche et y accéder.
Vous pouvez décompresser toutes les couches d'une image depuis le répertoire où l'image a été décompressée en exécutant :
tar -xf image.tar
for d in `find * -maxdepth 0 -type d`; do cd $d; tar -xf ./layer.tar; cd ..; done
Identifiants depuis la mémoire
Notez que lorsque vous exécutez un conteneur docker à l'intérieur d'un hôte vous pouvez voir les processus en cours d'exécution sur le conteneur depuis l'hôte simplement en exécutant ps -ef
Par conséquent (en tant que root) vous pouvez extraire la mémoire des processus depuis l'hôte et rechercher des identifiants juste comme dans l'exemple suivant.
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépôts github.