Pentesting RFID

Reading time: 12 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Introduction

Identification par radiofréquence (RFID) est la solution radio courte portée la plus répandue. Elle est généralement utilisée pour stocker et transmettre des informations identifiant une entité.

Une étiquette RFID peut disposer de sa propre source d'alimentation (active), comme une batterie intégrée, ou recevoir son alimentation de l'antenne de lecture via le courant induit par les ondes radio reçues (passive).

Classes

EPCglobal divise les tags RFID en six catégories. Un tag dans chaque catégorie possÚde toutes les capacités listées dans la catégorie précédente, ce qui le rend rétrocompatible.

  • Class 0 : tags passifs qui fonctionnent dans les bandes UHF. Le fabricant les prĂ©programme Ă  l'usine. En consĂ©quence, vous ne pouvez pas modifier les informations stockĂ©es dans leur mĂ©moire.
  • Class 1 : peuvent aussi fonctionner dans les bandes HF. De plus, ils peuvent ĂȘtre Ă©crits une seule fois aprĂšs la production. Beaucoup de tags Class 1 peuvent aussi traiter des cyclic redundancy checks (CRCs) des commandes qu'ils reçoivent. Les CRCs sont quelques octets supplĂ©mentaires Ă  la fin des commandes pour la dĂ©tection d'erreurs.
  • Class 2 : tags pouvant ĂȘtre réécrits plusieurs fois.
  • Class 3 : peuvent contenir des capteurs intĂ©grĂ©s qui enregistrent des paramĂštres environnementaux, comme la tempĂ©rature actuelle ou le mouvement du tag. Ces tags sont semi-passifs, car bien qu'ils disposent d'une source d'alimentation intĂ©grĂ©e, comme une pile, ils ne peuvent pas initier de communication sans fil avec d'autres tags ou lecteurs.
  • Class 4 : peuvent initier la communication avec d'autres tags de la mĂȘme classe, ce qui en fait des tags actifs.
  • Class 5 : peuvent fournir de l'Ă©nergie Ă  d'autres tags et communiquer avec toutes les classes prĂ©cĂ©dentes. Les Class 5 peuvent agir comme lecteurs RFID.

Informations stockées dans les tags RFID

La mĂ©moire d’un tag RFID contient gĂ©nĂ©ralement quatre types de donnĂ©es : les donnĂ©es d’identification, qui identifient l’entitĂ© Ă  laquelle le tag est attachĂ© (ces donnĂ©es incluent des champs dĂ©finis par l’utilisateur, comme des comptes bancaires) ; les donnĂ©es supplĂ©mentaires, qui fournissent des dĂ©tails complĂ©mentaires sur l’entitĂ© ; les donnĂ©es de contrĂŽle, utilisĂ©es pour la configuration interne du tag ; et les donnĂ©es fabricant, qui contiennent l’Identifiant Unique (UID) du tag et des dĂ©tails concernant la production, le type et le vendeur du tag. Vous trouverez les deux premiers types de donnĂ©es dans tous les tags commerciaux ; les deux derniers peuvent varier selon le vendeur du tag.

La norme ISO spĂ©cifie la valeur Application Family Identifier (AFI), un code qui indique le type d’objet auquel le tag appartient. Un autre registre important, Ă©galement spĂ©cifiĂ© par l'ISO, est le Data Storage Format Identifier (DSFID), qui dĂ©finit l’organisation logique des donnĂ©es utilisateur.

La plupart des mécanismes de sécurité RFID restreignent les opérations de lecture ou d'écriture sur chaque bloc de mémoire utilisateur et sur les registres spéciaux contenant les valeurs AFI et DSFID. Ces mécanismes de verrouillage utilisent des données stockées dans la mémoire de contrÎle et ont des mots de passe par défaut préconfigurés par le vendeur, mais permettent aux propriétaires des tags de configurer des mots de passe personnalisés.

Comparaison tags basse & haute fréquence

Low-Frequency RFID Tags (125kHz)

Les tags basse frĂ©quence sont souvent utilisĂ©s dans des systĂšmes qui ne nĂ©cessitent pas une haute sĂ©curitĂ© : accĂšs aux bĂątiments, interphones, cartes d'abonnement de salle de sport, etc. En raison de leur portĂ©e plus importante, ils sont pratiques pour les parkings payants : le conducteur n'a pas besoin d'approcher la carte du lecteur, car elle est dĂ©tectĂ©e depuis plus loin. En mĂȘme temps, les tags basse frĂ©quence sont trĂšs primitifs et ont un faible dĂ©bit de transfert de donnĂ©es. Pour cette raison, il est impossible d'implĂ©menter des Ă©changes complexes bidirectionnels pour des fonctions comme la gestion de solde et la cryptographie. Les tags basse frĂ©quence ne transmettent que leur court ID sans aucun moyen d'authentification.

Ces dispositifs reposent sur la technologie RFID passive et opĂšrent dans une plage de 30 kHz Ă  300 kHz, bien qu'on utilise plus couramment 125 kHz Ă  134 kHz :

  • Longue portĂ©e — une frĂ©quence plus basse se traduit par une portĂ©e plus Ă©levĂ©e. Il existe des lecteurs EM-Marin et HID capables de fonctionner jusqu'Ă  un mĂštre. Ils sont souvent utilisĂ©s dans les parkings.
  • Protocole primitif — Ă  cause du faible dĂ©bit, ces tags ne peuvent transmettre que leur court ID. Dans la plupart des cas, les donnĂ©es ne sont pas authentifiĂ©es et ne sont protĂ©gĂ©es d'aucune façon. DĂšs que la carte est dans la portĂ©e du lecteur, elle commence simplement Ă  transmettre son ID.
  • Faible sĂ©curitĂ© — Ces cartes peuvent ĂȘtre facilement copiĂ©es, ou mĂȘme lues depuis la poche de quelqu'un d'autre en raison de la primitivitĂ© du protocole.

Protocoles populaires Ă  125 kHz :

  • EM-Marin — EM4100, EM4102. Le protocole le plus populaire dans la CEI. Peut ĂȘtre lu Ă  environ un mĂštre grĂące Ă  sa simplicitĂ© et sa stabilitĂ©.
  • HID Prox II — protocole basse frĂ©quence introduit par HID Global. Ce protocole est plus populaire dans les pays occidentaux. Il est plus complexe et les cartes et lecteurs pour ce protocole sont relativement coĂ»teux.
  • Indala — trĂšs ancien protocole basse frĂ©quence introduit par Motorola, puis acquis par HID. Vous ĂȘtes moins susceptible de le rencontrer dans la nature comparĂ© aux deux prĂ©cĂ©dents car il dĂ©cline.

En rĂ©alitĂ©, il existe beaucoup plus de protocoles basse frĂ©quence. Mais ils utilisent tous la mĂȘme modulation sur la couche physique et peuvent ĂȘtre considĂ©rĂ©s, d'une maniĂšre ou d'une autre, comme des variantes de ceux listĂ©s ci-dessus.

Attaque

Vous pouvez attaquer ces Tags avec le Flipper Zero :

FZ - 125kHz RFID

High-Frequency RFID Tags (13.56 MHz)

Les tags haute frĂ©quence sont utilisĂ©s pour des interactions lecteur–tag plus complexes lorsque vous avez besoin de cryptographie, d'un grand transfert de donnĂ©es bidirectionnel, d'authentification, etc.
On les trouve généralement dans les cartes bancaires, les transports publics et autres passes sécurisés.

Les tags haute fréquence 13.56 MHz sont un ensemble de standards et de protocoles. On les désigne souvent par NFC, mais ce n'est pas toujours exact. L'ensemble de protocoles de base utilisé aux niveaux physique et logique est ISO 14443. Les protocoles de niveau supérieur, ainsi que les standards alternatifs (comme ISO 19092), reposent sur celui-ci. Beaucoup de personnes appellent cette technologie Near Field Communication (NFC), un terme pour les dispositifs opérant sur la fréquence 13.56 MHz.

Pour faire simple, l'architecture NFC fonctionne ainsi : le protocole de transmission est choisi par la société fabricant les cartes et implémenté sur la base du bas niveau ISO 14443. Par exemple, NXP a inventé son propre protocole de transmission de haut niveau appelé Mifare. Mais au niveau inférieur, les cartes Mifare sont basées sur la norme ISO 14443-A.

Flipper peut interagir à la fois avec le protocole bas niveau ISO 14443, ainsi qu'avec le protocole de transfert de données Mifare Ultralight et EMV utilisé dans les cartes bancaires. Nous travaillons à ajouter le support de Mifare Classic et NFC NDEF. Un examen approfondi des protocoles et standards qui composent NFC mérite un article séparé que nous prévoyons de publier ultérieurement.

Toutes les cartes haute frĂ©quence basĂ©es sur la norme ISO 14443-A ont un identifiant de puce unique. Il sert de numĂ©ro de sĂ©rie de la carte, comme l'adresse MAC d'une carte rĂ©seau. GĂ©nĂ©ralement, l’UID fait 4 ou 7 octets, mais peut rarement aller jusqu'Ă  10. Les UID ne sont pas secrets et sont facilement lisibles, parfois mĂȘme imprimĂ©s sur la carte elle-mĂȘme.

De nombreux systĂšmes de contrĂŽle d'accĂšs se basent sur l’UID pour authentifier et accorder l'accĂšs. Parfois cela se produit mĂȘme lorsque les tags RFID supportent la cryptographie. Un tel mauvais usage les ramĂšne au niveau des simples cartes 125 kHz en termes de sĂ©curitĂ©. Les cartes virtuelles (comme Apple Pay) utilisent un UID dynamique afin que les propriĂ©taires de tĂ©lĂ©phone ne puissent pas ouvrir des portes avec leur application de paiement.

  • Courte portĂ©e — les cartes haute frĂ©quence sont spĂ©cifiquement conçues pour devoir ĂȘtre placĂ©es prĂšs du lecteur. Cela aide Ă©galement Ă  protĂ©ger la carte contre des interactions non autorisĂ©es. La portĂ©e maximale de lecture que nous avons pu atteindre Ă©tait d'environ 15 cm, et c'Ă©tait avec des lecteurs sur mesure Ă  longue portĂ©e.
  • Protocoles avancĂ©s — des dĂ©bits jusqu'Ă  424 kbps permettent des protocoles complexes avec un transfert bidirectionnel complet. Ce qui permet la cryptographie, le transfert de donnĂ©es, etc.
  • Haute sĂ©curitĂ© — les cartes sans contact haute frĂ©quence n'ont rien Ă  envier aux cartes Ă  puce. Certaines cartes supportent des algorithmes cryptographiques robustes comme AES et implĂ©mentent la cryptographie asymĂ©trique.

Attaque

Vous pouvez attaquer ces Tags avec le Flipper Zero :

FZ - NFC

Ou en utilisant le proxmark :

Proxmark 3

MiFare Classic offline stored-value tampering (broken Crypto1)

Lorsque qu’un systĂšme stocke un solde monĂ©taire directement sur une carte MiFare Classic, vous pouvez souvent le manipuler parce que Classic utilise le chiffrement obsolĂšte Crypto1 de NXP. Crypto1 est cassĂ© depuis des annĂ©es, permettant la rĂ©cupĂ©ration des clĂ©s de secteur et la lecture/Ă©criture complĂšte de la mĂ©moire de la carte avec du matĂ©riel courant (par ex., Proxmark3).

Flux de travail de bout en bout (abstrait) :

  1. Dump the original card and recover keys
bash
# Attempt all built-in Classic key recovery attacks and dump the card
hf mf autopwn

Cela récupÚre généralement les sector keys (A/B) et génÚre un full-card dump dans le client dumps folder.

  1. Localiser et comprendre les value/integrity fields
  • Effectuer des top-ups lĂ©gitimes sur la carte originale et prendre plusieurs dumps (avant/aprĂšs).
  • Faire un diff des deux dumps pour identifier les blocks/bytes qui changent et qui reprĂ©sentent le solde ainsi que les champs d'intĂ©gritĂ©.
  • De nombreux dĂ©ploiements Classic utilisent soit l'encodage natif "value block", soit leurs propres checksums (e.g., XOR du solde avec un autre champ et une constante). AprĂšs modification du solde, recalculer les integrity bytes en consĂ©quence et s'assurer que tous les duplicated/complemented fields sont cohĂ©rents.
  1. Écrire le dump modifiĂ© sur une Classic tag “Chinese magic” inscriptible
bash
# Load a modified binary dump onto a UID-changeable Classic tag
hf mf cload -f modified.bin
  1. Cloner l'UID original pour que les terminaux reconnaissent la carte
bash
# Set the UID on a UID-changeable tag (gen1a/gen2 magic)
hf mf csetuid -u <original_uid>
  1. Use at terminals

Les lecteurs qui font confiance au solde sur la carte et au UID accepteront la carte manipulée. Les observations de terrain montrent que de nombreux déploiements plafonnent les soldes en fonction de la largeur du champ (par ex., 16-bit fixed-point).

Remarques

  • Si le systĂšme utilise des Classic value blocks natifs, souvenez-vous du format : value (4B) + ~value (4B) + value (4B) + block address + ~address. Toutes les parties doivent correspondre.
  • Pour les formats personnalisĂ©s avec des checksums simples, l'analyse diffĂ©rentielle est la maniĂšre la plus rapide pour dĂ©river la fonction d'intĂ©gritĂ© sans rĂ©tro-ingĂ©nierie du firmware.
  • Seuls les tags UID-changeable ("Chinese magic" gen1a/gen2) permettent d'Ă©crire le block 0/UID. Les cartes Classic normales ont des UIDs en lecture seule.

Pour des commandes Proxmark3 pratiques, voir :

Proxmark 3

Construire un cloneur mobile portable HID MaxiProx 125 kHz

Si vous avez besoin d'une solution longue-portée, alimentée par batterie pour récupérer des badges HID ProxŸ lors d'opérations red-team, vous pouvez convertir le lecteur mural HID MaxiProx 5375 en un cloneur autonome qui tient dans un sac à dos. Le guide complet mécanique et électrique est disponible ici :

Maxiprox Mobile Cloner


Références

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks