Docker Forensics
Reading time: 5 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Container modification
Υπάρχουν υποψίες ότι κάποιο docker container έχει παραβιαστεί:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cc03e43a052a lamp-wordpress "./run.sh" 2 minutes ago Up 2 minutes 80/tcp wordpress
Μπορείτε εύκολα να βρείτε τις τροποποιήσεις που έχουν γίνει σε αυτό το κοντέινερ σε σχέση με την εικόνα με:
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
...
Στην προηγούμενη εντολή, το C σημαίνει Αλλαγμένο και το A σημαίνει Προστεθέν.
Αν διαπιστώσετε ότι κάποιο ενδιαφέρον αρχείο όπως το /etc/shadow
έχει τροποποιηθεί, μπορείτε να το κατεβάσετε από το κοντέινερ για να ελέγξετε για κακόβουλη δραστηριότητα με:
docker cp wordpress:/etc/shadow.
Μπορείτε επίσης να το συγκρίνετε με το πρωτότυπο εκτελώντας ένα νέο κοντέινερ και εξάγοντας το αρχείο από αυτό:
docker run -d lamp-wordpress
docker cp b5d53e8b468e:/etc/shadow original_shadow #Get the file from the newly created container
diff original_shadow shadow
Αν διαπιστώσετε ότι κάποιο ύποπτο αρχείο προστέθηκε μπορείτε να αποκτήσετε πρόσβαση στο κοντέινερ και να το ελέγξετε:
docker exec -it wordpress bash
Τροποποιήσεις εικόνας
Όταν σας δοθεί μια εξαγόμενη εικόνα docker (πιθανώς σε μορφή .tar
), μπορείτε να χρησιμοποιήσετε container-diff για να εξαγάγετε μια περίληψη των τροποποιήσεων:
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
Στη συνέχεια, μπορείτε να αποσυμπιέσετε την εικόνα και να πρόσβαση στα blobs για να αναζητήσετε ύποπτα αρχεία που μπορεί να έχετε βρει στην ιστορία αλλαγών:
tar -xf image.tar
Βασική Ανάλυση
Μπορείτε να αποκτήσετε βασικές πληροφορίες από την εικόνα εκτελώντας:
docker inspect <image>
Μπορείτε επίσης να αποκτήσετε μια περίληψη ιστορικό αλλαγών με:
docker history --no-trunc <image>
Μπορείτε επίσης να δημιουργήσετε ένα dockerfile από μια εικόνα με:
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
Για να βρείτε προστιθέμενα/τροποποιημένα αρχεία σε εικόνες docker, μπορείτε επίσης να χρησιμοποιήσετε το dive (κατεβάστε το από 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
Αυτό σας επιτρέπει να πλοηγηθείτε μέσα από τα διάφορα blobs των εικόνων docker και να ελέγξετε ποια αρχεία έχουν τροποποιηθεί/προστεθεί. Κόκκινο σημαίνει προσθήκη και κίτρινο σημαίνει τροποποίηση. Χρησιμοποιήστε tab για να μετακινηθείτε στην άλλη προβολή και space για να συμπτύξετε/ανοίξετε φακέλους.
Με το die δεν θα μπορείτε να αποκτήσετε πρόσβαση στο περιεχόμενο των διαφόρων σταδίων της εικόνας. Για να το κάνετε αυτό, θα χρειαστεί να αποσυμπιέσετε κάθε στρώμα και να αποκτήσετε πρόσβαση σε αυτό.
Μπορείτε να αποσυμπιέσετε όλα τα στρώματα από μια εικόνα από τον κατάλογο όπου η εικόνα αποσυμπιέστηκε εκτελώντας:
tar -xf image.tar
for d in `find * -maxdepth 0 -type d`; do cd $d; tar -xf ./layer.tar; cd ..; done
Διαπιστευτήρια από τη μνήμη
Σημειώστε ότι όταν εκτελείτε ένα docker container μέσα σε έναν host μπορείτε να δείτε τις διεργασίες που εκτελούνται στο container από τον host απλά εκτελώντας ps -ef
Επομένως (ως root) μπορείτε να dump την μνήμη των διεργασιών από τον host και να αναζητήσετε διαπιστευτήρια ακριβώς όπως στο παρακάτω παράδειγμα.
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.