Desmitificando un Flipper Zero

Últimamente está muy de moda este dispositivo, el Flipper Zero, miles de vídeos virales en TikTok e Instagram que nos enseñan como el Flipper Zero es capaz de abrir la puerta de un coche sin necesidad de tener la llave, como desbloquea un teléfono móvil Android en apenas unos segundos, como abre la esclusa del metro para entrar sin pagar, como suplanta una tarjeta NFC para pasar un control de accesos o como abre la puerta de un garaje con apenas pulsar un par de veces alguno de sus seis botones de color naranja llamativo.

Fig. Flipper Zero

Un Flipper Zero es un dispositivo de hardware hacking portable, con su batería de 200mAh  y pantalla monocrómatica de 1,4 pulgadas lo convierte en una herramienta 100% autónoma que no necesitará de ningún otro componente para hacer su “magia”. Su interior oculta todo su potencial: una serie de antenas que lo hacen compatible con distintas tecnologías como:

  • RFID (Identificación por Radio Frecuencia) de 125KHz para llaveros tag o los chips de identificación de mascotas.
  • NFC (Comunicación de Campo Cercano) como las tarjetas bancarias o documentos de identidad.
  • Infrarrojos que usan los mandos a distancia de las televisiones, aire acondicionados, juguetes…
  • Uno de sus puntos fuertes es la comunicación por debajo de 1GHz, como por ejemplo el estándar de 433MHz, frecuencia que utilizan la mayor parte de mandos de garaje, puertas automáticas, llaves de coche o estaciones meteorológicas.
  • Pines GPIO de 3.3V o 5V, para controlar todo tipo de addons externos como sensores o antenas WiFi.
  • Lectura y clonado de llaves tipo iButton para abrir puertas vía portero automático.
  • 2FA o llave de segundo factor de autenticación física, para logarnos en sitios que sean compatibles con esta tecnología.
  • Clon del BadUSB, un sistema que permite replicar un teclado físico para ejecutar comandos predefinidos mediante scrips externos.
  • Desde hace poco también permite simular señales digitales en distintas frecuencias.
  • Conexión Bluetooth para controlar el Flipper Zero en remoto desde el smartphone.

Pero vamos a lo que importa, ¿realmente hace lo que dice?, vamos a verlo.

Comenzamos por las conexiones GPIO, esta parte quizás sea la mas multifuncional ya que permite miles de opciones. Aprovechando que tenía un sensor de temperatura y humedad DHT22 por casa, le cargué al Flipper Zero un controlador de este sensor y tan solo configurando el PIN de datos y la salida de 3.3V comenzó a mostrar todos sus datos por pantalla, tal y como se ve a continuación funcionando correctamente. ¡TEST APPROVED!

Fig. Flipper Zero con un sensor DHT22

La siguiente prueba será con el sensor / emisor de infrarrojos, la mayor parte de controles remotos que tenemos en nuestra casa funcionan con esta tecnología. En este punto existen distintas formas de utilizar el Flipper Zero. Una de ellas es con el sistema de captura de infrarrojos y posterior remisión del RAW capturado, por ejemplo, pulsamos el botón del mando de encender una tira led con la opción de captura infrarrojos del FlipperZero activada, una vez capturada le podremos asignar un alias y reenviar la señal todas las veces que sea necesaria, así ya no tenemos que usar el mando original.

Fig. Captura de señales IR

Como es muy tedioso estar capturando y guardado la señal que emite cada botón de un mando, el Flipper Zero ya trae precargados los controles remotos de miles de televisiones, aires acondicionados o reproductores multimedia. No es compatible con el 100% de los electrodomésticos que existen, pero si funciona con un gran número de ellos. ¡TEST APPROVED!

Fig. Controles remotes universales

Al disponer de una antena de 125KHz el Flipper Zero es capaz de leer tags o tarjetas Mifare 1, que se usan en algunas tarjetas antiguas de pago del autobús urbano o metro. En este caso se puede leer y replicar la tarjeta íntegramente, ya que además de ser capaz de leer los 16 sectores de la tarjeta es capaz de leer la clave A y B de cada sector, pudiendo suplantarla de este modo con el Flipper Zero. ¡TEST APPROVED!

Fig. Lectura de TAG NFC

La realidad, es que hoy en día ya son pocos los establecimientos que utilizan tarjetas Mifare 1 para el pago de servicios o el control de accesos, por lo tanto su uso real se queda limitado a esas pocas tarjetas que todavía sigan utilizando una tecnología tan antigua. Por ejemplo, en los documentos de identidad o las tarjetas bancarias que disponen de antena NFC v3 la cosa ya no es tan sencilla. Los sistemas contactless actuales no permiten leer íntegramente los datos de la tarjeta para poder ser replicados posteriormente, es decir, existe una zona de la tarjeta que no puede ser emulada o replicada. Por eso con el Flipper Zero no se pueden clonar la mayor parte de tarjetas bancarias que se usan hoy en día. Si lo intentamos hacer solamente podremos extraer como mucho su identificador único (UID), incluso, si lo hacemos desde la app del móvil este identificador se podrá ir modificando de forma aleatoria. Por lo tanto, aquí nos encontramos con un ¡TEST FAIL! en esta característica atribuida al Flipper Zero. En la siguiente imagen se pueden ver los únicos datos que aparecen al escanear una tarjeta bancaria actual con NFC tipo B.

FIg. Lectura de tarjeta bancaria via NFC

Una característica interesante del Flipper Zero, es que al tener una antena RFID puede leer los microchips identificativos de animales de compañía, estos chips que tienen el tamaño de un grano de arroz y llevan un transpondedor en su interior, emiten un código numérico único. Este código está dado de alta en el correspondiente servicio web para consultar los datos personales del propietario del animal. Para ayudar a localizar la posición exacta del microchip, el Flipper Zero dispone de una luz led que irá cambiando de color cuanto más cerca se encuentre la antena del microchip. No es tan fácil leer el chip como con el propio lector que se usa para identificar animales, ya que el Flipper Zero solo puede leer el chipt si está alineado a la antena, mientras que los lectores normales son circulares y lo pueden leer en cualquier dirección.

Fig. Microchip identificación mascotas

Decir que esta funcionalidad de lectura NFC no es exclusiva de un Flipper Zero, con una Raspberry o un Arduino y el módulo RFID RC522 o un Proxmark se podrán leer y escribir de igual modo cualquier tarjeta NFC compatible. En la foto siguiente os dejo una imagen comparativa del Flipper Zero con el modulo RFID RC522 al lado.

Fig. Comparativa Flipper Zero y Tarjeta RFID

Bajando un poco en las frecuencias, llegamos al estándar de 433MHz. Esta es la frecuencia que se utiliza en los mandos de las puertas de los garajes, llaves de apertura de los coches o estaciones meteorológicas. Vamos a ver que se puede hacer en esta frecuencia con el Flipper Zero.

Comenzaremos por un mando de garaje, normalmente con un solo botón se puede abrir la puerta del garaje: una pulsación abre la puerta y otra pulsación en el mismo botón cierra la puerta. Esto significa que el mando solamente emite un código que es el mismo para abrir y cerrar la puerta. El Flipper Zero tiene una opción de captura, lo ponemos a grabar y en cuanto detecta la señal que emite el mando se verá en una gráfica por pantalla.

FIg. Captura de señal a 433MHz

Luego la señal se podrá guardar y replicar todas las veces que sea necesaria, lo que significa que podemos abrir y cerrar la puerta sin necesidad de tener el mando real con nosotros. Esto puede suponer un riesgo de seguridad, ya que si cuando pulsamos el botón de abrir la puerta del garaje, alguien está cerca de nosotros con un Flipper Zero nos podrá capturar la señal y luego replicarla cuando quiera.

Fig. Emisión de señal de apertura de puerta de garaje a 433MHz

Es cierto que hay que haber capturado inicialmente la señal del mando real, pero el peligro es que una vez capturado nos pueden abrir la puerta del garaje sin nuestro permiso. Por lo tanto: ¡TEST APPROVED!. Para evitar este tipo de riesgos necesitaremos cambiar el sistema de apertura de nuestro garaje por uno que utilice un sistema de “Rolling Codes” como el que veremos a continuación.

Otros videos que estoy cansado de ver en TikTok, es en los que alguien abre un coche simplemente utilizando un Flipper Zero, incluso en algunos vídeos muestran como pueden arrancar el coche y se lo llevan simulando la llave real. Siento desilusionarlos, pero en la vida real, fuera del TikTok, esto no es tan sencillo. A diferencia que en el ejemplo anterior con el mando del garaje, una llave de un coche no utiliza siempre el mismo código para abrir o cerrar la puerta, es mas, nunca se utiliza el mismo. Sin entrar en una explicación demasiado técnica, cada vez que pulsamos el botón de la llave del coche se genera un código de un solo uso, similar a un “Token” (Por ejemplo como el Google Authenticator) que se envía por radiofrecuencia a 433,92MHz al coche, si este código de 64 o 66 bits es correcto el coche se abrirá, si no, no ocurrirá nada. Por lo tanto, aunque consigamos capturar la señal que emite el mando de nuestro coche, cuando la repliquemos ya no será un código válido y por lo tanto no servirá de nada.

Fig. LLave estándar de coche analizada

Si el coche es un poco viejo y no utiliza un sistema “Rolling Code” actualizado, si se podría intentar duplicar el código de apertura mediante un ataque de reply, pero aún así se tendrían que dar una circunstancias muy concretas. Sería necesario capturar un código de un solo uso de apertura que no se ha utilizado y por lo tanto seguirá siendo válido hasta que se “gaste”, para ello será necesario conseguir que se pulse el botón de apertura del mando real lejos del coche para que el código capturado no se marque como usado por el coche o mediante un jammer impidiendo que la emisión legitima llegue al receptor, luego se dispondrán de unos instantes para abrir el coche antes de que el código caduque o deje de ser válido. Dependiendo del sistema de seguridad de la llave del coche, para evitar que sin querer se pulse el botón del mando lejos del coche y automáticamente dejen de ser válidos todos los códigos que se generen posteriormente por el mando real (al faltar uno intermedio), el coche aceptará hasta un máximo de un rango de 256 códigos futuros, esto significará, que para que el mando deje de funcionar, tendríamos que pulsar mas de 256 el botón de abrir sin que el coche se encuentre cerca de nosotros (OJO con dejarle las llaves de nuestro coche a un bebé/niño para que juegue con ellas, que como le dé por ponerse a pulsar los botones tendremos un problema si nuestro coche no es muy moderno, ya que el mando se podría desincronizar con el receptor del coche. Ocurría lo mismo si tratamos de replicar demasiadas veces el codigo de nuestro mando con el Flipper Zero).

Fig. Placa de circuitos de una llave de coche grupo VAG

Por lo tanto, teniendo en cuenta todas las circunstancias y requerimientos necesarios para intentar abrir un coche actual sin su llave, no encontramos antes un ¡TEST FAIL!. La única forma de hacerlo, como cualquier otro proceso criptográfico, es obtener la semilla de generación de esas claves. Normalmente la semilla está formada por una parte fija que es el VIN del vehículo y una parte variable con la zona aleatoria de la clave, ambas partes suman un tamaño aproximado de 64 bits. Esto es la teoría, la práctica nos dice que a veces los fabricante de coches no hacen bien su trabajo y se «olvidan» de implementar las correspondientes medidas de seguridad en sus llaves, como fue el caso de Honda y el CVE-2022-27254.

Fig. Tapa repostaje TESLA

Lo que si podríamos hacer en un coche moderno, como por ejemplo los TESLA, es abrirle la tapa del cargador de la batería. La curiosidad de TESLA es que la tapa de «repostaje» se puede abrir en remoto a 433MHz, a diferencia de los coches tradicionales que solo se puede abrir si el coche está también abierto, en TESLA se puede abrir la tapa de carga aunque el coche esté cerrado (lógico al ser cargas que pueden durar horas dependiendo de la potencia del cargador), lo que ocurre es que la señal que abre la tapa no lleva ningún tipo de cifrado o rolling-code, por lo tanto se podría aplicar una técnica similar a la utilizada con el mando de la puerta del garaje, simplemente es necesario cargar un script en el Flipper Zero que se tendrá que configurar en función de si estamos en Europa o USA (cambia la frecuencia de emisión). Aquí tendríamos un un ¡TEST APPROVED! para el Flipper Zero, pero un ¡TEST FAIL! para TESLA.

Finalmente, el Flipper Zero tiene una funcionalidad muy interesante con la frecuencia de 433MHz, como esta frecuencia es la que utilizan la mayor parte de estaciones meteorológicas domésticas, se puede activar el Flipper Zero en modo escucha y si detecta una emisión de una de estas balizas, la capturará mostrando los datos por pantalla como en la siguiente foto, en la que se puede ver la temperatura exterior, humedad y estado de la batería de la estación.

Fig. Lectura de estación meteorológica

Otro proyecto en el que estoy inmerso es el poder leer los sensores TPMS (Sistema de Monitorización de Presión del Neumático)  de las ruedas de los coches, en principio también transmiten los datos a 433MHz, pero como cada fabricante implementa su propia codificación esto complica la tarea de poder interpretar los datos.

Ya pasando de radio a cable, el Flipper Zero también permite realizar ciertos ataques vía USB, el mas conocido es el que imita el funcionamiento de un dispositivo: Bad-USB, una herramienta visualmente igual que un pendrive, pero que en su interior lleva un microprocesador que permite simular un teclado y un ratón que al conectarlo a un ordenador, comenzará a ejecutar todas las ordenes que le hemos programado. Por ejemplo, al conectar el USB podrá ejecutar un script para que se descargue un binario con un RDP de Internet, lo ejecuté de forma automática y envíe el acceso al atacante. Al simular ser un teclado real conectado al ordenador, es como si la propia persona estuviera haciendo las acciones programadas, lo que permite evadir algunos sistemas antivirus.

Por defecto el Flipper Zero trae un script llamado “Demo Windows” que al conectarlo y ejecutarlo, automáticamente abre en un navegador web con el video de Youtube de “Rick Astley – Never Gonna Give You Up” ( https://www.youtube.com/watch?v=dQw4w9WgXcQ ) y lo comienza a reproducir en bucle.

Fig. BadUSB en Windows

He visto muchos videos en TikTok e Instagram en los que se veía como con un Flipper Zero se podía desbloquear en cuestión de segundos cualquier móvil Android solamente ejecutando un script de fuerza bruta. Este script comienza a probar contraseñas de forma indiscriminada hasta dar con la acertada y desbloquear el teléfono móvil. Sobre el papel es un plan sin fisuras, pero en la vida real todos los móviles actuales disponen de un sistema que impide que se puedan meter cientos de contraseñas por minuto, es cierto que hace unos años iPhone tuvo una vulnerabilidad en la que reiniciando el teléfono cada vez que se introducía una contraseña errónea esta no descontaba los intentos fallidos, a Android le ocurrió algo parecido con la opción de llamar al 112: todos los teléfonos permiten llamar a emergencias aunque el terminal este bloqueado, el problema era que al estar llamando si se pulsaba una combinación de teclas se podía entrar al escritorio del móvil sin tener el patrón de desbloqueo. Hoy en día al tercer error metiendo el PIN o el patrón ya tenemos que esperar 30 segundos para intentarlo de nuevo, al cuarto error tenemos que esperar 1 minuto, y así sucesiva y exponencialmente hasta que el móvil queda totalmente bloqueado y prácticamente inservible.

Fig. BadUSB en Android

¿Entonces cómo es posible que en los videos de TikTok puedan desbloquear un móvil tan rápidamente sin que se quede inutilizado?, como seguro que ya os imagináis lo consiguen haciendo un poco de trampa, realmente la fuerza bruta de contraseñas se hace sobre un diccionario pre cargado en el script, lo que significa que si ponemos en segunda o tercera posición del script la contraseña correcta, efectivamente el móvil se desbloqueará mágicamente. Está muy chulo para quedar de “hackers” delante de los amigos, pero en la vida real es un autentico ¡TEST FAIL!. Otra cosa, es utilizarlo en sistemas de autenticación que no implementen medidas de retardo al introducir una contraseña errónea, pero hoy en día ya quedan pocos.

Fig. Script para BadUSB

Una función que si es interesante es la de “Jiggler”, esta función simulará un ratón conectado al ordenador que se está moviendo constantemente un poco a la derecha y un poco a la izquierda, esto sirve para mantener un equipo informático desbloqueado sin que se active el salvapantallas y se bloquee la sesión. Por ejemplo, normalmente un teléfono móvil desbloqueado que no se toque en 30 segundos o un minuto se bloqueará automáticamente, con esta función esto ya no ocurrirá al simular que si se está usando. Esta característica funciona muy bien, por lo tanto se merece un: ¡TEST APPROVED!.

Fig. Mouse Jiggler

Otra opción que se puede utilizar mediante la conexión USB es la de simulación de teclado, en este caso, teclado real. Se nos mostrará un teclado en la pantalla del Flipper Zero y cada vez que seleccionemos un tecla en el Flipper Zero está se enviará al ordenador como si se hubiera pulsando en un teclado real, aquí se han ganado otro ¡TEST APPROVED!. Ojo, la dirección del keystroke es del Flipper Zero al Ordenador, no viceversa, por lo tanto esto no es un Keylogger.

Finalmente, también podremos conectar el Flipper Zero directamente a nuestro ordenador a través de un USB-C que simula un puerto COM para actualizarlo o mover ficheros entre ambos equipos, esta función se realiza mediante una aplicación llamada qFlipper disponible en Windows, Mac y Linux, he probado las versiones de Windows y Linux, ambas funcionan correctamente montando una consola virtual a través del puerto COM.

Fig. Conexión TTY a Windows

Y lo mejor de todo es que además el Flipper Zero dispone de videojuegos integrados, uno de ellos es el mítico “Snake” de los Nokia 3310, un detalle retro-gamer que se valora positivamente. Aunque me da la sensación que no funciona exactamente igual que cuando se ejecutaba en un teléfono móvil, tengo que indagar mas en este asunto. 😉

Fig. Juego Snake

En definitiva, el Flipper Zero es un gadget curioso, muy bien construido, con materiales aparentemente de muy buena calidad, con un diseño innovador, cómodo, portable y con una ingeniería detrás que se nota que han pensado hasta el mínimo detalle. Pero no, no es la herramienta “hacker” definitiva anunciado en TikTok, ni mucho menos (Prueba de ello son los 12 o 15 Flipper Zero que se ponen en venta cada día en portales de segunda mano por gente que lo compró pensando que iba a ser otra cosa). Es simplemente el compendio de un mando de televisión universal, un lector de chips de mascotas, un lector NFC como el de cualquier teléfono móvil de última generación, un mando de garaje universal, un Arduino o Raspberry, un Yubico y un Nokia 3310 con el Snake.

Hoy en día se puede comprar un Flipper Zero por entre 200 a 250€. Ahora la pregunta del millón: ¿Merece la pena?, pues como os imagináis, si pensabais que con esto os ibais a colar en todos los gimnasios de vuestra ciudad, viajar en metro sin pagar, desbloquear los móviles de vuestros amigos, abrir un coche para robarlo o entrar a cualquier garaje de vuestro barrio sin permiso, ya habéis visto que no. Aún así no hay que olvidar, que el Flipper Zero dispone de capacidades que en malas manos permitirá cometer ciertos tipos de actividades criminales, por eso mismo, este artículo: CONTINUARÁ…

…y continuó: si quieres leer la segunda parte del este artículo titulada: «Atacando Redes WiFi con un Flipper Zero», solamente tienes que pulsar en Este Enlace.

¿Te ha gustado este artículo? Si quieres, puedes ayudarme a escribir el siguiente artículo de GLIDER invitándonme a un rico café.

 

Pulsa Aquí para invitarme a un café con hielo.

  Salu2.

Manuel Guerra

Mi nombre es Manuel Guerra. Investigador especializado en: [eCrime] | [Forensic] && [Hacking]. Editor de GLIDER.es

Navegación de la entrada


Comentarios

  • Esteve

    Muy buen artículo que aclara muchos conceptos de este dispositivo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puede usar las siguientes etiquetas y atributos HTML:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>