Mostrando entradas con la etiqueta RFID. Mostrar todas las entradas
Mostrando entradas con la etiqueta RFID. Mostrar todas las entradas

sábado, junio 24, 2023

El "jeta" del "Yo Pago" con el Apple Pay que es un ScreenShot

Hoy es un caluroso fin de semana, y como es probable que alguno acabe tomando cañas con gente y teniendo que pagar, os voy a dejar una historia que me contó uno de mis colegas, que me hizo mucha gracia por lo simple, espabilado, y la de veces que te la han podido colar. Se trata de un truco para no pagar, pero parecer que sí que quieres pagar usando el Apple Pay de iPhone

Figura 1: El "jeta" del "Yo Pago" con el Apple Pay que es un ScreenShot

El truco es muy sencillo, y se basa en hacer creer que estás usando Apple Pay de iPhone para pagar una ronda en un Terminal Punto de Venta (PoS "Point of Sale"), pero realmente el usuario no está acercando la app de Apple Pay, sino una captura de la pantalla de la app de Apple Pay con la tarjeta de crédito, desde el carrete de fotos.

Figura 2: Si acercas una captura de pantalla al PoS seguro que no funciona

Por supuesto, eso evita que la conexión NFC (Near Field Communication) esté funcionando, así que el que acerque una tarjeta de crédito, u otro medio de pago con NFC será el que se lleve la multa, mientras que esta persona ha quedado bien con los colegas, pero ni de broma ha tenido intención real de pagar. Merece la pena que leáis el libro de "Show me the (e-)money. Hacking a sistemas de pagos digitalesde Salvador Mendoza (Netxing) que explica muy bien todas estas tecnologías.
No os cuento este truco para que dejéis de pagar rondas con los colegas, sino para que si tenéis a alguno en el grupo que cuando hay una competición por pagar con iPhone y tarjetas nunca se lleva "premio", lo tengáis vigilado. Y aprovechando el verano, os recuerdo algún truco para proteger vuestra tarjeta de crédito que os publiqué hace tiempo, que seguro que acabara saliendo muchas veces.
Al final, la gente utiliza muchas artimañas de menudeo con el dinero alrededor del TPV o Punto de Venta, que van con intenciones diversas. Algunos, como este ejemplo, para no pagar, otros trucos para cobrar en efectivo y que luego se conviertan en dinero no declarado, otros para que no entren en la contabilidad del TPV ya que el dinero es de otro. Hay mucho pájaro suelto

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


martes, enero 24, 2023

Hacking de tarjetas NFC: MIFARE Classic 1k (Parte 4 de 4)

Vamos ya con la última parte de este artículo, donde vamos a ver los ataques de DarkSide, de Hardnested, el ataque de Static Nested, y como ejecutar la búsqueda de todas las posibles vulnerabilidades con un autopwn, para probar cuál es la que afecta a cada tarjeta. Además, os dejaré la referencia de la app de MIFARE Classic Tool para Android para que saques toda la información posible de cada tarjeta. Vamos a ello.

Figura 33: Hacking de tarjetas NFC: MIFARE Classic 1k (Parte 4 de 4)
Imagen Dall-e 2 "happy hacker in cyber punk art style"

Supongamos que ninguna clave está por defecto, por lo que lanzamos el ataque DarkSide contra un sector en concreto. Y una vez que consigamos una clave válida, ya podemos lanzar el nested attack conociendo esta clave, tal y como hemos visto previamente en este artículo en la parte anterior.

Figura 34: Ataque Darkside con: hf mf darkside --blk 0

Vamos a suponer ahora que el PRNG está “hardened” y no es vulnerable (en cuyo caso al hacer un hf search aparecería “Prng detection: Hardened”), por lo que lanzamos el ataque Hardnested contra un sector del que conozcamos su clave (bloque 0 clave A) y queremos obtener la clave B del bloque 0, por ejemplo:
  • hf mf hardnested --blk 0 -a -k a0a1a2a3a4a5 --tblk 0 --tb
Figura 35: Ataque Hardnested Attack con la Proxmark y el código de GitHub del RRG

Vamos a ver ahora una tarjeta con el “fixed nonce” que comentábamos antes. Para no extender demasiado este artículo, os aseguro que ninguno de los ataques anteriores funciona (creedme, los he probado), por lo que no podemos obtener las claves de la tarjeta que no estén por defecto. Sin embargo, con la utilidad desarrollada por el RRGStatic Nested” para solventar esto, podemos obtener todas las claves:

Figura 36: Comando hf search con la Proxmark y el código de GitHub del RRG

Hacemos un chk para comprobar si hay claves por defecto:

Figura 37: Buscando claves por defecto

Y lanzamos el ataque StaticNested. Hasta que obtiene todas las claves restantes. 

Figura 38:  Ataque "hf mf staticnested --1k --blk 0 -a -k ffffffffffff"
La herramienta también tiene otros ataques como “autopwn”, que iría lanzando los ataques en función de las vulnerabilidades que tuviera la tarjeta. 

Figura 39: Búsqueda de vulnerabilidades con autopwn

Al final te dice qué técnica ha utilizado para extraer cada clave, y muchas otras utilidades, por lo que podríamos echar unas cuantas horas jugando luego con las vulnerabilidades una a una.

Figura 40: Búsqueda de vulnerabilidades con autopwn

Por último, solo queda comentar que existe la app MIFARE Classic Tool para Android, la cual puede hacer ataques de diccionario de claves, dumps y restores, modificar datos de bloques concretos, etcéteraq. Echadle un ojo porque es muy interesante.


Esto ha sido todo amigos, ¡espero que os haya sido de utilidad!

Saludos,

**********************************************************************************************
**********************************************************************************************

Autor: Sergio Saiz

domingo, enero 22, 2023

Hacking de tarjetas NFC: MIFARE Classic 1k (Parte 3 de 4)

Ahora que ya hemos visto cómo funcionan estas tarjetas MIFARE Classic 1k en la primera parte de este artículo, y hemos visto cómo funciona la comunicación, el cifrado, y los tipos de ataques que se pueden realizar, vamos ahora a probar a lanzar el ataque Darkside con MFCUK contra un sector concreto y, si obtenemos alguna clave, lanzar posteriormente MFOC para obtener el resto de claves.

Figura 21: Hacking de tarjetas NFC: MIFARE Classic 1k (Parte 3 de 4)
Imagen Dall-e 2 "happy hacker in cyber punk art style"

En este ejemplo vamos a intentar averiguar la clave A del sector 0 (los parámetros -s y -S son delays, el -v es verbose y -C es para realizar la conexión del lector a la tarjeta).

Figura 22: mfcuk -C -R 0:A -s 250 -S 250 -v 5

Figura 23: Se consigue block 3 recovery key

Y ahora lanzaríamos MFOC como en la anterior parte de este artículo con esta clave concreta, utilizando el comando:
  •  mfoc -O dump.dmp -k a0a1a2a3a4a5
Si esta tarjeta tuviera el generador de números pseudo-aleatorios parcheado (PRNG “hardened”), ejecutaríamos MFOC-Hardnested. La herramienta es la misma que MFOC, intenta primero claves por defecto y posteriormente hace el ataque nested, pero podemos forzarle a que haga el ataque hardnested igualmente. 

Figura 24: Ataque hardnested:
mfoc-hardnested -C -F -k a0a1a2a3a4a5

En la captura anterior se ve parte del proceso en el que realiza el proceso de autenticación muchas veces como ya hemos explicado (no nos confundamos, para el ataque hardnested también hace falta al menos una clave conocida), como la conseguida anteriormente. Y finalmente:

Figura 25: Key Found

Una vez que tengamos todas las claves y podamos extraer toda la información de la tarjeta, podríamos clonarla haciendo un volcado de datos (dump) a un archivo y restaurándolo en otra tarjeta en la que se pueda escribir el ID (bloque 0 del sector 0). Es decir, hacer un clonado de la tarjeta. También podríamos hacer el dump de la tarjeta a modo de “backup” y poder restaurarlo cuando fuese necesario }:> O También podríamos investigar la información almacenada, qué significado o utilidad puede tener cada sector utilizado, utilizar la tarjeta y volver a hacer un dump para comparar sus diferencias y, de esta forma, ver qué campos han sido modificados, de qué forma, etcétera. 

Eso ya queda fuera del alcance de este artículo como mínimo, ¡siempre podremos ir haciendo nuestro propio diccionario de claves con las que vayamos recopilando! Por supuesto, imaginaos todas las posibilidades si esta tarjeta es un monedero virtual en un sistema de vendings machines. Podríamos clonar tarjetas de e-money, recargarlas, vaciarlas, etcétera.


Cabe mencionar que las tarjetas actuales ya no tienen la vulnerabildad del PRNG (o no es tan habitual al menos), por lo que los ataques nested y darkside no serían efectivos, pero aún así todavía tenemos herramientas capaces de extraer las claves. A continuación vamos a hacer lo mismo que antes, pero con la Proxmark y el código de GitHub del RRG. Conectamos el dispositivo y comprobamos que detecta la tarjeta.

Figura 28: comando hf search con la Proxmark y el código de GitHub del RRG

En la imagen anterior vemos que el PRNG es vulnerable ("weak"), así que comprobamos si hay claves por defecto:

Figura 29: Comando hf mf chk con la Proxmark y el código de GitHub del RRG

Figura 30: Comando hf mf chk con la Proxmark y el código de GitHub del RRG
(continuación de la salida del comando)

Ahora, utilizamos el ataque nested conociendo la clave A del bloque 0 (no es necesario especificar el sector, puesto que el bloque 0 del sector 1 se escribiría como --blk 4): 

Figura 31: hf mf nested --1k --blk 0 -a -k a0a1a2a3a4a5

Y finalmente obtenemos todas las claves automáticamente:

Figura 32: Volcado de todas las claves

Pero aún nos quedan más cosas, que veremos en la última parte de este artículo. Un poco más de paciencia aún.

Saludos,

**********************************************************************************************
**********************************************************************************************

Autor: Sergio Saiz

sábado, enero 21, 2023

Hacking de tarjetas NFC: MIFARE Classic 1k (Parte 2 de 4)

Ahora que sabemos un poco cómo funcionan estas tarjetas tal y como hemos visto en la primera parte de este artículo, veamos el tema de la comunicación. La comunicación entre el lector y la tarjeta sigue la norma ISO 14443 en su mayoría, salvo en la parte que define cómo se envían los comandos del lector a la tarjeta. Inicialmente se produce una autenticación, y a partir de entonces toda la comunicación está cifrada.

Figura 10: Hacking de tarjetas NFC: MIFARE Classic 1k (Parte 2 de 4)
Imagen Dall-e 2 "happy hacker with long hair in cyber punk digital art"

Si avanzamos un poco en esta parte para no hacerlo muy extenso, llegamos a la parte lógica en la que se basan estas tarjetas. En resumen, utilizan el algoritmo de cifrado CRYPTO1, del cual es propietario NXP Semiconductors (al igual que de las tarjetas MIFARE), y posee varias vulnerabilidades. Gracias a la ingeniería inversa que hicieron Nohl y Plotz sabemos cómo funciona. En la siguiente imagen podemos ver el esquema responsable de la inicialización del algoritmo:

Figura 11: Como se puede ver, las claves son de 48 bits de longitud,
lo que hace posible un ataque de fuerza bruta en un tiempo razonable.

Por otra parte, el LFSR (Linear Feedback Shift Register) utilizado por el RNG (Random Number Generator, o mejor dicho, PRNG, Pseudo-Randon Number Generator) es predecible, de forma que el número generado ya no es tan aleatorio, sino que depende del número de ciclos de reloj que hayan pasado desde que se activó la tarjeta (por medio del lector, recordemos que el lector es el elemento activo y la tarjeta el pasivo) hasta que se pide dicho número. Y aquí tenemos un esquema del algoritmo de cifrado:

Figura 12: Esquema del algoritmo de cifrado.

Esencialmente hay 2 tipos de ataques que se pueden realizar, el primero es mediante sniffing de la comunicación entre una tarjeta (o un emulador de la tarjeta, lo cual se puede hacer con una Proxmark) y un lector válido. El objetivo de este ataque es conseguir las claves que están involucradas en esta comunicación. Por ejemplo, si el lector solo necesita los datos del sector 9, únicamente las claves de este sector se transmitirán de una forma u otra. Con los datos de la conversación challenge-response entre el lector y la tarjeta, somos capaces de averiguar las claves.


El otro tipo de ataque es el que solo requiere una tarjeta válida, no el lector. Este tipo de ataque a su vez permite varios ataques conocidos, que pasamos a explicar a continuación:

Ataques a tarjetas NFC

Nota importante: No me he metido en profundidad en la matemática que hay detrás de los ataques que vamos a ver, por lo que esa parte simplemente quedará explicada en cierta manera. No obstante, la información proporcionada hasta ahora es suficiente para tener una comprensión notable sobre cómo funcionan los ataques, las debilidades que aprovechan, etc. Si alguien quiere profundizar más en esta materia, podrá encontrar mas información en los papers que se han mencionado.

Lo más habitual es que alguna de las claves sea fácil de conseguir, bien porque esté por defecto, porque es fácil de generar un diccionario (todo ceros, todo “F”), etcétera. Una vez que conocemos una clave, podemos probar el ataque “nested”.

1.- Nested Attack

Para realizar este ataque, como decimos, necesitamos conocer al menos una clave válida. Utilizando esta clave, nos autenticamos en el sector al que pertenezca (previamente al proceso de autenticación se lleva a cabo el proceso de selección, mediante el cual el lector es capaz de seleccionar la interacción con una tajeta en concreto, por si alguna más estuviera en su rango de campo electromagnético). En el proceso de autenticación, el lector (es decir, nosotros) envía una solicitud de autenticación en un sector concreto. 

Seguidamente, la tarjeta responde con un “nonce” (Nt), el cual debemos capturar. Posteriormente, el proceso de autenticación finaliza correctamente (puesto que conocíamos la clave). Siguiendo con el ataque, tenemos que autenticarnos de nuevo en el mismo sector y leer de nuevo el nonce Nt. Con estos dos datos y la diferencia en el estado del LFSR, podemos deducir el keystream y, por lo tanto, las sucesivas claves de los diferentes sectores.

2.- Hardnested Attack

En el caso de que el ataque anterior no sea posible porque el generador de número pseudo-aleatorios (PRNG) está parcheado, es posible intentar la autenticación en un sector concreto del que se conozca su clave e ir recopilando todos los Nt recibidos, del orden de 2.000-4.000. De esta manera, es posible realizar un ataque de fuerza bruta “offline” e intentar conseguir de esta manera la clave de un sector concreto.

3.- Dark Side Attack

Este tipo de ataque es un poco diferente. Durante la autenticación, el lector envía los parámetros Nr y Ar. La tarjeta, por su parte, al recibir estos parámetros comprueba primero los bits de paridad. Si cualquiera de ellos es incorrecto, deja de responder.

Figura 14: Parámetros Nr y Ar son enviados por el lector

Si todos son correctos, comprueba Ar y, si este es incorrecto, la tarjeta responde con un código de error 0x5 (NACK) de 4 bits de forma cifrada. Si ahora el lector hace un XOR de este código de error en texto plano con su forma cifrada, es capaz de obtener el keystream.

4.- Fixed Nonce (Static Nested)

Existe un tipo de tarjetas que, ante las vulnerabilidades anteriormente descritas, siempre envían el mismo nonce Nt, por lo que ya no es posible llevar a cabo estos ataques. Sin embargo, como veremos a continuación, en el Github del RRG (Rfid Research Group) se hicieron eco de este tipo de tarjetas y buscaron una solución. De hecho fue el propio iceman quien me informó tras ponerme en contacto con él de un issue abierto donde se discutía esta característica.

Probando los ataques

Pero basta ya de cháchara y pasemos a la acción. Todos los ataques anteriores se pueden hacer con la Proxmark, cargando el firmware del Github del RRG que acabamos de mencionar. Respecto a los ataques Nested y Hardnested, se pueden hacer también con las herramientas MFOC y MFOC-Hardnested respectivamente y para el ataque DarkSide MFCUK. Los pasos generales a seguir serían:
  • Probamos el ataque nested con MFOC
  • Si no encuentra ninguna clave, probamos DarkSide con MFCUK contra un sector concreto. Si encuentra la clave, volvemos a lanzar MFOC utilizando esta clave.
  • Si el PRNG no es vulnerable y ninguno de los métodos anteriores funciona, utilizamos el ataque hardnested con MFOC-Hardnested. Pero para ello debemos conocer al menos una clave. Es muy raro que alguna de las claves no esté por defecto, pero siempre podemos generar diccionarios e ir probando.
  • Si ninguno de los anteriores ataques funciona, utilizaríamos la herramienta del RRG para Proxmark, para las tarjetas con “fixed nonce”.
¡Vamos allá! Disponemos de este lector, así que, como hemos dicho, comencemos por lo más común que es lanzar primero MFOC, desde nuestro Kali Linux, que comprobará si alguna de las claves de la tarjeta están por defecto. 
En ese caso, se lanzará el ataque Nested para obtener el resto de claves: 
  • mfoc -O dump.dmp
Figura 17: mfoc desde Kali Linux (Parte 1)

Figura 18: mfoc desde Kali Linux (Parte 2)

Así hasta que finalmente encuentra las claves que faltan (las B del sector 11 al 15), como se ve en la imagen siguiente:

Figura 19: Encontrada la clave B

Y posteriormente hace un volcado de la tarjeta, con lo que tenemos una copia completa de todos los datos:

Figura 20: Dump completo de la tarjeta MIFARE

En caso de no conseguir ninguna clave con el ataque anterior, podemos probar a lanzar el ataque Darkside con MFCUK contra un sector concreto y, si obtenemos alguna clave, lanzar posteriormente MFOC para obtener el resto de claves. Lo vemos en la siguiente parte de este artículo.

Saludos,

**********************************************************************************************
**********************************************************************************************

Autor: Sergio Saiz

viernes, enero 20, 2023

Hacking de tarjetas NFC: MIFARE Classic 1k (Parte 1 de 4)

En este artículo voy a hablar sobre hacking de tarjetas NFC (Near Field Communication), o Comunicación de Campo Cercano, concretamente las típicas MIFARE Classic 1k. Como todos seguramente sabréis, NFC es un tipo de tecnología inalámbrica cuya banda de frecuencia de operación está en los 13.56 MHz, esto quiere decir que es libre y no hace falta una licencia para operar en ella. El punto fuerte de esta tecnología no es precisamente la transferencia de grandes cantidades de datos, sino la velocidad de transferencia al igual que la rapidez y facilidad de uso.

Figura 1: Hacking de tarjetas NFC: MIFARE Classic 1k (Parte 1 de 4)
Imagen Dall-e 2 "happy hacker with long hair in cyber punk digital art"

Un sistema NFC puede ser, por ejemplo, la identificación de personas o el método de pago de una máquina de vending (son los ejemplos más típicos). En sus inicios, y aún hoy, se utilizan tarjetas NFC o tags NFC como elemento de pago o de identificación, sin embargo, los teléfonos móviles hace ya tiempo que incorporaron esta tecnología y es por ello por lo que podemos “pagar con el móvil” en cualquier establecimiento que tenga un datáfono de los actuales. Algo, que hemos visto descrito y explicado en el libro de Show me the (e-)money. Hacking a sistemas de pagos digitales de Salvador Mendoza (Netxing) publicado por 0xWord.

Básicamente existen dos tipos de funcionamiento NFC, el activo y el pasivo. Esto es, uno de los dispositivos genera un campo electromagnético (al que se denomina dispositivo activo) de modo que, cuando el otro dispositivo (denominado pasivo) se acerca y entra en el radio de acción de dicho campo, su circuito electrónico se excita y entra así en funcionamiento. Pero no vamos a extendernos más en estos aspectos ya que no es el objetivo del artículo.

MIFARE Classic 1k

Como decíamos, existen muchos tipos de tarjetas compatibles con esta tecnología. Nosotros vamos a centrarnos en la MIFARE Classic 1k. Estas tarjetas, como su propio nombre indica, tienen una memoria EEPROM (Electrically Erasable Programmable Read-Only Memory) de 1KB que permite almacenar 768 bytes y está dividida en 16 sectores, divididos a su vez en 4 bloques de 16 bytes cada uno:

Figura 3: Estructura de tarjetas MIFARE Classic 1k

