Pentesting RFID

Reading time: 12 minutes

tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

Introducción

Identificación por radiofrecuencia (RFID) es la solución de radio de corto alcance más popular. Generalmente se usa para almacenar y transmitir información que identifica a una entidad.

Una etiqueta RFID puede depender de su propia fuente de energía (activa), como una batería integrada, o recibir su energía desde la antena lectora usando la corriente inducida por las ondas de radio recibidas (pasiva).

Clases

EPCglobal divide las etiquetas RFID en seis categorías. Una etiqueta en cada categoría tiene todas las capacidades listadas en la categoría anterior, haciéndola compatible hacia atrás.

  • Class 0 tags are passive tags that operate in UHF bands. The vendor preprograms them at the production factory. As a result, you can’t change the information stored in their memory.
  • Class 1 tags can also operate in HF bands. In addition, they can be written only once after production. Many Class 1 tags can also process cyclic redundancy checks (CRCs) of the commands they receive. CRCs are a few extra bytes at the end of the commands for error detection.
  • Class 2 tags can be written multiple times.
  • Class 3 tags can contain embedded sensors that can record environmental parameters, such as the current temperature or the tag’s motion. These tags are semi-passive, because although they have an embedded power source, such as an integrated battery, they can’t initiate wireless communication with other tags or readers.
  • Class 4 tags can initiate communication with other tags of the same class, making them active tags.
  • Class 5 tags can provide power to other tags and communicate with all the previous tag classes. Class 5 tags can act as RFID readers.

Información almacenada en las etiquetas RFID

La memoria de una etiqueta RFID normalmente almacena cuatro tipos de datos: los datos de identificación, que identifican la entidad a la que está adherida la etiqueta (estos datos incluyen campos definidos por el usuario, como cuentas bancarias); los datos suplementarios, que proporcionan detalles adicionales sobre la entidad; los datos de control, usados para la configuración interna de la etiqueta; y los datos del fabricante, que contienen un Identificador Único de la etiqueta (UID) y detalles sobre la producción, tipo y vendedor de la etiqueta. Encontrarás los dos primeros tipos de datos en todas las etiquetas comerciales; los dos últimos pueden diferir según el proveedor de la etiqueta.

El estándar ISO especifica el valor Application Family Identifier (AFI), un código que indica el tipo de objeto al que pertenece la etiqueta. Otro registro importante, también especificado por ISO, es el Data Storage Format Identifier(DSFID), que define la organización lógica de los datos de usuario.

La mayoría de los controles de seguridad de RFID cuentan con mecanismos que restringen las operaciones de lectura o escritura en cada bloque de memoria de usuario y en los registros especiales que contienen los valores AFI y DSFID. Estos mecanismos de bloqueo usan datos almacenados en la memoria de control y tienen contraseñas por defecto preconfiguradas por el vendedor, pero permiten a los propietarios de las etiquetas configurar contraseñas personalizadas.

Comparación de etiquetas de baja y alta frecuencia

Etiquetas RFID de baja frecuencia (125kHz)

Las etiquetas de baja frecuencia se usan a menudo en sistemas que no requieren alta seguridad: acceso a edificios, llaves de intercomunicador, tarjetas de membresía de gimnasios, etc. Debido a su mayor alcance, son convenientes para el uso en estacionamientos de pago: el conductor no necesita acercar la tarjeta al lector, ya que se activa desde más lejos. Al mismo tiempo, las etiquetas de baja frecuencia son muy primitivas y tienen una baja tasa de transferencia de datos. Por esa razón, es imposible implementar una transferencia de datos bidireccional compleja para cosas como mantener saldo y criptografía. Las etiquetas de baja frecuencia solo transmiten su ID corto sin ningún medio de autenticación.

