Im Zuge meines Praktikums habe ich mich in den letzten zwei Tagen ein wenig mit VLAN Hopping [1] beschäftigt.
Es gibt dabei zwei Arten des VLAN Hopping:
1. Man verbindet sich als Trunk mit einem Port eines Switches welcher entweder selber ein Trunk-Port ist, oder auf Auto/Desirable steht und somit vom Switch zu einem Trunk-Port gemacht werden kann. Klappt dies, hat man Zugriff auf andere VLANs und kann munter Frames durch die Gegend schicken.
2. Man baut sich ein Paket, mit sog. double encapsulation. Sprich: Man sendet als ganz normales Endgerät ein Paket an einen Trunk-/Auto-/Desirable-Port eines Switches, in dem bereits zwei VLAN-Tags vorhanden sind. Das Switch liest das Paket ein und entfernt Tag 1 und wirft das Paket ins zugehörige VLAN. Das nächste Switch nimmt das Paket auf, sieht Tag 2, entfernt es und wirft das Paket in das Ziel-VLAN.
Soweit die Theorie! Ich habe mir zwei Cisco [2] Switches besorgt (2940 und 3500XL) und zwei Rechner und habe alles folgendermaßen konfiguriert:
Rechner 1 -> 2940 -> 3500 -> Rechner 2
Dabei war Rechner 1 in VLAN 5 und Rechner 2 in VLAN 7. Es sollte also keine Kommunikation stattfinden können, da die Rechner sich überhaupt nicht sehen konnten und kein Router im Spiel war.
Während des Tests habe ich mehrere ICMP-Pakete fingiert und zwei VLAN-Tags eingefügt (mit Packeth [3]), es ist allerdings kein Paket zum Zielrechner durchgekommen.
Warum? Nun, das ist ganz einfach zu erklären: Diese ganzen tollen VLAN-Theorien werden schlichtweg ausgehebelt, wenn man als Attack-Rechner nicht an einem Trunk-Port hängt. Da bei meiner Konfiguration DTP [4] abgeschaltet war, mein Verbindungsport zum Switch als festeingestellt ein Access Port war, kam kein einziges Paket durch.
Im Nachhinein habe ich das ganze dann nochmal über einen Trunk-Port getestet und schon kamen meine Pakete durch. Wer also Switche sicher(er) konfigurieren will, legt selber fest, welcher Port welchen Modus hat.
Konfiguriert man normale Ports als Access-Ports, müsste ein Angreifer schon physischen Zugriff auf das Switch haben, um sich auf einen Trunk-Port zu verbinden und das sollte doch in den meisten Fällen sehr unwahrscheinlich sein.
In diesem Zusammenhang sei noch folgendes angemerkt:
Wenn man die Switches konfiguriert, AUF JEDEN FALL Passwörter setzen.
Wenn man das Webinterface zur Konfiguration nicht benötigt, ABSCHALTEN.
Wenn man das Switch remote Verwalten möchte, SSH [5] statt Telnet nutzen.
Benutzt man SNMP [6], dann bitte nicht in Version 1, sondern Version 3.
Nicht benötigte Ports abschalten.
Wenn möglich, MAC-Filter setzen.
So, das war mal mein Wort zum Samstag.
[1]: http://en.wikipedia.org/wiki/VLAN_hopping
[2]: http://www.cisco.com
[3]: http://packeth.sourceforge.net/
[4]: http://en.wikipedia.org/wiki/Dynamic_Trunking_Protocol
[5]: http://en.wikipedia.org/wiki/Ssh
[6]: http://en.wikipedia.org/wiki/Snmp