Docker Forensics
Reading time: 4 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Container modification
Є підозри, що деякий docker контейнер був скомпрометований:
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
Тоді ви можете розпакувати зображення та отримати доступ до блобів, щоб шукати підозрілі файли, які ви могли знайти в історії змін:
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
Це дозволяє вам переміщатися між різними блобами образів 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 всередині хоста, ви можете бачити процеси, що виконуються в контейнері з хоста, просто запустивши ps -ef
.
Отже, (як root) ви можете вивантажити пам'ять процесів з хоста і шукати облікові дані просто як у наступному прикладі.
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.