El primer bloque del sector 0 está reservado para datos del fabricante y el ID de la tarjeta. “Se supone” que estos datos son de sólo lectura, y digo “se supone” porque habitualmente así es y así debe ser, pero existen algunas tarjetas (sobre todo de vendedores chinos) en las que se puede escribir en este bloque solo una vez. Esto es especialmente útil si queremos clonar una tarjeta completamente, ID incluido.

Después tenemos 2 bloques de datos, y finalmente el último bloque (recordad que estamos hablando de cualquier sector) sirve para establecer las claves y los bytes de acceso del sector en el que estamos. Es lo que se denomina “trailer”. Estas claves, junto con los bytes de acceso, permitirán la lectura y escritura de datos de su sector.

En la mayoría de sitios de Internet donde dicen (o explican, en el mejor de los casos) "cómo hackear una tarjeta MIFARE Classic 1k", simplemente exponen las herramientas adecuadas para ello, los comandos correspondientes y poco más. O incluso dicen que necesitamos conocer todas las claves, muestran un ejemplo extrayéndolas y ya. Pero también existen artículos técnicos y académicos muy buenos que explican toda la lógica detrás de las MIFARE

¿Es necesario en todos los casos conocer todas las claves? ¿Para qué sirven concretamente las claves y los bytes de acceso? Bien, es lo que vamos a ver a continuación. 

Quedémonos con un único sector, ¿ok? Por ejemplo el sector 1. Cuando yo soy un proveedor de un servicio (por ejemplo, tengo una máquina de vending) y quiero que mis clientes puedan comprar con la tarjeta, puedo pensar que la tarjeta sirve como monedero (después veremos porqué esto es un error). Por lo tanto, si la tarjeta almacena, digamos, el importe que queda en el monedero, ese dato en concreto deberá estar en algún lugar de los bloques de datos. Imaginemos que está en el sector 1 como decíamos.

Figura 3: Sector 1 de tarjetas MIFARE Classic 1k

Siguiendo con el ejemplo, dicho importe podrá estar en los bytes 0 a 5, o 10 a 15 de los bloques 0, 1 o 2 del sector 1. Los bytes 6 a 9 como hemos dicho son bytes de acceso. El bloque 3 por tanto es el trailer y almacena las claves A (bytes 0 a 5) y B (bytes 10 a 15). Si conocemos estas claves, los bytes de acceso dirán qué podemos hacer (leer o escribir básicamente) en los bloques 0, 1 y 2 del sector 1 ¿Hasta aquí todo claro?

Bien, lo habitual es que las claves A y B sean cadenas por defecto (por cierto, están en hexadecimal y pueden tomar valores de 0 a F). Por lo tanto, una forma de “adivinar” estas claves es tirando de diccionario con valores típicos (000000000000, FFFFFFFFFFFF...) fácil, rápido y para toda la familia. 

¿Pero qué pasa si todas las claves han sido modificadas y ya no es ninguna de las de por defecto? ¿O si el fabricante ha sido precavido y ha cambiado sólo las claves de aquellos sectores en los que almacena la información importante?

Siempre nos quedará el ataque de diccionario, pero el éxito dependerá de lo bueno que sea el diccionario, y ello determinará el tiempo que tardemos en averiguar las claves que queremos, o todas las claves. Pero si dejamos a un lado el ataque de diccionario, aquí es donde hay que investigar un poco más y ver qué debilidades tienen estas claves o mejor dicho, los algoritmos de generación de las claves que, al final, son gestionadas por un circuito electrónico.


Este es un paper excelente en el que los autores explican cómo han hecho ingeniería inversa a una tarjeta MIFARE, eliminando las capas físicas del chip mediante diferentes técnicas de atacado químico y analizando todos los componentes, semiconductores, etcétera. Según cómo estén dispuestas las capas de sustrato, van deduciendo qué zonas forman la entrada de datos, el generador de números pseudo-aleatorios, puertas lógicas, etcétera. Estamos hablando de unas dimensiones del orden de micrómetros. Recomiendo su lectura porque es realmente impresionante