Estos dispositivos se basan en tecnología RFID pasiva y operan en un rango de 30 kHz a 300 kHz, aunque es más habitual usar 125 kHz a 134 kHz:

  • Long Range — una frecuencia más baja se traduce en mayor alcance. Existen algunos lectores EM-Marin y HID que funcionan a distancias de hasta un metro. A menudo se usan en estacionamientos.
  • Primitive protocol — debido a la baja velocidad de transferencia de datos, estas etiquetas solo pueden transmitir su ID corto. En la mayoría de los casos, los datos no están autenticados ni protegidos de ninguna manera. Tan pronto como la tarjeta está en el rango del lector, simplemente comienza a transmitir su ID.
  • Low security — Estas tarjetas se pueden copiar fácilmente, o incluso leer desde el bolsillo de otra persona debido a la primitividad del protocolo.

Protocolos populares de 125 kHz:

  • EM-Marin — EM4100, EM4102. The most popular protocol in CIS. Can be read from about a meter because of its simplicity and stability.
  • HID Prox II — low-frequency protocol introduced by HID Global. This protocol is more popular in the western countries. It is more complex and the cards and readers for this protocol are relatively expensive.
  • Indala — very old low-frequency protocol that was introduced by Motorola, and later acquired by HID. You are less likely to encounter it in the wild compared to the previous two because it is falling out of use.

En realidad, existen muchos más protocolos de baja frecuencia. Pero todos usan la misma modulación en la capa física y pueden considerarse, de una forma u otra, una variación de los listados arriba.

Ataque

Puedes atacar estas etiquetas con el Flipper Zero:

FZ - 125kHz RFID

Etiquetas RFID de alta frecuencia (13.56 MHz)

Las etiquetas de alta frecuencia se usan cuando se necesita una interacción lector-etiqueta más compleja, con criptografía, transferencia de datos bidireccional extensa, autenticación, etc.
Suelen encontrarse en tarjetas bancarias, transporte público y otros pases seguros.

Las etiquetas de alta frecuencia de 13.56 MHz son un conjunto de estándares y protocolos. Generalmente se las denomina NFC, pero eso no siempre es correcto. El conjunto básico de protocolos usado en los niveles físico y lógico es ISO 14443. Los protocolos de alto nivel, así como estándares alternativos (como ISO 19092), se basan en él. Muchas personas se refieren a esta tecnología como Near Field Communication (NFC), un término para dispositivos que operan en la frecuencia de 13.56 MHz.

Para ponerlo de forma simple, la arquitectura de NFC funciona así: el protocolo de transmisión lo elige la empresa que fabrica las tarjetas e implementa sobre el nivel bajo ISO 14443. Por ejemplo, NXP inventó su propio protocolo de transmisión de alto nivel llamado Mifare. Pero en el nivel inferior, las tarjetas Mifare se basan en el estándar ISO 14443-A.

Flipper puede interactuar tanto con el protocolo de bajo nivel ISO 14443, como con el protocolo de transferencia de datos Mifare Ultralight y EMV usado en tarjetas bancarias. Estamos trabajando en añadir soporte para Mifare Classic y NFC NDEF. Un análisis profundo de los protocolos y estándares que conforman NFC merece un artículo aparte que planeamos publicar más adelante.

Todas las tarjetas de alta frecuencia basadas en el estándar ISO 14443-A tienen un ID de chip único. Actúa como el número de serie de la tarjeta, similar a la dirección MAC de una tarjeta de red. Usualmente, el UID tiene 4 o 7 bytes de largo, pero raramente puede llegar hasta 10. Los UID no son secretos y son fácilmente legibles, a veces incluso impresos en la propia tarjeta.

