KRACK y WPA2: detalles técnicos y recomendaciones
Ya se ha hablado mucho de KRACK, esta nueva vulnerabilidad descubierta en los protocolos WPA2 de autenticación en redes wifi. En esta oportunidad, algunas aclaraciones importantes sobre sus detalles técnicos, y recomendaciones para evitar entrar en pánico 🙂
Este artículo forma parte de la Serie sobre Criptografía Aplicada publicada en este blog. Pueden visitar el índice de la serie para acceder a todo el contenido.
Como todos sabrán, hace algunos días Mathy Vanhoef, investigador de imec-DistriNet, descubrió una grave vulnerabilidad en la negociación del autenticación de los protocolos WPA2.
Ya se ha hablado bastante en la red sobre KRACK y sus consecuencias para el usuario de a pie, notas de buena fuente y notas más sensacionalistas que intentan hacer caer a los usuarios de redes wireless en un pánico absurdo… incluso leí por ahí que esta vulnerabilidad ponía en riesgo a la misma Internet :O
La idea de este artículo es analizar algunos puntos importantes de la vulnerabilidad desde el ángulo de lo técnico, y sacar algunas conclusiones sobre su gravedad y consecuencias.
Introducción
Como el investigador cita en el sitio oficial de la vulnerabilidad, un atacante dentro del rango de conexión del AP o router de la víctima puede explotar esta amenaza usando lo que se conoce como ataque de reinstalación de la clave, o en inglés, Key Reinstallation AttaCK, o por su sigla, KRACK, es decir, un atacante puede usar esta técnica de ataque para leer información que hasta ahora se presumía segura bajo cifrado. Esto puede ser utilizado para obtener información sensible tal como contraseñas de acceso a servicios en Internet, números de tarjetas de crédito, mensajes cifrados de conversaciones, correos electrónicos, etc. El ataque está apuntado hacia el modem o AP que brinda acceso vía wifi a los usuarios.
Por otro lado, hay que aclarar que esta vulnerabilidad es propia del protocolo WPA2, y no de una implementación del mismo en un dispositivo particular, por lo que se ven afectadas todas las implementaciones de WPA2 tanto en routers, AP’s, teléfonos celulares, placas inalámbricas, etc.
Detalles técnicos
Antes que nada hay que aclarar que el protocolo WPA2 permite autenticar de manera «segura» a clientes inalámbricos, y para ello (como casi cualquier protocolo confiable y/o seguro del stack TCP/IP) lleva a cabo una negociación mediante intercambio de datos, a lo que se denomina handshake.
En el caso particular de WPA2, este handshake tiene lugar con un intercambio de 4 mensajes entre el cliente y el AP/router, lo que le permite al cliente unirse a la red inalámbrica.
Al mismo tiempo que se realiza este handshake de cuatro pasos, también se negocia una clave de cifrado que será usada para cifrar todo el tráfico que se intercambie luego del establecimiento del canal seguro.
Actualmente todas las redes wifi modernas usan este handshake de 4 mensajes, por lo que todas esta redes están afectadas por el mismo ataque, o alguna de sus variantes.
Por ejemplo, el ataque trabaja sobre las redes wifi personales y empresariales/enterprise, y también sobre los estándares WPA además del WPA2 posterior, e incluso sobre redes que solo usan cifrado simétrico AES, no solamente TKIP o una combinación de ambos.
KRACK…
En este ataque de reinstalación de la clave, el atacante obliga a la víctima, o sea, el router, AP o dispositivo que esté generando la red wifi, a reinstalar una clave que ya está en uso por otra sesión. esto se alcanza manipulando y reemplazando mensajes del la negociación de los mecanismos criptográficos del protocolo. Cuando la víctima reinstala la clave, los parámetros asociados a la misma, tales como el NONCE (número de paquete incremental) y el número de paquete recibido (replay counter) son blanqueados a su valor inicial. Esencialmente para garantizar la seguridad, una clave debería ser utilizada tan solo una vez (NONCE – Number used ONCE). Desafortunadamente, WPA2 no garantiza este comportamiento, y manipulando los mensajes de información de cifrado, podemos reutilizar una clave anterior.
Al grano…
Cuando un cliente se une a la red, ejecuta esta negociación inicial de 4 mensajes para negociar una nueva clave de cifrado simétrico del contenido del tráfico. Instalará esta clave después de recibir 3 de los 4 mensajes del handshake. Una vez que la clave está instalada, la utilizará para cifrar las tramas de dato mediante un protocolo de cifrado simétrico, como AES (dependiendo de la configuración de la seguridad en el router/AP).
Hasta ahí todo bien, ahora, como los mensajes pueden perderse por problemas de conectividad entre el nodo remoto y el router, éste retransmitirá a su cliente que intenta conectarse, el mensaje número 3 mientras no reciba un acuse de recibo apropiado (ACK – acknowledge).
Como resultado de esto, el cliente podría recibir el tercer mensaje múltiples veces. Cada vez que lo recibe, reinstalará la misma clave blanqueará los contadores de paquetes transmitidos y recibidos utilizados por el protocolo de cifrado configurado para la red. Así, un atacante puede forzar estos blanqueos de contadores almacenando y reenviando el tercer mensaje de la negociación. Eso de limpiar el nonce y el contador de recibidos permite un ataque directo al protocolo de cifrado, por ejemplo, los paquetes pueden ser reenviados, descifrados, y/o re-generados, y esta misma técnica puede ser utilizada para atacar los otros mecanismos de negociación de claves (PeerKey, TDLS, o fast BSS).
Y esto, ¿con qué se come?
En la práctica, KRACK permite a un atacante descifrar los paquetes de la víctima porque el ataque de reinstalación de clave causa que los nonces o números de paquetes (también conocidos como vector de inicialización, o IV – inicialitation vector-) sean puestos a cero nuevamente.
Como resultado de esto, la misma clave de cifrado es utilizada con valores NONCE que ya han sido utilizados en el pasado. Esto causa que todos los protocolos de cifrados de WPA2 reutilicen el flujo de claves, o keystream, cuando cifren los paquetes. Este keystream puede entonces ser usado para descifrar mensajes que fueron cifrados utilizando el mismo nonce.
Cuando se trata de contenido de tráfico desconocido, descifrar los paquetes puede ser muy difícil, aunque sigue siendo posible en muchos casos. En la práctica, encontrar los paquetes con un contenido conocido no es problema, de modo que podemos asumir que cualquier paquete puede ser descifrado.
La habilidad para descifrar los paquetes puede ser usada para descifrar paquetes de sincronismo de conexiones TCP (TCP SYN segments). Esto permite al atacante obtener la secuencia de números de los mensajes TCP enviados en la conexión, y luego interceptar y capturar la sesión del usuario.
Como resultado, incluso a través de WPA2 el adversario podría ejecutar uno de los ataques más comunes contra redes wireless abiertas: inyectar código malicioso sobre tráfico HTTP que viaje en texto plano, por ejemplo, el atacante podría inyectar un ransomware o algún otro tipo de malware dentro de los sitios web que la víctima está navegando.
Y si cambiamos el algoritmo de cifrado de tráfico?
El punto de acceso wifi sigue siendo vulnerable, independiente del algoritmo de cifrado utilizado, puesto que no es una vulnerabilidad encontrada en el cifrador, sino en el mecanismo de handshake del propio WPA2.
Aunque se considera que un cifrado AES-CCMP es más seguro, sigue siendo vulnerable a este tipo de ataques. No obstante, el uso de WPA-TKIP o GCMP puede ser catastrófico. Contra estos protocolos de cifrado, la reutilización del NONCE habilita al atacante a no solo descifrar el tráfico, sino también a armar e inyectar paquetes nuevos en la comunicación entre el AP y la víctima.
Además, como GCMP utiliza la misma clave de autenticación en ambos sentidos de la comunicación, y esta clave puede ser recuperada si se reutilizan los NONCEs, es un protocolo especialmente afectado. Aquí hay que tener en cuenta que GCMP, actualmente conocido como Wireless Gigabit (WiGig) está siendo estandarizado y se espera que se utilice masivamente en los próximos años.
La dirección en la que los paquetes pueden ser descifrados (y posiblemente creados) depende del handshake que se logre atacar. Es decir:
- Cuando se ataca el handshake de 4 pasos, podemos descifrar y crear paquetes enviados por el cliente.
- Cuando se ataca el handshake Fast BSS Transition (FT), podremos descifrar y crear paquetes enviados por el router.
Un vídeo de demostración por su el autor del paper:
Preguntas frecuentes…
¿Necesitamos un WPA3?
No, afortunadamente la implementación de WPA2 puede ser parchada y corregida, y permite comunicar clientes parchados con servidores no parchados, y viceversa.
¿Deberíamos cambiar la contraseña de nuestra red WiFi?
No es necesario, cambiar la contraseña no mitiga el fallo de seguridad, ni previene el ataque. Sí es recomendable buscar actualizaciones del firmware del AP/router para corregir la vulnerabilidad.
Uso WPA2 solamente con cifrado AES, es seguro?
No, la vulnerabilidad no afecta al algoritmo de cifrado, sino al handshake de intercambio de claves.
Mi dispositivo es vulnerable?
Seguramente que sí, debe contactarse con el fabricante para averiguarlo.
¿Qué ocurre si no hay actualizaciones de seguridad para mi router?
El ataque no está dirigido a explotar a los AP/routers, sino a los clientes. De modo que puede que su router no requiera actualizarse, simplemente actualizar a los clientes en sus sistemas operativos (Android, Linux, Windows, etc).
En general, es conveniente desactivar algunas caracteristicas del firmware del router/AP, tales como el 802.11R (fast roaming) si el router lo permite.
El algoritmo de 4-way handshake es matemáticamente seguro, ¿Cómo es posible este ataque?
El ataque no viola las propiedades del 4-way handshake expresadas formalmente. Este algoritmo asegura que la negociación de las claves de cifrado se mantiene secreta y que permite confirmar la identidad de ambos pares de la comunicación. El ataque actúa porque las implementaciones del 4-way handshake no verifican que los NONCEs hayan sido utilizados antes.
Si el atacante logra hacer un MitM, ¿puede descifrar todo el tráfico?
No, el tráfico no puede ser descifrado únicamente logrando un MitM… el atacante primero debe realizar el MitM, y luego el ataque de KRACK para poder descifrar el tráfico wireless.
¿Deberíamos utilizar WEP temporalmente hasta corregir WPA2?
NO, definitivamente NO! Siga utilizando WPA2, aún con la vulnerabilidad sigue siendo mucho mas seguro que WEP.
KRACK – Conclusiones y recomendaciones
Lo primero y principal es no entrar en pánico, y conocer bien los efectos de esta vulnerabilidad para poder mitigar las consecuencias.
Hay que notar que este ataque NO descifra la clave de la red wifi, por lo que no es lo mismo que un ataque enviado mediante herramientas como aircrack, la intención del ataque no es esa, sino romper el cifrado de una sesión ya establecida de usuario.
Por otro lado, estamos hablando de WiFi, una red inalámbrica de corto alcance y medio alcance, por lo que el atacante deberá estar dentro del radio de alcance del AP wireless para poder capturar la sesión de su víctima… NO es un ataque que se pueda llevar a cabo por medio de Internet desde un sitio remoto.
Esto ya deja bastantes actores maliciosos fuera del foco de riesgo.
Y un punto importante, que he visto que suele confundirse… este ataque logra romper el cifrado WPA2 y leer los mensajes de la víctima en texto plano, pero hay que tener en cuenta que estos mensajes, en la actualidad, casi en su totalidad viajan cifrados a su vez con SSL/TLS. De esta forma, aunque el atacante logre romper el cifrado del protocolo de conexión inalámbrica, si el usuario trafica información web con protocolos cifrados con SSL/TLS, como HTTPS, FTPS o las versiones seguras de SMTP o IMAP4, o incluso tráfico VPN sobre capa 7 (Openvpn) o sobre capa 3 (IPSec) no debería estar comprometido.
En conclusión, el atacante, para poder acceder al código de aplicación de lo que esté traficando el usuario, debe estar en el rango de alcance de su AP wireless, y podrá acceder al contenido de tráfico no cifrado que el usuario intercambie con el router (http, ftp, etc, sin uso de SSL/TLS).
Fuentes
Sitio oficial de KRACK: https://www.krackattacks.com/
Paper de KRACK: https://papers.mathyvanhoef.com/ccs2017.pdf