martes, mayo 18, 2021

Cuando un dispositivo IoT pone en riesgo la seguridad de la WiFi de tu casa

La seguridad informática me ha servido de ayuda para replantearme numerosas situaciones en mi vida. Situaciones que eran pasadas por alto en mis inicios del mundo IT sin que hubiera remordimiento de conciencia alguno. Lo que me importaba de verdad era que las cosas funcionaran y ya, sin más... Pero con solo esa premisa estaba claro que, no era lo suficiente para mostrarse como alguien un poco entendido en el mundillo por el que te movías.

Figura 1: Cuando un dispositivo IoT pone en riesgo
la seguridad de la WiFi de tu casa

Las cosas suelen tener un tiempo estipulado para completarse, si se acelera, la calidad puede tender a empeorar y si se atrasa, quizá se busque la perfección a altos niveles. Yo me tomo mi tiempo, por ejemplo, para la implantación de nuevos dispositivos que entran en mi hogar. Otros simplemente pueden ignorar dicho proceso por tal de ver el nuevo “juguete” en un inmediato funcionamiento (”up & running”), satisfaciendo la ilusión de su criatura interior.

Al dispositivo recién llegado lo recibiré siempre con educación (como a cualquier invitado), lo observaré, pretenderé estar bien cerca para “escuchar si se emplean buenos modales” frente a mi router, y resto de mis dispositivos. Solo pido que “sus padres” (el fabricante, el creador del elemento) hayan dado una enseñanza apropiada, porque temo que sucedan cosas como la de encontrarme algún intruso vagando por mi red en un día cualquiera. Por eso hay que preocuparse que las técnicas de Hacking WiFi siguen avanzando.


Algo a tener en cuenta para la protección de un hogar es velar por tus redes inalámbricas. No es nada nuevo, y no hay duda de como debes de fortalecer tu red Wi-Fi, a pesar de que se hayan visto ataques en su cifrado para WPA2 como en WPA3. En la época del boom de las redes abiertas y cifrado WEP, nacía una preocupación por dotar de una buena “armadura” y capas de protección con extra de blindaje, apoyadas por iniciativas como las herramientas que presentó Chema Alonso en su trabajo de salvaje, salvaje WiFi,  bailando con lobos.

El interruptor que da luz a tu Wi-Fi

Por algún motivo, sobre el que reflexionaba el paper de Living in the jungle, las redes OPEN no han desaparecido. Se manifiestan de manera intermitente por lo que, sí, existen... están entre nosotros. ¿Cuantas son las veces que te has dado cuenta de que tienes la Wi-Fi de tu smartphone activa porque alguna red en abierto esta por tus alrededores? En mi caso, adquirí un dispositivo para poder controlar el comportamiento de una bombilla, se trata del Smart Wi-Fi 2 Way Wall Switch (MSS550X) un IoT que reemplaza uno de tus interruptores conmutados para usar el móvil como mando a distancia.

Figura 3: Instalación de Meross MSS550X

La instalación aprovecha los cables del anterior interruptor, la parte algo mas compleja es la de sacar un cable neutro, el que suele ser de color azul, sacado de la caja de registro, esto es necesario para dar alimentación al circuito que lleva dentro. Si superas la parte del hardware, la de software no te supondrá mayor esfuerzo, tienes que bajarte la app de Meross y seguir sus sencillos pasos estilo siguiente-siguiente. Hay un “pero” muy grande, y es que cuando llegas al punto de configuración de tu Wi-Fi hogareña, te das cuenta de que el dispositivo “eructa con la boca abierta”.

Figura 4: Configuración de tu Wi-Fi en la app

Sí, ahí delante tenéis una mala praxis. Una red abierta con el prefijo Meross_SW_ Esto me hizo pensar en algo que ya sí me preocupaba más: ¿Cómo tratará el password de mi SSID cuando se la doy?

Machine-in-the-Middle

Necesitaba saber que estaba sucediendo entre mi teléfono inteligente y el MSS550X, escuchar la conversación en su configuración inicial para saber si el “ruido” que hacen es muy molesto o tolerable… De todas las técnicas que hay para la captura de tráfico en un dispositivo, mi preferida es esta, la “Maquina en el Medio”.

Figura 5: Infraestructura de Machine-in-the-Middle

Está técnica consiste en usar tu portátil (PC o similiar) para que actúe como si de un switch se tratase. En el ejemplo se puede ver que la maquina utiliza dos tarjetas de red Ethernet en sus extremos, pero esto no solo se limita a Ethernet, el Wi-Fi también se puede unir al puente (o unirse a la fiesta para comer muchos “bytes”), tal y como se ha preparado en la siguiente figura:

Figura 6: Machine-in-the-Middle empleando Wi-Fi

El montaje ha sido testeado y probado bajo una Kali Linux (funciona también en un Windows, aunque cambiaría un poco el esquema). El portátil, hace uso de Wi-Fi para crear un HotSpot con hostapd. (Aquí puedes montar sin problema una red con encriptación tipo WPA2). El smartphone, usará este SSID en lugar del propio Meross_SW_. En su parte Ethernet, hemos empleado un router buffalo con Gargoyle, que está basado en OpenWRT para la parte del cliente Wi-Fi o STA que será la que conecte con el dispositivo Meross.  Las ondas amarillas hacen referencia al tráfico que fluye entre el smartphone y el MSS550X, las azules, el tráfico entre MSS550X y el router de casa (por ahora nos interesa el tráfico del amarillo). 

Figura 7: Pentesting con Kali Silver Edition

¿Y qué hace allí un cibercriminal? Debemos esperar lo peor en cada caso, por eso preferimos ponerlo antes que omitirlo y así de paso, simularlo. Si te preguntas porque no se ha usado el Wi-Fi como cliente y el Ethernet como AP, la respuesta es que (en Linux) no puede usarse para formar el puente porque no tiene el formato de las 4 direcciones que van en las tramas 802.11.

PoC en acción

Lo primero es conectar contra el SSID del portátil que actúa de Máquina-en-el-Medio y luego debemos repetir los pasos de la configuración hasta llegar al paso de la figura 3, y no olvides iniciar una captura con Wireshark, que en este caso, tan solo será necesario su captura en una interfaz de red pero no en ambas (yo tiré por la eth0), ya que al estar el “switch” en tu máquina, todo acaba pasando por ti. Y tras finalizar la configuración, filtramos por HTTP y aquí viene el regalito.

Figura 8: Captura del SSID y password de peticiones HTTP/JSON

Un POST nos revela una estructura JSON y definitivamente, tanto SSID como el password de nuestra protegida y queridísima Wi-Fi ha quedado totalmente al desnudo. En un principio, el valor de cada parámetro parece estar protegido pero no, no es mas que un Base64, hasta el “tiburón” tiene tal inteligencia para decodificarlo... (ni siquiera debes tomarte la molestia de hacer uso de un servicio online).

¿Que me roban el Wi-Fi por tener un IoT en abierto un ratito? ¡Imposible!

Quiero poner fin a este tipo de frases y comentarios, por ello intenté pensar en una situación real que se pueda dar en cualquier lugar. La historia que se me ocurrió fue la siguiente:

Un hacker decide comprarse un MSS550X. Regresa al parking de su domicilio. Ya entrando con el vehículo, a marcha lenta, se ve tentado de mirar el producto mientras circula, y en eso que, una vecina aparece de sopetón y él la saluda con la misma mano que sostiene el producto. La vecina, amablemente le devuelve el saludo, y se percata de que su vecino tiene un dispositivo de un fabricante Meross (ingeniería social). 
 
Ella decide hacer el mal, prepara su equipo monitor a la espera de recibir una señal con nombre de SSID empezando por Meross_SW para su captura. El hacker, siendo muy metódico, lo pondrá a prueba haciendo un Machine-in-the-Middle, sin tener constancia de que su password Wi-Fi quedará comprometida en el momento que acabe con la configuración inicial del MSS550X. Tanto hacker como la cybercriminal obtendrán el password al mismo tiempo vía wireshark.

Todo esto no me vale con contarlo, debía plasmarlo en su realidad, y se acabó llevando a otra dimensión. De ello salió un vídeo donde se sincronizaron varias tomas (smartphone, equipo cibercriminal y hacker en misma línea de tiempo) para que todo quede claro y acorde con el peligro que ello conlleva.

Figura 9: How Cybercriminals Steal Wi-Fi Passwords through
an IoT device even against Machine in the Middle

Sé que no soy un experto en audiovisuales, pero gracias a Esther Martínez, los vídeos están tomando un aire distinto. Se tiene en cuenta la música para un ambiente idóneo y la búsqueda de un escenario real (entre otros matices). Seguro que los más avispados detectarán fallos de iluminación, saltos de eje... y esas cosas que no convencen a personas como a mi colega David Caro, con el cual aprendo un montón de trucos de los formatos multimedia. Si quieres que esta historia cobre vida, ahí os he dejado el vídeo en la Figura 9.
 

He intentado resumir el proceso del Machine-in-the-Middle sin exponer capturas ni tecnicismos varios porque ya lo hice en un paper que publiqué a la vez que el vídeo (no suelo hacer vídeo sin documento y viceversa), así que si os habéis quedado con ganas de montarlo para explorar vuestros IoT’s, no deberéis tener mucha complicación, incluso está explicado al detalle en su formato para Windows ;) (el único “pero”, es que el texto está en inglés).

Reflexiones finales

Me preocupa esta falla, no solo como usuario de su producto, sino también pensando en todas aquellas personas que abren puertas inseguras sin ser conscientes de ello. Como habéis visto, aunque el atacante haga sus pruebas respectivas como pentester en un SSID distinto y empleando buena fortificación (WPA2) en uno de sus extremos de su máquina, la cibercriminal acaba cogiendo lo que no es suyo ya que, la comunicación de OpenWRT y MSS550X (como se observa en el diagrama) es insegura… a menos que se haga la configuración inicial en una especie de caja de Faraday de tamaño considerable para contener las ondas en un espacio determinado -cosa difícil para el hogar de cualquiera-. 

Por lo pronto fácil solución no tiene. Antes de exponer las posibles soluciones, veamos que es lo que ve la app de Meross bajo el escenario Machine-in-the-Middle haciendo uso de Fing. A la izquierda, el SSID en el que recae la conexión está bajo seguridad WPA2. Arriba derecha se muestran los detalles del gateway/MSS550X que curiosamente... ¿Porque tiene dos direcciones IP en lugar de una? Por ese Pseudobridge que monta Gargoyle.

Figura 11: Perspectiva de red bajo app de Fing.

Fijaos que parten de la MAC de Gargoyle, no del fabricante Meross (la MAC/BSSID tampoco se corresponde con el producto). También existe un salto adicional hasta llegar a MSS550X (traceroute abajo-derecha). Bastante info se tiene para pensar en posibles soluciones ¿no creéis? Yo optaría por emplear (de mayor urgencia a menor) las siguientes:

1. Usar encriptación del wireless en la creación del HotSpot/AP del dispositivo.
2. Encriptación del contenido, tanto del SSID como de su password (uso de peticiones bajo HTTPS y/o algún mecanismo de cifrado robusto).
3. Verificación del OUI en la MAC.
4. Verificar SSID, canal, y tipo de seguridad empleada.
5. Permitir solo 1 IP en el pool de DHCP. Esto evitaría realizar ataques de Máquina-en-el-Medio (rompería el puente)… al entregar solo una IP y no permitir una de nueva aunque se haga de forma estática.
6. Verificación del traceroute: No permitir más de un salto en la ruta trazada hasta su destino.

Con la primera opción cumpliría y si no, con la segunda. El resto seria para activar el “paranoid mode”. Como somos buena gente, informamos antes al fabricante, y se lo tomaron de muy buen rollo :D :

Figura 12: Meross respondiendo mi tweet sobre la vulnerabilidad

Me sentí muy agradecido, esto demuestra que miman todo tipo de aspecto bueno y malo de la tecnología con la que trabajan, no como la empresa que ocultó su problema sepultando mi par de vídeos en lugar de poner remedio al fallo… Ojalá todas las empresas tomen nota y ejemplo de su buena conducta.

Como Bonus Track, he solicitado un CVE ID pero todavía no he recibido respuesta (ni para bien ni para mal), quizá deban estar a tope por la cantidad de fallos reportados que deben gestionar (o el tema teletrabajo, pandemia & co, etcétera), veamos a ver que sucede y sí realmente acaba existiendo un parche o esto solo ha sido una estrategia estilo marketing para amansar a entes de la era digital.

Remember… Be Good, Be Hackers!

Autor: Gerard Fuguet (Contactar con Gerard Fuguet)


1 comentario:

Gerard Fuguet dijo...

UPDATE:
CVE finalmente adquirido (quizá el CVE ID que más guerra me ha dado hasta la fecha)

CVE-2021-3774

P.D.: Con la generosa ayuda de INCIBE -Made in Spain-

Entrada destacada

10 maneras de sacarle el jugo a tu cuenta de @MyPublicInbox si eres un Perfil Público

Cuando doy una charla a algún amigo, conocido, o a un grupo de personas que quieren conocer MyPublicInbox , siempre se acaban sorprendiendo ...

Entradas populares