Dyrk.org - Do You Really Know

NFC – Récupérer les clés d’un dump mfoc

Publié le 1 septembre 2015 par #Ro0t

Salut à tous,

Pardonnez moi pour l’article qui va suivre, promis, je relirais les fautes … mais là il est 23h30, et après une petite chicha et quelques verres de Wisky Coca … Youhouuuu … je n’ai plus trop les yeux en face des trous ..

Bon comme vous le savez, j’adore bidouiller, et chercher à faire des trucs coool :)
Et en ce qui concerne les trucs cool c’est vraiment par période, et là je reviens un peu sur ma période NFC que j’ai lachement délaissé, au détriment d’Android, puis de mes projets de proxy, de chiffrement …

 

Alors avec des collègues nous avions commandé une puce NFC avec le bloc 0 disponible en écriture … du chinois quoi …

 

J’avais pour projet de by-passer la sécurité d’une machine qui se fiait de prime abord a l’UID (l’identifiant de la puce NFC) avant de s’interroger au contenu de celle-ci :)

 

Cette puce a fini par arriver … au bout de 3 mois !

 

Et donc j’avais fais quelques dumps des puces NFC officielle.
(Celle qui fonctionne sur la dite machine)

 

Mais bon comme vous le savez, pour faire un dump d’une puce NFC dont les « clés » de sécurité des « blocs » ne sont pas celle pas défaut, on utilise des outils comme mfoc ou mfcuk, qui sont long … très long
(Petit rappel : une puce NFC dispose de 12 blocs, protégés pour chacun par 2 clés).

 

Dans mon cas, 3 blocs sont sécurisés …

Aussi, pour faire le dump, MFOC devra bruteforcer ces 3 blocs … et ça met parfois beaucoup de temps …

Alors pour gagner du temps, MFOC propose d’ajouter vos propres clés, pour aller plus vite (vu qu’il « bruteforce » avec une liste de clé)

Dans mon cas, je n’avais que des vieux dumps, et vu que le contenu de la puce NFC que je souhaite cloner évolue, et que je n’avais pas pensé à l’époque, lorsque je les avais réalisé à noter quelques parts les clés … je me suis retrouver comme une andouille à devoir repasser à la moulinette de MFOC ….

 

Mais bon … en fait, en cherchant un peu, durant l’interminable traitement de MFOC, j’ai fini, par trouver où ces clés sont stockées … dans le dump.
Mais pour cela, il faut savoir comment ça fonctionne :

 

Votre puce NFC est composé de 12 blocs, protégé pour chacun, par 2 clés, une clé A et une clé B
Voici un visuel que je vous ai concocté :

 

Screenshot - 01092015 - 22:45:57

 

En rouge, les clés A et en vert, les clés B.
Entre chaque, il y a 3 lignes, rempli pour la plupart de 0000000000 …. , ce sont les données ! Et les 0000 c’est du vide, en gros, de la place pour rajouter des données si le cœur vous en dit.
Pour être encore plus précis, voici une jolie image que j’ai récupéré et qui illustre la chose :

 

Memory_large

 

 

Pour obtenir un dump d’un composant nfc si vous ne connaissez pas les clés, il vous faut utiliser l’outils MFOC de la manière suivante :

mfoc -O DumpDeVotrePuceNFC

 

MFOC réalisera ensuite un dump de votre puce NFC, en testant tout un paquet de clés par défaut … ça peu être très rapide comme tréééés loooong …

 

Et nous allons voir comment une fois le premier dump réalisé, vous pouvez accélérer les prochains

 

Une fois votre dump terminé :
Ce qui est notre cas, car les dumps avaient été réalisés quelques mois auparavant.
Il vous faut ouvrir le fichier de dump

vim DumpDeVotrePuceNFC

Une fois dans ce fichier « binaire« , vous allez taper

:%!xxd

 

Et là magie vous obtiendrez un écran similaire à celui que je vous avais présenté un peu plus haut dans l’article.

 

Il vous faudra alors maintenant récupérer toutes les clés A et B selon votre besoin …
mfoc vous dira plus ou moins lesquelles … (si vous le lancez sans paramètre – cf. commande mfoc un peu plus haut)

Mifare-Classic-Offline-Cracker-MFOC

Dans le cas de cette image, on vois qu’il y a 4 clés que MFOC n’arrive pas à trouver.
Mais dans mon cas j’ai eu juste besoin des clés B des 3 premiers secteurs alias « Block » (cf. ma capture ci-dessus)

 

Aussi, si mfoc parvient à vous faire un dump, et que quelques temps plus tard vous devez refaire une copie et que vous ne voulez pas attendre 100 ans qu’MFOC trouve les clés Inconnues.

Il vous suffira de réouvrir le fichier de dump, et de récupérer les clés.
Ensuite, vous pourrez lancer pour vos prochains dump une commande du style :

mfoc -O MonDump -k CLE_A_1

-k CLE_B_1 -k CLE_B_2

Attention, vos clés, contrairement à la capture d’écran « Hexa », doivent être indiquée sans les espaces.

Pour un exemple plus parlant :

mfoc -O dumpNFC.mfd -k 3b2a07b661d0 -k 0b1b2b3b4b5 -k e7e95974e31f