Translated ['.github/pull_request_template.md', 'src/README.md', 'src/pe

This commit is contained in:
Translator
2025-01-02 00:01:28 +00:00
parent 4bcd54c1b6
commit c0ee8b41f2
215 changed files with 1371 additions and 1387 deletions

View File

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