El núcleo de la auditoría física: mapa de memoria, Value Blocks y condiciones de acceso, ataques de diccionario, vulnerabilidad Darkside del PRNG, ataques Nested y Hardnested y autopwn total.
Desmontar matemáticamente el cifrado propietario Crypto-1 de NXP. Extraer las claves secretas Key A y Key B de los 16 sectores de cualquier tarjeta MIFARE Classic 1K/4K y volcar el 100% de la memoria para clonación en Magic Cards.
Una tarjeta MIFARE Classic 1K contiene 1024 bytes de memoria EEPROM estructurados en 16 sectores independientes (Sectores 0 a 15). Cada sector cuenta con 4 bloques de 16 bytes (64 bloques en total, numerados del 0 al 63).
Para aplicaciones de monedero electrónico (cafeterías, lavanderías, máquinas de vending), MIFARE define una estructura especial con detección de errores y operaciones atómicas de INCREMENT, DECREMENT y RESTORE:
Los 3 bits de control C1, C2, C3 determinan si los bloques de datos y el propio sector trailer pueden leerse o escribirse con la Key A o la Key B. Por diseño de seguridad de NXP, la Key A nunca puede leerse: si se lee el Sector Trailer, el lector siempre recibirá ceros (00 00 00 00 00 00) en los primeros 6 bytes.
# Inspeccionar el bloque 0 y los trailers del volcado tarjeta.bin (1024 bytes)
hexdump -C tarjeta.bin | head -n 8
00000000 a4 1b 89 22 14 08 04 00 01 02 03 04 05 06 07 08 |..."............| <- Bloque 0
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000030 a0 a1 a2 a3 a4 a5 ff 07 80 69 b0 b1 b2 b3 b4 b5 |.......i........| <- Trailer S0
En el offset 0x30 (Sector Trailer 0):
A0 A1 A2 A3 A4 A5FF 07 80 69 (Condición de transporte: lectura y escritura abierta)B0 B1 B2 B3 B4 B5Mapeo completo de qué bloques son modificables y cuáles están protegidos.
Más del 60% de las instalaciones comerciales de control de accesos nunca cambian las claves de fábrica en todos los sectores, o emplean diccionarios estandarizados por integradores.
Meta del Lab: Ejecutar una prueba masiva con el diccionario de 1000 claves en Proxmark3 y volcar todos los sectores accesibles.
[usb] pm3 --> hf mf chk --dump
[+] Testing 16 sectors using default keys dictionary...
[+] Sector 00 | Key A: FFFFFFFFFFFF | Key B: FFFFFFFFFFFF
[+] Sector 01 | Key A: A0A1A2A3A4A5 | Key B: B0B1B2B3B4B5
[+] Sector 02 | Key A: D3F7D3F7D3F7 | Key B: [UNKNOWN]
[+] Sector 03 | Key A: [UNKNOWN] | Key B: [UNKNOWN] <- Sector bloqueado
...
[+] Found 28 of 32 keys. Dump saved to hf-mf-A41B8922-dump.bin
Con solo tener una sola clave de cualquier sector, podemos saltar a los sectores desconocidos mediante el ataque Nested.
Recuperación de al menos un 50-80% de los sectores en sistemas mal configurados.
¿Qué ocurre si la tarjeta tiene todas las claves cambiadas y desconocidas? En 2009, el criptógrafo Nicolas T. Courtois descubrió el ataque Darkside.
Cuando un lector envía una clave errónea en una autenticación MIFARE, la tarjeta responde con un código NACK cifrado de 4 bits. Sin embargo, debido a un fallo de diseño en la función de paridad del algoritmo Crypto-1, el bit de paridad se calcula antes de cifrar. Al enviar miles de consultas con tiempos de reloj cuidadosamente calculados, la tarjeta filtra bits del estado interno del generador pseudoaleatorio (LFSR de 48 bits), permitiendo resolver la primera clave secreta en menos de 3 minutos.
[usb] pm3 --> hf mf darkside
[+] Card has weak PRNG! Starting Darkside attack against Sector 0 Key A...
[+] Gathering parity leaks from NACK frames...
[#] Nonce: 7f81ab12 | Parity: 1
[#] Nonce: 7f81ab14 | Parity: 0
[+] Candidate state found after 412 queries!
[+] Valid Key Found for Sector 0 Key A: 4B1299A0CF21
[+] Time elapsed: 1 minute 42 seconds.
Descubrimiento de Key A = A0 B1 C2 D3 E4 F5.
Una vez recuperada al menos una clave válida (mediante diccionario o Darkside), el ataque Nested aprovecha que el PRNG de MIFARE Classic no es verdaderamente aleatorio, sino una función determinista basada en el tiempo transcurrido desde el reset ($n_T$). Al autenticarse en el sector conocido y solicitar una segunda autenticación en el sector objetivo, la distancia temporal entre nonces revela la clave en milisegundos.
Meta del Lab: Ejecutar el pipeline autónomo que selecciona inteligentemente Chk -> Darkside -> Nested -> Hardnested hasta volcar el 100% de la tarjeta.
[usb] pm3 --> hf mf autopwn
[+] Phase 1: Checking default keys dictionary... (22 keys found)
[+] Phase 2: Starting Nested attack for remaining 10 keys...
[+] Nested: Sector 3 Key A found: 1A2B3C4D5E6F
[+] Nested: Sector 3 Key B found: 998877665544
...
[+] All 32 keys retrieved successfully! (100% dump)
[+] Saving complete card memory to dump.bin and dump.json...
[+] Card is fully cracked and ready for cloning.
Obtención de todas las claves Key A y Key B y generación del archivo .bin íntegro.