30 Oct. 18 Cybersécurité

Tutoriel Proxmark, solution pour l'audit d'équipements RFID

Tutoriel Proxmark, outil pour l'audit d'équipements RFID

Quel est le point commun entre une carte de transport, un badge d’accès et une figurine Amiibo de chez Nintendo ?

Tous les trois utilisent la technologie RFID pour fonctionner.

La technologie RFID

D’après Wikipedia :

La radio-identification, le plus souvent désignée par le sigle RFID (de l’anglais radio frequency identification), est une méthode pour mémoriser et récupérer des données à distance en utilisant des marqueurs appelés « radio-étiquettes » (« RFID tag » ou « RFID transponder » en anglais).

Le RFID est donc une technologie basée sur les ondes radio permettant à une étiquette passive ou active (tag) et à un lecteur de communiquer à distance. « Distance » étant un mot à relativiser car dans les cas des objets précédemment cités, qui fonctionnent avec des étiquettes passives, le rayon d’utilisation est de quelques centimètres maximum.

 

Parmi les étiquettes passives, on retrouve trois familles de fréquences :

  • les fréquences basses (125-135 kHz)
  • la fréquence haute (13.56 MHz)
  • les fréquences ultra hautes (856-960 MHz)

 

C’est dans la famille de la fréquence haute que l’on retrouve la technologie NFC (Near Field Contact) utilisée pour le paiement sans contact avec nos cartes bleues récentes. Le NFC n’est ni plus ni moins qu’un sous-ensemble du périmètre de la technologie RFID. L’intérêt grandissant du NFC s’explique par le concept de cette technologie : échanger des données sur de très courtes distances par le biais d’une connexion sécurisée.

"Communication sécurisée", vous dites ?

Tutoriel Proxmark, outil pour l'audit d'équipements RFID

Dans la réalité, la technologie NFC n’est pas infaillible. En effet, plusieurs attaques existent permettant de lire, copier ou cloner et/ou modifier des tags utilisant la technologie NFC. Et bien que ces tags soient protégés par du chiffrement, il a été démontré dans le passé que certaines catégories de tag peuvent « facilement » être clonés. Si on applique ce type d’attaque aux badges d’accès d’une entreprise, un potentiel attaquant pourrait se créer un clone d’un badge d’accès légitime…

Pour étudier la sécurité d’équipements NFC, il est nécessaire de s’équiper.

Proxmark3 RDV4.0

Le Proxmark3 est un outil de test RFID conçu à l’origine par Jonathan Westhues afin de lire, d’écrire, d’intercepter et d’émuler des tags allant des basses fréquences au hautes fréquences.

Cet outil est l’une des rares plate-forme de recherche et de développement ciblant la technologie NFC et RFID capable de transmettre et de recevoir tout en respectant les exigences de la plupart des protocoles de proximité. Le Proxmark3 offre également un contrôle total sur la couche radio en plus de la prise en charge logicielle de plusieurs protocoles de niveau supérieur.

 

Afin d’effectuer de la recherche sur la sécurité des objets utilisant la technologie NFC, je me suis fourni un Proxmark3 RDV4.0 via une campagne Kickstarter. Cette nouvelle version du Proxmark3 vient tout juste d’être rendue disponible et est accompagnée d’une communauté très active, le projet étant open-source.

 

Maintenant que la campagne Kickstarter est terminée, on peut aujourd’hui s’en fournir chez quelques revendeurs dans un prix avoisinant les 330€.

Presque Plug&Play

Avant de pouvoir tester l’outil, il est nécessaire d’installer le framework permettant d’interagir aisément avec le Proxmark3 RDV 4.0 mais aussi de mettre à jour son firmware. Rien de bien méchant.

Bien qu’il soit possible de l’installer via différents OS, je conseille de passer par une machine équipée de Windows, ayant eu quelques problèmes dans la mise à jour du firmware avec plusieurs distributions Linux.

Voici la méthodologie à suivre pour l’installation du framework du Proxmark3 RDV 4.0 ainsi que la mise à jour de son firmware :

  • Télécharger et extraire le logiciel ProxSpace qui va permettre d’émuler un environnement pour le Proxmark3.
  • Supprimer le dossier ‘pm3’ à la racine du dossier obtenu.
  • Cloner le projet git du framework dédié au Proxmark3 RDV 4.0
  • Copier l’intégralité du projet git du framework à la racine du dossier du logiciel ProxSpace et renommer le dossier par pm3
  • Lancer l’installation de ProxSpace (autobuild.bat puis runme64.bat ou runme.bat en fonction de l’architecture de votre PC)
  • Une fois l’installation de ProxSpace terminée, compiler le framework via la console obtenue

                make clean && make all

  • Brancher le Proxmark3 et identifier le numéro COM qui lui est attribué (on peut retrouver cette information dans le gestionnaire de tâche de Windows)
  • Flasher le Proxmark

                client/flasher.exe comX -b bootrom/obj/bootrom.elf armsrc/obj/fullimage.elf

Note : la communauté maintient à jour les différentes versions des firmwares du Proxmark3 RDV4.0

  • Lancer le framework

                client/proxmark3.exe comX

Le résultat escompté ressemble à ça :

Comment ça marche?

L’interface du framework est assez simple à prendre en main. La commande help permet d’afficher la liste des modules disponibles.

Pour obtenir plus d’information sur un module, taper {nom du module} help.

Les modules lf et hf sont les modules relatifs respectivement aux tags basse fréquence et aux tags haute fréquence. Ces deux modules disposent de la fonctionnalité search qui permet d’identifier un tag. Par exemple, avec le badge d’accès en ma possession :

hf search

Il s’agit donc d’un tag MIFARE 1K CLASSIC. Les cartes MIFARE fonctionnent avec 16 secteurs chacun composés de 3 blocs de 16 octets. Un bloc de sécurité supplémentaire vient protéger l’accès au secteur par deux clefs différentes (nommées A et B). Voyons si l’on peut récupérer ces clefs et accéder aux données.

Récupération de la clef A

Le sous-module mf va permettre de pousser nos recherches.

hf mf help apprend que l’on peut tenter une attaque darkside sur la carte afin de récupérer la clef A.

hf mf darkside

Bingo ! La clef A nous appartient ! On notera au passage la (non-)complexité de cette clef…

Récupération de la clef B

Maintenant que l’on a une des deux clefs, on peut tenter une attaque nested pour obtenir la seconde clefs (clef B).

hf mf nested 1 0 A EDEDEDEDEDEDEDED

Re-bingo ! Les deux clefs nous appartiennent !

Récupération des données

Avec les deux clefs en notre possession, on peut disposer des données stockées dans la carte.

hf mf read

Et on obtient… des octets ! Super non ?! Et ça signifie quoi tout ça ? Et bien je ne sais pas du tout… La carte que l’on teste est une carte d’accès d’une entreprise. Parmi ses octets sont cachés les informations nécessaires au lecteur pour autoriser ou non l’ouverture de la porte. On peut imaginer qu’il y a d’ID de la carte, un ID propre à ma personne, les ID des salles auxquelles j’ai accès… Enfin, ce ne sont que des suppositions.

Clonage de la carte

Donc on a fait tout ça pour rien ?! Oui et non. Non puisque le but de cet article est de montrer un peu ce que permet le Proxmark. Oui parce que dans l’exemple utilisé, il n’est pas forcément pertinent d’accéder aux données d’une carte d’accès. En revanche, cloner cette carte à l’identique pourrait être bien plus intéressant. Problème, le bloc 0 (premier bloc du premier secteur) contient l’identifiant unique de la carte. Il est programmé en usine et est verrouillé en écriture.

Néanmoins, il existe des carte Mifare 1k Classic vierge et entièrement inscriptible, même au niveau du bloc 0. On peut en trouver facilement via Internet pour une somme modique (Le Proxmark est fourni avec une de ces cartes).

Voici la marche à suivre :

  • Poser la carte originale
  • hf mf nested 1 0 A EDEDEDEDEDEDEDED d (dump les clefs dans un binaire)
  • hf mf dump
  • Échanger la carte originale avec la carte vierge
  • hf mf restore

Et voilà, on dispose d’un clone conforme de la carte !

L’impression d’écran montre d’abord la carte originale puis la carte clonée. On remarquera que les deux cartes disposent bien du même UID.

Un seul outil pour plusieurs cartes

Il existe de nombreuses cartes RFID. Toutes ont leur mode de fonctionnement bien particulier.

Le Proxmark permet d’analyser les cartes :

High Frequency

  • ISO14443A
  • ISO14443B
  • ISO15693
  • EMV
  • ISO18092
  • LEGIC
  • ICLASS
  • MIFARE
  • MIFARE Ultralight
  • MIFARE Desfire
  • TOPAZ

Low Frequency

  • AWID
  • COTAG
  • EM4X
  • FDX-B
  • Guardall Prox II
  • HID
  • Hitag
  • Indala
  • ioProx
  • Jablotron
  • Nedap
  • NexWatch

  • Noralsy
  • PAC/Stanley
  • Paradox
  • PCF7931
  • Presco
  • Farpoint/Pyramid
  • Securakey
  • TI
  • T55xx
  • Viking
  • Visa2000

De plus, les attaques et exploitations sont nombreuses.

Voici un exemple réalisé par le chercheur Fabien Périgaux et présenté lors de la conférence STIC 2016. La vidéo est tournée dans un bar « libre-service » : chaque client possède une carte propre et dispose de l’argent dessus qu’il peut ensuite dépenser sur les différentes tireuses mises à disposition. Ici, le chercheur a réussi à décoder les informations contenues dans les cartes. En bruteforçant les ID des clients, le chercheur réussi à prendre un peu de bière pour chaque ID valide.

En conclusion

La technologie RFID est très intéressante car elle peut être utilisée pour améliorer certains usages ou même en créer de nouveaux. Mais cette technologie a aussi ses failles et vulnérabilités. Nous avons démontré ici qu’avec les compétences suffisantes ainsi qu’un investissement faible, un attaquant est en mesure de tenter des attaques via ce vecteur afin d’infiltrer un système d’information.