BackTrack 5 R3 – WPA2-PSK Honeypot

Um eine WPA2-PSK Passphrase zu entschlüsseln, kann man einen Honeypot benutzen – ein Client wird sich mit dem Netzwerk verbinden, so ergattern wir den 4 Way Handshake und können so die Passphrase versuchen zu erraten. Entschlüsseln ist nicht wirklich korrekt, ich will noch einmal betonen: Die Passphrase für WPA und WPA2-Netze können nur durch Brute-Force/Dictionary Attacks erraten werden, mathematische (kryptologische) Verfahren zur Berechnung des Schlüssels gibt es – im Gegensatz zu WEP – nicht. Daher ist WPA2 + ein starkes Kennwort die bevorzugte Wahl in Sachen IEEE 802.11 Sicherheit.

Honeypot aufsetzen

Das Verfahren ist unglaublich einfach. Ein Monitor-Mode Interface wird durch airbase-ng zum Soft-AP, unserem Honeypot. Es kann wieder eine beliebige SSID angegeben werden, das Startkommando für einen solchen Honeypot wäre beispielsweise:

airbase-ng --essid TacticalCode -Z 4 mon0

Ist nun ein Client in der Umgebung, der nach der passenden SSID probed, wird sich dieser wohl mit unserem Honeypot verbinden, wir können den Handshake mit airodump-ng aufzeichnen, der Rest sollte bekannt sein.

Mehrere Honeypots mit wifihoney

Um das ganze etwas realistischer zu gestalten, gehen wir davon aus:
Wir sitzen im Café, beobachten die Umgebung mit airodump-ng. Ein Client taucht auf, der ProbeRequests für ein Netzwerk sendet. Anhand der Probe Requests können wir noch nicht feststellen, welche Verschlüsselung das Netzwerk hat (Open, WEP, WPA, WPA2). Der Client wird sich logischerweise nur mit dem Netzwerk verbinden, welches eine passende Verschlüsselung hat. Diese ist in der PNL (Preferred Network List) auf dem Client gespeichert.


Also öffnen wir für jede Verschlüsselung einen eigenen Honeypot. Dies kann man in verschiedenen Terminals machen, bequemer geht es mit dem Programm screen. Es gibt in BackTrack 5 R3 bereits ein Script, welches den Vorgang automatisiert: WifiHoney
WifiHoney.sh (unter /pentest/wireless/wifi-honey) erstellt mittels airmon-ng automatisch 5 Monitor Interfaces (4 für Honeypots, 1 zur Aufzeichnung mit airodump), die 4 Honeypots werden durch airbase-ng erstellt und sind für die 4 oben genannten Verschlüsselungen. Nach dem Start bekommt man airodump als Übersicht zu sehen, der Traffic wird im gleichen Ordner aufgezeichnet. Man kann hier sehen, welcher Client sich mit welchem Netzwerk verbunden hat. Falls nötig, kann natürlich auch aireplay-ng in einem separaten Fenster gestartet werden, um DeAuth Pakete zu senden.

wifihoney.sh nach dem Start

Übersicht in wifihoney.sh – Der 4 Way Handshake würde für CC:CC:CC:CC:CC:CC aufgezeichnet.

WifiHoney ist wohl die bequemste Lösung, Honeypots für Wireless Clients zu erstellen. Allerdings, wie Vivek Ramachandran im Wireless Megaprimer gewarnt hat, sollte man sich nicht nur mit solchen Scripts befassen. Dem muss ich zustimmen: Wer sich mit der Materie befasst, sollte auch die Technik im Hintergrund verstehen, nicht nur vorgefertigte Scripts ausführen. Schließlich will man ja auch nicht als Scriptkiddie abgestempelt werden.

WPA2-PSK Honeypot: Hintergrund

Um auch hier etwas Background-Info einfließen zu lassen, will ich noch ein Detail erwähnen, was vielleicht nicht allen bewusst ist:
Der Pairwise Transient Key (PTK) wird errechnet aus

  • ANounce (Authenticator nonce)
  • SNounce (Supplicant nonce)
  • AP MAC
  • STA MAC
  • PMK (Pairwise Master Key)

Der PMK wird mittels PBKDF2 aus Passphrase und SSID des Netzwerks errechnet. Wir kennen dadurch, dass sich der Client mit uns verbunden hat, alles außer die Passphrase. Verbindet sich der Client mit dem Honeypot, erfahren wir von ihm die Snonce. Eine Anonce wird von uns selbst durch airbase-ng generiert, unsere eigene MAC und die Client MAC sind bekannt. Die SSID ist durch ProbeRequests bekannt, darauf basierend wurde ja unser Honeypot erstellt. Generieren wir jetzt eine zufällige Passphrase und errechnen den PMK, können wir durch die Daten den 4-Way Handshakes und den PMK einen PTK generieren. Dieser wird dazu genutzt um zu überprüfen, ob die Passphrase korrekt ist. Um dies zu verstehen, hier noch einmal der Ablauf:
Paket 1: Nachdem ein AuthRequest vom Client gesendet wurde, schickt der AP die ANonce an den Client
Paket 2(a): Der Client generiert eine Snonce. Anonce, AP-MAC, ST-MAC sowie Passphrase sind dem Client bekannt -> PTK wird berechnet (noch wurde das zweite Paket nicht gesandt)
Paket 2(b): Die generierte Snonce wird zusammen mit einer Checksumme an den AP gesandt. Die Checksumme (MIC) wird aus dem Snonce-Paket und PTK berechnet

4 Way Handshake in Wireshark

[Die ersten beiden Pakete des 4 Way Handshakes – im zweiten sind Snonce und MIC enthalten.]


An dieser Stelle folgen nur noch Key-Installation-Message des APs (zusammen mit einer MIC) und Key-Installation-Acknowledgement des Clients.
Dazu wird geprüft, ob der MIC (Message Integrity Check), welcher vom Client mit der SNonce gesendet wird, korrekt ist. Da diese beiden Pakete aber keine relevanten Daten mehr beinhalten, sind sie zu vernachlässigen. Da wir den PMK nicht kennen, könnten wir sowieso keinen richtigen PTK generieren, die MIC im Key-Installation Paket wäre falsch, der Client würde sie ablehnen. Wir brauchen also nur die ersten 2 Pakete, damit alle Daten verfügbar sind, um den PMK und daraus einen PTK zu berechnen.

Ich kann hierzu wieder einmal die Videos auf Securitytube.net empfehlen, darin sind wirklich gute Abbildungen enthalten, die das ganze noch etwas übersichtlicher gestalten.

Wurden die ersten beiden Pakete des Handshakes aufgezeichnet, kann man versuchen, die Passphrase zu erraten. Theoretisch würde sogar nur das zweite Paket des 4 Way Handshakes in einem Capture reichen, sofern wir die Anonce aus airbase-ng erfahren. Der Client müsste dann nur eine Snonce und MIC senden.

MfG
Damon Dransfeld

Dieser Eintrag wurde veröffentlicht in ITS Tagebuch, Security
Bookmarken: Permanent-Link Schreibe einen Kommentar oder hinterlasse einen Trackback: Trackback-URL.
Achtung: Wordpress interpretiert bestimmte Zeichenfolgen als Markup und verändert diese. Nutzt für Programmcode lieber Gist oder PasteBin-Services und verlinkt die Code-Schnipsel.

Post a Comment

Ihre E-Mail wird niemals veröffentlicht oder verteilt. Benötigte Felder sind mit * markiert

*
*

Du kannst diese HTML Tags und Attribute verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>