Esup NFC Tag

Arborescence des pages

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

Bloc de code
languageshell
git clone https://github.com/RfidResearchGroup/proxmark3.git
cd proxmark3/
cp Makefile.platform.sample Makefile.platform


On configure pour "optimiser" au mieux son usage dans le cadre de Mifare Desfire emacs Makefile.platform pour indiquer l'usage d'un proxmark3 easy ainsi :

Bloc de code
languageshell
PLATFORM=PM3GENERIC



On compile

Bloc de code
languageshell
#make 1.clean Plateforme
make correcte dans le cadre d'un Proxmark3 Easy 
PLATFORM=PM3GENERIC
LED_ORDER=PM3EASY

# 2. Désactiver le debug pour gagner de la mémoire RAM
DEBUG=0 

# 3. Désactiver les fonctionnalités lourdes inutiles pour le sniffing 
# Pour gagner de la RAM pour le buffer de trace 
WITH_FLASH=0 # L'Easy n'a pas de flash externe comme le RDV4 
WITH_SMARTCARD=0 # Pas de slot smartcard sur l'Easy 
WITH_FPC_USART=0 # Pas besoin du port série FPC pour du sniffing 

# 4. Optimisation niveau 3 (déjà souvent par défaut, mais vérifiez) 
OPTIMIZATION_LEVEL=3

...

Bloc de code
languageshell
make clean 
make all -j$(grep -c '^processor' /proc/cpuinfo)
make install 

Suivant votre configuration/installation de départ, la compilation vous demandera l'installation complémentaire d'un certain nombre de paquets... liste non exhaustive :

Bloc de code
languageshell
apt install liblz4-dev libreadline-dev gcc-arm-none-eabi

...

all -j$(grep -c '^processor' /proc/cpuinfo)
make install 


Suivant votre configuration/installation de départ, la compilation vous demandera l'installation complémentaire d'un certain nombre de paquets... liste non exhaustive :

Bloc de code
languageshell
apt install liblz4-dev libreadline-dev gcc-arm-none-eabi


On branche le proxmark3 en usb et on flash le proxmark avec cette version compilée :

Bloc de code
languageshell
./pm3-flash-bootrom
./pm3-flash-fullimage

Prise en main

On lance le client 

Bloc de code
languageshell
./pm3

On pose une carte (mifare desfire donc ici) sur le proxmark et on lance la commande

hf mfdes info

Cette commande lance un certain nombres d'apdus sur le tag qui permete de récupérer un certain nombre d'informations, alors même que nous n'avons pas donné de clef d'authentificaiton :

Bloc de code
languageshell
[=] ---------------------------------- Tag Information ----------------------------------
[+]               UID: 04 33 20 BA 3E 62 80 
[+]      Batch number: CE D9 98 61 30 
[+]   Production date: week 45 / 2018
[+]      Product type: MIFARE DESFire native IC (physical card)

[=] --- Hardware Information
[=]    raw: 04010112001805
[=]      Vendor Id: NXP Semiconductors Germany
[=]           Type: 0x01 ( DESFire )
[=]        Subtype: 0x01
[=]        Version: 12.0 ( DESFire EV2 )
[=]   Storage size: 0x18 ( 4096 bytes )
[=]       Protocol: 0x05 ( ISO 14443-2, 14443-3 )

[=] --- Software Information
[=]    raw: 04010102011805
[=]      Vendor Id: NXP 
Bloc de code
languageshell
./pm3-flash-bootrom
./pm3-flash-fullimage

Prise en main

On lance le client 

Bloc de code
languageshell
./pm3

On pose une carte (mifare desfire donc ici) sur le proxmark et on lance la commande

hf mfdes info

Cette commande lance un certain nombres d'apdus sur le tag qui permete de récupérer un certain nombre d'informations, alors même que nous n'avons pas donné de clef d'authentificaiton :

Bloc de code
languageshell
[=] ---------------------------------- Tag Information ----------------------------------
[+]               UID: 04 33 20 BA 3E 62 80 
[+]      Batch number: CE D9 98 61 30 
[+]   Production date: week 45 / 2018
[+]      Product type: MIFARE DESFire native IC (physical card)

[=] --- Hardware Information
[=]    raw: 04010112001805
[=]      Vendor Id: NXP Semiconductors Germany
[=]           Type: 0x01 ( DESFire )
[=]        Subtype: 0x01
[=]        Version: 12.0 ( DESFire EV2 )2.1
[=]   Storage size: 0x18 ( 4096 bytes )
[=]       Protocol: 0x05 ( ISO 14443-23, 14443-34 )

[=] --- Software Information
------------------------------ Card capabilities ---------------------------------

[=]    raw: 04010102011805--- Tag Signature

[=]   IC  signature  Vendorpublic key Id: NXP Semiconductors Germanyname: NTAG424DNA, NTAG424DNATT, DESFire EV2, DESFire Light EV2
[=] IC signature public key value: 04B304DC4C615F5326FE9383DDEC9AA8
[=]           Type: 0x01 ( DESFire )
[=]                   Subtype : 0x0192DF3A57FA7FFB3276192BC0EAA252ED
[=]        Version: 2.1
[=]      Storage  size: 0x18 ( 4096 bytes )               : 45A865E3B093A3D0DCE5BE29E92F1392
[=]       Protocol: 0x05 ( ISO 14443-3, 14443-4 )

[=] --------------------------------- Card capabilities ---------------------------------

[=] --- Tag Signature

[=]  IC signature public key name: NTAG424DNA, NTAG424DNATT, DESFire EV2, DESFire Light EV2
[=] IC signature public key value: 04B304DC4C615F5326FE9383DDEC9AA8
[=]                       : CE7DE321E3E5C52B3A
[=]     Elliptic curve parameters: secp224r1
[=]              TAG IC Signature: C83449E7E0427B621868F0E78611FE5E
[=]                                  : 92DF3A57FA7FFB3276192BC0EAA252EDFA83298C34C77B2C0D80FC937284434F
[=]                              : 45A865E3B093A3D0DCE5BE29E92F139259C5B7E0E6F44EE02FB2173C9750825B
[=]                              : CE7DE321E3E5C52B3A15201E32F341A6D1
[=+]     Elliptic  curve Signature parametersverification: secp224r1successful

[=+]  ---  AID  list  (  1    TAG IC Signature: C83449E7E0427B621868F0E78611FE5Efound )
[=+]                              : FA83298C34C77B2C0D80FC937284434F
[=]                              : 59C5B7E0E6F44EE02FB2173C9750825B
[=]                              : 15201E32F341A6D1F58540, 

[+] ------------------------------------ PICC level -------------------------------------
[+] # applications....... 1
[+] 
[+] PICC level auth commands
[+]    Auth.............. NO
[+]    Auth ISO.......... NO
[+]    Auth AES.......... YES
[+]    Auth Ev2.......... YES
[+]     Auth    Signature verification: successful
ISO Native... YES
[+] ---  AID list ( 1 found ) Auth LRP.......... NO
[+] F58540, 
 PICC level rights
[+] [1...] ------------------------------------ PICC level ------------------------------------- CMK Configuration changeable               : YES
[+] # applications[....... 1
[+] 
[+] PICC level auth commands0..] CMK required for create/delete             : YES
[+]    Auth[..............1.] CMK required for AID list / GetKeySettings : NO
[+]    Auth ISO[.......... NO
[+]1] CMK is changeable      Auth AES.......... YES
[+]         Auth Ev2..........             : YES
[+]  
[+]  AuthKey ISO Nativetype... YESAES
[+]    Auth LRP....Key cnt...... NO1
[+] PICC level rights
[+] [1...] CMK Configuration changeable               : YES
[+] [.0..] CMK required for create/delete             : YES
[+] [..1.] CMK required for AID list / GetKeySettings : NO
[+] [...1] CMK is changeable                          : YES
[+] 
[+] Key type... AES
[+] Key cnt key 0 version: 0 (0x00)

[=] --- Free memory
[+]    Available free memory on card... 4928 bytes

[=] Standalone DESFire

Toujours sans authentification, suivant la configuration de la carte, on peut lister les applications desfire par exemple : 

 hf mfdes lsapp --no-auth

Ce qui renvoie : 

Bloc de code
languageshell
[=] It may take up to 15 seconds. Processing...

[+] ------------------------------------ PICC level -------------------------------------
[+] # applications....... 1
[+] PICC key 0 version: 0 (0x00)

[=+] --- Free memoryPICC level auth commands
[+]    Available free memory on card Auth..... 4928 bytes

[=] Standalone DESFire

Toujours sans authentification, suivant la configuration de la carte, on peut lister les applications desfire par exemple : 

 hf mfdes lsapp --no-auth

Ce qui renvoie : 

Bloc de code
languageshell
[=] It may take up to 15 seconds. Processing...

[+] ------------------------------------ PICC level -------------------------------------
[+] # applications......... NO
[+]    Auth ISO.......... NO
[+]    Auth AES.......... YES
[+]    Auth Ev2.......... 1
[+] YES
[+] PICC level auth commands
[+]Auth    Auth...ISO Native........... NO YES
[+]    Auth ISOLRP.......... NO
[+] PICC   Auth AES.......... YESlevel rights
[+]    Auth Ev2[1.......... YES
[+]] CMK Configuration changeable    Auth ISO Native... YES
[+]    Auth LRP.......... NO
[+] PICC level: rightsYES
[+] [1...] CMK Configuration changeable               : YES
[+] [.0..] CMK required for create/delete             : YES
[+] [..1.] CMK required for AID list / GetKeySettings : NO
[+] [...1] CMK is changeable                          : YES
[+] 
[+] Key type... AES
[+] Key cnt.... 1
[+] PICC key 0 version: 0 (0x00)

[+] --------------------------------- Applications list ---------------------------------
[+] Application ID....... 0xF58540
[+]    ISO id............ 0x0000
[+]    DF name...........  ( 00000000000000000000000000000000 )
[+]   AID mapped to MIFARE Classic AID (MAD): 5854
[+]    MAD AID Cluster  0x58..... Reserved
[=]    MAD AID Function 0x5854...  University student identification [Pro Active]
[+] Auth commands
[+]    Auth.............. NO
[+]    Auth ISO.......... NO
[+]    Auth AES.......... YES
[+]    Auth Ev2.......... YES
[+]    Auth ISO Native... YES
[+]    Auth LRP.......... NO
[+] 
[+] Application level rights
[+]  - AMK authentication is necessary to change any key (default)
[+] [1...] AMK Configuration changeable               : YES
[+] [.0..] AMK required for create/delete             : YES
[+] [..1.] AMK required for FID list / GetKeySettings : NO
[+] [...1] AMK is changeable                          : YES
[+] 
[+] Key type... AES
[+] Key cnt.... 3
[+] Key versions [0..2]  00, 00, 00

...

Bloc de code
languageshell
    7177344 |    7191264 | Rdr |02  90  5A  00  00  03  C2  85  F5  00  2F  1D                           |  ok | SELECT APPLICATION (appId f585c2)
    7206836 |    7212724 | Tag |02  91  00  29  10                                                       |     | 
    7604912 |    7616528 | Rdr |03  90  AA  00  00  01  01  00  F6  06                                   |  ok | AUTH AES (keyNo 1)
    7650404 |    7674724 | Tag |03  9C  18  14  D9  57  1C  F7  06  8C  67  2A  B4  56  44  76  4F  91   |     | 
            |            |     |AF  25  EA                                                               |  ok | 
    8055376 |    8102768 | Rdr |02  90  AF  00  00  20  E8  AB  FF  8E  BA  0A  D0  CD  54  B3  53  83   |     | 
            |            |     |DF  C3  46  C8  C2  C3  01  08  DD  0F  00  B8  79  70  5B  D9  D1  2B   |     | 
            |            |     |BE  35  00  C5  D3                                                       |  ok | AUTH FRAME / NEXT FRAME
    8131332 |    8155652 | Tag |02  39  11  45  57  BC  A1  37  FB  0C  6B  0D  A5  35  31  DF  CA  91   |     | 
            |            |     |00  6E  1C                                                               |  ok | 
    8520336 |    8538864 | Rdr |03  90  BD  00  00  07  00  00  00  00  1C  00  00  00  B4  05           |  ok | READ DATA (fileId 00, offset 0, len 28)
    8597316 |    8640004 | Tag |03  84  96  B1  F2  7E  9A  54  DE  C6  F3  49  51  10  10  5D  9B  45   |     | 
            |            |     |96  8A  00  14  C4  95  E8  9B  91  7D  B4  6F  4E  D0  A9  91  00  37   |     | 
            |            |     |35                                                                       |  ok 


Limitations

Si on opère du sniffing sur un lecteur NFC usb ou un lecteur de contrôle d'accès, le proxmark3 easy ne sera pas forcément en capacité de récupérer et lire l'ensemble des transactions effectuées.
De nos tests, seul le sniffing en utilisant pour lecteur un smartphone a en fait fonctionné.

Quand on sniffe un lecteur NFC USB lisant une carte en desfire (avec les mêmes apdus transmis que via le téléphone, depuis esup-sgc-client et non esup-nfc-tag-droid donc par exemple), plutôt que de voir les trames Desfire, il semble qu'on obtienne un simple 

Bloc de code
languageshell
   15808340 |   15811412 | Tag |6F  6F! 0F                                                               |  !! 

Nous ne savons pas dire de quoi dépend exactement le résultat mais sans doute de la "vitesse" de transmissions/dialogue entre le lecteur et la carte : à l'usage, on se rend bien compte que le téléphone est beaucoup plus lent à dialoguer avec une carte desfire qu'un lecteur nfc sur pc ou encore qu'un contrôle d'accès...

Nous ne savons pas si le Proxmark3 RDV4, version "officielle" du proxmark, serait plus en capacité de faire ce sniffing sur lecletrus NFC USB ou de contrôle d'accès.