Switch MAC flooding (fluten)

So nach langer Zeit komme ich endlich wieder dazu, einen Blogbeitrag zu schreiben. Im Moment stehe ich im Abschluss der Informatiklehre und muss darum Prioritäten setzten ;-).

Heute habe ich eine interessante Unterhalten mit jemandem gehabt. Dabei sind wir schnell vom Broadcast auf die MAC-Adresstabelle eines Switches und davon auf MAC flooding gekommen. Damit man das Ganze versteht hole ich ein wenig aus.

Funktionsweise eines Hubs

Wir nehmen an, dass 4 Computer und 1 Webserver an einem Hub angeschlossen sind. Ein Computer greifft nun auf den Webserver zu. Der Hub erhält vom Computer ein Packet, in welchem die MAC-Adresse des Webservers steht. Da der Hub aber keine MAC-Adresstabelle führt, sendet er das Packet aus allen Ports raus. Mit einem Netzwerksniffer, wie zum Beispiel Wireshark, kann somit der Netzwerktraffic von allen 4 Computern inkl. dem Webserver gesnifft werden. Hubs werden heute nur noch selten eingesetzt, da sie unnötig Netzwerktraffic verursachen, sich angeschlossene Geräte die Bandbreite teilen müssen und sie einfach veraltet sind.

Funktionsweise eines Switches

Wir nehmen an, dass 4 Computer und 1 Webserver an einem Switch angeschlossen sind. Ein Computer greifft nun auf den Webserver zu. Der Switch erhält vom Computer ein Packet, in welchem die MAC-Adresse des Webservers steht. Da er den Webserver noch nicht kennt, sendet er das Packet aus allen Ports raus. Der Webserver meldet sich beim Switch, hey das Packet ist für mich, ich habe diese MAC-Adresse. Jetzt kommt der Unterschied zum Hub. Der Switch trägt jetzt die MAC-Adresse des Webserver und den Port in einer MAC-Adresstabelle ein. Kommt wieder ein Packet, in welchem die MAC-Adresse des Webserver steht, weiss der Switch aus welchem Port er das Packet senden muss. Er sendet das Packet nur noch aus dem richtigen Port und nicht mehr aus allen Ports raus. Somit kann der Netzwerktraffic nicht mehr von einem Gerät, dass am Hub angeschlossen ist, gesnifft werden.

Den Switch zu einem Hub machen

Der Speicherplatz des Switches für die MAC-Adresstabelle ist beschränkt. Ist der Speicher voll, werden die ältesten Einträge gelöscht und die Neuen werden eingetragen. Dabei muss ein Packet wieder mindestens einmal aus allen Ports versendet werden, damit der Switch wieder die Zuordung von MAC-Adresse zu Port hat. Flutet man den Switch mit unsinnigen MAC-Adressen, ist die MAC-Adresstabelle ständig voll und Packete müssen wieder an alle im Netzwerk versendet werden, weil die Zuordung von MAC-Adresse zu Port fehlt. Der Switch wird zu einem Hub. Wie bei einem Hub kann der ganze Netzwerkverkehr gesnifft werden.

Praxis

Tja, da das Gesetz in der Schweiz ebenfalls enger wurde werde ich mich hüten, hier eine Schritt für Schritt Anleitung zu erstellen. Schade, hätte ich gerne gezeigt ^^. Wie man aber einen Switch oder ein LAN mit MAC-Adressen fluten kann findet man sehr schnell im Internet und wie man Packete snifft wissen die meisten Leser dieses Blogs ebenfalls ;-). Hier gibt es ein gutes Video, das zeigt, wie bei einem CISCO Switch ein Angriff abgewehrt werden kann: Cisco Layer 3 Switch MAC Flood Attack.

Vorteile und Nachteile des Angriffs

Vorteile

  • Sehr einfach umzusetzen
  • Funktioniert in einfachen Netzwerken wie zum Beispiel Heimnetzwerk
  • Für Lernzweck geeignet

Nachteile

  • Erzeugt starke Last im Netzwerk
  • Angriff wird sehr einfach entdeckt
  • Teurere Switches haben einen grösseren Speicher für die MAC-Adresstabelle
  • Teurere Switches haben diverse Sicherheitsmechanismen um den Angriff abzuwehren

Fazit

Dieser Angriff ist sehr einfach umzusetzen, kann dementsprechend auch sehr einfach erkannt und abgewehrt werden. Flutet man einen Switch mit MAC-Adressen wird dies als Angriff gewertet, also auf keine Fall in einem fremden Netzwerk, sondern nur im eigenen Netzwerk testen.

Ich gehe nach dem Motto, Angriff ist die beste Verteidigung. Nur wenn man Angriffe kennt, kann man diese auch abwehren ;-).

18 Antworten
  1. Domi
    Domi says:

    Hallo,

    ich hab da eine Frage zu dem Beitrag:

    Wenn der Client das erste mal ein Packet an den Server sendet, dann steht da doch im Wesentlichen die IP- Adresse des Servers drin? Die MAC Adresse weiß der Client doch erstmal gar nicht.

  2. Silvan
    Silvan says:

    Eine gute Frage und deine erste Aussage stimmt, es steht die IP im Packet drin ;-).

    Greift der Computer auf den Webserver zu, wird die Anfrage verpackt, von der 1. Schicht bis zur 7. Schicht nach dem ISO / OSI Model. Der Webserver packt die Anfrage dann von der 7. Schicht bis zur 1. Schicht aus (nur so nebenbei). Der Switch, mit welchem ich das MAC flooding getestet habe, ist ein Layer 2 Switch. Er kann mit Layer 1 und Layer 2 umgehen. Wie du geschrieben hast, steht in dem Packet die IP des Webserver drin. IP ist aber im Layer 3 des ISO / OSI Models, das Packet hat also Layer 1 und Layer 2 schon durchlaufen. Die MAC-Adresse gehört zum Layer 2. Es ist also die IP des Webserver und die MAC-Adresse vorhanden.

    Hat dir die Antwort weitergeholfen?

    Gruss
    Silvan

  3. Lord_Pinhead
    Lord_Pinhead says:

    @silvan
    Vielleicht solltest du noch erwähnen, das billighoster von Dedizierten Servern solche schlechten Switche verwendet (hier in DE ist es z.B. Server4you) und ein Kunde kann den Traffic von seinen „Nachbarn“ problemlos mithören. Hab ich dort schon bemängelt und einziger Hinweis war, das es illegal sei und gegen die AGB – Technisch kann so etwas vorkommen meinte man. Aber die Switche sind überlastet und wechseln in den Hub-Modus – ngrep oder tcpdump sind bei mir Wochenlang gelaufen und haben massenhaft Zugänge für HTTP, FTP und POP3 abgegriffen. Das ist die Gefahr dieser billig Switche und für Leute, die denken so etwas ist nur ein Laborversuch: Das war eben ein Beispiel aus dem Leben. Bin froh von dort weg zu sein 🙂

    Und selbst mit solchen Gesetzen würde ich so etwas schreiben 😉 Schlimmer als in Deutschland wird es schon nicht sein und ich nehme kein Blatt vor dem Mund – Nicht solange PCWelt und co. Anleitungen zum illegalen Filmdownload in Ihr Magazin packt.

    Zum Angriff:
    An sich benötigt man nur Perl und ca 30 Zeilen Code für deinen Flood um ein komplettes Netz zum erliegen zu bringen.

    Wer mal ein Windosen Netz (Bitte wirklich vom Produktionsnetz abgetrennt PHYSISCH!!) lahmlegen will, der sucht mal nach „blarp.pl kokanin@gmail dot com 20070604“. Sehr einfaches Script mit dem man einen Test seines Netzwerks machen kann, ob ein Switch einen solchen Sturm überstehen oder gar filtern kann. An sich werden unglaublich viele Mac Adressen per Zufall generiert und via Broadcast ins Netz geballert. Reicht aus um ein Windows 7 Rechner zum stehen zu bringen, weil er tausende Pakete verarbeiten muss. Zuletzt getestet November 2010.

    Abwehr:
    Wer sich nicht unbedingt einen super teuren Switch kaufen möchte, holt sich einen Linux basierenden Switch (ca 2000 Euro 32 oder 64 Port 1Gbit gegenüber Cisco Switche für 5000-7000 Euro) und für jeden Port (erscheint als eth0-eth63) kann man dann, mit einer iptables Regel diese Stürme schnell blockieren:

    iptables -A INPUT -i ethx -p tcp -m mac –mac-source !aa:bb:cc:dd:ee:ff -m state –state NEW -j DROP

    Einfach Mac und Port (-i ethx) anpassen über einen Manager und ein Macsturm auf dem Switch bleibt ohne folgen. Wer hier etwas Arbeit und Grips steckt, der kann sogar eine Portüberwachung einbauen und zuviel Einträgen für z.B. eth5 kann die Überwachung dann den Port für 30 sek. komplett deaktivieren (ifconfig eth5 down && sleep 30 && ifconfig eth5 up). Gibt einiges was man da machen kann, das mit HP oder Cisco nicht möglich ist.

    Nachteil: Ihr müsst 100% wissen wer (mit welcher MAC) an welchem Port hängt (Upload Links dürfen nicht gefiltert werden). Also eine kleine Datenbank über das Rechnerinventar ist unerlässlich.

    Vorteil: Stateful-Packetfiltering für alle Rechner und damit ein extrem sicheres Netz. Kein Virus kann sich schnell mal verbreiten weil keine Ports offen.

    Features wie VPNs direkt im Switch, SNMP überwachung, 802.1x Authentifizierung oder Konfiguration mittels cfengine sind eigentlich nur noch die Spitze des Eisberges.

    Bin Fan geworden von den Dingern. Leider gibt es nur noch relativ teure Embedded Hersteller die diese Switche anbieten und nicht für wenig Geld. Dafür offene Firmware und Clustering Möglichkeiten wie die ganz großen im Bladecenter Umfeld 😉

    „Bastel“ ich mir so etwas für kleine Unternehmen – ein paar Intel 4 oder 8 Port Ethernet Karten in einen Rechner, ein Linux als System drauf auf 2 CF Karten im Raid1 (alternativ PXE Boot) – fertig. Mit einem guten Regelwerk verpuffen die ganzen bekannten Angriffe ins nichts.

    War wieder mehr als ich dazu sagen wollte, aber vielleicht findet der eine oder andere es ja interessant 😀

    So long
    Lord_Pinhead

  4. Frankenstein91
    Frankenstein91 says:

    Also deine Methode ist ja schon fast eine DOS-Attacke soviel Last erzeugt das. Ein einfaches ARP-Spoofing würde es auch tun um das Netzwerk zu sniffen.

    DOSen kann man mit einem LAN-Kabel (und Zugang zum Switch) mehr braucht man nicht.

  5. Silvan
    Silvan says:

    @ Frankenstein91
    Jo du hast Recht, ist kein optimaler Angriff, ein ARP-Spoofing reicht vollkommen aus hehe.

  6. Silvan
    Silvan says:

    @Lord_Pinhead
    Zum Ersten:
    Das ist echt traurig, dass sowas passiert, dürfte nicht passieren! Wusste nicht, dass es das so gibt in einem Rechenzentrum lol.

    Zum Zweiten:
    Ja, ich hätte durchaus eine Anleitung schreiben können, ich möchte aber nicht unnötig provozieren. Sind wir ehrlich, die meisten Leser dieses Blogs haben derartige Angriffe eh schon einmal zum Testen durchgeführt ;-).

    Zum Dritten:
    Danke für den Hinweis auf das Script. Hier habe ich noch etwas dazu gefunden: http://www.securityfocus.com/bid/25066/info, dort wird ebenfalls das Script zur Verfügung gestellt.

    Zum Vierten:
    Wusste nicht dass es solche Linux Switches gibt, interessant. Diese haben dann doch einen recht grossen Funktionsumfang. Möglich wäre zum Beispiel auch, dass man den Switch so konfiguriert, dass wenn über einen Port mehr als 100 unterschiedliche MAC-Adressen gehen, der Port abgeschaltet wird. Mit einem Rechner und einem Linux OS lassen sich bestimmt schöne Sachen realisieren :D, dies geht dann aber weit über den Funktionsumfang eines Switches hinaus, macht aber bestimmt Spass :D.

    „War wieder mehr als ich dazu sagen wollte, aber vielleicht findet der eine oder andere es ja interessant :D“.
    Danke für deinen ausführlichen Kommentar. Solche Kommentare sind mehr als erwünscht in diesem Blog!

    Gruss
    Silvan

  7. Frank
    Frank says:

    Naja es beste ist immer noch nen Kreis legen mit nem LAN-Kabel und dann nen Ping an den Broadcast

  8. Frank
    Frank says:

    naja die meisten Netzwerke kann man nicht schützen da zum Schutz alle Geräte(Router usw.) das Spanning Tree Protocol beherrschen müssen

  9. Silvan
    Silvan says:

    Naja, es gibt kluge Switches die sagen, hey wenn mehr als z.B. 100 MAC Adressen über einen Port kommen schalte ich den Port ab. Dann muss ein Techniker den Fall analysieren und deckt den Angriff schnell auf. ^^

  10. Frank
    Frank says:

    genau deshalb bevorzuge ich es einfach eine Schleife zu erzeugen im Netzwerk.

  11. Frank
    Frank says:

    naja ich teste es net mehr in meinen Netz mir ist ein Switch gestorben nach 5h Dauerstorm

  12. lousek
    lousek says:

    Eine weitere sehr schöne Möglichkeit bei z.B. CISCO-Switches ist die Möglichkeit, um bei einer bestimmten Anzahl Broadcasts oder Multicasts (z.B. 10% des Anschlusses oder 5MBit/s oder so) eine Aktion auszuführen. Dies kann beispielsweise sein, dass der Port komplett abgeschaltet wird und / oder dass das Eregnis gelogt wird.
    Weiter kann dieser Port dann nach z.B. 120 Sekunden automatisch wieder aktiviert werden …

    Noch zu der Antwort von Silvan an Domi:
    Wie bereits gesagt: MAC-Adressen werden auf dem ISO/OSI-Layer 2 verwendet, die IP-Adressen auf dem ISO/OSI-Layer 3.
    Sendet man jetzt vom z.B. Heimnetzwerk eine Anfrage an einen Webserver im Internet, so steht im Packet zwar die IP-Adresse des Webservers (der Router / Gateway muss ja wissen, wohin das Paket soll), aber es steht NICHT die MAC-Adresse des Webservers drin, sondern die MAC-Adresse des Routers!!!
    Die MAC-Adressen (Layer 2) werden nur zur Kommunikation innerhalb des selben (=physikalischen) Netzwerkes verwendet, die IP-Adressen werden netzwerkübergreifend (=logisch) verwendet!

    Wegen dem Kabel-Loop … jeder etwas bessere Switch kann das heute erkennen und die betreffenden Ports deaktivieren 🙂

  13. Frank
    Frank says:

    also bei mir hat es bis jetzt nur einmal nicht geklappt mit dem loop und das ist bei meiner Fritzbox mit Freetz Firmware

Hinterlassen Sie einen Kommentar

Wollen Sie an der Diskussion teilnehmen?
Wir freuen uns über ihren Beitrag!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *