Sicherheit in 802.11-Netzwerken - Fakultät für Mathematik und
Transcription
Sicherheit in 802.11-Netzwerken - Fakultät für Mathematik und
Sicherheit in 802.11-Netzwerken WEP, WPA und 802.11-Standards Studienarbeit Friedrich-Schiller-Universität Jena vorgelegt von Alexander Gottschalk Oktober 2005 Abstract Im Rahmen dieser Studienarbeit soll die Entwicklung der Netzwerksicherheit im WLAN-Standard 802.11x beschrieben werden. Explizit soll dabei auf Schwachstellen der existierenden Sicherheitsprotokolle WEP und WPA eingegangen werden. Als praktischer Anteil der Studienarbeit ist die Implementierung eines Angriffs auf die WEP-Verschlüsselung vorgesehen. 2 Inhaltsverzeichnis Einleitung 1 Theoretische Grundlagen.................................................... 6 1.1 Standards....................................................................................... 6 802.11 6 802.1x 6 1.2 Sicherheit........................................................................................ 7 Schutzziele 7 PRNG & PRF 7 Verschlüsselung (RC4, TKIP, Michael, CCMP) 8 Angriffe 10 1.3 Sicherheitsmaßnahmen................................................................ Standardintegriert WEP Erweiterungen (WEPPlus, FPK, WEP2) WPA RSN Zusätze (VPN, IPSec, SSL, SSH) 11 11 12 14 15 17 17 1.4 Authentifizierung......................................................................... 802.1x EAP & RADIUS Authentifizierung jenseits der MAC-Schicht 19 19 19 22 2 Praktische Anwendung...................................................... 23 Programmdokumentation Offene Netze am Studienstandort Angriff auf ein WEP-geschütztes Netz Aufspüren von Angreifern im eigenen Netz 23 25 26 27 3 Rechtliche Grundlagen.................................................... 28 3 4 Fazit............................................................................... ....... 30 5 Abkürzungen................................................................ ....... 32 6 Glossar.................................................................................. 34 7 Literaturverzeichnis............................................................ 35 Anhang Sniffer.java Filter.java 4 Einleitung In den vergangenen Jahren hat Wireless LAN mehr und mehr an Bedeutung gewonnen, sei es aus Bequemlichkeit im privaten Haushalt, aus Unkompliziertheit und Kabelfreiheit am Arbeitsplatz oder aus Unabhängigkeit unter freiem Himmel. Immer mehr Menschen greifen auf die Funkvariante der PC-Vernetzung zurück. Doch mit der steigenden Anzahl der Nutzer wuchs auch die Zahl der Angreifer, Trittbrettfahrer und Saboteure. Diese Arbeit soll in drei Kapiteln einen Einblick in die Sicherheit in Wireless LANs geben. Im ersten Kapitel werden die theoretischen Grundlagen erläutert, von den zugrunde liegenden Algorithmen bis hin zu den neuesten Sicherheitsstandards. Dabei wird auf Schwachstellen eingegangen und Lösungsmöglichkeiten aufgezeigt. Das zweite Kapitel dient der Implementierung eines Angriffs auf ein WEPgeschütztes Netzwerk. Hierzu wurde ein Tool in Java entworfen, welches auf dem Fluhrer-Martin-Shirman-Angriff basiert. Das letzte Kapitel zeigt die Rechtsgrundlagen bei Wireless LANs, was zu tun ist wenn man Opfer eines Angriffs wurde und was einen als Schwarzsurfer oder Saboteur erwarten kann. All dies soll beim Einrichten eines kabellosen Netzwerks helfen und als Rahmeninformation für Wireless LANs dienen. 5 1 Theoretische Grundlagen 1.1 Standards 802.11 Dieser Standard bildet die Grundlage aller Wireless LANs. Er wurde 1997 verabschiedet und 2 Jahre später überarbeitet. Er beinhaltet die Definition eines kabellosen Netzwerkes mit den Mitteln der bekannten kabelgebundenen Variante. Die ursprüngliche Definition von 802.11 beschrieb eine Übertragungsrate von 1 MBit/s. Momentan gibt es drei Substandards 802.11 a, b und g, sowie die Erweiterungen 802.11 d, e, f, h, i und j, wobei ständig neue hinzukommen (Stand Januar 2005). 802.11a arbeitet auf dem 5-GHz-Band, während 802.11b und 802.11g das 2,4-GHz-Band zur Übertragung nutzen. Die Erweiterungen sorgen für mehr Kompatibilität und Sicherheit sowie für Geschwindigkeitsverbesserungen. 802.11i ist die wichtigste Erweiterung, die Sicherheit betreffend. Sie beschreibt verschlüsselte Übertragung mit Hilfe des Temporal Key Integrity Protocol (TKIP) und dem Advanced Encryption Standard (AES). 802.1x Dieser Standard gehört nicht direkt zur 802.11-Familie, spielt aber in Verbindung mit bestimmten Authentifizierungsmethoden eine große Rolle. Er beschreibt die portbasierte Authorisierung und die Portsicherung in Netzwerken mithilfe eines Remote Authentication Dial In User Service (RADIUS) und dem Extendible Authentication Protocol (EAP). Wo genau die einzelnen Standards im ISO-OSI-Referenzmodell angesiedelt sind, zeigt Abbildung 1.1. Upper Layers 802.1x Data Link Layer 802.11i 802.11a 802.11b 802.11g Physical Layer Abbildung 1.1. IEEE-Standards im ISO-OSI-Modell 6 1.2 Sicherheit Schutzziele Für die eben erwähnten Standards wie auch für alle anderen Netzwerke werden bestimmte Schutzziele gesetzt, die es zu erreichen gilt. Die wichtigsten sind Vertraulichkeit, Zugangskontrolle, Datenintegrität und Anonymität. Vertraulichkeit bedeutet, die Daten vor dem Zugriff Dritter zu schützen und die Geheimhaltung aller Informationen zu wahren. Hierzu ist es notwendig, den Datenverkehr mit kryptographischen Verfahren zu verschlüsseln. Zugangskontrolle oder Authentizität soll gewährleistet sein, sodass angeforderte Daten nur von authorisierten Nutzern stammen und auch nur authentifizierte Clients Netzzugang bekommen. Integrität bedeutet, dass alle angeforderten Daten manipulationsfrei übertragen und empfangen werden. Damit in Verbindung steht die Anonymität, wobei alle Netzwerkteilnehmer sowohl untereinander als auch nach außen unerkannt bleiben sollen. Um die Schutzziele zu erreichen und die Sicherheit zu gewährleisten wurden neue Algorithmen entwickelt oder bereits anderweitig genutzte integriert. PRNG & PRF Pseudo Random Number Generators (PRNG) dienen der Erzeugung von Zufallszahlen. Der Automat arbeitet deterministisch, die Zahlen sollten gleichverteilt sein. Somit sollen Rückschlüsse auf den Eingabestrom oder die verwendeten Schlüssel unmöglich sein oder zumindest erschwert werden. Er findet bereits bei WEP Anwendung, wurde aber auch in anderen Verschlüsselungsverfahren integriert. Aufgrund seiner Linearität wurden aber, gerade in Verbindung mit WEP, einige Schwächen bekannt, die trotz aller Mühen dennoch Rückschlüsse auf die Eingabe zuließen. Somit versuchte man, in neueren Verfahren das Schlüsselmanagement in anderer Weise zu unterstützen. Hier kommen Pseudo Random Functions (PRF) zum Einsatz. Diese produzieren einen n Bit langen Ausgabestrom, der keine Rückschlüsse mehr auf die Eingabe zulässt. Eine solche Funktion arbeitet mit Hashfunktionen (Hash Message Authentication Code HMAC) und dem Secure Hash Algorithm SHA-1, von dem jedoch vor kurzem bekannt wurde, dass er geknackt wurde (heise.de Newsticker 56428). Die Eingabe der Funktion ist abhängig von einem Schlüssel K, einer Bytefolge B bestehend aus MAC-Adresse und Zeitangabe und einer Funktionsbeschreibung A. (PRF (B,A,K) = wn). Diese Eingabe wird nun in einen Algorithmus gegeben, der intern solange rekursiv eine Hashfunktion aufruft, bis die ge7 wünschte Bytelänge n des Outputs erreicht oder überschritten wird. Dieses Verfahren kommt beispielsweise beim Robust Security Network (RSN) zum Einsatz. Verschlüsselung (RC4, TKIP, Michael, CCMP) Die Verschlüsselung selbst übernehmen bestimmte Algorithmen, die hauptsächlich extra für WLANs entwickelt worden sind. RC4 ist ein Strom-Chiffrier-Algorithmus mit variabler Schlüssellänge, der beispielsweise bei Wired Equivalent Privacy (WEP) und Secure Sockets Layer (SSL) integriert ist. Er ist einfach aufgebaut, leicht zu implementieren und sehr schnell. Er basiert auf einer 8x8-Box S0..S255, gefüllt mit Permutationen von 0 bis 255, die vom Schlüssel erzeugt werden. Für die Initialisierung der Box wird sie zuerst linear gefüllt und dann über einen Array mit dem Schlüssel verknüpft (K0..K255): j=0 for i = 0 to 255 do j = (j + Si + Ki) MOD 256 swap Si AND Sj Schlüsselstromerzeugung: i=0 j=0 i = (i + 1) MOD 256 j = (j + Si) MOD 256 swap Si AND Sj t = (Si + Sj) MOD 256 K = St // K ist nächstes Schlüsselstrom-Byte Æ Vorgang wird für die restlichen benötigten Bytes wiederholt Das Temporary Key Integrity Protocol (TKIP) umschließt WEP und ergänzt es um einige Features, die die Schwächen von WEP ausräumen sollen. Der Algorithmus Michael ist ein kryptographischer Message Authentication Code (MAC) um gefälschten Paketen vorzubeugen. Der MichaelSchlüssel ist 64 Bit lang, besteht aus zwei 32 Bit Teilen T0 und T1. Die tagging-Funktion füllt die erste Nachricht mit 0x5a und Nullen, zerlegt sie dann in Teilwörter P1 .. Pn und berechnet den Tag mit folgendem Algorithmus: 8 (L, R) Å (T0, T1) for i=1 to n do L Å L xor Pi (L, R) Å b(L, R) tion return (L, R) // b ist Funktion: Tausch, Addition, Rota// als Tag Die Initializationvector-Sequenz (IV-Sequenz) verhindert ReplayAttacken. Sie beschreibt einen einfachen Sequenzzähler, der jedem Paket einen neuen IV zuweist. Pakete mit bereits verwendeten IVs werden verworfen. Key-Mixing soll die Schwäche im RC4 beheben, indem für jedes Paket ein neuer Schlüssel generiert wird. Diese Schlüsselsequenz beinhaltet einen mit der MAC-Adresse verknüpften Teil und einen aus der Sequenznummer resultierenden Teil. Dieser geht dann in die WEP-Verschlüsselung ein. Der Re-Keying-Mechanismus sorgt für regelmäßig neue Schlüssel. 802.1x übernimmt hierbei das Update der Schlüssel mit bestimmten RekeyNachrichten-Paketen und der Authentifizierungsserver die Verteilung der Schlüssel. Michael ist ein in WPA integrierter Hash-Algorithmus, der einen 8-ByteIntegritätscode, den sogenannten Michael Integrity Check (MIC), berechnet. Er wird zwischen Datenteil und IV in das Paket eingebunden und dann zusammen mit den gesamten Daten und dem ICV verschlüsselt. Außerdem verhindert er IV-Wiederholungen, indem er einen anderen Zähler verwendet (siehe Kapitel zu WPA). Counter-Mode Cipher Block Chaining Message Authentication Code Protocol (CCMP) hingegen ist ein neues, eigenständiges Protokoll, völlig fremd zu WEP. Es wird nur ein 128 Bit langer Schlüssel benutzt. Dieser wird mithilfe von 802.1x gesetzt. Die Verschlüsselung erfolg mit CCM, ebenso der Schutz vor gefälschten Paketen. CCM selbst benutzt AES, welcher als Eingabe einen 128 Bit Block benötigt. AES ist ein BlockchiffreAlgorithmus, bei dem jeder Block in eine Tabelle mit 4 Zeilen geschrieben wird, jede Zelle beschreibt ein Byte. Nun wird jeder Block in zehn Runden transformiert, hierbei werden Teile des Schlüssels auf den Klartext angewendet. Eine sogenannte Substitutionsbox (S-Box), fest im Algorithmus verankert, beschreibt, welches Byte wie getauscht wird. Dies ist jedoch nur Grundlage für bestimmte Prozeduren, die in AES verwendet werden. Der gesamte Verschlüsselungsvorgang besteht aus zwei Phasen: der Schlüsselexpansion und den Transformationsrunden. Die Schlüsselexpansion zerlegt den Schlüssel in 11 Teilschlüssel und transformiert ihn mithilfe 9 verschiedener mathematischer Algorithmen und XOR-Verknüpfung mit der S-Box in das Format, das für die weitere Verwendung benötigt wird. In Runde 1 wird nur die Methode KeyAddition(), welche die aktuelle Rundenzahl mit dem Block XOR-verknüpft, aufgerufen. In den Runden 2-9, den sogenannten Verschlüsselungsrunden werden zuerst die Bytes des Blocks mit den äquivalenten Bytes aus der S-Box getauscht (Substitution()). Dann werden die Spalten in einer bestimmten Reihenfolge verschoben (ShiftRow()). Abschließend werden die Spalten vermischt (MixColumn()) und erneut KeyAddition aufgerufen. In der letzten Runde wird auf das Vermischen der Spalten verzichtet, der Rest ist wie in den vorhergehenden. Die Entschlüsselung erfolgt genau entgegengesetzt, jedoch mit einer anderen SBox, die aus der entgegengesetzten berechnet wird. Angriffe Trotz dieser Algorithmen und Verfahren sind die verschiedensten Angriffe im Bereich der Funknetzwerke bekannt geworden und implementiert worden. Die häufigsten seien hier erwähnt. Die Brute-Force-Methode beruht auf dem simplen Durchprobieren aller möglichen Schlüssel. Die Reihenfolge wird gegebenenfalls nach der Wahrscheinlichkeit ausgewählt und zielt auf die Verwendung eines schwachen Passworts. Wörterbuch-Attacken versuchen, ein gegebenes Passwort mithilfe einer Passwortliste zu knacken. Diese Methode kommt zum Einsatz wenn man davon ausgehen kann, dass das Passwort aus einer sinnvollen Zeichenkombination besteht. Die Passwortlisten werden von einem speziellen Programm zur Verfügung gestellt und können um eigene Einträge erweitert werden. Vorteil davon ist, dass es wesentlich einfacher und schneller umzusetzen ist als die Brute-Force-Methode, da wesentlich weniger Werte durchlaufen werden müssen und die wahrscheinlichsten Werte bereits berücksichtigt sind. Der Nachteil ist die Abhängigkeit des Erfolgs von der Passwortliste. Selbst mit der größten Passwortliste müssen lange nicht alle Wörter abgedeckt sein, sodass dieser Angriff eventuell nicht von Erfolg gekrönt ist. Bei der Known-Ciphertext-Attacke versucht ein Angreifer mithilfe eines ihm bekannten Geheimtextes Schlüsse auf den Klartext oder den Schlüssel zu schließen. Bei Known-Plaintext-Attacken besitzt der Angreifer Geheimtexte und dazugehörigen Klartexte. Beide werden benutzt, um den Schlüssel zu ermitteln. Der bekannteste ist wohl der Man-In-The-Middle-Angriff. Hier hat der Angreifer komplette Kontrolle über den Datenverkehr fremder Netze und kann die Informationen nach Belieben einsehen und manipulieren. Dies 10 kann erreicht werden, indem man sich als Router oder Zwischenstation ausgibt und dann unerkannt authorisiert wird, am Datenverkehr teilzunehmen. Eine völlig neue Art von Angriff ist die sogenannte Denial-of-ServiceAttacke (DoS). Sie hat das Ziel, einen oder mehrere Dienste arbeitsunfähig zu machen. Meist geschieht das durch Überlastung. Eine Art des Angriffs nutzt beispielsweise die in 802.11 integrierte Kollisionsverhütung CSMA. Der Angreifer signalisiert mithilfe einer manipulierten WLAN-Karte, dass die Kanäle im Netz belegt sind, die Kommunikation kommt zum Erliegen. Deauthentication Flooding wird von einigen Tools wie void11 implementiert und meldet bereits angemeldete Clients beim AP wieder ab. 1.3 Sicherheitsmaßnahmen Standardintegriert Um den Angriffen vorzubeugen oder gar entgegenzuwirken, wurden verschiedene Sicherheitsmaßnahmen in IEEE 802.11 integriert, die jedoch nur ein minimales Niveau an Sicherheit gewährleisten, aber auf keinen Fall einen ausreichenden Schutz bieten. Die MAC-Adresse beschreibt die physische Adresse einer Netzwerkkomponente. Access Points bieten die Möglichkeit einer Zugangskontrolle über diese Adressen, sodass der Administrator einen MAC-Adressenfilter einrichten kann, der nur bestimmte Clients authorisiert. Da jedoch ein Angreifer mit Kenntnis einer zugelassenen MAC-Adresse und bestimmten Tools diesen Filter umgehen kann, ist dringend davon abzuraten, sich allein darauf zu verlassen. Auch der eingebundene Service Set Identifier (SSID) ist eher eine Gefahrenquelle als eine Sicherheitsmaßnahme. Dieses Feature bietet dem Administrator die Möglichkeit, dem WLAN einen Namen zuzuordnen. Dieser sollte unbedingt nach außen unsichtbar gemacht werden. Viele APs bieten die Möglichkeit, das Senden der SSID auszuschalten. Ein Client, der nicht dem Netz zugehörig ist, kann beim Anmelden entweder den Namen angeben, wenn er ihn kennt oder er wählt die Einstellung „any“, sodass jedes Netz ansprechbar ist. Ist die Übertragung der SSID ausgeschaltet, ist es schon ein wenig schwerer, das Netz zu finden. Man sollte jedoch die voreingestellten Werte der Anbieter wie etwa „default“ oder „wlan“ durch eigene Namen ersetzen, da sonst ein Angreifer mit ein wenig Glück trotzdem das Netz findet. Der bekannteste Bestandteil ist wohl die WEP-Architektur, der jedoch aufgrund des Umfangs ein eigenes Kapitel gewidmet wird. 11 WEP Basis des Wired Equivalency Protocol ist ein Schlüssel, der allen erwünschten Kommunikationspartnern übermittelt wird. Er ist je nach Wahl des Verfahrens (WEP64, WEP128, WEP256) 40, 104 oder 232 Bit lang. Nur mit diesem Schlüssel ist der uneingeschränkte Zugang zum Netz möglich, die Verschlüsselung eines Strings besteht aus Plain-Text, dem Schlüssel und dem 24-Bit-langen Initialisierungsvektor (IV). Die Dekodierung der empfangenen Daten erfolgt nach demselben, lediglich umgekehrten Schema wie bei der Codierung, der Schlüssel ist bei beiden Richtungen derselbe, womit WEP ein symmetrisches Verfahren ist. [AG04] Zusätzlich kann WEP in zwei Modi genutzt werden: Open und Shared Key. Open bedeutet, dass auf eine Authentifizierung verzichtet wird, Shared Key stützt sich auf ein Challenge-Response-Verfahren, bei dem der Client gegenüber dem AP authentisiert wird. Dabei generiert der AP einen zufälligen 128 Bit Datenstrom und sendet ihm unverschlüsselt an den Client (Challenge). Der Client verschlüsselt dann die Challenge und sendet sie an den AP (Response). Kann dieser dann die Response entschlüsseln, ist der Client erfolgreich authentisiert. Abbildung 1.2 Verschlüsselung bei WEP Die Hauptprobleme dieser Verschlüsselung liegen zum einen beim IV, der bei WEP128 lediglich 24 Bit lang ist und sich somit nach relativ kurzer Zeit wiederholt, da es nur 224 Möglichkeiten für ihn gibt. Zum anderen existieren sogenannte schwache Schlüssel, die eine schwächere Verschlüsselung nach sich ziehen, indem einzelne Verfahrensschritte unwirksam gemacht werden. Meist sind dies vergleichsmäßig wenige, die jedoch ohne Aussortierung Angreifern ein gutes Ziel bieten. 12 Die eingebaute CRC-Prüfsumme, die ursprünglich nur zur Fehlererkennung gedacht war, bietet ebenfalls keinen ausreichenden Schutz gegenüber Manipulationen. Aufgrund der linearen Form von Prüfsumme und RC4, ist es möglich, kontrollierte Änderungen an den übertragenen Daten vorzunehmen, ohne die Prüfsumme zu verletzen. Die Authentifizierung selbst beinhaltet ebenfalls einige Angriffspunkte. Zunächst besteht das Problem, dass sowohl bei der Authentifizierung als auch bei der Datenübertragung selbst derselbe Schlüssel verwendet wird. Somit ist bei einem erfolgreichen Angriff auf einen der beiden Abläufe auch der andere entschlüsselt. Es sollte also eine Schlüsselunabhängigkeit gewährleistet sein. Der zweite Schwachpunkt liegt im Ablauf der Authentifizierung. Schneidet ein Angreifer den kompletten Vorgang mit, kann er sich dann mit einer einfachen XOR-Berechnung selbst authentifizieren (Abbildung 1.3.). Außerdem läuft die Authentifizierung nur einseitig ab, APs müssen dies nicht tun. Somit ist kein Schutz vor wilden APs gegeben. Response 1 = Challenge 1 XOR Key Angreifer erlauscht Response 1, Challenge 1, IV Berechnung: Challenge 1 XOR Response 1 = Challenge1 XOR (Challenge 1 XOR Key) = Key IV und Key gültige Kombination Æ Response 2 = Challenge 2 XOR Key Abbildung 1.3. Angriff auf WEP-Authentifikation 13 Der erste offizielle Angriff auf WEP wurde von Fluhrer, Martin und Shamir beschrieben [FMS01]. Diese fanden in einer Studie heraus, dass der Algorithmus zwei grundlegende Schwächen aufweist: zum einen die sogenannte Invariance Weakness, welche eine große Anzahl schwacher Schlüssel beschreibt, bei deren Einsatz wenige Schlüsselbits die ersten RC4-Ausgabe-Bytes überproportional stark beeinflussen. Die zweite Schwachstelle, IV Weakness, betrifft die Art der Verschlüsselung. Zum einen wird ein Teil des geheimen Schlüssels, der um den wechselnden IV ergänzt wird, konstant gehalten. Zum anderen werden Teile dieses IVs mithilfe des WEP-PRNG unverschlüsselt übertragen. Wird all dies von einem Angreifer abgefangen, ermöglicht ihm die Auswertung der jeweils ersten Output-Bytes mit minimalem Aufwand die Rekonstruktion des geheimen Schlüssels. Des weiteren fehlt bei WEP die Möglichkeit des dynamischen Schlüsselaustauschs. Sollte man also WEP verwenden, ist es ratvoll, den Schlüssel stetig zu erneuern, um Angreifern kein gutes Ziel bieten zu können. Aktuelle Tools jedoch gelingt in wenigen Sekunden mit genügend mitgeschnittenen Paketen (~200'000 – 500'000) die Bestimmung des geheimen Schlüssels. Somit wären andere Verfahren, die einen solchen dynamischen Austausch unterstützen, wesentlich sinnvoll. Erweiterungen (WEPPlus. FPK. WEP2) Nachdem die ersten Angriffe auf WEP-geschützte Netze erfolgreich umgesetzt hatte, wollte man natürlich ein höheres Maß an Sicherheit. Dies sollte zunächst WEPplus übernehmen. Hier werden die schwachen Schlüssel einfach übergangen, wodurch der Angreifer nun allein auf die Wiederholung der IVs angewiesen ist. Trotzdem ist es auch hier nur eine Frage der Zeit, bis der Schlüssel bestimmt wurde, da heutige Tools auf die Invariance Weakness nicht angewiesen sind. Außerdem müssen alle Kommunikationspartner WEPPlus unterstützen, ansonsten ist die Umsetzung nicht möglich. Fast Packet Keying (FPK) zielt ebenfalls auf das Problem mit den IVs. Schlüsselwiederholungen werden ausgeschlossen, indem für jedes Paket mit einer Hashfunktion und einem temporären Schlüssel ein individueller RC4-Input generiert wird. Hierzu wird die 128Bit-Eingabe für den RC4 (104Bit Key, 24Bit IV) durch einen 128Bit langen Schlüsselstrom ersetzt. Dieser resultiert aus der Verknüpfung eines temporären Schlüssels, der Senderadresse sowie einem 16Bit langen IV. Da hier IV-Wiederholung ausgeschlossen werden soll, muss nach 216 Paketen der temporäre Schlüssel gewechselt werden. Known-Plaintext-Attacken sind somit völlig wirkungslos. Da jedoch auch hier das Schlüsselmanagement fehlt und der tem14 poräre Schlüssel viel zu oft gewechselt werden muss, ist dieses Verfahren relativ uneffektiv und wartungsaufwendig. WEP2 sollte dann ein wesentlicher Schritt in Richtung Verbesserung der WEP-Probleme sein Hier sollte der IV auf eine Länge von 128Bit angehoben werden, ein dynamischer oder periodischer Schlüsselaustausch sollte integriert werden und eine eigenes Authentifizierungsverfahren auf Basis von Kerberos sollte ebenfalls eingebracht werden. Da aber schon in der Entwicklungsphase mehrere nicht behebbare Sicherheitslücken bekannt wurden, die mit Known-Plaintext- und Wörterbuch-Attacken ausnutzbar waren, wurde die Weiterentwicklung gestoppt. WPA WPA sollte den allseits bekanten Sicherheitsproblemen von WEP Abhilfe schaffen. Es ersetzt WEP durch das Temporary Key Internet Protocol (TKIP) und den Algorithmus Michael. TKIP kapselt WEP so, dass nahezu alle Schwachstellen beseitigt werden. Abbildung 1.4 TKIP-Verfahren mit RC4 und Key-Mixing Der Input für den Schlüsselstromgenerator wird in zwei Key-Mixing-Stufen ermittelt. Somit sind keine Rückschlüsse auf den Initialisierungsvektor möglich, schwache Schlüssel treten nicht auf. Der IV ist nun 48 Bit lang, was Wiederholungsattacken ausschließt, da der IV pro Übertragung um 1 15 erhöht werden kann ohne das alle Möglichkeiten ausgeschöpft werden. Der IV selbst besteht aus einem Low- (16) und einem High-Teil (32), was eine Rechenzeitoptimierung bringen soll. Das Einbinden der MAC-Adresse ist ein großer Sicherheitspluspunkt, da dies unterschiedliche RC4-Schlüssel bei unterschiedlichen Sendern und gleichem IV zur Folge hat. Der zusätzliche Algorithmus Michael, ein Hashverfahren zur Verschlüsselung ist jedoch eine Schwachstelle, da lediglich ein 40 Bit langer Teil effizient ist. Der eingebundene Key Handshake erfolgt in zwei Phasen: Pairwise und Group Key Handshake. Beim Pairwise Handshake senden Client und Access Point Zufallswerte, mischen diese mit dem Master Secret und verwenden ihn als Session Key und zusätzlichen Schutz. Der Client installiert dann den Session Key, danach der Access Point um die Kommunikation zu ermöglichen. Der Group Key Handshake geht vom Access Point aus, welcher den Group Key zur Multicast- und Broadcast-Paketverschlüsselung aussendet. Doch auch bei WPA sind schon Schwachstellen entdeckt worden, die erfolgreiche Angriffe nach sich zogen. Bei einer sorglosen und einfältigen Auswahl der Pre-Shared-Keys gelingt Angreifer mithilfe einer Wörterbuchattacke relativ schnell das erfolgreiche Knacken des Schutzes. Allerdings ist dies bei allen einfach verwendeten Passwörtern, die nicht kompromittiert übertragen werden, möglich. Mittlerweile stehen einige Tools im Internet zur Verfügung, die über diese Schwachstelle versuchen, Zugang zum Netz zu bekommen. Dies ist beispielsweise der WPACracker von TinyPEAP. Ein weitaus größeres Problem liegt bei der Authentifizierung mit WPA (vgl. Kapitel zur Authentifizierung). Eine weitere Schwachstelle liefert der Algorithmus Michael. Neben seiner bereits erwähnten zu geringen Länge des effizienten Teils (40 Bit) bringt sein Einsatz bei bestimmten Attacken neue Probleme mit sich. Wird auf ihn ein Brute-Force-Angriff gestartet, legt er bei mehr als einem falschen Paket pro Sekunde die Hardware für eine Minute lahm. Dies entmutigt zwar Angreifer, die Attacke öfter zu starten, leider leidet dann auch der authorisierte Nutzer selbst unter der Nichtverfügbarkeit. Zudem öffnet diese Art des Schutzes die Tür für Denial-Of-Service-Attacken. (heise Newsticker 32542) Die nächste Schwachstelle ist der Group Key, der allen authorisierten Clients vorliegt. Bekommt ein Angreifer den Schlüssel heraus, ist er in der Lage, den anfänglichen Schlüsselaustausch abzuhören. Setzt man in einem Netz keinen Radiusserver ein, will aber auf die Sicherheitsfeatures von WPA nicht verzichten, muss man ein anderes Verfahren zur Authentifizierung verwenden. Hier kommt WPA mit Passphrase zum Einsatz, bei der die Clients bei ihren Kommunikationspartner, Access 16 Points oder andere Clients, eine Passphrase eingeben. Diese ist zwischen 8 und 64 Zeichen lang und wird mit der SSID verknüpft. Ein Hashverfahren berechnet daraus dann das Master Secret und Zufallswerte erzeugen einen individuellen TKIP-Schlüssel. Die Passphrase sollte gut gewählt sein damit eventuelle Wörterbuchattacken nicht von Erfolg gekrönt sind. RSN Das Robust-Security-Network (RSN) ist der momentan neueste Bestandteil von IEEE 802.11. Die Taskgroup i führte einige Neuerungen ein, die ein wesentlich höheres Maß an Sicherheit garantieren sollen. 802.11i beinhaltet ein völlig neues Verschlüsselungsverfahren, den Advanced Encryption Standard (AES) auf Basis eines eigenen Protokolls, dem CTR/CBC-MAC Protocol (CCMP). Beim Advanced Encryption Standard Counter with CBC-MAC (AESCCM) wird ein 128 Bit langer Schlüssel für beide Kommunikationsrichtungen benutzt, das Verfahren verläuft wie bei WPA, der IV ist ebenfalls 48 Bit lang. Zusätzlich unterstützt AES VoIP und die Verwendung mehrerer Access Points. Durch die Vergabe eines Pairwise Master Key werden erneute Anmeldungen umgangen, die Kommunikation wird beschleunigt. Hierbei versieht der Access Point das Pairwise Master Key mit einer ID, welche bei einer wiederholten Anwendung auf Gültigkeit geprüft wird. Bei bestehender Gültigkeit werden die erneuten Schlüsselverhandlungen umgangen und so die Kommunikation beschleunigt. Zusätzlich wurden im RSN wurden mithilfe von 802.1x Maßnahmen zur Authentifizierung und zum Schlüsselmanagement integriert. Diese basieren auf dem Extensible Authentication Protocol (EAP) und der Verwendung eines Remote Access Dial In User Service (RADIUS). Mehr dazu im Kapitel zur Authentifizierung. Zusätze (VPN, IPSec, SSL, SSH) Reichen die für WLANs zur Verfügung gestellten Sicherheitsmaßnahmen nicht aus, müssen andere, bereits in kabelgebundenen Netzen verwendete Verfahren benutzt werden. Virtual Private Networks (VPNs) werden eingesetzt um in öffentlichen Netzen eine geschützte Datenverbindung zu erreichen. Dies geschieht, indem ein Tunnel angelegt wird, in dem der Datenverkehr parallel zum restlichen abläuft. Bei WLANs werden zu übertragende Datenpakete in anderen Paketen gekapselt. Dies geschieht über ein kryptographisches Verfahren. Der Empfänger muss dann die Kapsel „öffnen“, um an die eigentlichen Daten zu kommen. Somit läuft die Übertragung über einen Tunnel ab. Al17 lerdings müssen sich Sender und Empfänger vorher authentifizieren um den Tunnel zwischen den Clients zu definieren. Für die Verwendung von VPNs werden somit zwei weitere Protokolle nötig: ein Trägerprotokoll und ein Verschlüsselungsprotokoll. Mittlerweile hat sich IPSec bei beiden Protokollen etabliert. Wesentliche Vorteile des Verfahrens sind ein integriertes Schlüsselmanagement, die Garantie auf Authenzität und Integrität der Daten mithilfe eines Authentication Headers und die Anwendung der Protokolle innerhalb der Netzwerkschicht des ISOOSI-Modells, was eine Anwendungsunabhängigkeit garantiert. Der Hauptnachteil von IPSec ist der hohe Verwaltungsaufwand beim Einrichten. Jeder Client muss eine VPN-Software installiert haben, eine Einbindung in die Hardware ist nicht möglich. Secure Socket Layer (SSL) kann ebenfalls als Basis für VPN benutzt werden, hat jedoch den großen Vorteil, dass der Browser des Clients die Aufgaben übernimmt und keine clientseitige VPN-Software nötig ist. SSL beinhaltet eine Authentifizierung auf Public-Key-Basis sowie Verschlüsselungsverfahren basierend auf Zertifikaten bestimmter Institutionen. Dies sind beispielsweise RC4 oder DES. Allerdings ist der RC4 in diesem Fall nicht von den Schwächen betroffen, die er bei WEP aufweist, da hier lediglich ein Session Key mithilfe einer Hashfunktion generiert wird. Im Bereich des WLAN ist SSL unter dem Namen TLS geläufig. Secure Shell (SSH) beinhaltet dieselben Features wie SSL bezüglich Authentifizierung und Verschlüsselung, unterstützt aber zusätzlich das Tunneling, jedoch immer nur für ein bestimmtes Protokoll, womit also keine vollständige VPN-Unterstützung vorliegt. Das Prinzip basiert auf einer Portweiterleitung: es wird auf den Clients jeweils ein Port für die Übertragung bereit gestellt, zwischen denen dann der Tunnel aufgebaut wird. Somit werden alle Anfragen auf den lokalen Port des Clients auf den entsprechenden fremden Remote Port des anderen Clients weitergeleitet. VPN selbst besitzt eine so gute Verschlüsselung, dass Angriffe eher an den Enden des Tunnels angesetzt werden sollten. Man verlässt sich hierbei auf die Unsicherheit in der Authentifizierung. Der Angreifer versucht, sich beim Gateway anzumelden. Dies ist nur möglich wenn zur Authentifizierung ein Pre-Shared-Key verwendet wird und der Gateway im Aggressive Mode arbeitet. In diesem Modus ist der IKE-Handshake (Schlüsselaustausch über Internet Key Exchange) verkürzt. Dies bietet eine hervorragende Angriffsfläche. Der Gateway benutzt für die Authentifizierung einen Hashwert, der aus dem PSK erzeugt wird. Tools wie IKEProbe versuchen nun mithilfe des unverschlüsselten Hashwerts den PSK über Brute-Forceoder Wörterbuch-Attacke zu berechnen. Dazu simuliert es einen VPNClient und startet einen IKE-Handshake. Dabei werden die IKE-Parameter 18 gescannt und nach dem PSK-Hash gesucht. Ist der PSK gefunden, muss man nur noch die Subnetze raten und schon hat man Zugang. Man kann sich jedoch gegen solche Angriffe schützen, indem man den Aggressive Mode einfach ausschaltet oder eine Firewall integriert. Am besten wäre jedoch, ganz auf PSK zu verzichten und sich anderer Zertifikate zu bedienen. Ist dies nicht möglich, sollte man zumindest einen gut gewählten PSK verwenden. 1.4 Authentifizierung Nicht nur die Kommunikation selbst sollte auf geschützten Wegen passieren, auch die Authentifizierung der Netzwerkteilnehmer bedarf hoher Sicherheit. Der kürzlich veröffentlichte 802.1x-Substandard und die bereits bestehenden Verfahren mit RADIUS und EAP sind nur zwei der Möglichkeiten, ein gewisses Maß an Sicherheit bei der Anmeldung im Netzwerk zu gewährleisten. 802.1x Dieser erst kürzlich veröffentlichte Standard beschreibt die portbasierte Zugangskontrolle für WLANs als Teil der RSN-Sicherheitsarchitektur. Der Grundaufbau beinhaltet drei wesentliche Teile, zwischen denen die Authentifizierung abläuft: der Client, der Authentifizierer und der Authentifizierungsserver (AS). Basis der Kommunikation ist das Extendible Authentication Protocol (EAP). Die Nachrichten werden mittels EAPol (EAP over LAN) gekapselt und mithilfe eines Remote Access Dial In User Service (RADIUS) – Server übertragen. EAP & RADIUS Beim Extendible Authentication Protocol wird während der Verbindung ein Identitätscheck zwischen Server und Client durchgeführt, welcher bei einem Fehler abgebrochen wird. Somit ist ein Schutz vor wilden APs gegeben. Als positiver Nebeneffekt wird zudem ein WEP-Schlüssel installiert. Das Verfahren der Authentifizierung, EAP-TLS, ist ein Zertifikatsaustausch zwischen Client und Server. Es wird ein Tunnel aufgebaut, ein Radiusserver sendet einen Sitzungsschlüssel an den AP. Dieser übernimmt nun den Tunnel und versendet den WEP-Schlüssel entweder individuell (Speichertabelle im AP mit MAC-Adressen und Schlüsseln) oder als Gruppenschlüssel (4 vordefiniert, einer wird verwendet) an die Clients. Es werden vier grundlegende Nachrichtentypen verwendet: EAP-Request, welche vom AS über den Authentifizierer an den Client gesendet werden, 19 EAP-Response, welche die darauffolgende Antwort des Clients beinhaltet, EAP-Success, wodurch der Client eine erfolgreiche Authentifizierung bestätig bekommt und EAP-Failure, womit einen misslungene Authentifizierung bestätigt wird. Die Nachrichten werden dann in EAPoL-Nachrichten gekapselt, um sie über das LAN zu transportieren. Auch hier kommen vier tragende Nachrichtentypen zum Einsatz: EAPoL-Start ist die Authentifizierungsanfrage des Clients an den AS. EAPoL-Key ist für die Übermittlung der Schlüssel von Authentifizierer an den Client zuständig. EAPol-Packet dient der eigentlichen Übertragung der EAP-Pakete, es stellt den Container für die Kapselung. EAPoL-Logoff dient der Abmeldung des Clients. Er meldet dem Authentifizierer das Verlassen des Netzwerkes. Für die serverseitige Authentifizierung werden RADIUS-Nachrichten verwendet. Dies sind Access-Request für die Einleitung der Authentifizierung, Access-Challenge mit der verwendeten Authentifizierungsmethode, Access-Accept bei bestätigter Challenge und Access-Reject bei misslungener Anmeldung. Client Authentifizierer EAPoL-Start EAPol-Packet (EAP-Request) EAPol-Packet (EAP-Request) Access-Request (EAP-Response) EAPol-Packet (EAP-Request) Access-Challenge (EAP-Request) EAPol-Packet (EAP-Response) Access-Request (EAP-Response) EAPol-Packet (EAP-Success) Access-Accept (EAP-Success) EAPoL-Key Access-Accept (Receive-Key) Abbildung 1.5. Authentifizierung über EAP 20 AS Der gesamte Ablauf der Authentifizierung über EAP mithilfe von EAPoL und RADIUS ist in Abbildung 1.5 verdeutlicht. Auch bei diesem Verfahren gibt es bekannt gewordene Schwachstellen. Bei einer ARP-Poisoning-Attacke und mithilfe eines gefälschten Deauthentication-Pakets kann man die Übertragung der Sitzungsschlüssel zwischen AP und Radius-Server mitschneiden und dann in aller Ruhe eine Entschlüsselung über ein Wörterbuch-Attacke versuchen, Tools wie Cain & Abel helfen dabei (heise Newsletter 49484). Auch Man-In-The-Middle-Attacken sind von Erfolg gekrönt, da der AP nur den Client authentifiziert, aber nicht umgekehrt. Somit kann sich ein Angreifer einem Client gegenüber als AP und diesem gegenüber als Client ausgeben. Der gesamte Datenverkehr kann nun inspiziert und manipuliert werden. Client und AP selbst bekommen davon oft gar nichts mit. Dasselbe ist der Fall bei folgendem Angriff: der Angreifer gibt vor, der AP zu sein und sendet eine Logoff-Nachricht an den Client. Dieser glaubt nun, er sei abgemeldet und der Angreifer kann die noch bestehende Sitzung des Clients übernehmen. Der eigentliche AP bekommt auch hier von all dem nichts mit. (heise Newsletter 24925) Authentifizierung jenseits der MAC-Schicht In Verbindung mit EAP bieten die folgenden Verfahren eine komplette Lösung für die vollständige Authentifizierung in WLANs auf Basis von 802.1x. Das Transport Layer Security (TLS) basiert auf SSL und setzt Zertifikate für die Kommunikation ein. Die Sicherheit wird dadurch stark erhöht, dennoch ist die Verwaltung der Zertifikate sehr aufwendig. In Verbindung mit EAP wurde TLS unter dem Namen EAP-TLS in einen eigenen Standard integriert. [AS99] EAP Tunneled TLS (EAP-TTLS) nutzt ebenfalls den Zertifikatsaustausch, Clients müssen sich einer Benutzeranmeldung unterziehen. Ein zusätzliches Feature ist Rekeying. Hier kann der AP den Schlüssel über einen bestimmten Tunnel ändern. Der Nachteil hierbei ist ebenfalls die Verwaltung des Radiusservers und der Zertifikate. Kerberos werden in Verbindung mit IP-basierten Netzwerken verwendet. Sie benutzen eine Art Ticketvergabe, bei der für jeden Dienst ein einzelnes, zeitlich begrenztes Ticket bereitgestellt wird. Leider sind in Verbindung mit Kerberos einige Sicherheitslücken bekannt geworden, sodass man von ihrer Verwendung absehen sollte. Light EAP (LEAP) und Protected EAP (PEAP) sind spezifische Erweiterungen von EAP: LEAP ist ein Produkt von Cisco und erweitert das Challenge-Response-Verfahren MS-CHAP, womit eine gegenseitige Authentifizierung und der Austausch eines Session Keys möglich sind. PEAP ver21 wendet das bereits erwähnte TLS um eine sichere Verbindung aufzubauen. Erst dann wird im TLS-gesicherten Kanal die vollständige Authentifizierung durchgeführt. Somit wird eine vollständige Anonymität auf Seiten des Client erreicht und die bestehende Schwäche von EAP bei EAP-Identityund EAP-Success-Nachrichten beseitigt. 22 2 Praktische Anwendung Programmdokumentation Das begleitende Programm dieser Arbeit wurde entworfen, um die Schwächen der WEP-Verschlüsselung aufzuzeigen, und auszunutzen. YAWC (Yet Another WEP Cracker) ist in Java geschrieben und implementiert einen Angriff auf die Schwachstellen im RC4-Design. Es werden verschlüsselte Pakete gesammelt, die mit ein und demselben Schlüssel und unterschiedlichen IVs codiert wurden. Hierbei spielen nur bestimmte IVs eine Rolle, welche nach [FMS01] die Ausgabe des RC4-Algorithmus übermäßig stark beeinflussen. Dies sind IVs, deren erstes Byte einen Wert zwischen 3 und 15 und deren zweites Byte den Wert 255 hat. Pro Wert zwischen 3 und 15 werden etwa 60-100 Pakete benötigt. Zusätzlich braucht man noch das erste Byte des Chiffrats, das standardmäßig auf 0xAA gesetzt ist. Insgesamt müssen etwa vier bis sechs Million Pakete mitgeschnitten werden damit der Angriff von Erfolg gekrönt ist. Im Einzelnen besteht YAWC aus zwei Klassen: Sniffer.java und Filter.java. Diese werden für die Umsetzung ebenso benötigt wie die Java-Bibliothek jpcap (Download unter [JPC05]), die aktuelle Java SDK j2sdk1.5 (Download unter [JSD05]) und für den Betrieb unter Windows die pcapBibliothek WinPcap (Download unter [WPC05]), die die Verwaltung der pcap-Dateien übernimmt. Um das Programm zu nutzen, muss man zunächst die beiden Klassen Sniffer und Filter übersetzen, über die Konsole oder – wie im Rahmen dieser Arbeit – mit einer Entwicklungsumgebung wie eclipse. Sniffer.java sucht sich die Netzwerkschnittstelle und beginnt dann mit dem Sniffen der benötigten 6 Millionen Pakete. Jedes Paket wird separat gelesen und verarbeitet. Ein FileWriter schreibt aus jedem Paket die Bytes 5 bis 8 in ein Log-File. Dieses wird später für das Bestimmen des Schlüssels benötigt. Abbildung 2.1. Screenshot Sniffer.java nach erfolgreichem Abschluss 23 Sind die benötigten Pakete eingelesen worden, kann es mit dem Filtern der Weak IVs und dem Berechnen des Schlüssels weitergehen. Dazu wird das Log-File der Klasse Filter.java übergeben. Hier wird nun nach dem von Fluhrer, Mantin und Shamir gefundenen Algorithmus verfahren [FMS01]. RecoverWEPKey() Key[0 . . . KeySize] = 0 for KeyByte = 0. . .KeySize Counts[0 . . . 255] = 0 foreach packet → P if P.IV ∈ {(KeyByte + 3, 0xFF,N) | N | 0x00 . . . 0xFF} Counts[SimulateResolved(P,Key,KeyByte)]+ = 1 Key[KeyByte] = IndexOfMaximumElement(Counts) return Key SimulateResolved(P,Key,KeyByte) K = P.IV · Key For i = 0. . . N − 1 S[i] = i For i = 0. . . KeyByte j = j + S[i] + K[imodl] Swap(S[i], S[j]) return S−1B+2[P.Out] − jB+2 − SB+2[B + 3] Abbildung 2.2. Pseudocode für die Attacke nach Fluhrer, Mantin, Shamir Die Datei wird zeilenweise eingelesen und die IVs werden zunächst auf Weakness geprüft. Fällt ein IV unter die benötigten Kriterien wird er dem eigentlichen Verfahren übergeben dass rückwärtig durch Berechnen der Permutationen den Schlüssel bestimmt. Abbildung 2.3. Screenshot Filter.java nach erfolgreichem Abschluss Alle benötigten Parameter wie etwa die Anzahl der einzulesenden Pakete oder der Dateiname des Log-File sind bereits vorher festgesetzt, können aber vom User im Programm beliebig geändert werden. 24 Offene Netze am Studienstandort Um einen Überblick zu bekommen, wie es in Jena um die WLANSicherheit steht, soll eine Karte mit den aufgestellten Access Points und Hot Spots erstellt werden. Dazu wurde ein handelsübliches Notebook mit einer WLAN-Karte mit Prism2-Chipsatz und einem GPS-Empfänger von Navilock mit EvermoreChipsatz ausgestattet. Das Tool NetStumbler sammelt nun alle notwendigen WLAN-Daten und generiert eine Liste von Access-Points. Dies geschieht, indem kontinuierlich Probe-Requests auf allen Kanälen ausgesendet werden. Die Access Points antworten dann mit Paketen, die alle benötigten Informationen beinhalten: SSID, MAC-Adresse, Sendekanal und WEP-Status. Diese Liste wird in StumbVerter importiert, wo mit Hilfe der GPS-Daten eine Karte erstellt werden kann, die alle aufgespürten WLAN-Netze verzeichnet. Am 3.und 4. August 2005 wurde das Projekt in Angriff genommen und nach etwa 4h und 45km stand das Ergebnis fest: 462 gefundene Netze, von denen 119 völlig ungeschützt waren, was immerhin 26 % der gesamten Netze ausmacht. Die restlichen greifen auf WEP oder höhere Verschlüsselungsalgorithmen zurück. Des weiteren benutzten 46 WLANs die default SSID, andere ließen Schlüsse auf das Netzwerk selbst zu („Arztpraxis Dr ....“ oder „Büro ...“). Besagte Arztpraxis verzichtete übrigens auf jegliche Verschlüsselung, wodurch ein Zugriff auf das gesamte Netz möglich wäre und sensible Daten ausspioniert werden könnten. Das Ergebnis ist in Abbildung 2.2. zu sehen, wobei sich hinter einem Turm mehrere Netze verbergen können, da GPS nur auf 10m genau ist und der Maßstab der Karten in StumbVerter nicht sehr klein ausfällt. Anzumerken ist noch, dass die WLAN-Karte nur auf 22 MBit 802.11b lief, was vermuten lässt, dass weit mehr Netze in Jena aufgebaut sind als die Karte feststellen konnte. Mit einer 108 MBit Karte auf 802.11g Basis könnte das Ergebnis weitaus umfangreicher ausfallen. Die prozentualen Werte von Verschlüsselung und default-SSID sollten jedoch relativ repräsentativ sein. 25 Abbildung 2.2. WLANs am Studienstandort Jena Angriff auf ein WEP-geschütztes Netz Trotz der zahlreichen aufgespürten Netze am Studienstandort Jena wurde aus rechtlichen Gründen darauf verzichtet, in eines dieser Netze einzubrechen. Statt dessen wurde dies an einem eigens für das Projekt aufgestelltem Heimnetzwerk getestet. Dazu dienten ein DSL-Router mit eingeschalteter WEP64-Verschlüsselung und festgesetztem Key, einem Desktop-PC mit PCI-WLAN-Karte und ein Notebook mit PCMCIA-WLAN-Karte. Das Notebook fungierte hierbei als Einbrecher. Aus diesem File wurde die IVListe generiert, mit dessen Hilfe dann mit YAWC der Schlüssel bestimmt wurde. Das Sniffen selbst nahm die meiste Zeit in Anspruch: etwa 8h. Es würde noch länger dauern, wenn das Netzwerk nicht zusätzlich belastet wurde mit Dauer-Ping und Datenanfragen. Das Schlüsselberechnen mit dem Log-File dauerte etwa 2min auf einem 64 Bit Desktop-PC mit 3 GHz und 1GB Arbeitsspeicher. 26 Aufspüren von Angreifern im eigenen Netz Wenn man sein eigenes WLAN eingerichtet hat, möchte man natürlich vor Angreifern geschützt sein. Das gelegentlich Freizeitsurfer versuchen, sich in vorhandenen Netzen einzuloggen, ist mittlerweile Alltag geworden. Und wenn man die beschriebenen Sicherheitsmaßnahmen auch nutzt und sie ordnungsgemäß einrichtet, ist der Schutz vor Gelegenheitssurfern auch gegeben. Aber wie schützt man sich gegen Profis, solche, die die angesprochenen Sicherheitslücken bewusst ausnutzen, um Zugang zu bekommnen oder das Netz einfach nur lahmlegen wollen? Wie bereits erwähnt, ist dies bei bestimmten Attacken in Verbindung mit den richtigen Sicherheitsverfahren nahezu unmöglich. Dennoch versprechen bestimmte Firmen mit ihrer Software, solche WLAN-Piraten und wilden APs zu finden. Die Firma Computer Associates hat bereits eine beta-Version ihres Wireless Site Management (WSM) veröffentlicht. Das Programm ermittelt unauthorisierte Netzwerkteilnehmer mit einer Dreiecksberechnung aus Signalstärke und den Standorten authorisierter Clients und APs. Es arbeitet somit mit der vorhandenen Hardware und kommt ohne zusätzliche Sensoren aus. Die Software wird auf jedem Client installiert und übernimmt dort die zeitliche und räumliche Verwaltung des Zugangs. Gefundene Eindringlinge werden gemeldet und gesperrt. Positive Nebeneffekte sind die Verwaltung von WEP-Schlüsseln, die interferenzfreie Verteilung der Frequenzen auf die APs und das sogenannte Load-Balancing, die gleichmäßige Verteilung der Netzlast auf alle Clients. Leider findet diese Software nicht alle Eindringlinge. Um sich selbst gegen evtl. anstehende rechtliche Probleme bei unauthorisierten Zugriffen zu schützen, sollte man den gesamten Netzwerkverkehr mitloggen, um Angreifer frühzeitig zu erkennen und gegebenenfalls nachweisen zu können, das man keine Kenntnis von Angreifern hatte (siehe folgendes Kapitel). Wie man mit den gefundenen „Verbrechern“ verfährt, ist jedem selbst überlassen. Kennt man dessen Identität, ist man mit einer Anzeige gut beraten, da die Strafen für das Knacken von gesicherten Netzen und damit verbundenen illegalen und kriminellen Handlungen nicht gerade niedrig sind (vgl. Kapitel 3). 27 3 Rechtliche Grundlagen Die heutige Hardware für Wireless LANs wird so verkauft, dass sie nach dem Auspacken sofort in Betrieb genommen werden kann. Leider befassen sich dann die wenigsten mit den zu treffenden Sicherheitsvorkehrungen oder nehmen an, dass die Voreinstellungen sicher genug sind. Die Frage ist nun, was dem Betreiber des AP blüht, wenn ein Dritter Zugang zum Netz bekommt und eine eventuell strafbare Handlung begeht. Nach §9 des Teledienstgesetzes gilt der Inhaber eines APs als Provider und ist grundsätzlich nicht für die Handlungen und Inhalte seiner Kunden verantwortlich. Somit ist der Inhaber eines WLANs nicht haftbar zu machen bei illegalen Handlungen, die durch Dritte ohne eigene Kenntnis verübt werden. Allerdings sieht dies in der Praxis schon anders aus. Wenn strafbare Handlungen festgestellt werden, werden alle Anfragen zunächst an den Betreiber weitergeleitet. Das liegt daran, dass nach außen hin nur der Betreiber selbst mit der IP sichtbar ist. Die Clients arbeiten im privaten Subnetz und können nach außen nicht identifiziert werden. Somit landen alle Anschuldigungen zunächst beim Inhaber, der dann die Nachweispflicht hat, dass er nicht selbst gehandelt hat. Bei Zivilverfahren muss jede Seite die für sich günstigsten Fakten darlegen und sich selbst entlasten. Hat ein WLAN-Betreiber nun eine solche zivilrechtliche Klage anstehen, so liegt es an ihm, den gesamten Datenverkehr des WLANs offen zu legen, um den unauthorisierten Nutzer zu identifizieren, Dies ist jedoch nur möglich, wenn der gesamte Datenverkehr mitgeloggt wird. Dazu müssen alle Clients ihr Einverständnis geben, dann kann anhand der MAC-Adresse selektiert werden. Etwas anders ist es bei Strafverfahren. Hier liegt die Beweispflicht bei der Staatsanwaltschaft. Allerdings gilt die IP dabei nur als ausschlaggebend für die Anklageerhebung, für eine Verurteilung müssten weitere belastende Punkte vorlegt werden, damit eindeutig gesagt werden kann, dass der Betreiber selbst die Verantwortung trägt. Leider haben solche Verfahren auch bei Freisprüchen unangenehme Nebenwirkungen wie Stilllegung des Netzes, Beschlagnahmung von Rechnern, Hausdurchsuchungen und die entsetzten Blicke der Nachbarn und Freunde bei größerem Polizeiaufgebot. Bei einem Punkt jedoch steht die Haftung des Betreibers außer Frage: bei der Zahlungspflicht gegenüber dem Internetprovider. Bei begrenzten Flatrates auf Zeit oder Volumen muss stets die Datenmenge oder der Nutzungszeitraum kontrolliert und protokolliert werden um in etwaigen juristischen Fragen abgesichert zu sein. 28 Auf der Gegenseite sieht es schon anders aus. Das Eindringen in ein ungeschütztes Netzwerk ist nach derzeitigem juristischen Stand nicht strafbar. Lediglich die Rückerstattung von entstandenen Kosten und ein Unterlassungsantrag können einem erwischten Schwarzsurfer bevorstehen. Ist das Netz gegen unbefugten Zugriff geschützt, sieht es schon anders aus. Beim Umgehen sicherheitstechnischer Einrichtungen wie WEP oder MACKontrolle liegt nach §265a StGB das Erschleichen von Leistungen vor. Werden dann auch noch Daten manipuliert oder geschädigt, kommen weitere Anklagepunkte hinzu: die Veränderung von Daten nach §303a StGB, die Sabotage von Datengeräten nach §303c StGB oder das Ausspähen von Daten nach §202a StGB. Sind dabei Geschäftsdaten betroffen, kommt eventuell noch eine Anklage wegen unlauteren Wettbewerb nach §17 UWG hinzu. Es ist also alles andere als ein Kavaliersdelikt, sich zu geschützten WLANs Zugriff zu verschaffen. In der Realität sieht es so aus, dass erwischte Schwarzsurfer häufig Anzeigen wegen dem Erschleichen von Leistungen oder dem Ausspähen von Daten bekommen, die resultierenden Verfahren jedoch meist wegen mangelndem öffentlichen Interesse nach §153 Strafprozessordnung (StPO) eingestellt werden. Fakt ist, dass ein WLAN-Betreiber nach §87 TKG (Telekommunikationsgesetz) verpflichtet ist, umfassende Sicherheitsmaßnahmen gegen Eindringen und Abhören zu treffen. Der Datenschutz muss gewährleistet sein. Die Praxis zeigt jedoch, dass nicht einmal jeder zweite sein Netz ausreichend schützt. (c’t: Offene Funknetze: Schwarz-Surfen) 29 4 Fazit Während der Entstehung dieser Arbeit wurde immer mehr deutlich, dass es fast unmöglich ist, hundertprozentige Sicherheit zu gewährleisten. Jedes neue Sicherheitsverfahren weist früher oder später Schwachstellen auf. Das liegt auch daran, dass die Technik immer weiter fortschreitet, die Rechner werden immer schneller, und theoretische Angriffe, die heute auf dem Papier noch unendliche Rechenzeit benötigen, sind in naher Zukunft vielleicht schon in der Praxis umsetzbar. Die momentan sicherste Variante ist wohl RSN. Die integrierte AESVerschlüsselung ist bisher noch relativ ungefährdet, auch wenn japanische Wissenschaftler, zumindest theoretisch schon eine Schwachstelle entdeckt haben. Doch da weder jeder WLAN-Benutzer die angemessene Hardware hat, noch sich genug mit der Materie auskennt, ist es unbedingt notwendig, bestimmte Mindestschutzmaßnahmen zu ergreifen. Zuerst sollte man alle standardisierten Werte ändern, die in Hard- und Software integriert sind. Die Passwortvorgabe für die Administratoranmeldung auf dem AP sollte so geändert werden, dass es einem Wörterbuchangriff keine Chance gibt, etwa durch die Verwendung von Sonderzeichen. Ebenso sollt der Name des Netzes (SSID) dahingehend geändert werden, dass keine Rückschlüsse auf den Nutzer möglich sind (Firmenname, UniNetz, etc.). Damit in Verbindung sollte das SSID-Broadcast ausgeschaltet werden, sodass der Netzname nach außen hin nicht sichtbar ist. Falls möglich sollte man die MAC-Adressen-Filterung und die WEP-Verschlüsselung anschalten. Des weiteren ist es hilfreich, den DHCP-Server des AP abzuschalten, die Sendeleistung des AP auf das Einsatzgebiet zu beschränken und die WEP Schlüssel gelegentlich zu wechseln. Normale Gelegenheitssurfer werden hiermit schon abgeschreckt. Will man jedoch ein Firmennetz oder einen öffentlichen Hot-Spot einrichten, sollte man ein höheres Level an Sicherheit anstreben, etwa mit WPA oder RSN. Aber auch hier ist auf die Verwendung geeigneter - WörterbuchAttacken gegenüber robuster - Passwörter zu achten. Die sicherste Variante ist jedoch ein VPN in Verbindung mit IPSec und SSL. Da hier jedoch die Konfiguration sehr anspruchsvoll ist und die Einrichtung einige Fachkenntnis erfordert, bleibt dies erfahrenen Benutzern vorbehalten. Zusätzlich bringt diese Art des Schutzes einen PerformanceVerlust, sodass es nur bei WLANs mit hohen Brutto-Übertragungsraten Sinn macht (≥54 MBit). Alles in allem ist es in der heutigen Welt jedoch unabdingbar, sein WLAN so gut wie möglich zu schützen, wenn man nicht auf eine kabelgebundene Variante zurückgreifen kann. Naive Ansichten wie „ich werde schon nicht angegriffen“ oder „mein Netz interessiert sowieso niemanden“ sind hier 30 Fehl am Platz und bringen in vielen Fällen nur ungewollten Ärger, den man sich mit ein wenig Arbeit ganz leicht hätte ersparen können. Und da der Gesetzgeber auch noch keine einheitlichen Regelungen vorgesehen hat, kann diese Naivität auch schnell eine Strafsache nach sich ziehen. 31 Abkürzungen AES . . . . . . . . . . . . . Advanced Encryption Standard AP . . . . . . . . . . . . . . Access Point C . . . . . . . . . . . . . . . . Cyphertext CBC . . . . . . . . . . . . . Cipher Block Chaining CBC-MAC . . . . . . . CBC – Message Authentication Code CCK . . . . . . . . . . . . . Complementary Code Keying CCM . . . . . . . . . . . . CTR/CBC MAC CCMP . . . . . . . . . . . CTR/CBC-MAC Protocol CRC . . . . . . . . . . . . . Cyclic Redundancy Check CTR . . . . . . . . . . . . . CounTeR DES . . . . . . . . . . . . . Data Encryption Standard DLL . . . . . . . . . . . . . Data Link Layer DoS . . . . . . . . . . . . . Denial of Service EAP . . . . . . . . . . . . . Extensible Authentication Protocol EAPOL . . . . . . . . . . EAP Over LAN FMS . . . . . . . . . . . . . Fluhrer-Mantin-Shamir FPK . . . . . . . . . . . . . Fast Packet Keying GMK . . . . . . . . . . . . Group Master Key HTTP . . . . . . . . . . . . HyperText Transfer Protocol HTTPS . . . . . . . . . . . HTTP Secure ICV . . . . . . . . . . . . . . Integrity Check Value ID . . . . . . . . . . . . . . . IDentification IEEE . . . . . . . . . . . . . Institute of Electrical and Electronics Engineers IETF . . . . . . . . . . . . . Internet Engineering Task Force IP . . . . . . . . . . . . . . . Internet Protocol IPsec . . . . . . . . . . . . IP security IPX . . . . . . . . . . . . . . Internet Packet EXchange IV . . . . . . . . . . . . . . . Initialization Vector K . . . . . . . . . . . . . . . . Key LAN . . . . . . . . . . . . . Local Area Network LEAP . . . . . . . . . . . . Light EAP M . . . . . . . . . . . . . . . Message MAC . . . . . . . . . . . . Medium Access Control MIC . . . . . . . . . . . . . Message Integrity Code PEAP . . . . . . . . . . . Protected EAP PMK . . . . . . . . . . . . Pairwise Master Key PRNG . . . . . . . . . . . Pseudo-Random Number Generator PSK . . . . . . . . . . . . . PreShared Key RADIUS . . . . . . . . . Remote Authentication Dial In User Service RFC . . . . . . . . . . . . . Request For Comments RSN . . . . . . . . . . . . . Robust Security Network 32 SHA . . . . . . . . . . . . . Secure Hash Algorithm SSH . . . . . . . . . . . . . Secure SHell SSID . . . . . . . . . . . . . Service Set IDentifier SSL . . . . . . . . . . . . . . Secure Socket Layer SSN . . . . . . . . . . . . . Safe Secure Network TCP . . . . . . . . . . . . . .Transmission Control Protocol TGi . . . . . . . . . . . . . . Task Group i TK . . . . . . . . . . . . . . Temporal Key TKIP . . . . . . . . . . . . Temporal Key Integrity Protocol TLS . . . . . . . . . . . . . . Transport Layer Security TTLS . . . . . . . . . . . . Tunneled TLS UMTS . . . . . . . . . . . Universal Mobile Telecommunications Systems VPN . . . . . . . . . . . . . Virtual Private Network WAN . . . . . . . . . . . . Wide Area Network WEP . . . . . . . . . . . . . Wired Equivalent Privacy Wi-Fi . . . . . . . . . . . . Wireless-Fidelity WLAN . . . . . . . . . . . Wireless LAN WPA . . . . . . . . . . . . Wi-Fi Protected Access WPA2 . . . . . . . . . . . WPA v2 33 Glossar Adavnced Encryption Standard (AES) neuestes Verschlüsselungsverfahren in 802.11i, welches einen 128 Bit Schlüssel benutzt und VoIP unterstützt Denial-Of-Service-Attacke (DoS) hierbei werden ein oder mehrere Dienste lahmgelegt, meist durch Überlastung Extendible Authentication Protocol (EAP) Authentifizierungs-Protokoll bei WLAN, unterstützt verschiedene Authentifizierungsmechanismen EAP-TLS Zertifikatsaustausch zwischen Client und Server unter Verwendung eines Tunnels Fast-Package-Keying (FPK) spezielles Verfahren zur Vermeidung von IV-Kollisionen Hashfunktion nicht umkehrbare Funktion, die eine lange Eingabe in eine kurze Ausgabe umrechnet Message Authentication Code (MAC) dient der Integritätssicherung einer Nachricht, der Klartext wird mit einem Schlüssel verknüpft und darauf dann eine Hashfunktion angewendet Michael in WPA integrierter Hash-Algorithmus, der einen Integritätscheck berechnet (MIC) Michael Integrity Check (MIC) von Michael berechneter Integritätscode Pseudo Random Functions (PRF) mit Hashfunktionen arbeitende Funktion, die einen n Bit langem Ausgabestrom erzeugt Pseudo Random Number Generator (PRNG) Bestandteil von WEP, welcher der Erzeugung von Zufallszahlen dient 34 Remote Authentication Dial-In User Service (RADIUS) Client-Server-Protokoll zur Authentifizierung in Netzwerken Robust Security Network (RSN) Bestandteil von 802.11i , beinhaltet neuestes Verschlüsselungsverfahren AES mit eigenem Protokoll (CCMP) Schlüssel Information um einen gegebenen Text zu ver- oder entschlüsseln, meist bestehend aus Zahlen oder Buchstaben Secure Hash Algorithm (SHA-1) Gruppe standardisierter kryptographischer Hash-Funktionen. Secure Socket Layer (SSL) Verschlüsselungsprotokoll für Datenübertragungen im Internet, im WLANBereich als TLS bekannt Service Set Identifier (SSID) Name des WLANs, vergebbar durch den Administrator Strom-Chiffrier-Algorithmus ver- oder entschlüsselt Nachrichten Bit für Bit im Gegensatz zum Blockchiffrierer, der in gleich großen Blöcken arbeitet Temporary Key Integrity Protocol (TKIP) verwendet den RC4-Algorithmus für die Verschlüsselung von WLANs, jedoch mit temporärer Schlüsseländerung Virtual Private Network (VPN) Verbindung von Rechnern mit einem virtuellen Tunnel und mithilfe von gekapselten Datenpaketen Wired Equivalent Privacy (WEP) Standard-Verschlüsselungsalgorithmus für WLANs, aufgrund verschiedener Schwachstellen sehr unsicher 35 Literaturverzeichnis [AS99] Aboba B. und D. Simon (1999): PPP EAP TLS Authentication Protocol ftp://ftp.isi.edu/in-notes/rfc2716.txt [AG04] A. Gottschalk (2004): Wireless LAN, Goodbye Kabelsalat [FMS01] S. Fluhrer, I. Martin, A. Shamir (2001): Weaknesses in the key scheduling algorithm of RC4 [JPC05] http://sourceforge.net/projects/jpcap/ Project Homepage von jpcap [JSD05] http://java.sun.com/j2se/1.5.0/download.jsp Java Sun Software Download der neuesten APIs... [WPC05] http://www.winpcap.org Project Homepage WinPcap Andrew A. Vladimirov, Konstantin V. Gavrilenko, Andrei A. Mikhailovsky (2004): Wi-Foo The Secrets Of Wireless Hacking, Addison Wesley J. Pieprzyk (2002): Fundamentals Of Computer Security http://grouper.ieee.org/groups/802/11/ Seite des IEEE für Wireless LAN nach 802.11 http://www.heise.de/newsticker/ Seite des heise-Verlages mit aktuellen Meldungen zu Wireless LAN http://www.wi-foo.com „Secrets of Wireless Hacking, Recon and Attack Tools“ c’t 04/2002, Michael Schmidt: Report: WLAN-Sicherheit: Datenpanzer c’t 13/2004, Joerg Heidrich: Report: Offene Netze: Recht, Mini-Provider und Schwarz-Surfer 36 http://de.wikipedia.org Homepage der WIKIPEDIA, Stichwortverzeichnis, Lexikon http://www.rfc-editor.org/rfc.html RFC 3770 – Zertifikate für Wireless LAN Schiller (2003): Mobilkommunikation, Pearson, 2.Auflage Gesetz über die Nutzung von Telediensten (TDG) vom 22.07.1997, BGBl I 1997, 1870, geändert 14.12.2001, BGBl I, 3721 Telekommunikationsgesetz (TKG), Fassung der Bekanntmachung vom 22.06.2004, BGBl I 2004, 1190, geändert 07.07.2005, BGBl I, 1970 Strafgesetzbuch (StGB), Fassung der Bekanntmachung vom 13.11.1998, BGBl I 1998, 3322, geändert 01.09.2005, BGBl I, 2674 Strafprozessordnung (StPO), Fassung der Bekanntmachung vom 07.04.1987, BGBl I 1987, 1074, 1319, geändert 12.08.2005, BGBl I 2005, 2360 Gesetz gegen den unlauteren Wettbewerb (UWG), vom 03.07.2004, BGBl I 2004, 1414, 37 Literaturverzeichnis 802.11 802.11a 802.11b 802.11d 802.11e 802.11f 802.11g 802.11h 802.11i 802.11j 802.1x AES AES-CCM Aggressive Mode Angriff Anonymität ARP-Poisoning-Attacke Authentifizierung Authentifizierungsserver Authentizität Brute Force CBC-MAC CCM CCMP Challenge-Response-Verfahren CRC-Prüfsumme DES DoS EAP EAP Tunneled TLS Erweiterungen Fluhrer, Mantin, Shamir FMS FPK Gateway GPS Group Key Handshake Hashfunktion ICV IKE-Handshake Integrität 6 6 6 6 6 6 6 6 6 6 6, 9 6, 9, 17, 19 17 18 10 7 21 13, 19 9 7 10 17 9 9 12 12 18 11 6, 17, 19 22 6 13, 24 13, 24 14 18 25 16 7 9 18 7 38 Integritätscode Invariance Weakness IPsec ISO-OSI-Referenzmodell IV IV Weakness IV-Sequenz Kerberos Key-Mixing Known-Ciphertext-Attacke Known-Plaintext-Attacke Light EAP Linearität Log-File MAC MAC-Adresse Man-In-The-Middle-Attacke Master Secret MIC Michael Pairwise Key Handshake Pre-Shared Key PRF PRNG Protected EAP RADIUS RC4 Re-Keying-Algorithmus Replay-Attacke RSN Schlüssel SHA-1 Shared Key SSID SSL SSL Strom-Chiffrier-Algorithmus Substandards Teledienstgesetz TK-Gesetz TKIP TKIP TLS 9 14 18 6 9, 12 14 9 22 9 10 10, 14 22 7 23 8 9, 28, 30 10, 21 17 9 9, 16 16 19 7 7, 14 22 6, 17, 19 8, 9 9 9 8 7, 12 7 12 12, 30 18 8 8 6 28 28 6 8, 15 22 39 Übertragungsrate VoIP VPN Weak IV WEP WEP2 WEPplus wilde APs Wörterbuch-Attacke WPA YAWC Zugangskontrolle 6 17 17 23 7, 8, 9, 12, 15 15 14 13 10 9, 15 23 7 40 Anhang Sniffer.java package yawc; import java.io.File; import java.io.FileWriter; import java.io.IOException; import net.sourceforge.jpcap.capture.PacketCapture; import net.sourceforge.jpcap.capture.RawPacketListener; import net.sourceforge.jpcap.net.RawPacket; public class Sniffer { private static final int COUNTER = 6000000; private PacketCapture pcap; private String device; public Sniffer() throws Exception { // initialization pcap = new PacketCapture(); // device check // device = pcap.findDevice(); //m_pcap.open("eth0", true); String defaultDevice = pcap.findDevice(); int cut = -1; if ((cut = defaultDevice.indexOf('\n')) != -1) { // fixes windows problem with full name returned // by find device! device = defaultDevice.substring(0, cut); } else { device = defaultDevice; } // open capture device (root required) pcap.open(device, true); // init packet handler RawPacketHandler handler = new RawPacketHandler(); pcap.addRawPacketListener(handler); System.out.println("\nWrite to file...\n"); // start capturing pcap.capture(COUNTER); //close the reader handler.close(); } System.out.println("Done.\n\n"); public static void main(String[] args) { try { Sniffer example = new Sniffer(); } catch(Exception e) { e.printStackTrace(); System.exit(1); } } } 41 class RawPacketHandler implements RawPacketListener { public static final int START = 5; public static final int STOP = 9; private static int counter = 0; private static FileWriter fw; public RawPacketHandler() { try { fw = new FileWriter(new File("ivs.log")); } catch (IOException e) { e.printStackTrace(); System.exit(0); } } public void rawPacketArrived(RawPacket data) { counter++; for (int i=START; i<STOP; i++) { int b = (data.getData()[i] < 0 ) ? data.getData()[i]+256 : data.getData()[i]; try { String hex = Integer.toHexString(b); if (hex.length()==1) { hex = "0"+hex; } fw.write(hex); fw.write(" "); } catch (IOException e) { e.printStackTrace(); System.exit(0); } } try { fw.write("\n"); } catch (IOException e) { e.printStackTrace(); System.exit(0); } } } public void close() { try { fw.flush(); fw.close(); } catch(IOException e) { e.printStackTrace(); System.exit(0); } } 42 Filter.java package yawc; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; public class Filter { private int KEY_SIZE = 5; private int [] counts = new int[256]; private int [] key = new int[KEY_SIZE]; private int text = 0xaa; private RandomAccessFile rfile; public Filter(String file) throws FileNotFoundException { rfile = new RandomAccessFile(file, "r"); } private void swap (int[] S,int i,int j) { int tmp; tmp = S[i]; S[i]=S[j]; S[j]=tmp; } private int simulateResolved(int [] iv, int [] key, int keyByte) { int [] S = new int[256]; int [] K = new int [256]; int i=0,j=0,out=0, zwispei=0; // int firstByte=0; K[0]= iv[0]; K[1]= iv[1]; K[2]= iv[2]; for (int k=0;k<KEY_SIZE; k++) { K[k+3]=key[k]; } for (int g=0; g<256; g++) { S[g]=g; } for (int g=0; g< keyByte + 3; g++) { j=(j+S[g]+K[g % KEY_SIZE]) % 256; swap (S,g,j); } // First Byte through PRGA i=(i+1) % 256; j=(j + S[i]) % 256; swap (S,i,j); zwispei=text ^ S[(S[i]+S[j]) % 256]; out = text ^ zwispei; //zwispei=S[S[i]+S[j] % 256]; //Out //firstByte=text ^ zwispei; //out= text ^ firstByte; //zwispei=out; //out=(findIndex(S,zwispei)- j - S[keyByte+3]); } return out; public int findIndex(int [] S, int out) { for (int h=0;h<S.length;h++){ if (S[h]==out) { System.out.println(h); return h; } } return -1; } 43 public int[] recoverWEP() throws IOException { int [] strom; for (int keyByte=0; keyByte<KEY_SIZE; keyByte++) { rfile.seek(0); while ((strom = readLine())!=null) { if (isWeak(strom, keyByte)) { int [] iv = new int[3]; iv[0] = strom[0]; iv[1] = strom[1]; iv[2] = strom[2]; } for (int k=0; k<256; k++) { counts[k]=0; counts[simulateResolved(iv, key, keyByte)] =+ 1; } } key[keyByte] = maxcounts(counts); } } return key; private int [] readLine() throws IOException { String line = rfile.readLine(); if (line == null) { return null; } int [] ivs = new int[4]; String [] sivs = line.split(" "); ivs[0] = Integer.parseInt(sivs[0]); ivs[1] = Integer.parseInt(sivs[1]); ivs[2] = Integer.parseInt(sivs[2]); ivs[3] = Integer.parseInt(sivs[3]); return ivs; } public void closeStream() throws IOException { rfile.close(); } private int int for } int maxcounts(int [] counts) { max_ind = 0; max = 0; (int i=0; i<counts.length; i++) { if (counts[i]>max) { max = counts[i]; max_ind = i; } } return max_ind; private boolean isWeak(int[] ivs, int keyByte) { if ((ivs[0] == keyByte+3) && (ivs[1] == 255)) return true; else return false; } public void setKeysize(int size) { KEY_SIZE = size; } 44 public static void main(String [] args) { try { System.out.println("\nCalculating...\n"); Filter filter = new Filter("ivs.log"); int [] key = filter.recoverWEP(); System.out.println("Approximated Key: "); if (key == null) { System.out.println("Could not been estimated.."); System.exit(1); } for (int i : key) System.out.print(Integer.toHexString(i) + " "); System.out.println(); filter.closeStream(); } catch (Exception e) { e.printStackTrace(); } } } 45