MIFARE : comment copier un badge Mifare Classic

Les badges Mifare Classic, vous en avez déjà tous vu. Le badge Vigik pour rentrer chez soi ou la carte permettant de passer les portiques au travail utilisent en réalité cette technologie. C’est probablement le plus répandu des badges, notamment grâce à son faible coût d’acquisition. Malheureusement on est à des lieues d’avoir un système qu’on peut considérer comme sécurisé. Voyons comment nous pouvons faire une copie.

Badge VIGIK
Badge VIGIK

Lecteur de badge MIFARE en entreprise
Lecteur de badge MIFARE en entreprise

Préparation

Vous allez avoir besoin de :

  • Un PC. Cela peut être un portable ou un fixe mais il est essentiel que cela ne soit pas une machine virtuelle, le timing étant très important
  • Un lecteur de carte NFC. Je possède pour ma part un ACS ACR122U, pas cher et qui fait le taff
  • Kali Linux, une distribution de pen-testing. Je vous conseille de copier l’ISO sur une clé USB pour avoir plus de peps au démarrage. Cela requiert toutefois un PC capable de démarrer en UEFI.

Structure d’un badge MIFARE

Les badges mifare sont assimilables à une carte à puce, c’est à dire qu’ils doivent être vu non pas comme une mémoire morte lisible (tel que les bandes magnétiques) sans fil mais plutôt comme un mini-ordinateur aux capacités très réduites. En l’occurrence, l’accès en lecture ou en écriture peut être limité à la soumission d’une clé que le badge va lui-même valider.

Le badge a une capacité de stockage, en général de 1Ko, divisé en 16 secteur. Pour chaque secteur, deux clés sont définies permettant l’accès à ce secteur. Il n’est pas obligatoire d’avoir des clés distinctes pour chaque secteur.

Récupération d’une clé

Nous allons faire appel à mfoc pour dumper le contenu du badge mais cela ne peut se faire qu’à la condition d’avoir au moins une clé permettant d’accéder en lecture aux différents secteurs du badge. Dans le cas où aucune clé n’est connue, on se retrouve dans la situation ci-dessous où mfoc n’est d’aucune utilité.

C’est à ce moment que mfcuk intervient, dont le rôle est de brute-forcer une clé (A ou B) d’un secteur particulier. L’opération de brute-force a duré 32 minutes.

Attention, il existe aujourd’hui des badges (Mifare DESFire EV1 par exemple) qui résistent au brute-force. C’est le cas de mon badge pour accéder à mon bureau. On les distingue par le fait que la valeur de diff Nt est très proche voire même identique à celle de auths (qui compte le nombre d’essais). Si c’est le cas, mfcuk ne sera d’aucune utilité. Il semble y avoir une solution à ces badges mais je dois pousser plus loin mes recherches je n’ai plus de badge DESFIRE EV1 pour tester.

Dump du badge MIFARE

Désormais en possession d’une clé, nous allons pouvoir dumper le contenu de la carte dans un fichier.

J’ai pu avoir en main plusieurs badges vigik résidentiel provenant de plusieurs résidences. Il est triste de constater que la clé A était la même. Autrement dit désormais en possession de cette clé, j’ai de bonnes chances de copier un badge vigik non pas en 30 minutes mais en 8 secondes. L’opération se fait également très bien avec un smartphone Android rooté.

Il ne reste plus qu’à se procurer une carte MIFARE Classic 1k vierge en s’assurant que le bloc 0 soit inscriptible, sachant qu’il s’agit du bloc dans lequel est contenu le numéro de série (ou UID) du badge, comme vous pouvez le constatez dans la capture ci-dessus.

Un peu de politique

Historique

L’article L.111-6-3 du code de la construction et de l’habitation créé par la loi n° 2005-516 du 20 mai 2005 rend obligatoire l’accès aux parties communes des opérateurs : La Poste ainsi que les autres opérateurs titulaires de l’autorisation prévue à l’article L. 3 du code des postes et des communications électroniques, ainsi que les porteurs de presse.

Si vous choisissez de ne pas équiper un immeuble du système VIGIK®, vous avez l’obligation juridique de trouver une alternative pour garantir l’accès de ces opérateurs.
Certains opérateurs ne sont pas tenus d’accepter des solutions spécifiques (par exemple, La Poste n’accepte pas de badge résident de digicodes ou clés).

Dit autrement, les immeubles ont depuis 2005 obligations d’installer le système VIGIK car La Poste n’acceptera rien d’autre. Le système résidentiel VIGIK a été craqué en 2008, à une période où les badges résidentiels étaient loin d’être déployés partout. 10 ans plus tard, rien n’a changé, il est de commune mesure d’installer ce système dans les nouveaux immeubles en construction.

Le VIGIK opérateur

Dans l’historique, j’ai précisé résidentiel car les badges VIGIK des opérateurs reposent sur un mode de fonctionnement différent. Les opérateurs disposent dans leur locaux d’une borne leur permettant de « charger leur badge pour ~24h ». Voler le pass d’un facteur n’aura donc qu’un intérêt assez limité.

Au niveau des résidences, le système VIGIK est équipé de l’heure ainsi que de la partie publique d’une clé RSA de 1024 bits. Toutes les résidences en France ont cette même clé installée.
Les opérateurs ont dans leur locaux un dispositif ayant un accès limitée (du moins je l’espère) à la partie privée de la clé RSA dont le but est de générer une signature dans le badge des opérateurs valable 1 jour, signature qui va pouvoir être validée par le système VIGIK installé dans les résidences. La clé RSA a été extraite mais elle reste à ce jour et à ma connaissance toujours inviolée.

Pour résumer

Nous avons vu à quel point le système basé sur les badge MIFARE Classic était vulnérable. Mais est-ce le seul ? Ci-dessous une liste des points noir de ce genre d’installation, qui je le rappelle est presque devenu une norme en France :

  • Le système VIGIK résidentiel n’est pas un système de sécurité mais une commodité pour rentrer dans l’immeuble
  • La remarque vaut aussi pour les entreprises utilisant des badges MIFARE Classic (et à confirmer pour les badges EV1)
  • L’accès au mode de programmation des plaques de rue est beaucoup trop facile, notamment parce que le code d’accès est souvent celui par défaut (un peu comme les carte SIM, sauf qu’il s’agit là d’une fainéantise d’un professionnel censé respecter les règles de l’art…). À défaut de cloner un badge, on peut à la place enregistrer son propre badge en base, cela ne prend moins d’une minute et un peu plus d’une dizaine de touches à presser.
Plaque de rue Urmet
Plaque de rue Urmet

Pour aller plus loin

23 Comments

  • Arnaud

    17 novembre 2018 at 19:01 Répondre

    Bonjour,
    Merci pour cet excellent Tuto avec lequel j’ai pu faire des clones.
    Cependant j’ai un badge de marque Hexact pour mon nouvel appartement et je n’arrive pas à le cloner.
    Mfcuk et mfoc ne donnent rien avec mon lecteur ACR122U et Kali Linux
    Auriez vous une solution à proposer autre que mfoc et mfcuk?
    Merci.

    • veovis

      25 novembre 2018 at 18:19 Répondre

      Bonjour,
      Je n’ai encore jamais eu de badge Hexact sous la main, je n’ai pas de solution toute faite, si ce n’est avoir plus de détail sur l’échec. Qu’est ce qui ne marche pas exactement ? En logiciel, il quasiment n’existe rien d’autre que mfoc et mfcuk pour violer un badge mifare.

    • Etienne

      11 décembre 2018 at 18:40 Répondre

      Sur mon badge, la clé A est HEXACT (484558414354) pour tous les secteurs

      • veovis

        20 décembre 2018 at 19:42 Répondre

        En général, le fabricant conserve la même clé pour chiffrer ses badges. Tu tiens donc là un bon mot clé Google pour en trouver d’autres.

  • Nasyrs

    29 novembre 2018 at 00:52 Répondre

    Bonjour,

    Comment procéder pour injecter le dump vigik.mfd dans une carte viérge ?

  • sebastien

    8 janvier 2019 at 22:44 Répondre

    Existe t il des clones mifare sous forme de sticker RFID ? ça me semble plus utile et plus pratique qu’un badge

  • Edward

    27 février 2019 at 09:59 Répondre

    Salut j’ai quelques petits problemes en essayant la hardnested attack (l’étape d’apres, lorsque lemfcuk ne fonctionne pas).
    Peut-être que quelqu’un peux m’éclairer 🙂

    • veovis

      5 mars 2019 at 23:39 Répondre

      Si tous les secteurs sont protégés et que tu n’as aucune clé, c’est mort. Il est nécessaire d’avoir au moins une clé, et ce en sniffant le badge à côté du lecteur de badge. Malheureusement j’ai changé de mission depuis, et donc rendu mon badge. Je n’ai plus de badge EV1 pour tester.

  • Léon

    4 mars 2019 at 17:16 Répondre

    Bonjour et merci pour toutes ces infos.
    Si je comprends bien (c’est loin d’être certain), la dernière étape permet de copier le badge dans le fichier vigik. mfd après avoir récupéré la clé dans l’étape 2;
    Quelle commande permet de copier sur un badge vierge ?
    Merci pour l’aide

    • veovis

      5 mars 2019 at 23:45 Répondre

      Bonjour, l’outil nfc-mfclassic permet d’écrire un dump dans un badge. Ce n’est effectivement pas une étape que j’ai détaillé.

  • Mickael

    5 mars 2019 at 00:53 Répondre

    Bonjour,
    Je souhaiterais clone un badge de parking
    Le mfcuk ne donne rien les 2 valeurs sont identiques.
    Savez vous s’il y a d’autre solution?
    Cordialement

    • veovis

      5 mars 2019 at 23:47 Répondre

      Oui, une attaque hardnested, qui pourra aussi nécessiter de sniffer le badge à côté de son lecteur pour récupérer une clé valide. Le sniff nécessite un matériel particulier.

  • Noel

    5 mars 2019 at 10:10 Répondre

    Bonjour,
    Avez vous une solution lorsque diff Nt est très proche voire même identique à celle de auths ?
    Merci de votre aide

    • veovis

      5 mars 2019 at 23:50 Répondre

      Bonjour,
      Léon, Noel, je suis un peu perdu…
      Comme indiqué à Mickael, si mfcuk ne donne rien, c’est que le badge est protégé contre le brute-force. Dans ce cas, l’étape suivant est une attaque hardnested avec attaque directement au niveau du lecteur par sniffing. Cela requiert un sniffer comme le proxmark qui n’est pas donné pour un usage exceptionnel.

  • Vincent

    21 juin 2019 at 14:24 Répondre

    Bonjour, merci pour vos connaissances! Pouvez vous écrire la commande pour insérer le dump dans un new tag svp?
    Merci beaucoup.
    Vincent

    • patrick17

      17 octobre 2019 at 09:50 Répondre

      Bonjour, merci pour vos connaissances! Pouvez vous écrire la commande pour insérer le dump dans un new tag svp?
      Merci beaucoup.
      Patrick

  • Alex

    1 novembre 2019 at 14:53 Répondre

    Bonjour,
    Étant novice quelqu’un pourrait me donner l’instruction complète pour la copie sur une carte vierges?
    Cordialement

  • jfab

    5 novembre 2019 at 15:33 Répondre

    bonjour j’ai réussi à DUMPER la clé NFC en débloquant la KEY B des secteur 8 à 14
    Sector: 8, type B, probe 0, distance 64 …..
    Found Key: B [415a54454b4d]
    Sector: 9, type B
    Found Key: B [415a54454b4d]
    Sector: 10, type B
    Found Key: B [415a54454b4d]
    Sector: 11, type B
    Found Key: B [415a54454b4d]
    Sector: 12, type B
    Found Key: B [415a54454b4d]
    Sector: 13, type B
    Found Key: B [415a54454b4d]
    Sector: 14, type B
    Found Key: B [415a54454b4d]
    Auth with all sectors succeeded, dumping keys to a file!

    mais je n’arrive pas à cloner ce fichier dans une nouvelle clé NFC avec UID modifiable..
    explication : quand je lance ‘nfc-mfclassic’ , tous les secteurs sont copiés sauf les secteurs 8 à 14 car la KEY B n’est pas prise en compte

  • xhark

    26 novembre 2019 at 14:30 Répondre

    Petite contribution pour passer d’un format de dump MCT au format binaire : http://blogmotion.fr/internet/securite/mct2dmp-convertir-dump-hexa-binaire-18125

  • funky

    3 mars 2020 at 16:35 Répondre

    bonjour, savez vous si un lecteur ask rdr518 permet la même manipulation ?
    merci d’avance

    • veovis

      18 mai 2020 at 20:47 Répondre

      Aucune idée

  • dubis

    22 mai 2020 at 17:49 Répondre

    Bonjour,

    Merci pour le tuto
    Avez vous trouvé un solution pour les badges Mifare DESFire EV1 ?
    J’ai laissé tourner mfcuk pendant trois heure avant de tomber sur votre blog et de m’apercevoir que les valeurs de diff Nt et auth étaient identique.

Post a Comment