Москва
+7-929-527-81-33
Вологда
+7-921-234-45-78
Вопрос юристу онлайн Юридическая компания ЛЕГАС Вконтакте

Angriffe auf STP.

Обновлено 06.09.2025 04:40

 

Oleg Petukhov, Rechtsanwalt im Bereich des Völkerrechts und des Schutzes personenbezogener Daten, Spezialist für Informationstechnik sicherheit, Schutz von Informationen und persönlichen Daten.

Telegramm-Kanal: https://t.me/datenschutzmit

Die Gruppe im Telegramm: https://t.me/datenschutzmit1

Website: https://legascom.ru

E-Mail: online@legascom.ru

 

#informationssicherheit #informationssicherheit

Das STP (Spanning Tree Protocol) wurde entwickelt, um zu verhindern, dass Pakete im Netzwerk schleifen, wenn doppelte Routen vorhanden sind. Es funktioniert wie folgt. Zuerst werden die miteinander verbundenen Switches erkannt. Dann wird Root Bridge, Master, Root-Switch ausgewählt. Als nächstes werden die Switch-Ports durch einen speziellen Algorithmus blockiert, der Schleifen in der resultierenden Topologie erzeugt.

Um eine Netzwerkbaumstruktur ohne Schleifen zu erstellen, muss im Netzwerk ein Root-Switch definiert sein, aus dem dieser Baum erstellt wird. Der Switch mit dem niedrigsten Identitätswert wird als Root-Switch ausgewählt. Die Switch–ID ist eine Zahl, die acht Bytes lang ist, die sechs untersten Bytes sind die MAC-Adresse des Steuergeräts, und die beiden höchsten Bytes werden manuell konfiguriert. Dadurch kann der Netzwerkadministrator die Auswahl des Root-Switches beeinflussen. Wenn der Administrator diesen Vorgang nicht eingreift, wird der Root-Schalter zufällig ausgewählt, sodass es sich um ein Gerät mit der minimalen MAC-Adresse des Steuergeräts handelt. Eine solche Wahl kann bei weitem nicht rational sein. Wählen Sie daher basierend auf der vorhandenen Netzwerktopologie einen Root-Switch aus und weisen Sie ihm manuell die kleinste ID zu. Bei automatischer Auswahl wird der Root-Switch mit einem niedrigeren Wert für die MAC-Adresse des Steuergeräts verwendet. Als nächstes wird für jeden Switch ein Root-Port definiert, ein Port, der die kürzeste Entfernung zum Root-Switch im Netzwerk aufweist. Für jedes logische Netzwerksegment wird eine sogenannte designierte Brücke ausgewählt, von der einer der Ports Pakete vom Segment empfängt und über den Root-Port dieser Brücke in Richtung der Stammbrücke weiterleitet.

Was kann ein Angreifer tun? Er kann wie im vorherigen Beispiel so tun, als würde er einen Switch vorgeben, ein BPDU-Paket an den angegriffenen Switch senden, in dem er die Priorität, die MAC-Adresse, fälschen kann, um selbst zum Root-Switch zu werden und damit den Netzwerkverkehr abzufangen. Der Root-Switch ist der mit der höchsten Priorität. Wenn mehrere Switches die gleiche Priorität haben, wird die MAC-Adresse verwendet, um einen Root-Switch auszuwählen, der kleiner ist und zu einer Root-Adresse wird.

Lassen Sie uns eine kleine praktische Arbeit durchführen, um die MAC-Adressen anderer Maschinen zu erkennen und die MAC-Adressen ihrer eigenen zu ersetzen. Dafür brauchen wir wieder einen Wireshark-Sniffer. Sie müssen, wie im Hub-Beispiel, die Überwachung der Netzwerkschnittstelle aktivieren. Erst jetzt werden wir uns nicht für den HTTP-Verkehr interessieren, sondern für STP. Wir müssen die MAC-Adresse des Root-Switches identifizieren. Um diese Informationen zu erhalten, müssen Sie die Netzwerktopologie kennen. Sie können den Wert der MAC-Adresse des Root-Ports mit Wireshark abrufen.

