hacktricks/radio-hacking/pentesting-rfid.md

125 lines
13 KiB
Markdown

# Pentesting RFID
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## 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 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**).
### 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.
* 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** (CRC) 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**.
### Información Almacenada en 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 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**.
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**.
### Comparación de Etiquetas de Baja y Alta Frecuencia
<figure><img src="../.gitbook/assets/image (27).png" alt=""><figcaption></figcaption></figure>
## Etiquetas RFID de Baja Frecuencia (125 kHz)
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 transferencias de datos bidireccionales complejas 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.
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:
* **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, 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.
**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á cayendo en desuso.
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.
### Ataque
Puedes **atacar estas etiquetas con el Flipper Zero**:
{% content-ref url="../todo/radio-hacking/flipper-zero/fz-125khz-rfid.md" %}
[fz-125khz-rfid.md](../todo/radio-hacking/flipper-zero/fz-125khz-rfid.md)
{% endcontent-ref %}
## 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 encuentra generalmente 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 suelen denominar [NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/), pero eso no siempre es correcto. El conjunto de protocolos básico utilizado 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.
<figure><img src="../.gitbook/assets/image (22).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 y se implementa basado en el nivel bajo ISO 14443. Por ejemplo, NXP inventó su propio protocolo de transmisión de alto nivel llamado Mifare. Pero a nivel inferior, las tarjetas Mifare se basan en el estándar ISO 14443-A.
Flipper puede interactuar tanto con el protocolo de nivel bajo ISO 14443, 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.
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**.
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.
* **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 inferiores a las tarjetas inteligentes. Hay tarjetas que soportan algoritmos criptográficamente fuertes como AES e implementan criptografía asimétrica.
### Ataque
Puedes **atacar estas etiquetas con el Flipper Zero**:
{% content-ref url="../todo/radio-hacking/flipper-zero/fz-nfc.md" %}
[fz-nfc.md](../todo/radio-hacking/flipper-zero/fz-nfc.md)
{% endcontent-ref %}
O usando el **proxmark**:
{% content-ref url="../todo/radio-hacking/proxmark-3.md" %}
[proxmark-3.md](../todo/radio-hacking/proxmark-3.md)
{% endcontent-ref %}
## Referencias
* [https://blog.flipperzero.one/rfid/](https://blog.flipperzero.one/rfid/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}