Herkese merhabalar. "Container içinde çalışırsam iz bırakmam" diye düşünenleriniz illaki vardır, öncelikle sizlere bunun tamamen yanlış olduğunu söylemek isterim. Docker container'ları silinse bile arkasında ciddi miktarda delil bırakır. Bu konumda sizlere hem saldırgan hem savunmacının bakış açısından container adli bilişimini anlatacağım. İyi okumalar.
Container'ın Adli Bilişim Açısından Önemi
Docker container'ları sanal makine değil, host işletim sisteminin kernel'ini paylaşan izole süreçlerdir arkadaşlar. Bu yapı hem hız avantajı sağlar hem de adli bilişim açısından çok daha fazla iz bırakır çünkü host sistemle derin bağlar vardır.
- Container logları: /var/lib/docker/containers/ altında JSON formatında saklanır, container silinse bile bir süre kalabilir.
- Image katmanları: Her Docker image, değiştirilemez katmanlardan oluşur. Saldırgan ne yükledi, ne çalıştırdı vs. layer historyde görünür.
- Volume'lar: Container silinse bile volumelar host'ta kalır. İçlerinde kritik veriler olabilir.
- Network trafiği: Host üzerindeki bridge interfaceden geçen tüm trafik loglanabilir.
- Kernel audit logları: Syscall seviyesinde her şey kayıt altına alınabilir mesela auditd ile.
Canlı Container'dan Delil Toplama
Kod:
# Çalışan container'ları listele
docker ps -a
# Container'ın tüm detaylarını al (IP, mount, env değişkenleri...)
docker inspect <container_id>
# Çalışan processleri gör
docker top <container_id>
# Anlık logları çek
docker logs --timestamps <container_id>
# Container içine gir ve araştır
docker exec -it <container_id> /bin/bash
# Dosya sistemi değişikliklerini gör (ne eklendi, silindi, değişti)
docker diff <container_id>
Öncelikle Memory Dump Almalısınız:
Container'ı durdurmadan önce RAM'i döküp al. İçinde çok yüksek ihtimalle şifreler, anahtarlar, ağ bağlantıları olabilir. docker checkpoint veya host üzerinden dd ile container memory'sini dışa aktarabilirsiniz.
Silinmiş Container'dan Delil Kurtarma
Container silinmiş ama host sistemi elimizde her şey için çok mu geç? hayır hâlâ çok şey yapılabilir:
Kod:
# Docker'ın veri dizini — tüm container kalıntıları burada
ls /var/lib/docker/
# Image geçmişini gör — ne layer'ları var, ne komutlar çalıştı
docker history <image_id> --no-trunc
# Tüm image'ları listele (silinmiş container'ın image'ı hâlâ olabilir)
docker images -a
# Overlay2 filesystem — container'ın dosya sistemi burada
ls /var/lib/docker/overlay2/
# Systemd journal — Docker daemon logları
journalctl -u docker.service --since "2026-02-01"
Image Analizi — Dive Aracı
Kod:
# Dive kur
wget https://github.com/wagoodman/dive/releases/download/v0.12.0/dive_0.12.0_linux_amd64.deb
sudo dpkg -i dive_0.12.0_linux_amd64.deb
# Image'ı analiz et
dive <image_id>
# Image'ı tar'a aktar ve manuel incele
docker save <image_id> -o image.tar
tar -xf image.tar -C ./image_contents/
# Her layer klasöründe layer.tar var — içlerini incele
Runtime'da İzleme — Falco
Kod:
# Container içinden shell spawn edilirse alert ver
- rule: Terminal shell in container
desc: A shell was spawned in a container
condition: >
spawned_process and container
and shell_procs and proc.tty != 0
output: >
"Shell açıldı (user=%user.name container=%container.name)"
priority: WARNING
Saldırgan Perspektifi: Container içinde çalışmak açıkçası sizi korumaz. Hostun ele geçirilmesi, privileged container çalıştırılması, mount edilmiş volumelar veya kernel exploitleri ile container escape gayettabi mümkün ve tüm bu aktiviteler host üzerinde iz bırakır.
Savunma Özeti: Container'ları rootless çalıştır, Falco ile runtime monitoring kur, image'ları düzenli Trivy ile tara, Docker socket'i asla container içine mount etme.
Son düzenleme:


