Ampliación de la red wifi del CIFP Tartanga y actualización del firmware de los APs contra la vulnerabilidad WPA-PSK KRACK

A finales del mes de octubre de 2017 desde el dpto. de las TIC del CIFP Tartanga hemos procedido a ampliar la red wifi del instituto con la instalación de nuevos puntos de acceso Unifi AP PRO. El proceso comienza con la instalación física del dispositivo, la conexión de la alimentación PoE y la conexión a la red. Una vez se ha hecho esto, el nuevo punto de acceso aparece visible en el controlador Wifi

Nuevo punto de acceso pendiente de adoptar

El nuevo punto de acceso aparece como pendiente de aprobar, lo cual se lleva a cabo haciendo click en la opción adopt

Adopción del nuevo punto de acceso

Punto de acceso adoptado

Una vez adoptado se comprueba que  necesita una actualización del firmware, ya que tiene la versión 3.2.6.2799 y existen nuevas versiones disponibles. La actualización es un proceso verdaderamente sencillo, ya que basta con hacer click en el botón lateral de Upgrade que muestra el controlador wifi  para cada uno de los APs 

Actualización del firmware del AP

Una vez actualizado, se procede a situar el nuevo AP en el mapa de cobertura de la planta correspondiente, en este caso, la primera planta del CIFP Tartanga

Colocación del AP sobre el mapa de cobertura

AP situado en su posición real sobre el mapa de cobertura

Nuevo AP instalado en la sala de reuniones

Al finalizar el proceso de actualización del punto de acceso se observa que su versión de firmware es la misma que la que tienen los restantes puntos de acceso,  la  3.3.20.4019. Esta versión está afectada por la reciente vulnerabilidad encontrada en el protocolo WPA-PSK y denominada WPA-PSK  KRACK (key reinstallation attacks). Unifi tiene disponible desde el 16 de octubre de 2017 la versión 3.9.3.7537 que corrige la vulnerabilidad del protocolo WPA2 en sus puntos de acceso.

  Versión de firmware para APs Unifi contra la vulnerabilidad KRACK 

Esta actualización solo puede ser instalada en los APs si previamente el controlador Wifi se actualiza a una versión 5.5.20 o superior. Nosotros hemos optado por actualizarlo a la última versión disponible en la web de Ubiquiti, la 5.5.24.

Actualización de la versión del controlador Wifi

Una vez actualizado el controlador, de nuevo aparecen activados los botones de upgrade para cada uno de los puntos de acceso. Al actualizarlos se cargará la última versión disponible de forma automática.

Upgrade disponible para todos los APs

Upgrade del AP desde la versión 3.7.5.4969 a la 3.9.3.7537

Todos los APs actualizados a la versión 3.9.3.7537

 Una breve descripción de la vulnerabilidad KRACK:

Un dispositivo Wifi utiliza la clave PSK (Pre-Shared Key – clave precompartida) para autentificarse ante el punto de acceso. Esta clave PSK está programada en el AP y es conocida por todos los clientes que se conectan a él. Tanto el cliente como el AP generan a partir de esa clave PSK una nueva clave denominada PMK (Pairwise Master Key – Clave maestra por pares), proceso que normalmente se realiza pasando la clave PSK por un algoritmo de Hash  de tipo SHA1 (Secure Hash Algorithm – Algoritmo seguro de Hash). Este tipo de algoritmos generan una salida binaria a partir de la cual no es posible obtener el valor inicial en un tiempo razonable. La clave PMK nunca circula por “el aire” 

