Contenido

Introducción

Prerequisites

Requirements

Componentes Utilizados

Antecedentes

Procedimiento

Paso 1. Descifrar PMK de Access-accept Packet.

Paso 2. Extraer PMK(s).

Paso 3. Descifrar el sniffer de OTA.

Ejemplo de un paquete 802.11 descifrado

Ejemplo de un paquete 802.11 cifrado

Información Relacionada

Introducción

Este documento describe cómo descifrar el analizador Wi-Fi Protected Access 2 - Enterprise (WPA2-Enterprise) u 802.1x (dot1x) del rastreador inalámbrico sobre el aire (OTA) cifrado, con cualquier método de protocolo de autenticación extensible (EAP).

Es relativamente fácil descifrar la captura de OTA 802.11 basada en PSK/WPA2-personal siempre y cuando se capturan los apretadores de manos EAP a través de LAN (EAPoL) completos de cuatro direcciones. Sin embargo, la clave precompartida (PSK) no siempre se recomienda desde el punto de vista de la seguridad. Corregir una contraseña codificada es sólo cuestión de tiempo.

Por lo tanto, muchas empresas eligen dot1x con Remote Authentication Dial-In User Service (RADIUS) como una mejor solución de seguridad para su red inalámbrica.

Prerequisites

Requirements

Cisco recomienda que tenga conocimiento sobre estos temas:

- RADIUS libre con radsniff instalado

- Wireshark/Omnipeek o cualquier software capaz de descifrar el tráfico inalámbrico 802.11

- Privilegio para obtener el secreto compartido entre el servidor de acceso a la red (NAS) y Authenticator

- Capacidad para capturar la captura de paquetes RADIUS entre NAS y el autenticador desde la primera solicitud de acceso (desde NAS hasta Authenticator) hasta la última aceptación de acceso (desde Authenticator hasta NAS) durante toda la sesión EAP

- Capacidad para realizar capturas sobreaéreas (OTA) que contienen apretones de manos EAPoL de cuatro vías

Componentes Utilizados

La información que contiene este documento se basa en las siguientes versiones de software y hardware.

- Servidor Radius (FreeRADIUS o ISE)

- Dispositivo de captura de señal aérea

- Dispositivo Apple MacOS/OS X o Linux

The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Si tiene una red en vivo, asegúrese de entender el posible impacto de cualquier comando.

Antecedentes

En este ejemplo, dos Pirwise Master Keys (PMK) se derivan de los paquetes Radius capturados desde ISE 2.3, ya que el tiempo de espera de la sesión en este SSID es de 1800 segundos y la captura dada aquí es de 34 minutos (2040 segundos) de largo.

Como se muestra en la imagen, EAP-PEAP se utiliza como ejemplo, pero esto se puede aplicar a cualquier autenticación inalámbrica basada en dot1x.

Procedimiento

Paso 1. Descifrar PMK de Access-accept Packet.

Ejecute el radsniff contra la captura de RADIUS entre NAS y Authenticator para extraer PMK. La razón por la que se extraen dos paquetes de aceptación de acceso durante la captura es que el temporizador de tiempo de espera de sesión se establece en 30 minutos en este SSID en particular y la captura es de 34 minutos de largo. La autenticación se realiza dos veces.

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

Nota: Quite cualquier etiqueta LAN virtual (VLAN) de la captura de paquetes Radius; de lo contrario, radsniff no reconoce el archivo pcap de entrada. Para quitar cualquier etiqueta VLAN, por ejemplo, editcap se puede utilizar.

Consejo: Generalmente, el tiempo de ejecución del comando radsniff contra un archivo PCAP RADIUS se puede contar como una escala de segundos. Sin embargo, si el radsniff está atascado en este estado mostrado en el registro, por favor ponga en cascada esta captura de paquetes (A) con otra captura de paquetes más larga (B) entre el mismo NAS y Authenticator. A continuación, ejecute el comando radsniff contra el paquete en cascada (A+B). El único requisito de captura de paquetes (B) es que puede ejecutar el comando radsniff en su contra y ver el resultado detallado.

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)

En este ejemplo, el registro del plano de control del controlador de LAN inalámbrica (WLC) (A) que se captura a través de la función de registro de paquetes WLC, se coloca en cascada con una captura más larga del TCPdump (B) de ISE. El registro de paquetes WLC se utiliza como ejemplo porque generalmente es de tamaño muy pequeño.

Registro de paquetes WLC (A)

Tcpdump ISE (B)

Combinado (A+B)

A continuación, ejecute el radsniff contra el pcap combinado (A+B) y podrá ver el resultado detallado.

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>

Paso 2. Extraer PMK(s).

Elimine el campo 0x en cada MS-MPPE-Recv-Key de la salida detallada y luego se presentan los PMK necesarios para el descódigo del tráfico inalámbrico.

MS-MPPE-Recv-Key = 0xddb0b09a7d6980515825950b5929d02f236799f3e8a87f163c8ca41a 066d8b3b

PMK:

ddb0b09a7d6980515825950b5929d02f236799f3e8a87f163c8ca41a066d8b3b

MS-MPPE-Recv-Key = 0x7cce47eb82f48d8c0a91089ef7168a9b45f3d79848816a3793c5a4dfb1cfb b0e

PMK:

7cce47eb82f48d8c0a91089ef7168a9b45f3d798448816a3793c5a4dfb1cfb0e

Paso 3. Descifrar el sniffer de OTA.

Vaya a Wireshark > Preferences > Protocols > IEEE 802.11. A continuación, marque Enable Decryption y haga clic en el botón Edit situado junto a Decryption Keys, como se muestra en la imagen.

A continuación, seleccione wpa-psk como tipo de clave, coloque los PMK derivados en el campo Key y luego haga clic en OK. Después de completar esto, se debe descifrar la captura OTA y se puede ver información de capa superior (3+).

Ejemplo de un paquete 802.11 descifrado

Si compara el segundo resultado donde no se incluye el PMK, con el primer resultado, donde se incluye el PMK, el paquete 397886 se descifra como datos de QoS 802.11.

Ejemplo de un paquete 802.11 cifrado

Precaución: Puede encontrarse con un problema con Wireshark en el descifrado y, en ese caso, incluso si se proporciona la PMK adecuada (o si se utiliza PSK, se proporcionan SSID y PSK), Wireshark no descifra la captura OTA. La solución temporal es apagar Wireshark y encenderlo varias veces hasta que se pueda obtener información de capa superior y los paquetes 802.11 ya no se muestren como datos de QoS o para utilizar otro PC/Mac donde esté instalado Wireshark.

Sugerencia: un código de C++ denominado pmkXtrt se adjunta en el primer post de Información Relacionada. Los intentos de compilación se realizaron correctamente y se obtuvo un archivo ejecutable, pero el programa ejecutable no parece realizar el descifrado correctamente por algunas razones desconocidas. Además, un guión en Python que intenta extraer PMK es publicado en el área de comentarios en el primer post, que puede ser explorado más adelante si los lectores están interesados.

Información Relacionada

- Tweaking EAP's débil link - succión de PMK WiFi de RADIUS con pmkXtrat

- Cómo descodificar la clave MS-MPPE-Recv de Radius

- Soporte Técnico y Documentación - Cisco Systems