Docker Forensics

HackTricks'i Destekleyin

Container değişikliği

Bazı docker konteynerinin tehlikeye atıldığına dair şüpheler var:

docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
cc03e43a052a        lamp-wordpress      "./run.sh"          2 minutes ago       Up 2 minutes        80/tcp              wordpress

Konteynır üzerinde yapılan değişiklikleri görüntülemek için şunu kullanabilirsiniz:

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
...

Önceki komutta C Değiştirildi anlamına gelir ve A, Eklendi anlamına gelir. Eğer /etc/shadow gibi ilginç bir dosyanın değiştirildiğini fark ederseniz, kötü amaçlı faaliyetleri kontrol etmek için dosyayı konteynerden indirebilirsiniz:

docker cp wordpress:/etc/shadow.

Ayrıca, yeni bir konteyner çalıştırarak ve dosyayı ondan çıkararak orijinaliyle karşılaştırabilirsiniz:

docker run -d lamp-wordpress
docker cp b5d53e8b468e:/etc/shadow original_shadow #Get the file from the newly created container
diff original_shadow shadow

Eğer şüpheli bir dosyanın eklendiğini tespit ederseniz, konteynıra erişebilir ve kontrol edebilirsiniz:

docker exec -it wordpress bash

Resim Modifikasyonları

Size bir dışa aktarılmış docker imajı verildiğinde (muhtemelen .tar formatında) değişikliklerin özetini çıkarmak için container-diff kullanabilirsiniz:

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

Ardından, görüntüyü çözebilir ve şüpheli dosyaları aramak için bloklara erişebilirsiniz bulduğunuz değişiklik geçmişinde:

tar -xf image.tar

Temel Analiz

Çalışan görüntüden temel bilgileri alabilirsiniz:

docker inspect <image>

Ayrıca bir özet değişiklik geçmişi alabilirsiniz:

docker history --no-trunc <image>

Ayrıca bir görüntüden bir dockerfile oluşturabilirsiniz şu şekilde:

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>

Dalış

Docker görüntülerinde eklenen/değiştirilen dosyaları bulmak için ayrıca dive (indirmek için sürümler bağlantısını kullanabilirsiniz):

#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

Bu, Docker görüntülerinin farklı blokları arasında gezinmenizi sağlar ve hangi dosyaların değiştirildiğini/eklendiğini kontrol edebilirsiniz. Kırmızı eklenen anlamına gelir ve sarı değiştirilen anlamına gelir. Diğer görünüme geçmek için tab tuşunu kullanın ve klasörleri kapatmak/açmak için boşluk tuşunu kullanın.

Die ile görüntünün farklı aşamalarının içeriğine erişemezsiniz. Bunun için her katmanı açmanız ve erişmeniz gerekir. Görüntünün tüm katmanlarını açmak için görüntünün açıldığı dizinde şu komutu çalıştırarak açabilirsiniz:

tar -xf image.tar
for d in `find * -maxdepth 0 -type d`; do cd $d; tar -xf ./layer.tar; cd ..; done

Bellekten Kimlik Bilgileri

Dikkat edin, bir ana makine içinde bir docker konteyneri çalıştırdığınızda konteynerde çalışan işlemleri ana makineden görebilirsiniz sadece ps -ef komutunu çalıştırarak

Bu nedenle (kök olarak) ana makineden işlemlerin belleğini dökerek ve aşağıdaki örnekte olduğu gibi kimlik bilgilerini arayabilirsiniz.

HackTricks'i Destekleyin

Last updated