La autentificación y cifrado de la transmisión de datos entre cada cliente y el AP se basa en el uso de unas claves particulares denominadas  PTK (Pairwise Transient Key  – Clave transitoria por pares) , construidas a partir de las claves PMK mediante un complejo proceso criptográfico y son las que permiten encriptar los datos enviados y recibidos hacia el punto de acceso. Estas claves PTK se generan tanto en el punto de acceso (AP) como en el cliente y en realidad están compuestas de varias claves individuales más pequeñas, utilizándose cada una de ellas en una  fase del proceso de autentificación y cifrado. En la práctica y por motivos de seguridad, no se utiliza la misma clave para el cifrado de datos sino que ésta es una semilla que se introduce en un generador de valores pseudoaleatorios y cada paquete enviado es encriptado con una clave distinta obtenida desde este generador.  El intercambio de claves entre el punto de acceso (authenticator) y el cliente (supplicant) se hace a través de un algoritmo de 4 pasos denominado 4-way handshake

  1. El punto de acceso envía al cliente una cadena binaria con un contenido aleatorio. Esta cadena recibe el nombre de Anonce (Authenticator Nonce)
  2. A partir de esta cadena Anonce el punto de acceso genera su clave PTK, mezclando esta cadena junto con la clave PMK, una cadena Snonce (Supplicant Nonce) generada en el propio cliente, la dirección MAC del AP y la dirección MAC del cliente. La clave PTK realmente se compone de varias claves temporales, entre ellas una clave KCK (Key Confirmation Key) de 128 bits, una clave KEK (Key Encryption Key) de 128 bits y una clave TK (Temporary Key) también de 128 bits. Las claves KCK y KEK son utilizadas para garantizar el intercambio de información durante el proceso 4-way handshake, y la clave TK se utiliza para la encriptación del flujo de datos entre el AP y el cliente. Una vez generada la clave PTK el cliente envía hacia el AP un mensaje que incluye la cadena Snonce sin encriptar  junto con un valor denominado MIC (Message Integrity Check) que asegura la integridad del mensaje y en cuyo cálculo interviene la clave KCK. 
  3.  El AP construye su propia clave PTK  a partir de la cadena aleatoria Snonce enviada por el cliente y el resto de datos que él mismo ya conoce (clave PMK, Anonce del AP, dirección MAC del cliente y dirección MAC del AP). En este momento el AP calcula la clave de integridad MIC y la compara con el valor MIC recibido desde el cliente. Si ambos valores son iguales el AP está seguro que la cadena Snonce que ha recibido corresponde realmente al cliente al que le ha enviado inicialmente su propia cadena Anonce. Una vez hecho esto el AP calcula una clave GTK (Group Temporal Key – clave temporal de grupo) que envía hacia el cliente y que será utilizada para las comunicaciones de tipo broadcast y multicast. Esta clave GTK es la misma para todos los clientes conectados al AP y circula “por el aire” de forma encriptada mediante la clave KEK. Junto con la clave GTK encriptada se envía también la clave MIC calculada por el punto de acceso, permitiendo al cliente verificar la autenticidad del AP. (En este protocolo el AP comprueba la autenticidad del cliente y el cliente comprueba la autenticidad del AP).
  4. El cliente confirma la recepción de la clave GTK mediante un mensaje de reconocimiento ACK que va acompañado igualmente del valor de integridad MIC. Con esta información el AP confirma que el cliente ha instalado correctamente las claves PTK y GTK, pudiendo comenzar en este momento el intercambio de datos de forma cifrada, tanto en tráfico unicast como en tráfico de broadcast o multicast. 

Un aspecto fundamental de este proceso es que el cliente instala las claves PTK y GTK a partir del paso 3, cuando recibe una clave GTK por parte del AP. Además, un cliente puede recibir nuevos mensajes de reinstalación de las claves PTK Y GTK a pesar de disponer ya de claves válidas. Es decir, cada vez que el AP envía de nuevo el tercer mensaje del protocolo 4-way handshake con una nueva clave GTK, el cliente hace un reset a las claves PTK y GTK que ya tenía e instala las nuevas.  La vulnerabilidad del protocolo reside precisamente en que no está previsto que un AP “falso” (man-in-the-middle) envíe hacia el cliente repetidas veces el mensaje nº 3 con la clave GTK. 

En realidad el “falso” AP va a impedir que el cuarto mensaje del protocolo 4-way  pueda llegar hasta el verdadero AP, con lo que éste reenviará el tercer mensaje con la clave GTK repetidas veces. En ese caso, el cliente instalará repetidas veces las claves PTK y GTK y esto provocará un reinicio de “la semilla” utilizada para generar las claves aleatorias con las que se cifran posteriormente cada uno de los paquetes de datos enviados. Interceptando a continuación paquetes que tengan un contenido conocido, es relativamente sencillo mediante un análisis estadístico deducir la clave aleatoria de cifrado que está siendo utilizada una y otra vez por el cliente, con cada reinstalación de las claves PTK y GTK. Una vez conocida esta clave aleatoria de cifrado es fácil desencriptar cualquier contenido enviado por el cliente. Si no hay paquetes con contenido conocido, el ataque es más difícil, aunque en la práctica es sencillo encontrar paquetes con contenido conocido. 

Aun cuando se utilice una capa añadida de encriptación al acceder a páginas web mediante el protocolo seguro HTTPS, mediante este ataque es posible desencriptar los paquetes TCP SYN del protocolo TCP/IP y mediante una suplantación de estos paquetes TCP, forzar al cliente a utilizar el protocolo HTTP cuando accede en realidad a una web con protocolo HTTPS, con lo que la información enviada por el cliente como contraseñas o números secretos de acceso a servicios bancarios, irán en texto plano.

En cualquier caso, no es un ataque sencillo de realizar, ya que en primer lugar es necesario que el AP “atacante” esté situado como “man-in-the-middle” suplantando la verdadera identidad del AP original. Además, diferentes sistemas operativos (como Windows, Linux, Ios o Android) ofrecen variaciones en las implementaciones del protocolo 4-way handshake, por lo que un ataque a un dispositivo en concreto puede no funcionar con otro dispositivo distinto.  

Nota: En el texto anterior se ha omitido gran parte de la complejidad del protocolo WPA-PSK y del propio mecanismo de ataque de la vulnerabilidad Krack. Información más completa puede encontrarse en los dos siguientes documentos:

1.-  Página oficial de Krack-attacks

2.- Documento original de los descubridores de la vulnerabilidad

Esta entrada fue publicada en Redes Wifi. Guarda el enlace permanente.

Deja un comentario

Tu dirección de correo electrónico no será publicada.