Veamos ahora cómo funcionan los bytes de acceso, los cuales se almacenan de la manera en que se ve en la imagen siguiente. Mejor dicho, estos son los BITS de acceso, porque realmente son 3 bits los que definen el acceso, y se almacenan de forma original y de forma invertida en las diferentes posiciones del trailer.

Figura 5: Bytes de acceso en MIFARE Classic 1k

Con esta nomenclatura, C1, C2 y C3 representan los bits en sí, y los subíndices representan el bloque al que se refieren (dentro de su sector), por lo que C11 sería el primer bit para el bloque 1, C21 el segundo bit para el bloque 1, y C31 el tercer bit para el bloque 1.

Aunque parezca un poco lioso, no lo es tanto. Para empezar, solo se utilizan los bytes 6, 7 y 8 (el 9 no). El primer bit de cada uno de ellos se utiliza para definir el acceso al bloque 3 (el propio trailer) del sector en el que se encuentre, el segundo bit de cada uno para el bloque 2, el tercero para el bloque 1 y el cuarto para el bloque 0. En esta tabla podemos verlo de una forma un poco más esquemática:

Figura 6: Bits de acceso

C11, C21 y C31 serán los bits que definan el acceso al bloque 1; C12, C22 y C32 para el bloque 2, y así sucesivamente. Y la forma de almacenar estos bits está reflejado en la tabla anterior que vimos, donde se almacenan tanto los valores originales como los invertidos. 

Figura 7: Valores que pueden tomar los bits C1, C2 y C3 para el trailer

Finalmente, los valores que pueden tomar los bits C1, C2 y C3 para el trailer (bloque 3, es decir, C13, C23 y C33) y las condiciones de acceso que establecen son los que vemos en la figura anterior. Y para los bloques de datos (0, 1 y 2):

Figura 8: Bloques de datos

Entonces, si leemos el trailer de un sector cualquiera de una tarjeta, podemos ver algo como esto:

A0A1A2A3A4A51E11EE5AB0B1B2B3B4B5

Donde:
  • A0A1A2A3A4A5 es la key A
  • B0B1B2B3B4B5 es la key B
  • 1E11EE5A son los bytes de acceso
Aquí tenéis un recurso online ( MIFARE Classic 1K Access Bits Calculator ) que te ayudar a calcular los bytes de acceso para unos permisos concretos. 
Pero si queremos hacer la operación inversa, es decir, calcular los permisos en función de los bytes leídos, debemos hacer un proceso. Calculamos los bits de cada byte hexadecimal (recordemos que el último no se usa):
  • 1E → 00011110 (byte 6)
  • 11 → 00010001 (byte 7)
  • EE → 11101110 (byte 8)
Si contrastamos esta disposición de los bits con la tabla donde vimos cómo se almacenaban, tendríamos que los bits C1, C2 y C3 para el bloque 0 serían:
  • C10 = 1; C20 = 0; C30 = 0
Y así sucesivamente con el resto de bloques:
  • C11 = 0; C21 = 1; C31 = 1
  • C12 = 0; C22 = 1; C32 = 1
  • C13 = 0; C23 = 1; C33 = 1 (trailer)
Es decir, el bloque 0 tiene permisos 100. Vamos a la tabla de permisos de los bloques de datos y vemos que esto se traduce en que con ambas claves A y B se pueden leer, escribir, incrementar, decrementar, transferir y restaurar los datos (vamos, todos los permisos habilitados).

Los bloques 1 y 2 tendrían permisos 011, según los cuales es necesaria la clave B para leer y escribir, pero no se puede hacer nada más. Y para el bloque 3 (trailer), como es otra tabla diferente, 011 significa que ni la clave A ni la B se pueden leer y solo se puede modificar conociendo la clave B, los bits de acceso se pueden leer conociendo una de las dos (o las dos) y solo se pueden modificar conociendo la clave BPor lo tanto, podemos deducir que la clave B es especialmente importante para este sector, por lo que puede almacenar información interesante.

Saludos,

**********************************************************************************************
**********************************************************************************************


Entrada destacada

+300 referencias a papers, posts y talks de Hacking & Security con Inteligencia Artificial

Hace un mes comencé a recuperar en un post mi interés en los últimos años, donde he publicado muchos artículos en este blog , y he dejado mu...

Entradas populares