Introducción
Klk chavales, de lo que voy a tratar en este post es de explicar como funcionan las diversas tecnologías Mifare de las tarjetas RFID. Además de alguna prueba de penetración en alguna de ellas.
RFID
En algunos dispositivos de IoT (Internet of Things), la transmisión de datos no siempre es continua. Los fabricances, al tratarse de dispositivos donde el gasto ecónimco y los recursos suelen ser muy limitados, suelen optar por tecnologías de radio con un rango corto. Este tipo de tecnologías suelen transmitir pequeños bancos de datos con muy poco gasto energético y de recursos computacionales.
Como sustituto al código de barras, nace RFID. Aqui es donde entra en juego las diversas ramas y tecnologías enfocadas en RFID (Radio Frequency Identification). Suelen estar presentes en tarjetas, llaveros, chips, redes, etc que permiten con un bajo coste realizar su función de manera óptima. Como ejemplos, algunos sistemas de transportes usan este tipo de tarjetas o la entrada mediante puertas que se verifican con RFID.
Transmisión de datos
Los componentes básicos de un esquema de un entorno RFID son: un lector RFID (más una antena) y un tag RFID (con su antena). Con las que he tratado suelen ser pasivas, es decir, el lector, en particular la antena, manda/crea un campo electromagnético que recibe el tag para que este pueda estar "encendido". Una vez realizado este proceso ambos dispositivos se pueden comunicar.
Debido al auge de este tipo de tecnologías (aunque el RFID se lleva usando desde mediados de la decada de los 40 del siglo XX), algunas organizaciones han decidido crear estándares y regulaciones sobre la arquitectura, diseño, frecuencia, procedimientos, protocolos de los dispositivos RFID.
Las diversas tecnologías se pueden agrupar en 9 distintos grupos según la frecuencia usada.
Cada tipo usa sus propios estándares y cada uno es mejor para un uso concreto valorados por medio de factores como el rango de señal, el ratio de transferencia de datos, precisión y coste.
En este caso me centrare en el espectro de HF, más en detalle en la tecnología Mifare (13.56 MHz). Seguramente, te sea más familiar el término de NFC (Near Field Communication) para este tipo de teconlogías.
La implementación del diseño de las antenas Mifare en tags pueden ser asi:
Mifare
La tecnología Mifare se puede diferenciar en 4 familias:
Como ya he comentado antes, Mifare Classic 1K (MF1S50) corresponde a la tecnología Mifare, en particular a la familia de Classic.
Basicamente, su estructura de almacenamiento se puede dividir en 16 sectores que a su vez se dividen en 4 bloques cada uno. Cada bloque alberga una capacidad de 16 bytes. El bloque 0 tiene peculiaridades, por ejemplo, es sólo de lectura, mantiene la información del fabricante y el UID (Unique Identifier). Por otro lado, el último bloque de cada sector se le denomina bloque Sector Trailer y guarda el control de acceso compuesto por dos claves (A y B) para acceder a los bloques de datos de ese sector en particular.
El bloque del fabricante puede venir dado por dos tipos: NUID (4-byte) y UID (7-byte).
Los bloques de datos pueden ser configurados por los bits de acceso como bloques de escritura/lectura y como bloques de valor. El contenido no está definido por defecto.
El bloque Sector Trailer se ubica en el bloque 3. Cada uno de ellos contiene la clave A y B (opcional) y desde el byte 6 al 9 se encuentran los bytes de condiciones de acceso. Si la clave B no está, los siguientes bytes se pueden usar como bytes de condiciones de acceso. Por defecto las claves son FFFF FFFF FFFF.
La secuencia de autenticación se divide en 5 pasos:
El flujo de ejecución de una petición estándar es el siguiente:
Mifare DESFire EV1
Esta tecnología fue publicada en el 2006, con modificaciones a sus predecesores, como por ejemplo, True Random Number Generator, AES-128, Common Criteria EAL4+.
Los datasheet publicados por el fabricante no detallan mucha información de este tipo de tarjetas. Para obtener un datasheet al completo del producto el vendedor debe firmar un NDA con NXP. Haciendo así que la restricción de datos publicados sea mucho más fácil de manejar para el frabricante.
Este tipo de Mifare, en pocas palabras, aplica una autenticación criptográfica. Sigue el esquema jerarquico de DESFire EV1 -> Aplicaciones -> Archivos. Los archivo pueden tener 4 tipos de permisos: Lectura, Escritura, Lectura y Escritura, Permiso de cambios.
El procedimiento de autenticación entre la tarjeta y el lector se lleva a cabo mediante las claves que ambos tienen. Además, se genera una clave de sesión única para cifrar las comunicaciones. El proceso de autenticación es algo complejo de explicar y entender, si se quiere profundizar más se pueden consultar en algunos papers sobre la DESFire.
Como se aprecia, la DESFire EV1 es mucho más compleja que la Classic 1k. Algunas tarjetas de transporte como la de la Comunidad de Madrid llevan esta tecnología.
Pentesting
Classic
En primer lugar, comenzaremos con la prueba de intrusion de la Mifare Classic 1K con una proxmark3. Se llevará a cabo duplicado de UID y crackeo de las claves. (Si quereis un post sobre como configurar la proxmark3 desde cero decirlo. En aliexpress se puede pillar por ~50€ junto a alguna magic card)
Duplicado de UID
El primer paso para todo tipo de RFID con la proxmark es escanear el tipo de tecnología. En este caso, al saber que es de alta frecuencia nos saltamos el paso de escanear en baja frecuencia. Se aprecia en la imagen el tipo de RFID, el UID y algunos otros parámetros. La primera sería la tarjeta real y la segunda en la que vamos a duplicar el UID.
Con la tarjeta a la que se le puede cambiar el UID, ejecutamos el comando para copiar el UID. Y se verifica escaneando con el lector en alta frecuencia.
Con esto si el sistema de verificación que se quiera burlar solo se autentica con el UID no se opondria a esta tarjeta.
Crackeo de claves
Para crackear las claves A y B de todos los sectores aconsejo seguir un procedimiento:
Caso 1
Primero probamos con las que la proxmark nos propone, vemos que tiene resultado y las dumpeamos:
Seguidamente vemos los bloques de datos de la tarjeta (como se aprecia está vacia):
Caso 2
En este caso, al realizar el ataque con las claves default no nos va a retornar ninguna clave. Para ello, se intentará realizar con un diccionario de alrededor de 1200 claves. Como se aprecia en las imágenes, este diccionario nos devuelve algunas claves con las que podremos tirar de nested (creo que realiza un ataque contra el rng usado en las mifare classic 1k).
Con una clave ya podemos realizar el ataque nested donde le indicamos el bloque, si es A o B y la respectiva key.
Y al igual que antes, con todas las claves podemos visualizar el contenido de la tarjeta. En este caso es una tarjeta de un servicio de transporte pero al parecer no hay contenido importante a la vista. Por repecursiones legales no me atrevo a mostrarlo.
DESFire EV1
Como en la anterior vez, lo primero que hacemos es escanear con alta frecuencia. El resultado nos otorga bastante información, por ejemplo, el tipo de tecnología.
Podemos probar a realizar lo que nos recomienda la proxmark para sacar más información de la tarjeta. Se destaca el uso de 2TDEA, es decir, key de 16 bytes.
Hasta aqui he llegado con las DESFire, si alguien está interesado en investigar o sabe como romperlas podemos estar en contacto.
Agradezco si le dais amor al post para seguir con ganas de publicar más <3
Klk chavales, de lo que voy a tratar en este post es de explicar como funcionan las diversas tecnologías Mifare de las tarjetas RFID. Además de alguna prueba de penetración en alguna de ellas.
RFID
En algunos dispositivos de IoT (Internet of Things), la transmisión de datos no siempre es continua. Los fabricances, al tratarse de dispositivos donde el gasto ecónimco y los recursos suelen ser muy limitados, suelen optar por tecnologías de radio con un rango corto. Este tipo de tecnologías suelen transmitir pequeños bancos de datos con muy poco gasto energético y de recursos computacionales.
Como sustituto al código de barras, nace RFID. Aqui es donde entra en juego las diversas ramas y tecnologías enfocadas en RFID (Radio Frequency Identification). Suelen estar presentes en tarjetas, llaveros, chips, redes, etc que permiten con un bajo coste realizar su función de manera óptima. Como ejemplos, algunos sistemas de transportes usan este tipo de tarjetas o la entrada mediante puertas que se verifican con RFID.
Transmisión de datos
Los componentes básicos de un esquema de un entorno RFID son: un lector RFID (más una antena) y un tag RFID (con su antena). Con las que he tratado suelen ser pasivas, es decir, el lector, en particular la antena, manda/crea un campo electromagnético que recibe el tag para que este pueda estar "encendido". Una vez realizado este proceso ambos dispositivos se pueden comunicar.
Debido al auge de este tipo de tecnologías (aunque el RFID se lleva usando desde mediados de la decada de los 40 del siglo XX), algunas organizaciones han decidido crear estándares y regulaciones sobre la arquitectura, diseño, frecuencia, procedimientos, protocolos de los dispositivos RFID.
Las diversas tecnologías se pueden agrupar en 9 distintos grupos según la frecuencia usada.
- VLF (_Very Low Frequency_): 3 kHz - 30 kHz
- LF (_Low Frequency_): 30 kHz - 300 kHz
- MF (_Medium Frequency_): 300 kHz - 3000 kHz
- HF (_High Frequency_): 3000 kHz - 30 MHz
- VHF (_Very High Frequency_): 30 MHz - 300 MHz
- UHF (_Ultra High Frequency_): 300 MHz - 3000 MHz
- SHF (_Super High Frequency_): 3000 MHz - 30 GHz
- EHF (_Extremely High Frequency_): 30 GHz - 300 GHz
- Sin categorizar: 300 GHz - 3000 GHz
Cada tipo usa sus propios estándares y cada uno es mejor para un uso concreto valorados por medio de factores como el rango de señal, el ratio de transferencia de datos, precisión y coste.
En este caso me centrare en el espectro de HF, más en detalle en la tecnología Mifare (13.56 MHz). Seguramente, te sea más familiar el término de NFC (Near Field Communication) para este tipo de teconlogías.
La implementación del diseño de las antenas Mifare en tags pueden ser asi:
Mifare
La tecnología Mifare se puede diferenciar en 4 familias:
- Mifare Classic: Este tipo de tag, principalmente, son dispositivo de almacenamiento de datos, donde su memoria está dividida en segmentos y en bloques con mecanismos simples de control de acceso. En concreto, ofrecen 1024 bytes de alamacenamiento divididos en 16 sectores. Algunas de ellas son Mifare Classic 1K y 4K (posteriormente me centraré en las 1K.
- Mifare Plus: Es un upgradeo de la classic con mejoras de problemas y autenticación del lector con AES.
- Mifare Ultralight: Estos tags tienen de almacenamiento únicamente 64 bytes de almacenamiento y caraecen de seguridad criptográfica. Suelen ser usadas para tickets dsechables como los de los eventos.
- Mifare DESFire: Una implementación de las Classic con más hardware y software que mantenga la confidencialidad, integridad y disponibilidad del tag. Vienen preprogramadas con un sistema operativo que ofrece un sistema de directorios y archivos. Se observan cuatro variantes: 1 con Triple-DES y las otras tres con AES. Me centraré en las Mifare DESFire EV1 posteriormente.
- Mifare SAM AV2: Son dispositivos destinados a proporcionar un entorno seguro para el almacenamiento de claves y funciones criptográficas para acceder a los productos Mifare con seguridad y establcer una conexión segura.
- Mifare 2GO: Plataforma que virtualiza los productos de Mifare y los hace disponiles mediante NFC de móviles o wearables.
Como ya he comentado antes, Mifare Classic 1K (MF1S50) corresponde a la tecnología Mifare, en particular a la familia de Classic.
Basicamente, su estructura de almacenamiento se puede dividir en 16 sectores que a su vez se dividen en 4 bloques cada uno. Cada bloque alberga una capacidad de 16 bytes. El bloque 0 tiene peculiaridades, por ejemplo, es sólo de lectura, mantiene la información del fabricante y el UID (Unique Identifier). Por otro lado, el último bloque de cada sector se le denomina bloque Sector Trailer y guarda el control de acceso compuesto por dos claves (A y B) para acceder a los bloques de datos de ese sector en particular.
El bloque del fabricante puede venir dado por dos tipos: NUID (4-byte) y UID (7-byte).
Los bloques de datos pueden ser configurados por los bits de acceso como bloques de escritura/lectura y como bloques de valor. El contenido no está definido por defecto.
El bloque Sector Trailer se ubica en el bloque 3. Cada uno de ellos contiene la clave A y B (opcional) y desde el byte 6 al 9 se encuentran los bytes de condiciones de acceso. Si la clave B no está, los siguientes bytes se pueden usar como bytes de condiciones de acceso. Por defecto las claves son FFFF FFFF FFFF.
La secuencia de autenticación se divide en 5 pasos:
- El lector especifica el sector para acceder y elige la clave A o B.
- El tag lee la clave secreta y las condiciones de acceso del _Sector Trailer_. Seguidamente, el tag manda un número como reto al lector.
- El lector calcula la respuesta usando la clave secreta y un input adicional. La respuesta es mandada al tag junto a un reto aleatorio.
- El tag verifica la respuesta del lector comparandolo con su propio reto y calcula la respuesta para mandarla.
- El lector verifica la respuesta comparandolo con su propio reto.
El flujo de ejecución de una petición estándar es el siguiente:
Mifare DESFire EV1
Esta tecnología fue publicada en el 2006, con modificaciones a sus predecesores, como por ejemplo, True Random Number Generator, AES-128, Common Criteria EAL4+.
Los datasheet publicados por el fabricante no detallan mucha información de este tipo de tarjetas. Para obtener un datasheet al completo del producto el vendedor debe firmar un NDA con NXP. Haciendo así que la restricción de datos publicados sea mucho más fácil de manejar para el frabricante.
Este tipo de Mifare, en pocas palabras, aplica una autenticación criptográfica. Sigue el esquema jerarquico de DESFire EV1 -> Aplicaciones -> Archivos. Los archivo pueden tener 4 tipos de permisos: Lectura, Escritura, Lectura y Escritura, Permiso de cambios.
El procedimiento de autenticación entre la tarjeta y el lector se lleva a cabo mediante las claves que ambos tienen. Además, se genera una clave de sesión única para cifrar las comunicaciones. El proceso de autenticación es algo complejo de explicar y entender, si se quiere profundizar más se pueden consultar en algunos papers sobre la DESFire.
Como se aprecia, la DESFire EV1 es mucho más compleja que la Classic 1k. Algunas tarjetas de transporte como la de la Comunidad de Madrid llevan esta tecnología.
Pentesting
Classic
En primer lugar, comenzaremos con la prueba de intrusion de la Mifare Classic 1K con una proxmark3. Se llevará a cabo duplicado de UID y crackeo de las claves. (Si quereis un post sobre como configurar la proxmark3 desde cero decirlo. En aliexpress se puede pillar por ~50€ junto a alguna magic card)
Duplicado de UID
El primer paso para todo tipo de RFID con la proxmark es escanear el tipo de tecnología. En este caso, al saber que es de alta frecuencia nos saltamos el paso de escanear en baja frecuencia. Se aprecia en la imagen el tipo de RFID, el UID y algunos otros parámetros. La primera sería la tarjeta real y la segunda en la que vamos a duplicar el UID.
Con la tarjeta a la que se le puede cambiar el UID, ejecutamos el comando para copiar el UID. Y se verifica escaneando con el lector en alta frecuencia.
Con esto si el sistema de verificación que se quiera burlar solo se autentica con el UID no se opondria a esta tarjeta.
Crackeo de claves
Para crackear las claves A y B de todos los sectores aconsejo seguir un procedimiento:
- Probar claves por default y muy comunes. Si se saca alguna y no todas ttirar del ataque nested.
- Si se prueban las claves por default y muy comunes y no se extrae ninguna clave de ningun sector usar un diccionario de claves ( https://raw.githubusercontent.com/ikarus23/MifareClassicTool/master/Mifare Classic Tool/app/src/main/assets/key-files/extended-std.keys )de mayor volúmen. Y si es necesario tirar de nested.
- Hay otra multitud de ataques por si no funcionan estos, pero a mi con lo anterior nunca me ha hecho falta más.
Caso 1
Primero probamos con las que la proxmark nos propone, vemos que tiene resultado y las dumpeamos:
Seguidamente vemos los bloques de datos de la tarjeta (como se aprecia está vacia):
Caso 2
En este caso, al realizar el ataque con las claves default no nos va a retornar ninguna clave. Para ello, se intentará realizar con un diccionario de alrededor de 1200 claves. Como se aprecia en las imágenes, este diccionario nos devuelve algunas claves con las que podremos tirar de nested (creo que realiza un ataque contra el rng usado en las mifare classic 1k).
Con una clave ya podemos realizar el ataque nested donde le indicamos el bloque, si es A o B y la respectiva key.
Y al igual que antes, con todas las claves podemos visualizar el contenido de la tarjeta. En este caso es una tarjeta de un servicio de transporte pero al parecer no hay contenido importante a la vista. Por repecursiones legales no me atrevo a mostrarlo.
DESFire EV1
Como en la anterior vez, lo primero que hacemos es escanear con alta frecuencia. El resultado nos otorga bastante información, por ejemplo, el tipo de tecnología.
Podemos probar a realizar lo que nos recomienda la proxmark para sacar más información de la tarjeta. Se destaca el uso de 2TDEA, es decir, key de 16 bytes.
Hasta aqui he llegado con las DESFire, si alguien está interesado en investigar o sabe como romperlas podemos estar en contacto.
Agradezco si le dais amor al post para seguir con ganas de publicar más <3