2375, 2376 Pentesting Docker
WhiteIntel karanlık ağ destekli bir arama motorudur ve şirketin veya müşterilerinin hırsız kötü amaçlı yazılımlar tarafından kompromize edilip edilmediğini kontrol etmek için ücretsiz işlevler sunar.
WhiteIntel'in başlıca amacı, bilgi çalan kötü amaçlı yazılımlardan kaynaklanan hesap ele geçirmeleri ve fidye yazılımı saldırılarıyla mücadele etmektir.
Websitesini ziyaret edebilir ve motorlarını ücretsiz deneyebilirsiniz:
Docker Temelleri
Nedir
Docker, konteynerleştirme endüstrisindeki öncü platformdur ve sürekli yenilikleri öncülük eder. Uygulamaların gelenekselden geleceğe kadar uzanan kolayca oluşturulmasını ve dağıtılmasını sağlar ve bunların çeşitli ortamlarda güvenli bir şekilde dağıtılmasını garanti eder.
Temel docker mimarisi
containerd: Bu, konteynerlerin yaşam döngüsünün kapsamlı yönetiminden sorumlu olan çekirdek çalışma zamanıdır. Bu, konteynerlerin görüntü transferi ve depolanmasını ele almanın yanı sıra konteynerlerin yürütülmesi, izlenmesi ve ağlanmasını denetler. containerd hakkında daha detaylı bilgiler sunulmaktadır.
Container-shim, başsız konteynerlerin işlenmesinde aracı olarak kritik bir rol oynar ve konteynerler başlatıldıktan sonra runc'ın yerini alır.
runc: Hafif ve evrensel konteyner çalışma zamanı yetenekleriyle saygı gören runc, OCI standardı ile uyumludur. OCI yönergelerine göre konteynerleri başlatmak ve yönetmek için containerd tarafından kullanılır ve orijinal libcontainer'dan evrim geçirmiştir.
grpc, containerd ve docker-engine arasındaki iletişimi kolaylaştırmak için esastır ve verimli etkileşimi sağlar.
OCI, en son Docker sürümlerinin hem OCI görüntüsü hem de çalışma zamanı standartlarına uyumlu olduğunu korumak için önemlidir.
Temel komutlar
Containerd
Containerd, özellikle Docker ve Kubernetes gibi konteyner platformlarının ihtiyaçlarını karşılamak üzere geliştirilmiştir. Linux, Windows, Solaris ve daha fazlası gibi çeşitli işletim sistemlerinde konteynerlerin yürütülmesini basitleştirmeyi amaçlar, işletim sistemiyle ilgili işlevselliği ve sistem çağrılarını soyutlayarak. Containerd'ın amacı, kullanıcılarının gereksinim duyduğu temel özellikleri içermek ve gereksiz bileşenleri atlamaya çalışmaktır. Ancak, bu hedefi tamamen gerçekleştirmek zorlu olarak kabul edilmektedir.
Bir ana tasarım kararı, Containerd'ın ağ işlemlerini ele almamasıdır. Ağ, dağıtılmış sistemlerde kritik bir unsurdur ve Yazılım Tanımlı Ağ (SDN) ve hizmet keşfi gibi karmaşıklıklar, bir platformdan diğerine önemli ölçüde değişmektedir. Bu nedenle, Containerd, desteklediği platformlar tarafından yönetilen ağ yönlerini bırakır.
Docker, konteynerleri çalıştırmak için Containerd'ı kullanırken, Containerd'ın yalnızca Docker'ın işlevlerinin bir alt kümesini desteklediği önemlidir. Özellikle, Containerd, Docker'da bulunan ağ yönetimi yeteneklerine sahip değildir ve Docker sürümlerinin doğrudan oluşturulmasını desteklemez. Bu ayrım, Containerd'ın odaklı rolünü vurgular; konteyner çalışma zamanı ortamı olarak, daha özelleşmiş işlevleri entegre olduğu platformlara bırakır.
Podman
Podman, Red Hat tarafından geliştirilen ve sürdürülen Açık Konteyner İnisiyatifi (OCI) standartlarına uygun olan açık kaynaklı bir konteyner motorudur. Docker'dan farklı olarak, daemonless mimarisi ve rootless konteynerler desteği ile dikkat çeker, kullanıcılara kök ayrıcalıkları olmadan konteyner çalıştırma imkanı sağlar.
Podman, Docker'ın API'si ile uyumlu olacak şekilde tasarlanmıştır, bu da Docker CLI komutlarının kullanılmasına olanak tanır. Bu uyumluluk, Buildah gibi konteyner görüntüleri oluşturmak için ve Skopeo gibi görüntü işlemleri için araçları içeren ekosistemi de kapsar. Bu araçlar hakkında daha fazla detay GitHub sayfalarında bulunabilir.
Ana Farklar
Mimari: Arkaplan daemonu olmadan Docker'ın istemci-sunucu modelinin aksine, Podman bir daemon olmadan çalışır. Bu tasarım, konteynerlerin başlatan kullanıcının ayrıcalıklarıyla çalışmasını sağlar ve kök erişimi gereksinimini ortadan kaldırarak güvenliği artırır.
Systemd Entegrasyonu: Podman, konteynerleri yönetmek için systemd ile entegre çalışır, systemd birimleri aracılığıyla konteyner yönetimine olanak tanır. Bu, Docker'ın systemd'i genellikle Docker daemon işlemini yönetmek için kullandığından farklıdır.
Rootless Konteynerler: Podman'ın önemli bir özelliği, konteynerleri başlatan kullanıcının ayrıcalıkları altında çalıştırabilme yeteneğidir. Bu yaklaşım, saldırganların sadece tehlikeye atılan kullanıcının ayrıcalıklarını değil kök erişimini elde etmelerini sağlayarak konteyner ihlalleri ile ilişkili riskleri en aza indirir.
Podman'ın yaklaşımı, kullanıcı ayrıcalık yönetimine ve mevcut Docker iş akışlarıyla uyumluluğa vurgu yaparak güvenli ve esnek bir Docker alternatifi sunar.
Podman'ın Docker ile aynı API'yi desteklemeyi amaçladığını unutmayın, bu nedenle podman ile docker gibi aynı komutları kullanabilirsiniz:
Temel Bilgiler
Uzak API varsayılan olarak etkinleştirildiğinde 2375 bağlantı noktasında çalışır. Hizmet varsayılan olarak kimlik doğrulama gerektirmeyecektir, bu da bir saldırganın ayrıcalıklı bir docker konteyneri başlatmasına olanak tanır. Uzak API kullanılarak bir kişi, ana bilgisayarın ortamının dosyalarını okuyabilir/yazabilir ve ana bilgisayarları konteynere bağlayabilir.
Varsayılan bağlantı noktası: 2375
Numaralandırma
Manuel
Docker API'sını numaralandırmak için docker
komutunu veya aşağıdaki örnekte olduğu gibi curl
kullanabilirsiniz:
Eğer docker komutu ile uzak docker API'sine bağlanabilirseniz, hizmetle etkileşimde bulunmak için önceden yorumlanmış olan docker komutlarını çalıştırabilirsiniz.
export DOCKER_HOST="tcp://localhost:2375"
yapabilir ve docker komutunda -H
parametresini kullanmaktan kaçınabilirsiniz
Hızlı ayrıcalık yükseltme
Curl
Bazen 2376'yı TLS uç noktası için görebilirsiniz. Docker istemcisi ile bağlantı kuramadım ama curl ile yapmak mümkün.
Eğer bununla ilgili daha fazla bilgi istiyorsan, komutları kopyaladığım yerde daha fazla bilgi bulunabilir: https://securityboulevard.com/2019/02/abusing-docker-api-socket/
Otomatik
Kompromis
Aşağıdaki sayfada bir docker konteynerinden kaçmanın yollarını bulabilirsiniz:
pageDocker SecurityBunu istismar ederek bir konteynerden kaçmak mümkündür, uzaktaki makinede zayıf bir konteyner çalıştırabilir, ondan kaçabilir ve makineyi tehlikeye atabilirsiniz:
Yetki Yükseltme
Eğer bir docker kullanan bir ana makine içindeyseniz, yetkileri yükseltmeyi denemek için bu bilgileri okuyabilirsiniz.
Çalışan Docker konteynerlerinde sırları keşfetmek
env (çevresel değişken bölümü) bölümünde sırlar için kontrol yapın ve şunları bulabilirsiniz:
Şifreler.
IP'ler.
Portlar.
Yollar.
Diğerleri… .
Dosya çıkarmak istiyorsanız:
Docker'ınızı Güvence Altına Alma
Docker kurulumunuzu ve kullanımınızı güvence altına alma
Mevcut docker kurulumunuzu incelemek için https://github.com/docker/docker-bench-security aracını kullanabilirsiniz.
./docker-bench-security.sh
Mevcut docker kurulumunuzu incelemek için https://github.com/kost/dockscan aracını kullanabilirsiniz.
dockscan -v unix:///var/run/docker.sock
Farklı güvenlik seçenekleriyle çalıştırıldığında bir konteynerin sahip olacağı ayrıcalıkları görmek için https://github.com/genuinetools/amicontained aracını kullanabilirsiniz. Bu, bir konteyneri çalıştırmak için bazı güvenlik seçeneklerini kullanmanın sonuçlarını bilmek açısından faydalıdır:
docker run --rm -it r.j3ss.co/amicontained
docker run --rm -it --pid host r.j3ss.co/amicontained
docker run --rm -it --security-opt "apparmor=unconfined" r.j3ss.co/amicontained
Docker İmajlarını Güvence Altına Alma
Diğer docker imajlarınızı tarayarak zayıflıkları bulmak için https://github.com/quay/clair docker imajını kullanabilirsiniz.
docker run --rm -v /root/clair_config/:/config -p 6060-6061:6060-6061 -d clair -config="/config/config.yaml"
clair-scanner -c http://172.17.0.3:6060 --ip 172.17.0.1 ubuntu-image
Docker Dosyalarını Güvence Altına Alma
Docker dosyanızı incelemek ve tüm türden yan yapılandırmaları bulmak için https://github.com/buddy-works/dockerfile-linter aracını kullanabilirsiniz. Her yan yapılandırmaya bir kimlik verilecek, her birini nasıl düzelteceğinizi https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md buradan bulabilirsiniz.
dockerfilelinter -f Dockerfile
Docker dosyanızı incelemek ve tüm türden yan yapılandırmaları bulmak için https://github.com/replicatedhq/dockerfilelint aracını kullanabilirsiniz.
dockerfilelint Dockerfile
Docker dosyanızı incelemek ve tüm türden yan yapılandırmaları bulmak için https://github.com/RedCoolBeans/dockerlint aracını kullanabilirsiniz.
dockerlint Dockerfile
Docker dosyanızı incelemek ve tüm türden yan yapılandırmaları bulmak için https://github.com/hadolint/hadolint aracını kullanabilirsiniz.
hadolint Dockerfile
Şüpheli Etkinlikleri Günlüğe Kaydetme
Çalışan konteynerlerdeki şüpheli davranışları tespit etmek için https://github.com/falcosecurity/falco aracını kullanabilirsiniz.
Aşağıdaki parçada Falco'nun bir çekirdek modülü derlediğini ve eklediğini görebilirsiniz. Bundan sonra, kuralları yükler ve şüpheli etkinlikleri kaydetmeye başlar. Bu durumda, başlatılan 2 ayrıcalıklı konteyner tespit edildi, bunlardan biri hassas bir bağlantı noktasıyla ve birkaç saniye sonra konteynerlerden birinde bir kabuk açıldığı tespit edildi.
Docker'ı İzleme
Docker'ı izlemek için auditd kullanabilirsiniz.
Referanslar
WhiteIntel, karanlık ağ destekli bir arama motorudur ve şirketin veya müşterilerinin hırsız kötü amaçlı yazılımlar tarafından kompromize edilip edilmediğini kontrol etmek için ücretsiz işlevler sunar.
WhiteIntel'in asıl amacı, bilgi çalan kötü amaçlı yazılımlardan kaynaklanan hesap ele geçirmeleri ve fidye saldırılarıyla mücadele etmektir.
Websitesini ziyaret edebilir ve ücretsiz olarak motorlarını deneyebilirsiniz:
Last updated