mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-31 15:05:44 -08:00
Translated ['.github/pull_request_template.md', 'src/README.md', 'src/pe
This commit is contained in:
@@ -4,16 +4,16 @@
|
||||
|
||||
## Einführung
|
||||
|
||||
In Kubernetes wird beobachtet, dass ein Standardverhalten die Herstellung von Verbindungen zwischen **allen Containern, die sich auf demselben Knoten befinden**, erlaubt. Dies gilt unabhängig von den Unterschieden in den Namespaces. Diese Konnektivität erstreckt sich bis zu **Layer 2** (Ethernet). Folglich könnte diese Konfiguration das System potenziell Schwachstellen aussetzen. Insbesondere eröffnet sie die Möglichkeit, dass ein **bösartiger Container** einen **ARP-Spoofing-Angriff** gegen andere Container, die sich auf demselben Knoten befinden, ausführt. Während eines solchen Angriffs kann der bösartige Container betrügerisch den Netzwerkverkehr abfangen oder ändern, der für andere Container bestimmt ist.
|
||||
In Kubernetes wird beobachtet, dass ein Standardverhalten die Herstellung von Verbindungen zwischen **allen Containern, die sich auf demselben Knoten befinden**, erlaubt. Dies gilt unabhängig von den Namensraumunterschieden. Diese Konnektivität erstreckt sich bis zu **Layer 2** (Ethernet). Folglich könnte diese Konfiguration das System potenziell Schwachstellen aussetzen. Insbesondere eröffnet sie die Möglichkeit, dass ein **bösartiger Container** einen **ARP-Spoofing-Angriff** gegen andere Container, die sich auf demselben Knoten befinden, ausführt. Während eines solchen Angriffs kann der bösartige Container betrügerisch den Netzwerkverkehr abfangen oder ändern, der für andere Container bestimmt ist.
|
||||
|
||||
ARP-Spoofing-Angriffe beinhalten, dass der **Angreifer gefälschte ARP** (Address Resolution Protocol) Nachrichten über ein lokales Netzwerk sendet. Dies führt dazu, dass die **MAC-Adresse des Angreifers mit der IP-Adresse eines legitimen Computers oder Servers im Netzwerk verknüpft wird**. Nach erfolgreicher Ausführung eines solchen Angriffs kann der Angreifer Daten im Transit abfangen, ändern oder sogar stoppen. Der Angriff wird auf Layer 2 des OSI-Modells ausgeführt, weshalb die standardmäßige Konnektivität in Kubernetes auf dieser Ebene Sicherheitsbedenken aufwirft.
|
||||
|
||||
In dem Szenario werden 4 Maschinen erstellt:
|
||||
|
||||
- ubuntu-pe: Privilegierte Maschine, um zum Knoten zu entkommen und Metriken zu überprüfen (nicht für den Angriff benötigt)
|
||||
- **ubuntu-attack**: **Bösartiger** Container im Standard-Namespace
|
||||
- **ubuntu-victim**: **Opfer** Maschine im kube-system Namespace
|
||||
- **mysql**: **Opfer** Maschine im Standard-Namespace
|
||||
- **ubuntu-attack**: **Bösartiger** Container im Standard-Namensraum
|
||||
- **ubuntu-victim**: **Opfer** Maschine im kube-system Namensraum
|
||||
- **mysql**: **Opfer** Maschine im Standard-Namensraum
|
||||
```yaml
|
||||
echo 'apiVersion: v1
|
||||
kind: Pod
|
||||
@@ -102,7 +102,7 @@ Wenn Sie mehr Details zu den hier eingeführten Netzwerkthemen wünschen, gehen
|
||||
|
||||
### ARP
|
||||
|
||||
Allgemein gesagt, **ist die Pod-zu-Pod-Netzwerkverbindung innerhalb des Knotens** über eine **Brücke** verfügbar, die alle Pods verbindet. Diese Brücke wird „**cbr0**“ genannt. (Einige Netzwerk-Plugins installieren ihre eigene Brücke.) Die **cbr0 kann auch ARP** (Address Resolution Protocol) Auflösung durchführen. Wenn ein eingehendes Paket bei cbr0 ankommt, kann es die Ziel-MAC-Adresse mithilfe von ARP auflösen.
|
||||
Allgemein gesagt, ist **Pod-zu-Pod-Netzwerk innerhalb des Knotens** über eine **Brücke** verfügbar, die alle Pods verbindet. Diese Brücke wird „**cbr0**“ genannt. (Einige Netzwerk-Plugins installieren ihre eigene Brücke.) Die **cbr0 kann auch ARP** (Address Resolution Protocol) Auflösung durchführen. Wenn ein eingehendes Paket bei cbr0 ankommt, kann es die Ziel-MAC-Adresse mithilfe von ARP auflösen.
|
||||
|
||||
Diese Tatsache impliziert, dass standardmäßig **jeder Pod, der im selben Knoten läuft**, in der Lage sein wird, mit jedem anderen Pod im selben Knoten (unabhängig vom Namespace) auf Ethernet-Ebene (Schicht 2) zu **kommunizieren**.
|
||||
|
||||
@@ -143,20 +143,20 @@ Wenn Sie die DNS-Adresse innerhalb eines Pods überprüfen, werden Sie etwas wie
|
||||
cat /etc/resolv.conf
|
||||
nameserver 10.96.0.10
|
||||
```
|
||||
However, the pod **weiß nicht**, wie man zu dieser **Adresse** gelangt, da der **Pod-Bereich** in diesem Fall 172.17.0.10/26 ist.
|
||||
Der Pod **weiß jedoch nicht**, wie er zu dieser **Adresse** gelangt, da der **Pod-Bereich** in diesem Fall 172.17.0.10/26 ist.
|
||||
|
||||
Therefore, the pod will send the **DNS-Anfragen an die Adresse 10.96.0.10**, die von cbr0 **in** **172.17.0.2** **übersetzt** wird.
|
||||
Daher wird der Pod die **DNS-Anfragen an die Adresse 10.96.0.10** senden, die von cbr0 **in** **172.17.0.2** **übersetzt** wird.
|
||||
|
||||
> [!WARNING]
|
||||
> Das bedeutet, dass eine **DNS-Anfrage** eines Pods **immer** über die **Brücke** gehen wird, um die **Service-IP in die Endpunkt-IP zu übersetzen**, selbst wenn der DNS-Server im selben Subnetz wie der Pod ist.
|
||||
> Das bedeutet, dass eine **DNS-Anfrage** eines Pods **immer** zur **Brücke** gehen wird, um die **Service-IP in die Endpunkt-IP zu übersetzen**, selbst wenn der DNS-Server im selben Subnetz wie der Pod ist.
|
||||
>
|
||||
> Wenn man das weiß und weiß, dass **ARP-Angriffe möglich sind**, wird ein **Pod** in einem Knoten in der Lage sein, den **Verkehr** zwischen **jedem Pod** im **Subnetz** und der **Brücke** zu **überwachen** und die **DNS-Antworten** vom DNS-Server (**DNS Spoofing**) zu **modifizieren**.
|
||||
> In Anbetracht dessen und der Tatsache, dass **ARP-Angriffe möglich sind**, wird ein **Pod** in einem Knoten in der Lage sein, den **Verkehr** zwischen **jedem Pod** im **Subnetz** und der **Brücke** zu **überwachen** und die **DNS-Antworten** vom DNS-Server (**DNS Spoofing**) zu **modifizieren**.
|
||||
>
|
||||
> Darüber hinaus, wenn der **DNS-Server** im **gleichen Knoten wie der Angreifer** ist, kann der Angreifer **alle DNS-Anfragen** eines Pods im Cluster (zwischen dem DNS-Server und der Brücke) **abfangen** und die Antworten **modifizieren**.
|
||||
> Darüber hinaus kann der Angreifer, wenn der **DNS-Server** im **gleichen Knoten wie der Angreifer** ist, **alle DNS-Anfragen** eines Pods im Cluster (zwischen dem DNS-Server und der Brücke) **abfangen** und die Antworten **modifizieren**.
|
||||
|
||||
## ARP Spoofing in Pods im gleichen Knoten
|
||||
|
||||
Unser Ziel ist es, **mindestens die Kommunikation vom ubuntu-victim zur mysql** zu **stehlen**.
|
||||
Unser Ziel ist es, die Kommunikation von der ubuntu-victim zu dem mysql **zu stehlen**.
|
||||
|
||||
### Scapy
|
||||
```bash
|
||||
@@ -233,11 +233,11 @@ arpspoof -t 172.17.0.9 172.17.0.10
|
||||
```
|
||||
## DNS Spoofing
|
||||
|
||||
Wie bereits erwähnt, wenn Sie **ein Pod im selben Knoten des DNS-Server-Pods kompromittieren**, können Sie **MitM** mit **ARPSpoofing** die **Bridge und das DNS**-Pod **überlisten** und **alle DNS-Antworten ändern**.
|
||||
Wie bereits erwähnt, wenn Sie **einen Pod im selben Knoten des DNS-Server-Pods kompromittieren**, können Sie **MitM** mit **ARPSpoofing** die **Bridge und den DNS**-Pod **manipulieren** und **alle DNS-Antworten** **ändern**.
|
||||
|
||||
Sie haben ein wirklich schönes **Tool** und **Tutorial**, um dies zu testen unter [**https://github.com/danielsagi/kube-dnsspoof/**](https://github.com/danielsagi/kube-dnsspoof/)
|
||||
Sie haben ein wirklich schönes **Tool** und **Tutorial**, um dies zu testen in [**https://github.com/danielsagi/kube-dnsspoof/**](https://github.com/danielsagi/kube-dnsspoof/)
|
||||
|
||||
In unserem Szenario, **laden Sie** das **Tool** im Angreifer-Pod herunter und erstellen Sie eine \*\*Datei mit dem Namen `hosts` \*\* mit den **Domains**, die Sie **überlisten** möchten, wie:
|
||||
In unserem Szenario, **laden** Sie das **Tool** im Angreifer-Pod herunter und erstellen Sie eine \*\*Datei mit dem Namen `hosts` \*\* mit den **Domains**, die Sie **spoofen** möchten, wie:
|
||||
```
|
||||
cat hosts
|
||||
google.com. 1.1.1.1
|
||||
@@ -260,13 +260,13 @@ dig google.com
|
||||
google.com. 1 IN A 1.1.1.1
|
||||
```
|
||||
> [!NOTE]
|
||||
> Wenn Sie versuchen, Ihr eigenes DNS-Spoofing-Skript zu erstellen, wird es **nicht funktionieren**, wenn Sie **nur die DNS-Antwort ändern**, da die **Antwort** eine **src IP** die IP-Adresse des **bösartigen** **Pods** haben wird und **nicht** akzeptiert wird.\
|
||||
> Sie müssen ein **neues DNS-Paket** mit der **src IP** des **DNS** generieren, an den der Opfer die DNS-Anfrage sendet (was etwa 172.16.0.2 ist, nicht 10.96.0.10, das ist die K8s DNS-Service-IP und nicht die DNS-Server-IP, mehr dazu in der Einleitung).
|
||||
> Wenn Sie versuchen, Ihr eigenes DNS-Spoofing-Skript zu erstellen, wird es **nicht funktionieren**, wenn Sie **nur die DNS-Antwort ändern**, da die **Antwort** eine **src IP** die IP-Adresse des **bösartigen** **Pods** haben wird und **nicht** **akzeptiert** wird.\
|
||||
> Sie müssen ein **neues DNS-Paket** mit der **src IP** des **DNS** generieren, an den der Opfer die DNS-Anfrage sendet (was etwa 172.16.0.2 ist, nicht 10.96.0.10, das ist die K8s DNS-Service-IP und nicht die IP des DNS-Servers, mehr dazu in der Einleitung).
|
||||
|
||||
## Capturing Traffic
|
||||
|
||||
Das Tool [**Mizu**](https://github.com/up9inc/mizu) ist ein einfaches, aber leistungsstarkes API **Traffic-Viewer für Kubernetes**, das es Ihnen ermöglicht, **alle API-Kommunikationen** zwischen Mikrodiensten zu **sehen**, um Ihnen beim Debuggen und Beheben von Regressionen zu helfen.\
|
||||
Es wird Agenten in den ausgewählten Pods installieren und deren Verkehrsinfos sammeln und Ihnen in einem Webserver anzeigen. Sie benötigen jedoch hohe K8s-Berechtigungen dafür (und es ist nicht sehr heimlich).
|
||||
Das Tool [**Mizu**](https://github.com/up9inc/mizu) ist ein einfaches, aber leistungsstarkes API **Traffic Viewer für Kubernetes**, das es Ihnen ermöglicht, **alle API-Kommunikationen** zwischen Mikrodiensten zu **sehen**, um Ihnen beim Debuggen und Beheben von Regressionen zu helfen.\
|
||||
Es wird Agenten in den ausgewählten Pods installieren und deren Verkehrsinfos sammeln und Ihnen in einem Webserver anzeigen. Sie benötigen jedoch hohe K8s-Berechtigungen dafür (und es ist nicht sehr stealthy).
|
||||
|
||||
## References
|
||||
|
||||
|
||||
Reference in New Issue
Block a user