Hay muchos sistemas de control de acceso que confían en el UID para autenticar y conceder acceso. A veces esto ocurre incluso cuando las etiquetas RFID soportan criptografía. Ese uso indebido las deja al nivel de las simples tarjetas de 125 kHz en términos de seguridad. Las tarjetas virtuales (como Apple Pay) usan un UID dinámico para que los dueños de los teléfonos no abran puertas con su app de pagos.

  • Low range — las tarjetas de alta frecuencia están diseñadas específicamente para que deban colocarse cerca del lector. Esto también ayuda a proteger la tarjeta de interacciones no autorizadas. El alcance máximo de lectura que logramos fue de unos 15 cm, y eso fue con lectores personalizados de largo alcance.
  • Advanced protocols — velocidades de transferencia de datos de hasta 424 kbps permiten protocolos complejos con transferencia de datos bidireccional completa. Lo cual a su vez permite criptografía, transferencia de datos, etc.
  • High security — las tarjetas contactless de alta frecuencia no son en absoluto inferiores a las smart cards. Existen tarjetas que soportan algoritmos criptográficamente fuertes como AES e implementan criptografía asimétrica.

Ataque

Puedes atacar estas etiquetas con el Flipper Zero:

FZ - NFC

O usando el proxmark:

Proxmark 3

MiFare Classic offline stored-value tampering (broken Crypto1)

When a system stores a monetary balance directly on a MiFare Classic card, you can often manipulate it because Classic uses NXP’s deprecated Crypto1 cipher. Crypto1 has been broken for years, allowing recovery of sector keys and full read/write of card memory with commodity hardware (e.g., Proxmark3).

End-to-end workflow (abstracted):

  1. Volcar la tarjeta original y recuperar las claves
bash
# Attempt all built-in Classic key recovery attacks and dump the card
hf mf autopwn

Esto normalmente recupera las claves de sector (A/B) y genera un volcado completo de la tarjeta en la carpeta client dumps.

  1. Localiza y comprende los campos de valor/integridad
  • Realiza recargas legítimas en la tarjeta original y toma múltiples volcados (antes/después).
  • Haz un diff de los dos volcados para identificar los bloques/bytes cambiantes que representan el saldo y cualquier campo de integridad.
  • Muchas implementaciones Classic usan la codificación nativa de "value block" o implementan sus propias sumas de verificación (p. ej., XOR del saldo con otro campo y una constante). Tras cambiar el saldo, recalcula los bytes de integridad en consecuencia y asegúrate de que todos los campos duplicados/complementados sean consistentes.
  1. Escribe el volcado modificado en una etiqueta Classic escribible “Chinese magic”
bash
# Load a modified binary dump onto a UID-changeable Classic tag
hf mf cload -f modified.bin
  1. Clonar el UID original para que los terminales reconozcan la tarjeta
bash
# Set the UID on a UID-changeable tag (gen1a/gen2 magic)
hf mf csetuid -u <original_uid>
  1. Uso en terminales

Los lectores que confían en el saldo almacenado en la tarjeta y en el UID aceptarán la tarjeta manipulada. Observaciones de campo muestran que muchas implementaciones limitan los saldos en función del ancho de campo (p. ej., punto fijo de 16 bits).

Notas

  • Si el sistema usa bloques de valor Classic nativos, recuerde el formato: value (4B) + ~value (4B) + value (4B) + block address + ~address. Todas las partes deben coincidir.
  • Para formatos personalizados con checksums simples, differential analysis es la forma más rápida de derivar la función de integridad sin revertir el firmware.
  • Solo las etiquetas UID-changeable ("Chinese magic" gen1a/gen2) permiten escribir el bloque 0/UID. Las tarjetas Classic normales tienen UIDs de solo lectura.

Para comandos prácticos de Proxmark3, ver:

Proxmark 3

Construcción de un clonador móvil portátil HID MaxiProx de 125 kHz

Si necesita una solución de largo alcance, a batería para recolectar tarjetas HID Prox® durante red-team engagements, puede convertir el lector de pared HID MaxiProx 5375 en un clonador autónomo que cabe en una mochila. El recorrido completo mecánico y eléctrico está disponible aquí:

Maxiprox Mobile Cloner


Referencias

tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks