mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/todo/radio-hacking/pentesting-rfid.md', 'src/todo/radio
This commit is contained in:
parent
74c358e0f3
commit
fe5d903e7d
@ -4,97 +4,147 @@
|
||||
|
||||
## Introducción
|
||||
|
||||
**La Identificación por Radiofrecuencia (RFID)** es la solución de radio de corto alcance más popular. Se utiliza generalmente para almacenar y transmitir información que identifica una entidad.
|
||||
**Identificación por radiofrecuencia (RFID)** es la solución de radio de corto alcance más popular. Generalmente se usa para almacenar y transmitir información que identifica a una entidad.
|
||||
|
||||
Una etiqueta RFID puede depender de **su propia fuente de energía (activa)**, como una batería integrada, o recibir su energía de la antena lectora utilizando la corriente **inducida por las ondas de radio recibidas** (**pasiva**).
|
||||
Una etiqueta RFID puede depender de **su propia fuente de energía (activa)**, como una batería integrada, o recibir su energía desde la antena lectora usando la corriente **inducida por las ondas de radio recibidas** (**pasiva**).
|
||||
|
||||
### Clases
|
||||
|
||||
EPCglobal divide las etiquetas RFID en seis categorías. Una etiqueta en cada categoría tiene todas las capacidades listadas en la categoría anterior, lo que la hace compatible hacia atrás.
|
||||
EPCglobal divide las etiquetas RFID en seis categorías. Una etiqueta en cada categoría tiene todas las capacidades listadas en la categoría anterior, haciéndola compatible hacia atrás.
|
||||
|
||||
- Las etiquetas de **Clase 0** son etiquetas **pasivas** que operan en bandas de **UHF**. El proveedor las **preprograma** en la fábrica de producción. Como resultado, **no se puede cambiar** la información almacenada en su memoria.
|
||||
- Las etiquetas de **Clase 1** también pueden operar en bandas de **HF**. Además, pueden ser **escritas solo una vez** después de la producción. Muchas etiquetas de Clase 1 también pueden procesar **comprobaciones de redundancia cíclica** (CRCs) de los comandos que reciben. Los CRC son unos pocos bytes adicionales al final de los comandos para la detección de errores.
|
||||
- Las etiquetas de **Clase 2** pueden ser **escritas múltiples veces**.
|
||||
- Las etiquetas de **Clase 3** pueden contener **sensores integrados** que pueden registrar parámetros ambientales, como la temperatura actual o el movimiento de la etiqueta. Estas etiquetas son **semi-pasivas**, porque aunque **tienen** una fuente de energía integrada, como una **batería** integrada, **no pueden iniciar** la **comunicación** inalámbrica con otras etiquetas o lectores.
|
||||
- Las etiquetas de **Clase 4** pueden iniciar comunicación con otras etiquetas de la misma clase, lo que las convierte en **etiquetas activas**.
|
||||
- Las etiquetas de **Clase 5** pueden proporcionar **energía a otras etiquetas y comunicarse con todas las clases de etiquetas anteriores**. Las etiquetas de Clase 5 pueden actuar como **lectores RFID**.
|
||||
- **Class 0** tags are **passive** tags that operate in **UHF** bands. The vendor **preprograms** them at the production factory. As a result, you **can’t change** the information stored in their memory.
|
||||
- **Class 1** tags can also operate in **HF** bands. In addition, they can be **written only once** after production. Many Class 1 tags can also process **cyclic redundancy checks** (CRCs) of the commands they receive. CRCs are a few extra bytes at the end of the commands for error detection.
|
||||
- **Class 2** tags can be **written multiple times**.
|
||||
- **Class 3** tags can contain **embedded sensors** that can record environmental parameters, such as the current temperature or the tag’s motion. These tags are **semi-passive**, because although they **have** an embedded power source, such as an integrated **battery**, they **can’t initiate** wireless **communication** with other tags or readers.
|
||||
- **Class 4** tags can initiate communication with other tags of the same class, making them **active tags**.
|
||||
- **Class 5** tags can provide **power to other tags and communicate with all the previous tag** classes. Class 5 tags can act as **RFID readers**.
|
||||
|
||||
### Información Almacenada en Etiquetas RFID
|
||||
### Información almacenada en las etiquetas RFID
|
||||
|
||||
La memoria de una etiqueta RFID generalmente almacena cuatro tipos de datos: los **datos de identificación**, que **identifican** la **entidad** a la que está adjunta la etiqueta (estos datos incluyen campos definidos por el usuario, como cuentas bancarias); los **datos suplementarios**, que proporcionan **más** **detalles** sobre la entidad; los **datos de control**, utilizados para la **configuración** interna de la etiqueta; y los **datos del fabricante** de la etiqueta, que contienen el Identificador Único de la etiqueta (**UID**) y detalles sobre la **producción**, **tipo** y **proveedor** de la etiqueta. Encontrarás los dos primeros tipos de datos en todas las etiquetas comerciales; los últimos dos pueden diferir según el proveedor de la etiqueta.
|
||||
La memoria de una etiqueta RFID normalmente almacena cuatro tipos de datos: los **datos de identificación**, que **identifican** la **entidad** a la que está adherida la etiqueta (estos datos incluyen campos definidos por el usuario, como cuentas bancarias); los **datos suplementarios**, que proporcionan **detalles adicionales** sobre la entidad; los **datos de control**, usados para la **configuración** interna de la etiqueta; y los **datos del fabricante**, que contienen un Identificador Único de la etiqueta (**UID**) y detalles sobre la **producción**, **tipo** y **vendedor** de la etiqueta. Encontrarás los dos primeros tipos de datos en todas las etiquetas comerciales; los dos últimos pueden diferir según el proveedor de la etiqueta.
|
||||
|
||||
La norma ISO especifica el valor del Identificador de Familia de Aplicación (**AFI**), un código que indica el **tipo de objeto** al que pertenece la etiqueta. Otro registro importante, también especificado por ISO, es el Identificador de Formato de Almacenamiento de Datos (**DSFID**), que define la **organización lógica de los datos del usuario**.
|
||||
El estándar ISO especifica el valor Application Family Identifier (**AFI**), un código que indica el **tipo de objeto** al que pertenece la etiqueta. Otro registro importante, también especificado por ISO, es el Data Storage Format Identifier(**DSFID**), que define la **organización lógica de los datos de usuario**.
|
||||
|
||||
La mayoría de los **controles de seguridad** RFID tienen mecanismos que **restringen** las operaciones de **lectura** o **escritura** en cada bloque de memoria de usuario y en los registros especiales que contienen los valores AFI y DSFID. Estos **mecanismos de bloqueo** utilizan datos almacenados en la memoria de control y tienen **contraseñas predeterminadas** preconfiguradas por el proveedor, pero permiten a los propietarios de las etiquetas **configurar contraseñas personalizadas**.
|
||||
La mayoría de los **controles de seguridad** de RFID cuentan con mecanismos que **restringen** las operaciones de **lectura** o **escritura** en cada bloque de memoria de usuario y en los registros especiales que contienen los valores AFI y DSFID. Estos **mecanismos de bloqueo** usan datos almacenados en la memoria de control y tienen **contraseñas por defecto** preconfiguradas por el vendedor, pero permiten a los propietarios de las etiquetas **configurar contraseñas personalizadas**.
|
||||
|
||||
### Comparación de Etiquetas de Baja y Alta Frecuencia
|
||||
### Comparación de etiquetas de baja y alta frecuencia
|
||||
|
||||
<figure><img src="../../images/image (983).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## Etiquetas RFID de Baja Frecuencia (125kHz)
|
||||
## Etiquetas RFID de baja frecuencia (125kHz)
|
||||
|
||||
Las **etiquetas de baja frecuencia** se utilizan a menudo en sistemas que **no requieren alta seguridad**: acceso a edificios, llaves de intercomunicador, tarjetas de membresía de gimnasio, etc. Debido a su mayor rango, son convenientes para usar en estacionamientos de pago: el conductor no necesita acercar la tarjeta al lector, ya que se activa desde más lejos. Al mismo tiempo, las etiquetas de baja frecuencia son muy primitivas, tienen una baja tasa de transferencia de datos. Por esa razón, es imposible implementar una transferencia de datos bidireccional compleja para cosas como mantener el saldo y la criptografía. Las etiquetas de baja frecuencia solo transmiten su ID corta sin ningún medio de autenticación.
|
||||
Las **etiquetas de baja frecuencia** se usan a menudo en sistemas que **no requieren alta seguridad**: acceso a edificios, llaves de intercomunicador, tarjetas de membresía de gimnasios, etc. Debido a su mayor alcance, son convenientes para el uso en estacionamientos de pago: el conductor no necesita acercar la tarjeta al lector, ya que se activa desde más lejos. Al mismo tiempo, las etiquetas de baja frecuencia son muy primitivas y tienen una baja tasa de transferencia de datos. Por esa razón, es imposible implementar una transferencia de datos bidireccional compleja para cosas como mantener saldo y criptografía. Las etiquetas de baja frecuencia solo transmiten su ID corto sin ningún medio de autenticación.
|
||||
|
||||
Estos dispositivos dependen de la tecnología **RFID** **pasiva** y operan en un **rango de 30 kHz a 300 kHz**, aunque es más habitual usar 125 kHz a 134 kHz:
|
||||
Estos dispositivos se basan en tecnología RFID **pasiva** y operan en un **rango de 30 kHz a 300 kHz**, aunque es más habitual usar 125 kHz a 134 kHz:
|
||||
|
||||
- **Largo Alcance** — una frecuencia más baja se traduce en un mayor alcance. Hay algunos lectores EM-Marin y HID, que funcionan a una distancia de hasta un metro. Estos se utilizan a menudo en estacionamientos.
|
||||
- **Protocolo Primitivo** — debido a la baja tasa de transferencia de datos, estas etiquetas solo pueden transmitir su ID corta. En la mayoría de los casos, los datos no están autenticados y no están protegidos de ninguna manera. Tan pronto como la tarjeta está en el rango del lector, simplemente comienza a transmitir su ID.
|
||||
- **Baja Seguridad** — Estas tarjetas pueden ser fácilmente copiadas, o incluso leídas desde el bolsillo de otra persona debido a la primitividad del protocolo.
|
||||
- **Long Range** — una frecuencia más baja se traduce en mayor alcance. Existen algunos lectores EM-Marin y HID que funcionan a distancias de hasta un metro. A menudo se usan en estacionamientos.
|
||||
- **Primitive protocol** — debido a la baja velocidad de transferencia de datos, estas etiquetas solo pueden transmitir su ID corto. En la mayoría de los casos, los datos no están autenticados ni protegidos de ninguna manera. Tan pronto como la tarjeta está en el rango del lector, simplemente comienza a transmitir su ID.
|
||||
- **Low security** — Estas tarjetas se pueden copiar fácilmente, o incluso leer desde el bolsillo de otra persona debido a la primitividad del protocolo.
|
||||
|
||||
**Protocolos populares de 125 kHz:**
|
||||
Protocolos populares de 125 kHz:
|
||||
|
||||
- **EM-Marin** — EM4100, EM4102. El protocolo más popular en la CEI. Puede ser leído desde aproximadamente un metro debido a su simplicidad y estabilidad.
|
||||
- **HID Prox II** — protocolo de baja frecuencia introducido por HID Global. Este protocolo es más popular en los países occidentales. Es más complejo y las tarjetas y lectores para este protocolo son relativamente caros.
|
||||
- **Indala** — protocolo de baja frecuencia muy antiguo que fue introducido por Motorola, y más tarde adquirido por HID. Es menos probable que lo encuentres en la naturaleza en comparación con los dos anteriores porque está en desuso.
|
||||
- **EM-Marin** — EM4100, EM4102. The most popular protocol in CIS. Can be read from about a meter because of its simplicity and stability.
|
||||
- **HID Prox II** — low-frequency protocol introduced by HID Global. This protocol is more popular in the western countries. It is more complex and the cards and readers for this protocol are relatively expensive.
|
||||
- **Indala** — very old low-frequency protocol that was introduced by Motorola, and later acquired by HID. You are less likely to encounter it in the wild compared to the previous two because it is falling out of use.
|
||||
|
||||
En realidad, hay muchos más protocolos de baja frecuencia. Pero todos utilizan la misma modulación en la capa física y pueden considerarse, de una forma u otra, una variación de los listados anteriormente.
|
||||
En realidad, existen muchos más protocolos de baja frecuencia. Pero todos usan la misma modulación en la capa física y pueden considerarse, de una forma u otra, una variación de los listados arriba.
|
||||
|
||||
### Ataque
|
||||
|
||||
Puedes **atacar estas etiquetas con el Flipper Zero**:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
flipper-zero/fz-125khz-rfid.md
|
||||
{{#endref}}
|
||||
|
||||
## Etiquetas RFID de Alta Frecuencia (13.56 MHz)
|
||||
## Etiquetas RFID de alta frecuencia (13.56 MHz)
|
||||
|
||||
Las **etiquetas de alta frecuencia** se utilizan para una interacción más compleja entre el lector y la etiqueta cuando se necesita criptografía, una gran transferencia de datos bidireccional, autenticación, etc.\
|
||||
Se encuentran generalmente en tarjetas bancarias, transporte público y otros pases seguros.
|
||||
Las **etiquetas de alta frecuencia** se usan cuando se necesita una interacción lector-etiqueta más compleja, con criptografía, transferencia de datos bidireccional extensa, autenticación, etc.\
|
||||
Suelen encontrarse en tarjetas bancarias, transporte público y otros pases seguros.
|
||||
|
||||
**Las etiquetas de alta frecuencia de 13.56 MHz son un conjunto de estándares y protocolos**. Se les suele llamar [NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/), pero eso no siempre es correcto. El conjunto de protocolos básicos utilizados en los niveles físico y lógico es ISO 14443. Los protocolos de alto nivel, así como los estándares alternativos (como ISO 19092), se basan en él. Muchas personas se refieren a esta tecnología como **Comunicación de Campo Cercano (NFC)**, un término para dispositivos que operan en la frecuencia de 13.56 MHz.
|
||||
**Las etiquetas de alta frecuencia de 13.56 MHz son un conjunto de estándares y protocolos**. Generalmente se las denomina [NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/), pero eso no siempre es correcto. El conjunto básico de protocolos usado en los niveles físico y lógico es ISO 14443. Los protocolos de alto nivel, así como estándares alternativos (como ISO 19092), se basan en él. Muchas personas se refieren a esta tecnología como **Near Field Communication (NFC)**, un término para dispositivos que operan en la frecuencia de 13.56 MHz.
|
||||
|
||||
<figure><img src="../../images/image (930).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Para simplificar, la arquitectura de NFC funciona así: el protocolo de transmisión es elegido por la empresa que fabrica las tarjetas e implementado basado en el ISO 14443 de bajo nivel. Por ejemplo, NXP inventó su propio protocolo de transmisión de alto nivel llamado Mifare. Pero a un nivel inferior, las tarjetas Mifare se basan en el estándar ISO 14443-A.
|
||||
Para ponerlo de forma simple, la arquitectura de NFC funciona así: el protocolo de transmisión lo elige la empresa que fabrica las tarjetas e implementa sobre el nivel bajo ISO 14443. Por ejemplo, NXP inventó su propio protocolo de transmisión de alto nivel llamado Mifare. Pero en el nivel inferior, las tarjetas Mifare se basan en el estándar ISO 14443-A.
|
||||
|
||||
Flipper puede interactuar tanto con el protocolo ISO 14443 de bajo nivel, como con el protocolo de transferencia de datos Mifare Ultralight y EMV utilizado en tarjetas bancarias. Estamos trabajando en agregar soporte para Mifare Classic y NFC NDEF. Un análisis exhaustivo de los protocolos y estándares que componen NFC merece un artículo separado que planeamos publicar más adelante.
|
||||
Flipper puede interactuar tanto con el protocolo de bajo nivel ISO 14443, como con el protocolo de transferencia de datos Mifare Ultralight y EMV usado en tarjetas bancarias. Estamos trabajando en añadir soporte para Mifare Classic y NFC NDEF. Un análisis profundo de los protocolos y estándares que conforman NFC merece un artículo aparte que planeamos publicar más adelante.
|
||||
|
||||
Todas las tarjetas de alta frecuencia basadas en el estándar ISO 14443-A tienen un ID de chip único. Actúa como el número de serie de la tarjeta, como la dirección MAC de una tarjeta de red. **Por lo general, el UID tiene 4 o 7 bytes de longitud**, pero rara vez puede **llegar hasta 10**. Los UIDs no son un secreto y son fácilmente legibles, **a veces incluso impresos en la propia tarjeta**.
|
||||
Todas las tarjetas de alta frecuencia basadas en el estándar ISO 14443-A tienen un ID de chip único. Actúa como el número de serie de la tarjeta, similar a la dirección MAC de una tarjeta de red. **Usualmente, el UID tiene 4 o 7 bytes de largo**, pero raramente puede llegar **hasta 10**. Los UID no son secretos y son fácilmente legibles, **a veces incluso impresos en la propia tarjeta**.
|
||||
|
||||
Hay muchos sistemas de control de acceso que dependen del UID para **autenticar y otorgar acceso**. A veces esto sucede **incluso** cuando las etiquetas RFID **soportan criptografía**. Tal **mal uso** las reduce al nivel de las **tarjetas de 125 kHz** en términos de **seguridad**. Las tarjetas virtuales (como Apple Pay) utilizan un UID dinámico para que los propietarios de teléfonos no puedan abrir puertas con su aplicación de pago.
|
||||
Hay muchos sistemas de control de acceso que confían en el UID para **autenticar y conceder acceso**. A veces esto ocurre **incluso** cuando las etiquetas RFID **soportan criptografía**. Ese **uso indebido** las deja al nivel de las simples **tarjetas de 125 kHz** en términos de **seguridad**. Las tarjetas virtuales (como Apple Pay) usan un UID dinámico para que los dueños de los teléfonos no abran puertas con su app de pagos.
|
||||
|
||||
- **Bajo alcance** — las tarjetas de alta frecuencia están diseñadas específicamente para que deban ser colocadas cerca del lector. Esto también ayuda a proteger la tarjeta de interacciones no autorizadas. El rango máximo de lectura que logramos alcanzar fue de aproximadamente 15 cm, y eso fue con lectores de alto rango hechos a medida.
|
||||
- **Protocolos avanzados** — las velocidades de transferencia de datos de hasta 424 kbps permiten protocolos complejos con transferencia de datos bidireccional completa. Lo que a su vez **permite criptografía**, transferencia de datos, etc.
|
||||
- **Alta seguridad** — las tarjetas de contacto sin contacto de alta frecuencia no son en modo alguno inferiores a las tarjetas inteligentes. Hay tarjetas que soportan algoritmos criptográficamente fuertes como AES e implementan criptografía asimétrica.
|
||||
- **Low range** — las tarjetas de alta frecuencia están diseñadas específicamente para que deban colocarse cerca del lector. Esto también ayuda a proteger la tarjeta de interacciones no autorizadas. El alcance máximo de lectura que logramos fue de unos 15 cm, y eso fue con lectores personalizados de largo alcance.
|
||||
- **Advanced protocols** — velocidades de transferencia de datos de hasta 424 kbps permiten protocolos complejos con transferencia de datos bidireccional completa. Lo cual a su vez **permite criptografía**, transferencia de datos, etc.
|
||||
- **High security** — las tarjetas contactless de alta frecuencia no son en absoluto inferiores a las smart cards. Existen tarjetas que soportan algoritmos criptográficamente fuertes como AES e implementan criptografía asimétrica.
|
||||
|
||||
### Ataque
|
||||
|
||||
Puedes **atacar estas etiquetas con el Flipper Zero**:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
flipper-zero/fz-nfc.md
|
||||
{{#endref}}
|
||||
|
||||
O usando el **proxmark**:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
proxmark-3.md
|
||||
{{#endref}}
|
||||
|
||||
### Construyendo un Clonador Móvil HID MaxiProx 125 kHz
|
||||
### MiFare Classic offline stored-value tampering (broken Crypto1)
|
||||
|
||||
When a system stores a monetary balance directly on a MiFare Classic card, you can often manipulate it because Classic uses NXP’s deprecated Crypto1 cipher. Crypto1 has been broken for years, allowing recovery of sector keys and full read/write of card memory with commodity hardware (e.g., Proxmark3).
|
||||
|
||||
End-to-end workflow (abstracted):
|
||||
|
||||
1) Volcar la tarjeta original y recuperar las claves
|
||||
```bash
|
||||
# Attempt all built-in Classic key recovery attacks and dump the card
|
||||
hf mf autopwn
|
||||
```
|
||||
Esto normalmente recupera las claves de sector (A/B) y genera un volcado completo de la tarjeta en la carpeta client dumps.
|
||||
|
||||
2) Localiza y comprende los campos de valor/integridad
|
||||
|
||||
- Realiza recargas legítimas en la tarjeta original y toma múltiples volcados (antes/después).
|
||||
- Haz un diff de los dos volcados para identificar los bloques/bytes cambiantes que representan el saldo y cualquier campo de integridad.
|
||||
- Muchas implementaciones Classic usan la codificación nativa de "value block" o implementan sus propias sumas de verificación (p. ej., XOR del saldo con otro campo y una constante). Tras cambiar el saldo, recalcula los bytes de integridad en consecuencia y asegúrate de que todos los campos duplicados/complementados sean consistentes.
|
||||
|
||||
3) Escribe el volcado modificado en una etiqueta Classic escribible “Chinese magic”
|
||||
```bash
|
||||
# Load a modified binary dump onto a UID-changeable Classic tag
|
||||
hf mf cload -f modified.bin
|
||||
```
|
||||
4) Clonar el UID original para que los terminales reconozcan la tarjeta
|
||||
```bash
|
||||
# Set the UID on a UID-changeable tag (gen1a/gen2 magic)
|
||||
hf mf csetuid -u <original_uid>
|
||||
```
|
||||
5) Uso en terminales
|
||||
|
||||
Los lectores que confían en el saldo almacenado en la tarjeta y en el UID aceptarán la tarjeta manipulada. Observaciones de campo muestran que muchas implementaciones limitan los saldos en función del ancho de campo (p. ej., punto fijo de 16 bits).
|
||||
|
||||
Notas
|
||||
|
||||
- Si el sistema usa bloques de valor Classic nativos, recuerde el formato: value (4B) + ~value (4B) + value (4B) + block address + ~address. Todas las partes deben coincidir.
|
||||
- Para formatos personalizados con checksums simples, differential analysis es la forma más rápida de derivar la función de integridad sin revertir el firmware.
|
||||
- Solo las etiquetas UID-changeable ("Chinese magic" gen1a/gen2) permiten escribir el bloque 0/UID. Las tarjetas Classic normales tienen UIDs de solo lectura.
|
||||
|
||||
Para comandos prácticos de Proxmark3, ver:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
proxmark-3.md
|
||||
{{#endref}}
|
||||
|
||||
### Construcción de un clonador móvil portátil HID MaxiProx de 125 kHz
|
||||
|
||||
Si necesita una solución **de largo alcance**, **a batería** para recolectar tarjetas HID Prox® durante red-team engagements, puede convertir el lector de pared **HID MaxiProx 5375** en un clonador autónomo que cabe en una mochila. El recorrido completo mecánico y eléctrico está disponible aquí:
|
||||
|
||||
Si necesitas una solución **de largo alcance**, **alimentada por batería** para recolectar insignias HID Prox® durante compromisos de equipo rojo, puedes convertir el lector **HID MaxiProx 5375** montado en la pared en un clonador autónomo que quepa en una mochila. El recorrido mecánico y eléctrico completo está disponible aquí:
|
||||
|
||||
{{#ref}}
|
||||
maxiprox-mobile-cloner.md
|
||||
@ -106,5 +156,8 @@ maxiprox-mobile-cloner.md
|
||||
|
||||
- [https://blog.flipperzero.one/rfid/](https://blog.flipperzero.one/rfid/)
|
||||
- [Let's Clone a Cloner – Part 3 (TrustedSec)](https://trustedsec.com/blog/lets-clone-a-cloner-part-3-putting-it-all-together)
|
||||
- [NXP statement on MIFARE Classic Crypto1](https://www.mifare.net/en/products/chip-card-ics/mifare-classic/security-statement-on-crypto1-implementations/)
|
||||
- [MIFARE security overview (Wikipedia)](https://en.wikipedia.org/wiki/MIFARE#Security)
|
||||
- [NFC card vulnerability exploitation in KioSoft Stored Value (SEC Consult)](https://sec-consult.com/vulnerability-lab/advisory/nfc-card-vulnerability-exploitation-leading-to-free-top-up-kiosoft-payment-solution/)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
@ -2,15 +2,15 @@
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## Ataques a sistemas RFID con Proxmark3
|
||||
## Atacar sistemas RFID con Proxmark3
|
||||
|
||||
Lo primero que necesitas es tener un [**Proxmark3**](https://proxmark.com) y [**instalar el software y sus dependencias**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux)[**s**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux).
|
||||
Lo primero que necesitas es tener un [**Proxmark3**](https://proxmark.com) y [**install the software and it's dependencie**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux)[**s**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux).
|
||||
|
||||
### Ataques a MIFARE Classic 1KB
|
||||
### Atacar MIFARE Classic 1KB
|
||||
|
||||
Tiene **16 sectores**, cada uno de ellos tiene **4 bloques** y cada bloque contiene **16B**. El UID está en el sector 0 bloque 0 (y no se puede alterar).\
|
||||
Para acceder a cada sector necesitas **2 claves** (**A** y **B**) que están almacenadas en **el bloque 3 de cada sector** (trailer del sector). El trailer del sector también almacena los **bits de acceso** que otorgan los permisos de **lectura y escritura** en **cada bloque** utilizando las 2 claves.\
|
||||
2 claves son útiles para otorgar permisos de lectura si conoces la primera y de escritura si conoces la segunda (por ejemplo).
|
||||
Tiene **16 sectores**, cada uno de ellos tiene **4 bloques** y cada bloque contiene **16B**. El UID está en sector 0 block 0 (y no puede ser alterado).\
|
||||
Para acceder a cada sector necesitas **2 keys** (**A** and **B**) que se almacenan en **block 3 of each sector** (sector trailer). El sector trailer también almacena los **access bits** que dan los permisos de **read and write** sobre **cada bloque** usando las 2 keys.\
|
||||
Tener 2 keys es útil para dar permisos de lectura si conoces la primera y de escritura si conoces la segunda (por ejemplo).
|
||||
|
||||
Se pueden realizar varios ataques
|
||||
```bash
|
||||
@ -31,11 +31,39 @@ proxmark3> hf mf eset 01 000102030405060708090a0b0c0d0e0f # Write those bytes to
|
||||
proxmark3> hf mf eget 01 # Read block 1
|
||||
proxmark3> hf mf wrbl 01 B FFFFFFFFFFFF 000102030405060708090a0b0c0d0e0f # Write to the card
|
||||
```
|
||||
El Proxmark3 permite realizar otras acciones como **escuchar** una **comunicación de Etiqueta a Lector** para intentar encontrar datos sensibles. En esta tarjeta, podrías simplemente espiar la comunicación y calcular la clave utilizada porque las **operaciones criptográficas utilizadas son débiles** y conociendo el texto plano y el texto cifrado puedes calcularla (herramienta `mfkey64`).
|
||||
El Proxmark3 permite realizar otras acciones, como **eavesdropping** de una **Tag to Reader communication**, para intentar encontrar datos sensibles. En esta tarjeta podrías simplemente sniff la comunicación y calcular la clave usada porque las **operaciones criptográficas utilizadas son débiles** y, conociendo el texto plano y el texto cifrado, puedes calcularla (`mfkey64` tool).
|
||||
|
||||
### Comandos en Crudo
|
||||
#### MiFare Classic flujo rápido para el abuso de valor almacenado
|
||||
|
||||
Los sistemas IoT a veces utilizan **etiquetas no marcadas o no comerciales**. En este caso, puedes usar Proxmark3 para enviar **comandos en crudo personalizados a las etiquetas**.
|
||||
Cuando los terminales almacenan saldos en tarjetas Classic, un flujo típico de extremo a extremo es:
|
||||
```bash
|
||||
# 1) Recover sector keys and dump full card
|
||||
proxmark3> hf mf autopwn
|
||||
|
||||
# 2) Modify dump offline (adjust balance + integrity bytes)
|
||||
# Use diffing of before/after top-up dumps to locate fields
|
||||
|
||||
# 3) Write modified dump to a UID-changeable ("Chinese magic") tag
|
||||
proxmark3> hf mf cload -f modified.bin
|
||||
|
||||
# 4) Clone original UID so readers recognize the card
|
||||
proxmark3> hf mf csetuid -u <original_uid>
|
||||
```
|
||||
Notas
|
||||
|
||||
- `hf mf autopwn` orquesta ataques estilo nested/darkside/HardNested, recupera keys y crea dumps en la client dumps folder.
|
||||
- Escribir block 0/UID solo funciona en tarjetas magic gen1a/gen2. Las tarjetas Classic normales tienen UID de solo lectura.
|
||||
- Muchas implementaciones usan Classic "value blocks" o simple checksums. Asegúrate de que todos los campos duplicados/complementados y los checksums sean consistentes después de editar.
|
||||
|
||||
Consulta una metodología de mayor nivel y mitigaciones en:
|
||||
|
||||
{{#ref}}
|
||||
pentesting-rfid.md
|
||||
{{#endref}}
|
||||
|
||||
### Comandos RAW
|
||||
|
||||
Los sistemas IoT a veces usan **nonbranded or noncommercial tags**. En este caso, puedes usar Proxmark3 para enviar custom **raw commands to the tags**.
|
||||
```bash
|
||||
proxmark3> hf search UID : 80 55 4b 6c ATQA : 00 04
|
||||
SAK : 08 [2]
|
||||
@ -45,14 +73,21 @@ No chinese magic backdoor command detected
|
||||
Prng detection: WEAK
|
||||
Valid ISO14443A Tag Found - Quiting Search
|
||||
```
|
||||
Con esta información, podrías intentar buscar información sobre la tarjeta y sobre la forma de comunicarte con ella. Proxmark3 permite enviar comandos en bruto como: `hf 14a raw -p -b 7 26`
|
||||
Con esta información podrías intentar buscar información sobre la tarjeta y sobre la forma de comunicarte con ella. Proxmark3 permite enviar comandos raw como: `hf 14a raw -p -b 7 26`
|
||||
|
||||
### Scripts
|
||||
|
||||
El software Proxmark3 viene con una lista precargada de **scripts de automatización** que puedes usar para realizar tareas simples. Para recuperar la lista completa, utiliza el comando `script list`. A continuación, usa el comando `script run`, seguido del nombre del script:
|
||||
El software Proxmark3 incluye una lista preinstalada de **scripts de automatización** que puedes usar para realizar tareas simples. Para obtener la lista completa, usa el comando `script list`. Luego, usa el comando `script run`, seguido del nombre del script:
|
||||
```
|
||||
proxmark3> script run mfkeys
|
||||
```
|
||||
Puedes crear un script para **fuzz tag readers**, así que copiando los datos de una **tarjeta válida** solo escribe un **script de Lua** que **randomice** uno o más **bytes** aleatorios y verifique si el **lector se bloquea** con alguna iteración.
|
||||
Puedes crear un script para **fuzz tag readers**: si copias los datos de una **valid card**, basta con escribir un **Lua script** que **randomize** uno o más **bytes** aleatorios y comprobar si el **reader crashes** en alguna iteración.
|
||||
|
||||
## Referencias
|
||||
|
||||
- [Proxmark3 wiki: HF MIFARE](https://github.com/RfidResearchGroup/proxmark3/wiki/HF-Mifare)
|
||||
- [Proxmark3 wiki: HF Magic cards](https://github.com/RfidResearchGroup/proxmark3/wiki/HF-Magic-cards)
|
||||
- [NXP statement on MIFARE Classic Crypto1](https://www.mifare.net/en/products/chip-card-ics/mifare-classic/security-statement-on-crypto1-implementations/)
|
||||
- [NFC card vulnerability exploitation in KioSoft Stored Value (SEC Consult)](https://sec-consult.com/vulnerability-lab/advisory/nfc-card-vulnerability-exploitation-leading-to-free-top-up-kiosoft-payment-solution/)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user