El Proxmark3 Easy es una herramienta muy interesante para trabajar con tecnologías RFID y NFC. Permite identificar diferentes tipos de tarjetas, analizar sus características y, dependiendo de la tecnología utilizada, acceder a determinados datos de memoria.
En este tutorial vamos a utilizar un Proxmark3 Easy de 512 KB conectado a macOS y veremos cómo establecer la comunicación con el dispositivo y realizar una primera lectura de una tarjeta NFC de forma no destructiva, es decir, sin modificar ni escribir datos en ella.
Nota: utiliza este procedimiento únicamente con tarjetas y sistemas sobre los que tengas autorización para realizar pruebas.
1. Conectar el Proxmark3 Easy al Mac
Conecta el Proxmark3 Easy mediante USB.
En macOS podemos comprobar que el sistema ha creado el puerto serie con:
ls /dev/cu.usbmodem* /dev/tty.usbmodem* 2>/dev/null
En mi caso aparece:
/dev/cu.usbmodem101
/dev/tty.usbmodem101
El nombre puede cambiar dependiendo de cómo macOS haya enumerado el dispositivo.
También podemos consultar los puertos detectados por el propio cliente:
./pm3 --list
2. Iniciar el cliente de Proxmark3
Situándonos en el directorio donde tenemos el código de Proxmark3:
cd ~/proxmark3
podemos iniciar el cliente indicando el puerto USB:
client/proxmark3 /dev/cu.usbmodem101
Si la conexión es correcta aparecerá algo similar a:
[+] Communicating with PM3 over USB-CDC
[+] Max frame size: 624 bytes
y posteriormente el prompt:
[usb] pm3 -->
A partir de este momento podemos introducir comandos del Proxmark3.
3. Comprobar la versión
Antes de trabajar con una tarjeta es interesante comprobar que el cliente y el firmware están correctamente sincronizados.
Dentro del Proxmark3:
version
Una instalación correctamente actualizada mostrará las versiones del:
- Client
- Bootrom
- OS
Por ejemplo:
Client.... Iceman/master/...
Bootrom... Iceman/master/...
OS........ Iceman/master/...
Es importante que cliente y firmware sean compatibles. Si existen diferencias importantes entre ambos pueden aparecer errores relacionados con la estructura de capacidades del dispositivo.
4. Colocar la tarjeta NFC
Una vez iniciado el cliente, coloca la tarjeta sobre la antena de alta frecuencia (HF) del Proxmark3.
La tarjeta debe quedar aproximadamente centrada sobre la antena.
No es necesario escribir nada en la tarjeta ni realizar ninguna operación de modificación.
El objetivo inicial es simplemente detectar qué tecnología utiliza.
5. Detectar automáticamente la tarjeta
El primer comando que podemos utilizar es:
auto
Este comando intenta identificar automáticamente una tarjeta compatible.
Dependiendo del tipo de tarjeta, podemos obtener información como:
UID
ATQA
SAK
Estos parámetros son especialmente útiles para determinar qué tecnología estamos analizando.
UID
El UID (Unique Identifier) es el identificador de la tarjeta. Dependiendo de la tecnología, puede tener diferentes longitudes.
ATQA
ATQA es una respuesta utilizada durante la selección de determinadas tarjetas ISO/IEC 14443-A y proporciona información sobre sus características.
SAK
El SAK (Select Acknowledge) proporciona información adicional sobre el tipo de tarjeta y las capacidades que anuncia durante el proceso de selección.
La combinación de UID, ATQA y SAK permite obtener una primera identificación bastante útil.
6. ¿Qué tipos de tarjetas podemos encontrar?
Una de las ventajas del Proxmark3 es que no todas las tarjetas NFC se comportan de la misma manera.
Entre las tecnologías que podemos encontrar están:
MIFARE Classic
Es una familia muy conocida de tarjetas RFID de 13,56 MHz.
Dependiendo del modelo, la memoria está organizada en sectores y bloques y el acceso puede estar protegido mediante claves.
Por eso, después de identificar una MIFARE Classic, no debemos asumir que toda su memoria puede leerse directamente.
MIFARE Ultralight
Son tarjetas con una estructura de memoria diferente a MIFARE Classic.
En función del modelo, podemos encontrar diferentes capacidades y mecanismos de protección.
NTAG
Las tarjetas NTAG son muy utilizadas para aplicaciones NFC, etiquetas inteligentes, automatización y almacenamiento de pequeños contenidos.
Una vez identificado el modelo concreto podemos utilizar los comandos HF correspondientes para consultar su memoria.
ISO14443
ISO/IEC 14443 define diferentes aspectos de las tarjetas de proximidad y es una de las tecnologías fundamentales utilizadas por numerosas tarjetas NFC.
Por eso es habitual que el Proxmark proporcione información relacionada con ISO14443-A durante una detección.
7. No todas las tarjetas NFC se leen de la misma manera
Es importante entender que «leer una NFC» no significa utilizar siempre el mismo comando.
El procedimiento depende de la tecnología.
Por ejemplo:
auto
│
├── NTAG
│ └── comandos MIFARE Ultralight / NTAG
│
├── MIFARE Ultralight
│ └── comandos MFU
│
├── MIFARE Classic
│ └── sectores y bloques protegidos
│
└── otra tecnología
└── comandos específicos
Por este motivo, auto debería ser normalmente nuestro primer paso.
Primero identificamos la tarjeta y posteriormente seleccionamos las herramientas adecuadas.
8. Una primera sesión completa
En resumen, una sesión básica desde macOS sería:
cd ~/proxmark3
client/proxmark3 /dev/cu.usbmodem101
Una vez aparezca:
[usb] pm3 -->
podemos comprobar la versión:
version
y después colocar la tarjeta sobre la antena:
auto
El resultado de auto nos permitirá decidir qué comando utilizar a continuación.
9. Ejemplo de flujo de trabajo
Un flujo de análisis puede ser:
Conectar Proxmark3
↓
Detectar puerto USB
↓
Iniciar cliente
↓
Comprobar firmware
↓
Colocar tarjeta NFC
↓
Ejecutar auto
↓
Identificar tecnología
↓
Consultar información compatible
↓
Analizar memoria accesible
Este enfoque es mucho más seguro que empezar directamente utilizando comandos específicos de una tecnología que todavía no sabemos si corresponde a la tarjeta.
10. ¿Qué podemos analizar después?
Una vez identificada la tarjeta, el Proxmark3 permite profundizar bastante más.
Dependiendo del tipo de tarjeta podemos estudiar:
- UID.
- ATQA.
- SAK.
- Tecnología utilizada.
- Capacidad de memoria.
- Organización de la memoria.
- Sectores y bloques.
- Datos NDEF.
- Configuración de determinadas etiquetas NFC.
- Mecanismos de autenticación.
- Respuestas de la tarjeta.
- Comunicación entre lector y tarjeta.
En una tarjeta NTAG, por ejemplo, podemos estudiar cómo se almacena un registro NDEF y analizar su contenido.
En una MIFARE Classic podemos estudiar la organización por sectores y bloques y comprobar qué zonas están protegidas.
11. Lectura frente a escritura
Una distinción importante cuando trabajamos con Proxmark3 es la diferencia entre analizar y modificar.
Para una primera prueba recomiendo limitarse a operaciones de lectura y detección:
auto
No debemos utilizar comandos de escritura hasta saber exactamente qué tarjeta tenemos delante y qué efecto tendrá la operación.
Una escritura incorrecta puede modificar información de la tarjeta o incluso dejarla inutilizable.
12. Conclusión
El Proxmark3 Easy permite convertir un Mac en una plataforma bastante potente para experimentar con RFID y NFC.
El procedimiento inicial es sencillo:
cd ~/proxmark3
client/proxmark3 /dev/cu.usbmodem101
y posteriormente:
version
seguido de:
auto
La clave está en identificar primero la tecnología y utilizar después los comandos correspondientes.
De esta manera podemos construir un flujo de análisis progresivo:
detectar → identificar → analizar → profundizar, evitando realizar modificaciones innecesarias sobre la tarjeta.
El siguiente paso interesante es tomar una tarjeta NFC de prueba, ejecutar auto y, a partir del resultado, analizar exactamente qué información contiene y cómo está organizada su memoria.