Um Informationen zu den MAC-Adressen zu erhalten, müssen Sie den Wert der Felder Source und Destination im Header des abgefangenen Frames anzeigen. Wir sind an der Quelle interessiert, für die falsche Adresse unseres Schalters geben wir eine kleinere Adresse an, z. B. eine um Eins reduzierte Adresse, wie im folgenden Beispiel.

root@kali:~# macchanger –mac=xx:xx:xx:xx:xx:xx-1 eth0

Current MAC: 00:16:ec:f1:45:e8 (unknown)

Faked MAC: xx:xx:xx:xx:xx:xx (unknown)

Wir werden die Netzwerkschnittstelle neu starten.

root@kali:~# ifdown eth0

root@kali:~# ifup eth0

Internet Systems Consortium DHCP Client V3.1.1

Copyright 2004-2008 Internet Systems Consortium.

All rights reserved.

For info, please visit http://www.isc.org/sw/dhcp/

Listening on LPF/eth0/04:2f:11:65:fc:0a

Sending on LPF/eth0/04:2f:11:65:fc:0a

Sending on Socket/fallback

DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3

DHCPOFFER of 192.168.1.8 from 192.168.1.101

DHCPREQUEST of 192.168.1.8 on eth0 to 255.255.255.255 port 67

DHCPACK of 192.168.1.8 from 192.168.1.101

bound to 192.168.1.8 -- renewal in 42928 seconds.

if-up.d/mountnfs[eth0]: waiting for interface eth1 before doing NFS mounts

if-up.d/mountnfs[eth0]: waiting for interface eth2 before doing NFS mounts

if-up.d/mountnfs[eth0]: waiting for interface ath0 before doing NFS mounts

if-up.d/mountnfs[eth0]: waiting for interface wlan0 before doing NFS mounts

Standardmäßig müssen die Prioritäten identisch sein, dementsprechend wählt STP die Ports mit dem kleinsten MAC für die Route aus.

Der Angreifer muss nun ein BPDU-Paket senden, in dem er seine Switch-ID angeben kann. Die anderen Switches senden ebenfalls ihre IDs als Antwort, und wenn die vom Angreifer gesendete ID den kleinsten MAC enthält, wird sie bei gleicher Priorität als Root ausgewählt.

Sie können ein gefälschtes BPDU-Paket wie folgt erstellen.

Im Paketdesignerfenster von PackEth müssen Sie die MAC-Adressen der Paketquelle und des Empfängers angeben. Sie müssen eine gefälschte Quelladresse angeben.

Das Feld User defi ned network payload enthält die folgenden Werte:

die STA-Protokollversions-ID beträgt 2 Bytes. Die Switches müssen dieselbe Version des STA-Protokolls unterstützen, andernfalls wird möglicherweise eine aktive Konfiguration mit Schleifen eingerichtet;

der Typ BPDU ist 1 Byte. Es gibt zwei Arten von BPDU– eine BPDU-Konfiguration, d. H. Eine Anforderung, ein Root-Switch zu werden, anhand dessen die aktive Konfiguration ermittelt wird, und eine BPDU-Benachrichtigung, die von einem Switch gesendet wird, der ein Ereignis erkannt hat, das eine Rekonfiguration erfordert -

verbindungsfehler, Portausfall, Änderung der Switch- oder Portprioritäten;

flags sind 1 Byte. Ein Bit enthält das Flag zum Ändern der Konfiguration, das zweite das Flag zum Bestätigen der Konfigurationsänderung;

die Root-Switch-ID ist 8 Byte;

die Entfernung zur Wurzel beträgt 2 Bytes;

die Switch-ID ist 8 Byte;

die Port-ID beträgt 2 Bytes;

die Lebensdauer der Nachricht beträgt 2 Bytes. Es wird in Einheiten von 0,5 s gemessen, um veraltete Meldungen zu identifizieren. Wenn ein BPDU-Paket einen Switch durchläuft, fügt das Paket die Latenzzeit für das Paket mit diesem Switch der Lebensdauer hinzu;

die maximale Lebensdauer einer Nachricht beträgt 2 Bytes. Wenn das BPDU-Paket über eine maximale Lebensdauer verfügt, wird es von den Switches ignoriert;

das hello-Intervall, nach dem BPDU-Pakete gesendet werden;

die Zustandsänderungsverzögerung beträgt 2 Bytes. Die Verzögerung bestimmt die minimale Zeit, in der die Ports des Switches in den aktiven Zustand versetzt werden. Diese Verzögerung ist erforderlich, um die Möglichkeit eines vorübergehenden Schleifens zu vermeiden, wenn sich die Portzustände während der Rekonfiguration nicht zeitweilig ändern. Das BPDU-Paket "Rekonfigurierungsbenachrichtigungen" enthält bis auf die ersten beiden Felder keine Felder. Sie können ein erstelltes Paket senden, indem Sie auf Senden klicken.

Wenn wir die MACS der anderen STP-Teilnehmer in den vorherigen Schritten korrekt berechnet haben, sollte der Algorithmus dieses Protokolls die Routen so neu berechnen, dass der gesamte Datenverkehr an unseren gefälschten Port gesendet wird. Um nicht entdeckt zu werden, muss der Hacker sicherstellen, dass der Datenverkehr über seine Maschine weiter an sein Ziel weitergeleitet wird. Da sonst der gesamte Datenverkehr nirgendwo hinführt und die Tatsache, dass der MAC manipuliert wurde, schnell erkannt wird. Wir werden diese Aufgabe jedoch im Rahmen dieses Beitrags nicht lösen.

Welche Maßnahmen müssen ergriffen werden, um diese Sicherheitsanfälligkeit zu beseitigen?

Zuallererst müssen Sie verhindern, dass BPDU-Pakete von Ports geleitet werden, an denen keine Switches vorhanden sind. Und falls ein solches Paket dennoch angekommen ist, den Port in den Shutdown-Modus versetzen. Dann ist es notwendig, unseren Root-Switch zu sichern, damit unter keinen Umständen ein anderer Root-Switch ausgewählt werden kann, einschließlich eines Angreifers. Der Angreifer wird es nicht schwer haben, eine höhere Priorität als der eigentliche Hauptschalter zu setzen, und die MAC-Adresse ist kleiner, um sicherzustellen, dass der Angreifer als root erscheint.

Um dieses Problem zu lösen, müssen wir alle Ports des Switches in einen speziellen STP-Modus versetzen, der portfast genannt wird. Der Client, der mit diesem Port verbunden ist, nimmt dann nicht an der STP-Routenauflösung teil (dies kann sehr lange dauern, bis die Netzwerktopologie 40 Sekunden lang erstellt wird) und beginnt erst dann mit der Übertragung von Benutzerdaten über den Port. Der Portfast-Modus auf Cisco-Switches ist standardmäßig deaktiviert, daher müssen wir ihn manuell konfigurieren. Wenn Sie ein BPDU-Paket erhalten, können Sie den Port auch deaktivieren.

Switch# conf t

Switch (config)# int range f0/1-24

Switch (config-if-range)# spanning-tree portfast

Switch(config)# spanning-tree portfast bpguard default

Switch(config)# int f0/1

Switch (config-if)# spanning-tree guard root

Der Inhalt der ersten beiden Zeilen ist uns aus den vorherigen Beispielen bekannt. Im dritten schalten wir den Portfast-Modus ein. Als nächstes weisen wir darauf hin, dass das Gehen von BPDU-Paketen an diesen Häfen kontraindiziert ist. Und die letzten beiden Befehle werden ausgeführt, um root Bridge zu schützen. Das heißt, wir gehen davon aus, dass ein anderer Switch mit unserem Port f0 / 1 verbunden ist und daher als root verwendet werden muss.

Selbst wenn ein Angreifer nun ein Paket mit höchster Priorität und einer kleineren MAC-Adresse an den BPDU-Switch sendet, kann es immer noch nicht zum Root-Switch werden und den gesamten Datenverkehr über sich selbst umleiten.