lunes, abril 09, 2018

Wild Wild Wifi "Dancing with wolves": 4 WEP/WPA*-TOTP

En la primera parte de esta serie os conté los pensamientos que en el año 2010 tuvimos para crear Mummy y ayudar a hacer un cliente Wi-Fi que protegiera un poco más a los usuarios en el cada vez más beligerante entorno de ataques en redes inalámbricas, en la segunda parte os hablé de lo que nos llevó a pensar en el concepto de SSID Pinning y en la tercera entrega os hablé de PsicoWiFi, la PoC para Windows y Android de estos conceptos. En esta cuarta entrega os voy a hablar de la PoC que hicimos con WEP-TOTP y con WPA-TOTP.

Figura 25: WEP/WPA*-TOTP

El objetivo de este hack era ver cómo podíamos dificultar los ataques que se producen a la clave en las protocolos de redes Wi-Fi que teníamos hoy en día, haciendo algo muy sencillo. La idea era ver cómo clientes que no pudieran ser migrados a entornos empresariales con EAP (Extended Authentication Protocol) - donde se pudieran utilizar sistemas de autenticación basados en certificados digitales -, pudieran ser modificados ligeramente para hacer que el cambio de clave WEP, WPA o WPA2 en entornos PSK se controlara como si fuera un token temporal, tipo TOTP que se cambiara de forma continuada y periódica.

Si repasamos los ataques WEP que tenemos hoy en día, necesitan un alto número de paquetes inyectados y manipulados para conseguir romper la clave en muy poco tiempo con un ataque Online, o tener muchos paquetes para poder hacer un ataque Offline en una captura grabada del tráfico de red en la que no se pueda inyectar tráfico.

Figura 26: Ataque Krack a WPA2

En el caso de los ataques WPA-PSK o WPA2-PSK los escenarios existentes (hasta la llegada de Krack) se basaban en capturar el paquete de autenticación y hacer un ataque de fuerza bruta o diccionario a la clave configurada, lo que lleva un coste en tiempo alto - dependiendo de la dificultad de la clave -.

Con la llegada de Krack esto deja de ser así, ya que el ataque es un fallo lógico del protocolo que no depende de la fortaleza de la clave, y es WPA3 el destinado a corregir estos fallos lógicos de seguridad, y se pueden fortalecer los entornos empresariales con soluciones WPA2-EAP-TLS o WPA2-PEAP-TLS (con una capa TLS en la negociación EAP) para conseguir entornos más robustos.

WEP-TOTP & WPA/2-TOTP

En nuestro hack lo que buscábamos era ver si una persona se podría configurar una capa de cambio de contraseña sincroniza mediante un algoritmo TOTP en un entorno en el que su dispositivo cliente, por ejemplo un hardware IoT o un terminal antiguo, como una impresora con conexión Wi-Fi solo para protocolos WEP, haciendo uso de una configuración de semillas TOTP.

Tómese esta parte como un hack de laboratorio para entornos en los que clientes empresariales o el soporte para criptografía moderna no está disponible y se quiere establecer un cambio de contraseña sincronizado para cada muy poco tiempo, limitando la ventana de oportunidad de un ataque a la clave al tiempo que esta se encuentra activa: 1 minuto, 2 minutos, 1 hora, 1 día, etcétera. Lo que se quiera configurar en la generación de las claves TOTP y que llamamos TTR (Time To Renew).


Figura 27: PoC de Ping en MacOS con un WPA2-TOTP

Este modo de funcionamiento lo habíamos probado ya en Pigram, donde el cifrado de los mensajes SMS que se envían entre la app móvil, y el servidor de backend utilizan claves TOTP, lo que sirve para cifrar y firmar los mensajes al mismo tiempo.


Figura 28: PoC de HTTP Dowwnload en MacOS con un WPA2-TOTP

Para ello, en las pruebas de nuestro laboratorio en lugar de configurar una clave en el cliente, y en el AP Wi-Fi, configuramos una semilla de un algoritmo TOTP, y mediante un servicio, la clave Wi-Fi utilizada en la red WEP o WPA/WPA2 se va cambiando. Por supuesto, si el tiempo es muy corto, el reinicio de los clientes y el daemon del servidor puede ser incómodo, pero el entorno sigue siendo totalmente funcional.

Figura 29: Esquema de generación de clave WEP/WPA/WPA2-TOTP

Para configurar la clave de WEP, WPA-PSK o WPA2-PSK utilizando el algoritmo TOTP, lo que hacíamos era generar un derivado de la combinación del código TOTP más una Pre-Shared Password (en la siguiente parte os contaremos más de esto) que genera una clave Wi-Fi del tipo que se puede ver en la siguiente imagen.

Figura 30: Claves WEP/WPA/WPA2-TOTP generadas

Después de probar que este función y ver que tiraba, hicimos un par de clientes para Andorid y para Windows y vimos cuál era la experiencia de uso en un entorno de pruebas.

Wild Wild WiFi

Para la prueba configuramos un Router Wi-Fi Amper 26555 de Telefónica con un OpenWRT y un interfaz LUCI personalizado para añadir las opciones de, en este caso, WPA2-TOTP del lado del AP Wi-Fi.

Figura 31: WPA2-TOTP en Interfaz LUCI de un OpenWRT

Por otro lado, del lado del cliente hicimos un par de herramientas que llamamos WildWildWiFi para Android y para Windows. En la imagen siguiente se ve el interfaz del cliente para Windows, y en el vídeo siguiente la demo con el cliente Android.

Figura 32: Cliente Wild Wild WiFi para Windows

En el cliente Windows hicimos un pequeño servicio que cambiaba la clave del cliente Wi-Fi cada cierto tiempo (lo marcado por el valor TTR) y lo mismo para un cliente Android.

Figura 33: Demo de WildWildWiFi en Android

En el vídeo se puede ver un ejemplo con Wild Wild WiFi funcionando en Android. En este caso, el cliente Android no requiere que se haga ningún tipo de rooting. En la siguiente parte os contaremos cómo continuamos con estos trabajos.

Saludos Malignos!

Entrada destacada

Docker: SecDevOps. El nuevo libro de @0xWord

Hoy sábado tenemos una nueva sorpresa en la colección de libros de 0xWord , en este caso un libro de Fran Ramírez , Rafael Troncoso y Elia...

Entradas populares