Copier un badge NFC avec Kali Linux & Android

Bonjour à tous ! Aujourd’hui nous allons voir ensemble comment copier un badge NFC avec un ARC122U sur Kali Linux ou avec un téléphone Android.

Introduction

Depuis maintenant quelques années la radio-identification (RFID) est utilisée dans beaucoup de domaine comme les titres de transport où encore pour l’accès à des bâtiments. Ces systèmes sont très pratiques et facile à mettre en œuvre mais sont bien souvent peu sécurisé. Cela peut-être dû à une mauvaise implémentation ou tout simplement à des faiblesses connues dans le système.

La RFID est basée sur les ondes radio. Il permet d’échanger des données sans avoir pour autant un contact physique comme pour une bande magnétique.

Un système RFID est forcément composé d’un « tag » et d’un « lecteur ». Lors d’une utilisation, à l’approche du tag le lecteur envoie un signal radio au tag. Ce dernier renvoi alors ses informations.

Il existe également des « tags » qui peuvent être actifs, ce qui rallonge le champ d’action du tag, comme pour les badges des télépéages. Ces tags utilisent une source d’alimentation.

Les fréquences utilisées par la RFID sont les suivants :

  • Basse : 125kHz
  • Haute : 13.56MHz
  • Ultra Haute : 856Mhz

Pourquoi ?

On peut également se demander pourquoi copier un badge NFC est intéressant. Cela peut l’être pour plusieurs cas, dans mon cas c’est pour avoir un second VIGIK pour l’entrée de mon immeuble par exemple, car la co-propriété m’a dit que c’était impossible et que ça coutait très chère.

Il peut-être aussi important d’essayer de copier votre badge d’accès pour votre entreprise par exemple afin de tester la sécurité du système. Et vous risquez d’être surpris. J’ai pu tester plusieurs systèmes, et un grand nombre d’entre eux ne prennent même pas la peine de changer les clés par défaut pour compliquer la copie. Que ça soit pour des accès à des bâtiments scolaires, à des hôtels, etc.

Et pour finir, ça peut-être très intéressant dans le cadre d’un audit ou d’un red team ! Surtout que la copie est possible rapidement avec un simple téléphone Android. Selon le badge copié vous pourrez avoir accès à des bâtiments ou des salles spécifiques (serveurs, secrets, etc.).

NFC

De son côté le NFC (Near Field Communication) reprend les mêmes bases que la RFID en apportant des améliorations, comme la communication entre deux lecteurs. Le NFC lui fonctionne essentiellement sur la haute fréquence de 13.56MHz.

Il existe plusieurs types de tag NFC avec plus ou moins de sécurité comme le Mifare Classic, celui que nous allons copier dans cet article ou encore les tags DES Fire vX. Ces derniers comportent un niveau de sécurité supérieur.

Mifare Classic

Les cartes Mifare Classic sont les plus répandues dans le monde du NFC même si elles sont vulnérables à plusieurs attaques. Ces failles connues depuis 2008 sont basées sur le hardware et sur la cryptographie appliquée à ces tags. L’algorithme CRYPTO1 est en effet obsolète aujourd’hui.

Les cartes Mifare Classic existent en version 1ko et 4ko. Le fonctionnement est exactement le même, seul l’espace de stockage change.

Voici le schéma du stockage d’une carte Mifare Classic 1K :

Vous remarquerez que le bloc 0 est normalement défini par le constructeur et n’est disponible qu’en lecture seule. Cependant, il est possible de se procurer des cartes avec le bloc 0 en écriture pour réaliser des copies complètes.

Le bloc 0 correspond à l’UID qui est basé sur 4 ou 7 octets.

Le stockage est divisé en secteurs et ces mêmes secteurs sont divisés en blocs.

Pour un tag 1ko ça fait 16 secteurs avec 16 secteurs de 4 blocs de 16 octets.

On remarque également la présence des clés dans chaque secteur pour accéder à la mémoire.

Avant de passer à la partie pratique, je tenais à préciser qu’en dehors de l’aspect technique, le problème avec le NFC vient souvent de l’implémentation. Dans la plupart des cas, les clés utilisées sont celle par défaut et la partie utilisée du tag se résume seulement à l’UID.

Copier avec Kali Linux

Dans mon cas j’utilise Kali Linux car il englobe déjà tous les outils nécessaires à la duplication de notre tag NFC.

J’utilise pour copier mon badge un ACR122U et des badges avec le bloc 0 accessible en écriture. Vous pouvez trouver ces outils directement en ligne.

Tout d’abord il faut lancer la commande suivante pour charger le module et rendre notre ACR122U fonctionnel :

Après avoir placé le tag NFC que vous voulez copier vous pouvez maintenant lancer la commande nfc-list pour vérifier qu’il est bien pris en compte :

Vous pouvez maintenant lancer la copie du badge avec cette commande qui permet de créer un dump complet de votre tag :

Si tout se déroule comme prévu vous devriez avoir un retour comme ci-dessous. Si ce n’est pas le cas, c’est que votre badge utilise des clés qui ne sont pas utilisés par défaut. Vous pouvez alors récupérer un fichier contenant d’autres clés et lancer un dump en utilisant ce fichier :

Et pour finir, vous pouvez écrire directement votre dump sur votre badge vierge avec l’UID 0 disponible en écriture :

Vous avez maintenant votre nouveau badge copié, vous pouvez vérifier que l’UID à lui aussi été copié avec la commande :

Si vous rencontrez une erreur du type « unlock failure! » c’est que votre carte/tag n’est malheureusement pas disponible en écriture sur le bloc 0.

Il est peut-être possible que cela fonctionne avec la copie par téléphone que nous allons voir maintenant par contre.

Copier un badge avec un Smartphone Android

Dans mon cas je vais utiliser un Xiaomi Mi 9T Pro qui n’est pas rooter pour copier mon badge. Selon votre téléphone, vous aurez peut-être besoin qu’il le soit.

Pour ce faire, je vais simplement utiliser l’application Mifare Classic Tool disponible directement sur le Play Store.

Elle va nous permettre de manipuler et de modifier directement nos dump et de les écrire directement sur des badges vierges.

La procédure est plus simple vu qu’elle ne nécessite pas d’utiliser la ligne de commande.

Tout d’abord ouvrez l’application et rapprocher le tag que vous voulez copier du dos de votre téléphone. Vous devriez voir son UID s’afficher sur l’écran. Maintenant rendez vous dans « READ TAG » :

Une fois dans ce menu, cochez l’utilisation des deux listes de clé et lancer la lecture du tag :

Vous avez maintenant accès à l’ensemble des blocs de votre tag. Enregistrez le avec le logo de la disquette en haut. De mon côté je l’ai nommé « net-security ».

Vous pouvez maintenant vous rendre dans le menu principal et sélectionner « WRITE TAG ».

Une fois dans ce menu il faut choisir « WRITE DUMP » et cochez les 2 options :

Il suffit maintenant de choisir le dump à écrire :

Et de lancer l’écriture en sélectionnant les deux fichiers de clés en approchant le tag disponible en écriture sur le bloc 0 du téléphone :

Si tout ce passe bien, vous aurez le message suivant :

Et voilà vous avez maintenant copié votre badge.

J’espère que cet article vous aura plu, si vous avez des questions ou des remarques sur ce que j’ai pu écrire n’hésitez pas à réagir avec moi par mail ou en commentaire !

Sur le même principe n’hésitez pas à me dire si des articles sur d’autres outils de ce type vous intéresse.

Merci pour votre lecture et à bientôt !

MRigonnaux

21 Replies to “Copier un badge NFC avec Kali Linux & Android”

    1. Salut Nerd !

      Effectivement j’ai un peu zappé cette étape, je viens de rajouter un paragraphe « Pourquoi ? » avec des explications. Personnelle pour un vigik d’un portail, ou professionnelle pour un audit/red team par ex.

      Merci pour ton retour et bonne journée à toi !

      1. j’avais fait le test avec l’app Android.
        Après un nouvel essai, et en veillant à ne pas bouger le tag à copier, ça c’est tout bien passé ^^
        Merci.

      2. Belle approche pour le quotidien.
        Et vu qu’on part sur un audit ou une redteam, le déplacement léger serait d’avoir simplement son smartphone et le transformer en carte nfc lui même ? Une émulation ?

        1. Bonjour Matt,

          En effet ça pourrait être pratique surtout dans le cadre d’une red team. Mais il me semble que cela n’est possible qu’avec certains smartphone et à condition qu’il soit rooté,

          Je vais creuser un peu plus le sujet et si c’est possible je ferais un autre article ou je rajouterais une partie dans celui la,

          Bonne journée !

    1. Merci à toi pour ton retour !

      Si ce n’est que du côté Mifare Classic, je dirais que c’est pareil. Mais si tu veux aller plus loin dans l’analyse des tags et des protocoles je pense que l’utilisation du support USB est beaucoup plus complet !

      Et sur la partie Android, il faut également faire attention car tous les téléphones ne permettent pas d’écrire sur un tag.

    1. Bonjour Seb,

      Je sais que c’est possible avec certains smartphones, mais du côté du 9T j’en ai aucune idée. Il existe plusieurs applications de ce type sur le Play Store,

      Je vais tester ça et je reviens vers toi !

  1. Bon prochaine étape, comment modifier un lecteur NFC pour augmenter la portée et pouvoir copier les cartes NFC d’une personne proche de vous….

    Oui c’est possible et j’aurais juste un truc à dire : les communications sans fil c’est de la merde !! (Wifi, bluetooth, NFC, etc…).

    C’est bourré de failles et une petite distribution kali ou slax pour ceux qui ont connu permet plein de choses.

    1. Bonjour Fighter,

      Oui ça pourrait être intéressant, je vais me renseigner dessus, mais j’imagine qu’avec un raspberry sur batterie on pourrait avoir quelque chose de portable et de pas mal !

      Et je te rejoins sur le 2nd point, il y a souvent des choses à redire sur ces technologies…

      Bonne journée à toi !

  2. Bonjour,
    Le 9t pro est annonce non compatible mifare classic sur shopnfc et pourtant ici tu semble avoir reussi. Tu confirmes ?
    La contrainte principale pour les tels est d’avoir un chip NXP car mifare classic est propriétaire et c’est uniquement NXP qui le supporte.

    Merci

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.