Einführung
In diesem Dokument wird die Entschlüsselung des verschlüsselten WLAN Protected Access 2 - Enterprise (WPA2-Enterprise)- oder 802.1x (dot1x)-verschlüsselten OTA-Sniffers (Wireless over the Air) mit allen Extensible Authentication Protocol (EAP)-Methoden beschrieben.
Es ist relativ einfach, PSK-basierte/WPA2-Personal 802.11 OTA-Erfassung zu entschlüsseln, solange die vollständigen EAP over LAN (EAPoL)-Handshakes erfasst werden. Pre-Shared Key (PSK) wird jedoch nicht immer aus Sicherheitsgründen empfohlen. Ein hartkodiertes Passwort zu knacken ist nur eine Frage der Zeit.
Daher entscheiden sich viele Unternehmen für dot1x mit Remote Authentication Dial-In User Service (RADIUS) als bessere Sicherheitslösung für ihr Wireless-Netzwerk.
Voraussetzungen
Anforderungen
Cisco empfiehlt, über Kenntnisse in folgenden Bereichen zu verfügen:
- FreeRADIUS mit installiertem Radsniff
- Wireshark/Omnipeek oder eine Software, die 802.11-Wireless-Datenverkehr entschlüsseln kann
- Berechtigung zum Abrufen des gemeinsam genutzten geheimen Codes zwischen Netzwerkzugriffsserver (NAS) und Authentifizierer
- Erfassung der Radius-Paketerfassung zwischen NAS und Authentifizierer von der ersten Zugriffsanforderung (von NAS zu Authentifizierer) bis zur letzten Zugriffsgenehmigung (vom Authentifizierer zu NAS) während der gesamten EAP-Sitzung
- Möglichkeit zur OTA-Erfassung (Over-the-Air) mit vierseitigen EAPoL-Handshakes
Verwendete Komponenten
Die Informationen in diesem Dokument basieren auf den folgenden Software- und Hardwareversionen:
- Radius-Server (FreeRADIUS oder ISE)
- Over-the-Air-Erfassungsgerät
- Apple MacOS/OS X- oder Linux-Gerät
Die Informationen in diesem Dokument wurden von den Geräten in einer bestimmten Laborumgebung erstellt. Alle in diesem Dokument verwendeten Geräte haben mit einer leeren (Standard-)Konfiguration begonnen. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die potenziellen Auswirkungen eines Befehls verstehen.
Hintergrundinformationen
In diesem Beispiel werden zwei paarweise Master Keys (PMKs) von Radius-Paketen abgeleitet, die von ISE 2.3 erfasst wurden, da die Sitzungs-Timeout-Einstellung für diese SSID 1800 Sekunden beträgt und die hier angegebene Erfassung 34 Minuten (2040 Sekunden) lang ist.
Wie im Bild gezeigt, wird EAP-PEAP als Beispiel verwendet, kann jedoch auf jede dot1x-basierte Wireless-Authentifizierung angewendet werden.
Vorgehensweise
Schritt 1: Entschlüsseln von PMK(s) aus dem Access-Accept-Paket.
Führen Sie den Radsniff für die Radius-Erfassung zwischen NAS und Authenticator aus, um PMK zu extrahieren. Zwei Access-Accept-Pakete werden während der Erfassung extrahiert, weil der Sitzungs-Timeout-Timer für diese spezielle SSID auf 30 Minuten festgelegt ist und die Erfassung 34 Minuten lang ist. Die Authentifizierung erfolgt zweimal.
FRLU-M-51X5:pcaps frlu$ radsniff -I /Users/frlu/Downloads/radius_novlan_merged.pcapng -s <shared-secret between NAS and Authenticator> -x
<snip>
2018-11-16 11:39:01.230000 (24) Access-Accept Id 172 /Users/frlu/Downloads/radius_novlan_merged.pcapng:10.66.79.42:32771 <- 10.66.79.36:1812 +0.000 +0.000
User-Name = "frlu_2"
State = 0x52656175746853657373696f6e3a306134323466326130303030303565373562656530393732
Class = 0x434143533a3061343234663261303030303035653735626565303937323a4953452d322d332f3332383237313233382f33303432
EAP-Message = 0x03c50004
Message-Authenticator = 0x38c67b9ba349842c9624889a45cabdfb
MS-MPPE-Send-Key = 0xa464cc15c0df8f09edc249c28711eb13a6db2d1a176f1196edcc707579fd6793
MS-MPPE-Recv-Key = 0xddb0b09a7d6980515825950b5929d02f236799f3e8a87f163c8ca41a066d8b3b<<<<<<<<<<<<<<<<<<PMK
Authenticator-Field = 0x6cd33b4d4dde05c07d9923e17ad6c218
<snip>
2018-11-16 11:39:01.470000 (48) Access-Accept Id 183 /Users/frlu/Downloads/radius_novlan_merged.pcapng:10.66.79.42:32771 <- 10.66.79.36:1812 +0.000 +0.000
User-Name = "frlu_2"
State = 0x52656175746853657373696f6e3a306134323466326130303030303565373562656530393732
Class = 0x434143533a3061343234663261303030303035653735626565303937323a4953452d322d332f3332383237313233382f33303434
EAP-Message = 0x03910004
Message-Authenticator = 0x81c572651679e15e54a900f3360c0aa9
MS-MPPE-Send-Key = 0xeae42cf7c6cd26371eee29856c51824fbb5bbb298874125928470114d009b5fb
MS-MPPE-Recv-Key = 0x7cce47eb82f48d8c0a91089ef7168a9b45f3d798448816a3793c5a4dfb1cfb0e<<<<<<<<<<<<<<<<<PMK
Authenticator-Field = 0xa523dd9ec2ce93d19fe4fc2e21537a5d
Hinweis: Entfernen Sie alle Virtual LAN (VLAN)-Tags der Radius-Paketerfassung. Andernfalls erkennt radsniff die pcap-Eingabedatei nicht. Zum Entfernen von VLAN-Tags kann beispielsweise editcap verwendet werden.
Tipp: Im Allgemeinen kann die Laufzeit des Befehls radsniff für eine RADIUS pcap-Datei als Sekunden gezählt werden. Wenn der Radsniff jedoch in diesem im Protokoll angezeigten Zustand feststeckt, kaskadieren Sie diese Paketerfassung (A) mit einer weiteren längeren Paketerfassung (B) zwischen demselben NAS und Authentifizierer. Führen Sie dann den Befehl radsniff für das kaskadierte Paket (A+B) aus. Die einzige Anforderung für die Paketerfassung (B) besteht darin, dass Sie den Befehl radsniff darauf ausführen und das ausführliche Ergebnis anzeigen können.
FRLU-M-51X5:pcaps frlu$ radsniff -I /Users/frlu/Downloads/radius_novlan.pcap -s Cisco123 -x
Logging all events
Sniffing on (/Users/frlu/Downloads/radius_novlan.pcap)
In diesem Beispiel wird die Protokollierung der Steuerungsebene (A), die über die WLC-Paketprotokollierungsfunktion erfasst wird, mit einer längeren Erfassung von TCPdump (B) der ISE kaskadiert. Die Protokollierung von WLC-Paketen dient als Beispiel, da sie in der Regel sehr klein ist.
WLC-Paketprotokollierung (A)
ISE Tcpdump (B)
Zusammengeführt (A+B)
Führen Sie dann den Radsniff gegen das zusammengeführte pcap aus (A+B), und Sie können die ausführliche Ausgabe sehen.
FRLU-M-51X5:pcaps frlu$ radsniff -I /Users/frlu/Downloads/radius_novlan_merged.pcapng -s <shared-secret between NAS and Authenticator> -x
<snip>
2018-11-16 11:39:01.230000 (24) Access-Accept Id 172 /Users/frlu/Downloads/radius_novlan_merged.pcapng:10.66.79.42:32771 <- 10.66.79.36:1812 +0.000 +0.000
<snip>
Schritt 2: PMK(s) extrahieren.
Löschen Sie in jedem MS-MPPE-Recv-Key aus der ausführlichen Ausgabe das 0x-Feld, und die PMKs, die für die Wireless-Datenverkehrsdekodierung erforderlich sind, werden angezeigt.
MS-MPPE-Recv-Key = 0xddb0b09a7d6980515825950b5929d02f236799f3e8a87f163c8ca41a 066d8b3b
PMK:
ddb0b09a7d6980515825950b5929d02f236799f3e8a87f163c8ca41a066d8b3b
MS-MPPE-Recv-Key = 0x7cce47eb82f48d8c0a91089ef7168a9b45f3d798448816a3793c5a4fb1cc b0e
PMK:
7cce47eb82f48d8c0a91089ef7168a9b45f3d798448816a3793c5a4dfb1cfb0e
Schritt 3: Entschlüsseln Sie den OTA-Sniffer.
Navigieren Sie zu Wireshark > Preferences > Protocols > IEEE 802.11. Tippen Sie dann auf Entschlüsselung aktivieren und klicken Sie auf die Schaltfläche Bearbeiten neben Entschlüsselungsschlüssel, wie im Bild gezeigt.
Wählen Sie anschließend wpa-psk als Key-Typ aus, legen Sie die abgeleiteten PMKs in das Key-Feld ein, und klicken Sie dann auf OK. Nach Abschluss dieses Vorgangs sollte die OTA-Erfassung entschlüsselt werden, und Sie können Informationen auf höherer Ebene (3+) anzeigen.
Beispiel für ein entschlüsseltes 802.11-Paket
Wenn Sie das zweite Ergebnis vergleichen, bei dem der PMK nicht enthalten ist, mit dem ersten Ergebnis, bei dem der PMK enthalten ist, wird Paket 397886 als 802.11-QoS-Daten entschlüsselt.
Beispiel für ein verschlüsseltes 802.11-Paket
Vorsicht: Sie können bei der Entschlüsselung auf ein Problem mit Wireshark stoßen. Selbst wenn der richtige PMK bereitgestellt wird (oder wenn PSK verwendet wird, werden sowohl SSID als auch PSK bereitgestellt), entschlüsselt Wireshark die OTA-Erfassung nicht. Die Problemumgehung besteht darin, Wireshark ein- und mehrmals auszuschalten, bis höhere Layer-Informationen abgerufen werden können und 802.11-Pakete nicht mehr als QoS-Daten angezeigt werden, oder einen anderen PC/Mac zu verwenden, auf dem Wireshark installiert ist.
Tipp: Ein C++-Code namens pmkXtract ist im ersten Beitrag in Related Information angehängt. Die zu kompilierenden Versuche wurden erfolgreich durchgeführt, und es wird eine ausführbare Datei abgerufen, aber das ausführbare Programm scheint die Entschlüsselung aus einigen unbekannten Gründen nicht ordnungsgemäß durchzuführen. Zusätzlich wird ein Python-Skript, das versucht, PMK zu extrahieren, im Kommentarbereich des ersten Beitrags veröffentlicht, der bei Interesse der Leser weiter erforscht werden kann.
Zugehörige Informationen