Cloning a RFID card

Eso es, en este post simplemente clonaremos una tarjeta RFID.

TL;DR

El problema abordado se basa en una exploración inicial del hacking ético aplicado a tarjetas RFID de 13.56 MHz, usando como caso de estudio una tarjeta antigua y propia, con un enfoque totalmente educativo y autorizado. El primer paso del análisis consiste en identificar qué tipo de tarjeta es, a qué frecuencia opera y qué estándar utiliza, ya que tecnologías comunes, como MIFARE Classic (basadas en ISO 14443), organizan su memoria en sectores protegidos por claves y son conocidas por presentar vulnerabilidades debido a su diseño antiguo.

Durante esta exploración aparece una limitación importante de hardware: lectores como el RDM6300 funcionan a 125 kHz, por lo que no son compatibles con tarjetas de 13.56 MHz. Esto obliga a considerar alternativas como los módulos RC522 o PN532, que pueden integrarse con plataformas como Arduino o Raspberry Pi. Estas soluciones permiten aprender conceptos básicos como la lectura del UID, el acceso a bloques con claves conocidas y la clonación de tarjetas simples, aunque tienen limitaciones claras cuando se trata de auditorías de seguridad más profundas o ataques criptográficos reales.

Para un análisis más avanzado, es necesario recurrir a herramientas especializadas como Proxmark3 o lectores NFC compatibles con libnfc en sistemas Linux, que permiten estudiar técnicas más complejas como la recuperación de claves, el sniffing de comunicaciones o el análisis de protocolos. Esta es la solución que nos funciona, finalmente.

En conjunto, esta exploración sirve para entender el alcance real del problema, comparar las capacidades y límites de cada herramienta y analizar las debilidades de tecnologías RFID antiguas desde un punto de vista práctico, ético y orientado al aprendizaje en seguridad informática.

Teoría

¿Cómo funciona el RFID?

RFID (Radio Frequency IDentification) es una tecnología de identificación automática que utiliza ondas de radio (campos electromagnéticos) para comunicar un lector con una etiqueta o “tag” adherida a un objeto, sin necesidad de contacto físico ni línea de vista directa.

Un sistema RFID típico tiene tres partes:

🔬 Principios físicos básicos

1) Campos electromagnéticos y ondas de radio

RFID funciona usando ondas de radio, un tipo de radiación electromagnética gobernada por las ecuaciones de Maxwell y la inducción electromagnética de Faraday. Estas leyes describen cómo campos eléctricos y magnéticos variables transmiten energía a través del espacio y pueden inducir corrientes en conductores.

⚙️ Dos mecanismos físicos principales

🧲 1) Acoplamiento inductivo (cerca del lector)

📡 2) Backscatter (reflexión modulada)

💡 Teoría de transferencia de energía y datos

🔹 Pasivos vs. activos

📏 Física del campo (cercano vs. lejano)

Región física Mecanismo dominante Alcance típico
Near‑field (campo cercano) Inductivo Centímetros a ~1 m
Far‑field (campo lejano) Backscatter Varios metros y más

Campo cercano decae ~1/d³, lejano ~1/d² según la distancia y la frecuencia.

Práctica

[!INFORMATION] 🔒 Aspectos Legales:

Obviamente, este post es educativo y no se debe usar nada de esto para otros fines diferentes:

  • Solo clona tarjetas que poseas o tengas permiso para probar
  • No uses para evadir sistemas de seguridad
  • Ideal para pruebas de penetración autorizadas

Usando Arduino

En este post se explica cómo clonar tags RFID utilizando Arduino y el módulo lector RC522, describiendo tanto el hardware como el software necesarios. Se parte de una configuración bastante accesible: una placa Arduino (Uno, Nano o Mega), el lector RC522, tags RFID originales y en blanco, además del cableado correspondiente. La interfaz de comunicación involucrada es SPI, entre el RC522 y Arduino. Se se usa la librería MFRC522, que simplifica la lectura y escritura de datos en los tags compatibles.

Pero, a nivel de funcionamiento, este setup típico permite llevar a cabo un proceso básico de clonación, que consiste en leer el UID del tag original, escribir ese mismo UID en un tag nuevo y, finalmente, verificar que ambos identificadores coinciden. El método no es suficiente para algunos tags que tienen el UID bloqueado por el fabricante y no permiten sobrescritura, o para usar ciertas funciones de escritura más avanzadas.

Con mi setup concreto con tarjetas T5577 o EM410x de 125 kHz, esto no va a funcionar, peus el RC522 trabaja a 13,56 MHz y está diseñado para tags tipo MIFARE, no para RFID de baja frecuencia (LF) como estos. Requerimos un lector/escritor distinto; a continuación veremos una opción que funcionó muy bien.

Usando Proxmark

Tras mucho ensayo y error con diferentes aparatos, incluso tras haber intentado usar alguno de “solo lectura” como elemento de escritura, por puro despiste, trataré de realizar esta tarea empleando uno de los pequeños equipos más alabados y empleados en el mundo del pentesting casero, el Proxmark3; algo así como un Flipper más profesional.

Este es el cacharrillo:

Este dispositivo es capaz de leer, escribir, copiar (emular) y analizar tarjetas RFID e IC/ID, así como llaves NFC (13.56 MHz), incluso de realizar ataques de fuerza bruta, con fines éticos, por supuesto.

En concreto, debido al bajo presupuesto con el que se cuenta, usaremos una versión China del producto, que no tiene tan mala pinta según veo en la reseñas, aquí disponible. Lo importante de este clon es que es 512M, i.e. que usa un microcontrolador At91SAM7S512, que tiene 512 kilobytes (KB) de memoria flash para el firmware y programas internos, por lo que se puede cargar la versión 2.0, i.e. el firmware el oficial actualizado de la versión original. Otras versiones o clones usan un At91SAM7S256 tiene 256 KB de memoria flash, que no tiene capacidad suficiente como para cargar el firmware avanzado o actualizado.

Tiene una doble antena:

Cada tipo de tarjeta con las que venia el dispositivo:

Nombre Descripción Fotografía Enlace a AliExpress
ID-5577 Tarjeta RFID de 125 kHz, regrabable y clonable. Basada en el chip T5577, permite emular múltiples protocolos LF (EM4100, HID, etc.). Muy usada en clonación de tarjetas de baja frecuencia. ID-5577 Comprar
UID Tarjeta RFID de 13,56 MHz con UID fijo, solo identificador. No dispone de memoria útil ni autenticación; se usa en sistemas de acceso simples basados únicamente en el UID. UID Comprar
CUID Tarjeta de 13,56 MHz con UID modificable, compatible con lectores MIFARE. Permite clonar el identificador de otras tarjetas, aunque con limitaciones de seguridad y compatibilidad. CUID Comprar
IC-M1 Tarjeta MIFARE Classic (13,56 MHz) con memoria sectorizada y autenticación por claves. Permite almacenar datos y es común en control de accesos y transporte, aunque con seguridad hoy considerada débil. IC-M1 Comprar

Descargando el software de Proxmark3

La manera más sencilla de manejar el dispositivo es descargando su firmware y herramienta oficiales, incluyendo la instalación de los drivers USB (se usa USB-C para conectarlo al PC).

Una vez instalada, para abrir la herramienta, ejecútese proxmark3 (C:\Program Files (x86)\proxmark3\client\proxmark3.exe) desde la consola.

También se puede seguir el tutorial de ICEMAN y soltar en terminal los .bat que nos da, especificando el COMX en el que estemos. Es mucho más fácil.

Guía de Comandos Proxmark3 para Tarjetas 125 kHz

📋 COMANDOS PARA LEER TARJETAS 125 kHz
Detección y lectura básica:
# Buscar cualquier tarjeta de baja frecuencia
lf search

# Leer tarjeta EM4100 específica
lf em 410x read

# Leer tarjeta HID
lf hid read

# Ver todas las lecturas almacenadas en memoria
lf em 410x list

# Leer tarjeta y mostrar detalles
lf em 410x reader
Comandos de diagnóstico:
# Verificar estado de antena LF
hw tune

# Medir voltaje de antena
lf measure

# Ver información del chip T55xx
lf t55xx detect
📝 COMANDOS PARA GRABAR/CLONAR TARJETAS
Clonación EM4100:
# PASO 1: Leer tarjeta original
lf em 410x read
# Resultado ejemplo: 0417E614D8

# PASO 2: Verificar que se almacenó la lectura
lf em 410x list

# PASO 3: Colocar tarjeta T5577 en blanco y clonar
lf em 410x clone
Escritura manual en T5577:
# Configurar T5577 como EM4100
lf t55xx write --em 0417E614D8

# O usar el método específico
lf em 410x write 0417E614D8
Comandos avanzados de escritura:
# Borrar tarjeta T5577
lf t55xx wipe

# Configurar parámetros de tarjeta
lf t55xx config --em

# Escribir directamente en bloque específico
lf t55xx write -b 0 -d 0417E614D8

🔧 Flujo de Trabajo Completo para Clonar

1. Preparación:
# Conectar Proxmark3
./client/proxmark3.exe COM3

# Verificar conexión
hw version

# Verificar antena
hw tune
2. Leer tarjeta original:
lf search
# Si detecta EM4100, luego:
lf em 410x read
# Anotar UID: 0417E614D8
3. Preparar tarjeta destino:
# Colocar tarjeta T5577 en blanco
lf t55xx detect
# Si está sucia o usada:
lf t55xx wipe
4. Clonar:
# Método automático (recomendado)
lf em 410x clone

# O método manual:
lf em 410x write 0417E614D8
5. Verificar:
lf search
lf em 410x read
# Debería mostrar el mismo UID

⚠️ Solución de Problemas Comunes

Si lf em 410x clone no funciona:
# 1. Verificar que hay lectura previa
lf em 410x list

# 2. Si no hay datos, leer de nuevo
lf em 410x read

# 3. Usar método alternativo
lf t55xx write --em [UID]
Si la tarjeta no se detecta:
# Ajustar ganancia de antena
lf config

# Probar con diferentes posiciones
# La tarjeta debe estar centrada en la antena

📊 Información Importante del Proxmark3 512M

Características clave:

[!WARNING] ¡Que no te estafen! Asegúrate de que la versión o el clon que estás comprando sea realmente de 512KB flash (mínimo), si no, no cabrá el firmware bueno!

Limitaciones de Proxmarkv3:

💡 Consejos Prácticos

  1. Posicionamiento: Mantén la tarjeta centrada en la antena LF (generalmente lado derecho)
  2. Distancia: 0-2cm máximo entre tarjeta y antena
  3. Verificación: Siempre prueba la tarjeta clonada en el lector original
  4. Compatibilidad: Las T5577 son las más versátiles para clonación 125kHz

Clonando la tarjeta 125 kHz de la puerta de mi trabajo

Mi código final; comentar que para las sencillas e.g. 10 kHz sin seguridad basta con leer y escribir, pero que puede ser necesario hacer ataques si están protegidas (e.g. 14,65 MHz cifradas, etc.)

Resultados de lectura y clonación de mi tarjeta EM410x:

Comandos y salida del dispositivo:

[=] Checking for known tags...
[=]
[+] EM 410x ID ************
[+] EM410x ( RF/64 )
[=] -------- Possible de-scramble patterns ---------
[+] Unique TAG ID      : ************
[=] HoneyWell IdentKey
[+]     DEZ 8          : ********
[+]     DEZ 10         : **********
[+]     DEZ 5.5        : ****.*****
[+]     DEZ 3.5A       : ***.*****
[+]     DEZ 3.5B       : ***.*****
[+]     DEZ 3.5C       : ***.*****
[+]     DEZ 14/IK2     : **************
[+]     DEZ 15/IK3     : ***************
[+]     DEZ 20/ZK      : ********************
[=]
[+] Other              : ********_***_********
[+] Pattern Paxton     : ******** [0x********]
[+] Pattern 1          : ******** [0x********]
[+] Pattern Sebury     : **** *** ********  [0x**** 0x** 0x*******]
[+] VD / ID            : *** / **********
[+] Pattern ELECTRA    : **** ********
[=] ------------------------------------------------

[+] Valid EM410x ID found!
[=] Couldn't identify a chipset

Leer tarjeta:

[usb] pm3 --> lf em 410x read
[+] EM 410x ID ************

Clonar tarjeta:

lf em 410x clone --id ************

Verificar tarjeta clonada (información potencialmente sensible tapada):

[usb] pm3 --> lf search

[=] Note: False Positives ARE possible
[=] Checking for known tags...
[=]
[+] EM 410x ID ************
[+] EM410x ( RF/64 )
[=] -------- Possible de-scramble patterns ---------
[+] Unique TAG ID      : ************
[=] HoneyWell IdentKey
[+]     DEZ 8          : ********
[+]     DEZ 10         : **********
[+]     DEZ 5.5        : ****.*****
[+]     DEZ 3.5A       : ***.*****
[+]     DEZ 3.5B       : ***.*****
[+]     DEZ 3.5C       : ***.*****
[+]     DEZ 14/IK2     : **************
[+]     DEZ 15/IK3     : ***************
[+]     DEZ 20/ZK      : ********************
[=]
[+] Other              : ********_***_********
[+] Pattern Paxton     : ******** [0x********]
[+] Pattern 1          : ******** [0x********]
[+] Pattern Sebury     : **** *** ********  [0x**** 0x** 0x*******]
[+] VD / ID            : *** / **********
[+] Pattern ELECTRA    : **** ********
[=] ------------------------------------------------

[+] Valid EM410x ID found!

Ideas y notas

(Cosas a añadir, curiosidades, teoría, otras opciones…)

Referencias