Fecha de publicación: Lun, 23/10/2017 - 15:39
Ataque de Reinstalación de llaves: Forzando el reuso de “Nonce” en WPA2

 

El protocolo WPA2 implementa AES-CCMP actualmente como protocolo de seguridad, la implementacion del AES-GCMP es inminente para las futuras conecciones como sucesor del AES-CCMP.

El inminente ataque KRACK explota una vulnerabilidad en el protocolo WPA2 en el flujo del intercambio de llaves entre el suplicante y un Access Point (AP). Este flujo consta de cuatro vias para establecer un canal seguro entre en usuario y el AP.

Antes de proseguir con la explicacion de como se realizo el ataque, cabe resaltar que esta vulnerabilidad no tiene como fin robar las contraseñas de autenticacion entre el suplicante y el AP, el objetivo es modificar la llave (re-usar una llave anterior la cual el atacante tiene conocimiento) que se emplea para transmitir información entre el suplicante y AP de manera que sea posible observar lo transmitido desde el usuario al AP legiblemente, a excepcion de los cifrados punto a punto tales como HTTPS y VPN.

Como funciona?

La explicacion del flujo de mensajes para establecer la autenticacion y asociacion en el protocolo WPA2, esta basado el protocolo Extensible Authentication Protocol over LAN (EAPOL).”

Cuando el suplicante desea conectarse a una red WiFi, comienza la autenticacion y asociacion con el AP. En este paso las llaves PMK son negociadas usando el estandar 802.1x, y luego negocian una nueva llave el Pairwise Transient Key (PTK) la cual es derivado del PMK.

La derivacion del PTK es realizado en el lado del suplicante. PTK se distribuye en tres llaves Key Confirmation Key (KCK), Key Encryption Key (KEY) y Temporal Key (TK); cada una con una respectiva funcion (vease en anexos).

Infraestructura EAPOL frame

El header(cabecera) define que tipo de negociacion se realizara (esto difiere dependiendo del suplicant, Peer Key, Group Key y Fast BSS Transition).

Replay Counter (Contador de recepción), este campo es usado como contador de respuestas del autenticador (AP) el cual incrementara en uno después de cada retransmisión. Si el suplicante es el que responde, el contador no aumentara.

Nonce (Numeros impares aleatorios), estos numero aleatorios impares son generados en ambas partes.

Receive Sequence Counter (RSC), este campo es el encargado de llevar el contador de paquetes en los cuales se transmite la llave secreta para cifrar los futuros datos a transmitir.

Message Integrity Check (MIC), este campo tiene la funcion de manter la autenticacion del frame, usando KCK derivado del PTK, el cual usa un algoritmo hash con llave como el MAC para la autenticacion de los frames.

Key Data, en esta campo se cifra la llave Group Key con la ayuda de KEK, derivado del PTK.

+ Los mensajes seran identificados con el MsgN, donde N es el orden de los mensages.

+ “r” representa el contador de recepcion mas “nonce”

+ Lo que se encuentra luego del “;” es el campo de Key Data.

MsgN(r,Nonce;GTK)

[1] El primer mensaje es enviado del AP al suplicante {Msg1}, “r” y “ANonce” (AP Nonce).

[2] Con la recepcion de este mensage el suplicante genera su “SNonce” (Supplicant Nonce) y el PTK, que es una derivacion del PMK. De esta manera el suplicante manda el {Msg2} que consta del mismo “r” del Msg1 y SNonce.

[3] El autenticador, AP, recibe el SNonce, y deriva el PTK correspondiente. Y en el Msg3 se envia el “r+1” y Group Key.

[4] El suplicante recibe el mensage del autenticador y responde con una confirmacion aceptando ambas llaves, el PTK y el GTK (Group Transient Key).

En resumen los primeros dos mensajes son unicamente para transportar los “nonces” y los dos ultimos mensajes son usados para transportar la llave grupal que es usada para transmitir multicast y broadcast.

Tomar encuenta que la llave PTK no es una llave constante, este puede ser actualizado por mas que el suplicante ya se encuentre conectado a la red WiFi.

El grafico de abajo describe el flujo de intercambio de paquetes entre el Suplicante y el Autenticador.

handshake_wpa2

La siguiente seccion se mostrara como se ejecuta la reinstalacion de la llave, en otras palabras la explotacion de la vulnerabilidad.

[1] El atacante usa MiTM para poder visualizar el flujo de 4 vias que se usa para establecer el canal seguro.

[2] El atacante bloquea el Msg4, el cual corresponde a la afirmacion del proceso de intercambio de llaves. Y envia las llaves PTK y GTK manipuladas por el mismo atacante, las cuales son instaladas en el suplicante.

Tomar encuenta que el Msg4 no fue recibido por el autenticador y tiene un contador “r+1”.

[3] El autenticador retransmite el Msg3, dado que nunca recibio el Msg4. El atacante deja pasar el nuevo mensaje Msg3. El suplicante instala el nuevo Msg3 con las nuevas llaves PTK y GTK. Por consiguiente el suplicante envia el Msg4 con el contador “r+2”.

Despues de enviar el Msg4, los contadores se reinician, por lo que el siguiente frame comenzara con el contador “r+1”.

Dado que el cifrado en WPA2 usa la siguiente sintaxis, con dos dependencias. “n” el valor del “nonce” mas el contador y la llave PTK.

ecuacion_cifrado_PTK

Al tener el contador inicial en 1 el atacante puede decifrar el contenido ya que conoce la llave del contador 1 y las llaves mismas.

[4] El Msg4 enviado por el suplicante el cual debe llegar al AP, se encuentra cifrado, y dado que el autenticador no instalo el PTK del anterior mensaje (Msg3 intervenido) este instala el nuevo PTK, el cual es manipulado por el atacante.

reinstall_key_wpa2

En conclusion es una ataque relativamente similar a un “race condition” el cual aprovecha el tiempo de la ejecucion de los paquetes para sacar provecho del protocolo.

NOTA:

- Los suplicantes aceptan una retransmisión del Msg3 por mas que se haya completado las cuatro vias, en otras palabras si el PTK y el GTK ya fueron establecidos, el suplicante puede aceptar una retransmision del Msg3.

- El atacante debera encontrarse entre el AP y el suplicante, man-in-the-middle (MiTM)

- El ataque realizado evita que el Msg4 llegue al autenticador AP, de este modo nunca se concreta los cuatro pasos y el atacante puede transmitir el Msg3 para reinstalar una llave conocida.

- *wpa_supplicant, acepta estos mensages en texto plano.

- Existe tren variables de ataque que se puede ejecutar, uno de ellos es el Peer Key utilizado para tranmisiones unicast y el otro es el Fast BSS Transition para rooming.

Glosario

Supplicant/suplicante = Usuario y/o cliente como tambien puede ser un AP en modo rooming.

PMK = Pairwise Master Key, es una derivacion de la contrasena usada para conectarse a la red WiFi.

key_distribution_wpa2

PTK = Pairwise Transient Key ==> Llave intermediaria de PMK. PTK es separada en tres llaves como se muestra en la figura de encima.

KCK = Key Confirmation Key ==> prueba que tiene la llave PMK

KEK = Key Encryption Key ==> es usado para distribuir el GTK

TK = Temporal Key ==> Usado para cifrar la data

De igual manera se genera el GMK, creado en el AP y el cual genera una llave intermedia GTK

GTK = Group Transient Key ==> Transmisiones Multicast y Broadcast

RSC = Receive Sequence Counter ==> Contiene el contador de recepcion del GTK

AES-CCMP = Algoritmo que usa CBC empleado en WPA2, seguro mientras el Vector de Inicializacion (IV) no se repita. El IV esta compuesto por MAC (Cifrado hash con llave) y numero randonico “nonce” y un contador inicializado en 0.

Group Key = Esta llave es usada para transmitir entre clientes dentro de misma red AP.

MIC = Message Integrity Check ==> Usa el algoritmo MAC, un hash con llave, verificar integridad y autenticacion.

EAPOL = Extensible Authentication Protocol over LAN. Usado mayormente con una compania consta de servidores RADIUS y/o TACAS. En caso de no presentar esta infraestructura se emplea el protocol PSK (Pree Shared Key).

Fast BSS Transition = Estandar usado para conecciones de rooming

Peer Key = Estandar usado para comunicaciones entre dos clientes conectados al mismo AP

Group Key = Estandar usado para transmisiones multicast y Broadcast