2375, 2376 Pentesting Docker
WhiteIntel ist eine von Dark Web angetriebene Suchmaschine, die kostenlose Funktionen bietet, um zu überprüfen, ob ein Unternehmen oder seine Kunden von Stealer-Malware kompromittiert wurden.
Das Hauptziel von WhiteIntel ist es, Kontoübernahmen und Ransomware-Angriffe aufgrund von informationsstehlender Malware zu bekämpfen.
Sie können ihre Website besuchen und ihre Engine kostenlos ausprobieren unter:
Docker-Grundlagen
Was ist
Docker ist die führende Plattform in der Containerisierungsbranche, die kontinuierliche Innovationen vorantreibt. Es erleichtert die mühelose Erstellung und Verteilung von Anwendungen, die von traditionell bis futuristisch reichen, und gewährleistet ihre sichere Bereitstellung in verschiedenen Umgebungen.
Grundlegende Docker-Architektur
containerd: Dies ist ein Kernlaufzeit für Container, der mit dem umfassenden Management des Lebenszyklus eines Containers betraut ist. Dies umfasst die Handhabung von Bildübertragung und -speicherung sowie die Überwachung und das Netzwerken von Containern. Detailliertere Einblicke in containerd werden weiter untersucht.
Der Container-Shim spielt eine wichtige Rolle als Vermittler bei der Behandlung von kopflosen Containern, die nahtlos von runc übernehmen, nachdem die Container initialisiert wurden.
runc: Bekannt für seine leichten und universellen Container-Laufzeit-Fähigkeiten, ist runc mit dem OCI-Standard ausgerichtet. Es wird von containerd verwendet, um Container gemäß den OCI-Richtlinien zu starten und zu verwalten, und hat sich aus dem ursprünglichen libcontainer entwickelt.
grpc ist wesentlich für die Erleichterung der Kommunikation zwischen containerd und dem Docker-Engine, um eine effiziente Interaktion sicherzustellen.
Die OCI ist entscheidend für die Aufrechterhaltung der OCI-Spezifikationen für Laufzeit und Bilder, wobei die neuesten Docker-Versionen sowohl den OCI-Bild- als auch den Laufzeitstandard einhalten.
Grundlegende Befehle
Containerd
Containerd wurde speziell entwickelt, um den Anforderungen von Container-Plattformen wie Docker und Kubernetes gerecht zu werden. Es zielt darauf ab, die Ausführung von Containern auf verschiedenen Betriebssystemen wie Linux, Windows, Solaris und anderen zu vereinfachen, indem es betriebssystemspezifische Funktionalitäten und Systemaufrufe abstrahiert. Das Ziel von Containerd ist es, nur die für seine Benutzer erforderlichen wesentlichen Funktionen zu enthalten und darauf zu achten, unnötige Komponenten zu vermeiden. Die vollständige Umsetzung dieses Ziels wird jedoch als herausfordernd angesehen.
Eine wichtige Designentscheidung ist, dass Containerd das Networking nicht handhabt. Networking wird als kritischer Bestandteil in verteilten Systemen betrachtet, mit Komplexitäten wie Software Defined Networking (SDN) und Dienstentdeckung, die von einer Plattform zur anderen erheblich variieren. Daher überlässt Containerd die Netzwerkaspekte den Plattformen, die es unterstützt.
Während Docker Containerd nutzt, ist es wichtig zu beachten, dass Containerd nur eine Teilmenge der Funktionalitäten von Docker unterstützt. Speziell fehlen Containerd die Netzwerkverwaltungsfunktionen, die in Docker vorhanden sind, und es unterstützt nicht die direkte Erstellung von Docker-Schwärmen. Diese Unterscheidung hebt die fokussierte Rolle von Containerd als Containerlaufzeitumgebung hervor, die spezialisiertere Funktionalitäten an die integrierten Plattformen delegiert.
Podman
Podman ist ein Open-Source-Container-Motor, der den Open Container Initiative (OCI) Standards entspricht, entwickelt und gewartet von Red Hat. Es hebt sich von Docker durch mehrere einzigartige Funktionen ab, insbesondere durch seine daemonlose Architektur und Unterstützung für rootlose Container, die es Benutzern ermöglichen, Container ohne Root-Rechte auszuführen.
Podman ist darauf ausgelegt, mit der API von Docker kompatibel zu sein, was die Verwendung von Docker CLI-Befehlen ermöglicht. Diese Kompatibilität erstreckt sich auf sein Ökosystem, das Tools wie Buildah zum Erstellen von Container-Images und Skopeo für Bildoperationen wie Push, Pull und Inspektion umfasst. Weitere Details zu diesen Tools finden Sie auf ihrer GitHub-Seite.
Hauptunterschiede
Architektur: Im Gegensatz zum Client-Server-Modell von Docker mit einem Hintergrunddienst arbeitet Podman ohne Daemon. Dieses Design bedeutet, dass Container mit den Berechtigungen des Benutzers ausgeführt werden, der sie startet, was die Sicherheit erhöht, indem der Bedarf an Root-Zugriff beseitigt wird.
Systemd-Integration: Podman integriert sich mit systemd, um Container zu verwalten, was die Containerverwaltung über systemd-Einheiten ermöglicht. Dies steht im Gegensatz zu Dockers Verwendung von systemd hauptsächlich zur Verwaltung des Docker-Daemon-Prozesses.
Rootlose Container: Ein entscheidendes Merkmal von Podman ist seine Fähigkeit, Container unter den Berechtigungen des initiierenden Benutzers auszuführen. Dieser Ansatz minimiert die Risiken im Zusammenhang mit Container-Verletzungen, indem sichergestellt wird, dass Angreifer nur die beeinträchtigten Benutzerberechtigungen und nicht den Root-Zugriff erlangen.
Podmans Ansatz bietet eine sichere und flexible Alternative zu Docker, wobei die Verwaltung von Benutzerberechtigungen und die Kompatibilität mit bestehenden Docker-Workflows im Vordergrund stehen.
Beachten Sie, dass Podman darauf abzielt, dieselbe API wie Docker zu unterstützen, sodass Sie dieselben Befehle mit Podman wie mit Docker verwenden können, z. B.:
Grundlegende Informationen
Die Remote-API wird standardmäßig auf Port 2375 ausgeführt, wenn sie aktiviert ist. Der Dienst erfordert standardmäßig keine Authentifizierung, was einem Angreifer ermöglicht, einen privilegierten Docker-Container zu starten. Durch die Verwendung der Remote-API kann ein Angreifer Hosts/(Stammverzeichnis) an den Container anhängen und Dateien der Umgebung des Hosts lesen/schreiben.
Standardport: 2375
Enumeration
Manuell
Beachten Sie, dass Sie zur Auflistung der Docker-API den docker
-Befehl oder curl
wie im folgenden Beispiel verwenden können:
Wenn Sie die entfernte Docker-API mit dem docker
-Befehl kontaktieren können, können Sie einen beliebigen der zuvor kommentierten Docker-Befehle ausführen, um mit dem Dienst zu interagieren.
Sie können export DOCKER_HOST="tcp://localhost:2375"
verwenden und die Verwendung des -H
-Parameters mit dem Docker-Befehl vermeiden
Schnelle Privilegieneskalation
Curl
Manchmal sehen Sie 2376 für den TLS-Endpunkt. Ich konnte mich nicht mit dem Docker-Client verbinden, aber es ist möglich, es mit curl zu tun.
Wenn Sie weitere Informationen dazu wünschen, finden Sie weitere Informationen dort, wo ich die Befehle kopiert habe: https://securityboulevard.com/2019/02/abusing-docker-api-socket/
Automatisch
Kompromittierung
Auf der folgenden Seite finden Sie Möglichkeiten, aus einem Docker-Container auszubrechen:
pageDocker SecurityDurch Missbrauch dieser Methode ist es möglich, aus einem Container auszubrechen, einen schwachen Container auf der Remote-Maschine auszuführen, aus diesem auszubrechen und die Maschine zu kompromittieren:
Privilege Escalation
Wenn Sie sich in einem Host befinden, der Docker verwendet, können Sie diese Informationen lesen, um zu versuchen, Berechtigungen zu erhöhen.
Entdecken von Geheimnissen in laufenden Docker-Containern
Überprüfen Sie env (Bereich der Umgebungsvariablen) nach Geheimnissen und Sie könnten finden:
Passwörter.
IPs.
Ports.
Pfade.
Andere... .
Wenn Sie eine Datei extrahieren möchten:
Absichern Ihres Docker
Absichern der Docker-Installation und -Verwendung
Sie können das Tool https://github.com/docker/docker-bench-security verwenden, um Ihre aktuelle Docker-Installation zu überprüfen.
./docker-bench-security.sh
Sie können das Tool https://github.com/kost/dockscan verwenden, um Ihre aktuelle Docker-Installation zu überprüfen.
dockscan -v unix:///var/run/docker.sock
Sie können das Tool https://github.com/genuinetools/amicontained verwenden, um die Berechtigungen zu überprüfen, die ein Container hat, wenn er mit verschiedenen Sicherheitsoptionen ausgeführt wird. Dies ist nützlich, um die Auswirkungen der Verwendung einiger Sicherheitsoptionen zum Ausführen eines Containers zu kennen:
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
Absichern von Docker-Images
Sie können ein Docker-Image von https://github.com/quay/clair verwenden, um Ihre anderen Docker-Images zu scannen und Schwachstellen zu finden.
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
Absichern von Dockerfiles
Sie können das Tool https://github.com/buddy-works/dockerfile-linter verwenden, um Ihr Dockerfile zu überprüfen und alle Arten von Fehlkonfigurationen zu finden. Jede Fehlkonfiguration erhält eine ID, Sie können hier https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md nachlesen, wie Sie jede davon beheben können.
dockerfilelinter -f Dockerfile
Sie können das Tool https://github.com/replicatedhq/dockerfilelint verwenden, um Ihr Dockerfile zu überprüfen und alle Arten von Fehlkonfigurationen zu finden.
dockerfilelint Dockerfile
Sie können das Tool https://github.com/RedCoolBeans/dockerlint verwenden, um Ihr Dockerfile zu überprüfen und alle Arten von Fehlkonfigurationen zu finden.
dockerlint Dockerfile
Sie können das Tool https://github.com/hadolint/hadolint verwenden, um Ihr Dockerfile zu überprüfen und alle Arten von Fehlkonfigurationen zu finden.
hadolint Dockerfile
Protokollierung verdächtiger Aktivitäten
Sie können das Tool https://github.com/falcosecurity/falco verwenden, um verdächtiges Verhalten in laufenden Containern zu erkennen.
Beachten Sie im folgenden Abschnitt, wie Falco ein Kernelmodul kompiliert und einfügt. Danach lädt es die Regeln und beginnt mit der Protokollierung verdächtiger Aktivitäten. In diesem Fall wurden 2 privilegierte Container gestartet, einer davon mit einem sensiblen Mount, und nach einigen Sekunden wurde erkannt, wie in einem der Container eine Shell geöffnet wurde.
Überwachung von Docker
Sie können auditd verwenden, um Docker zu überwachen.
Referenzen
WhiteIntel ist eine von Dark Web angetriebene Suchmaschine, die kostenlose Funktionen bietet, um zu überprüfen, ob ein Unternehmen oder seine Kunden von Stealer-Malware kompromittiert wurden.
Das Hauptziel von WhiteIntel ist es, Kontoübernahmen und Ransomware-Angriffe aufgrund von informationsstehlender Malware zu bekämpfen.
Sie können ihre Website besuchen und ihre Engine kostenlos ausprobieren unter:
Last updated