12 KiB
Pentesting RFID
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- ¿Trabajas en una empresa de ciberseguridad? ¿Quieres ver tu empresa anunciada en HackTricks? ¿O quieres tener acceso a la última versión de PEASS o descargar HackTricks en PDF? ¡Consulta los PLANES DE SUSCRIPCIÓN!
- Descubre La Familia PEASS, nuestra colección exclusiva de NFTs
- Obtén la ropa oficial de PEASS & HackTricks
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
- Comparte tus trucos de hacking enviando PRs al repositorio de hacktricks y repositorio de hacktricks-cloud.
Introducción
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.
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 de lectura 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 enumeradas en la categoría anterior, lo que la hace compatible con versiones anteriores.
- 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 puedes cambiar la información almacenada en su memoria.
- Las etiquetas de Clase 1 también pueden operar en bandas de HF. Además, solo se pueden escribir 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 bytes adicionales al final de los comandos para la detección de errores.
- Las etiquetas de Clase 2 se pueden escribir varias 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 semipasivas, porque aunque tienen una fuente de energía integrada, como una batería, no pueden iniciar la comunicación inalámbrica con otras etiquetas o lectores.
- Las etiquetas de Clase 4 pueden iniciar la 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 complementarios, 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 un 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 dos últimos pueden diferir según el proveedor de la etiqueta.
El estándar 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 de usuario.
La mayoría de los controles de seguridad de 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
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 alcance, son convenientes para su uso en estacionamientos pagados: 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 un saldo y criptografía. Las etiquetas de baja frecuencia solo transmiten su ID corto sin ningún medio de autenticación.
Estos dispositivos se basan en la tecnología RFID pasiva y operan en un rango de 30 kHz a 300 kHz, aunque es más común 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 desde una distancia de hasta un metro. A menudo se utilizan en estacionamientos.
- Protocolo primitivo — debido a la baja tasa 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 y no están protegidos de ninguna manera. Tan pronto como la tarjeta está dentro del alcance 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 luego adquirido por HID. Es menos probable que te encuentres con él 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 mencionados 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 {% 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 lector y etiqueta cuando se necesita criptografía, una gran transferencia de datos bidireccional, autenticación, etc.
Generalmente se encuentran 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. Por lo general se les llama NFC, pero eso no siempre es correcto. El conjunto básico de protocolos 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 Near Field Communication (NFC), un término para dispositivos que operan sobre la frecuencia de 13.56 MHz.
Para simplificar, la arquitectura de NFC funciona así: el protocolo de transmisión es elegido por la empresa que fabrica las tarjetas e implementado en base al estándar de transmisión ISO 14443. Por ejemplo, NXP inventó su propio protocolo de transmisión de alto nivel llamado Mifare. Pero en un nivel inferior, las tarjetas Mifare se basan en el estándar ISO 14443-A.
Flipper puede interactuar tanto con el protocolo de transmisión 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 detallado de los protocolos y estándares que componen NFC vale 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 una longitud de 4 o 7 bytes, pero rara vez puede llegar hasta 10. Los UIDs no son un secreto y se pueden leer fácilmente, a veces incluso impresos en la tarjeta misma.
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. Este mal uso las reduce al nivel de las tarjetas 125 kHz tontas en términos de seguridad. Las tarjetas virtuales (como Apple Pay) utilizan un UID dinámico para que los propietarios de teléfonos no abran puertas con su aplicación de pago.
- Corto alcance — 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 rango de lectura máximo que logramos alcanzar fue de aproximadamente 15 cm, y eso fue con lectores de largo alcance personalizados.
- Protocolos avanzados — velocidades de transferencia de datos de hasta 424 kbps permiten protocolos complejos con transferencia de datos bidireccional completa. Lo que a su vez permite la criptografía, transferencia de datos, etc.
- Alta seguridad — las tarjetas sin contacto de alta frecuencia no son en absoluto inferiores a las tarjetas inteligentes. Hay tarjetas que admiten 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 {% endcontent-ref %}
O utilizando el proxmark:
{% content-ref url="../todo/radio-hacking/proxmark-3.md" %} proxmark-3.md {% endcontent-ref %}