piątek, 28 kwietnia 2023

Mifare - Desfire EV1 - Odczyt danych z karty Desfire czytnikiem Proxmark

W tym poście chciałbym opisać w jaki sposób odczytać kartę Desfire EV1 za pomocą czytnika Proxmark3.

[Źródło: https://www.mifare.net/en/]

Podstawowe operacje na kartach już opisywałem we wcześniejszym poście. Tutaj dla przypomnienia:

Do odczytu danych wykorzystuje wersje oprogramowania:
iceman-32-20191107-a23414fe51fda58290fc6869b3c51bcf11088fc1

Dostępne, gotowe wersje oprogramowania można pobrać pod tym linkiem:

Nowsze wersje oferują więcej możliwości, niestety mam problem z wgraniem obrazu dla wersji 512:


Zablokowana część pamięci flash nie pozwala na wgranie obrazu w pełnej wersji. W celu odblokowania części pamięci należy zewrzeć ze sobą piny 54 i 55 mikrokontoroleta AT91SAM7S512 i podłączyć zasilanie do płytki. Wykonanie takiego zabiegu spowoduje odblokowanie pamięci flash oraz jej całkowite wyczyszczenie. Wobec tego po zwarciu jedyna możliwość wgrania oprogramowania jest interfejs JTAG. Niestety układ AT91 zastosowany w tym projekcie nie może zostać zaprogramowany za pomocą posiadanego przeze mnie Atmel ICE (chyba). Nie jest on też dostępny w układach w programem Atmel Studio 7 czy 6.2.

W Internecie można znaleźć sposób jak wykorzystać Raspberry Pi oraz biblioteki OpenOCD. Więc z braku lepszego hardwar'u pewnie spróbuję tym sposobem (link: https://github.com/r0b2g1t/Flash-Proxmark3-with-RPi).

Poniżej opis możliwości wersji 32 bitowej. 

Sprawdzenie wersji sprzętowej czytnika Proxmark3:

  1. pm3 --> hw version
  2. hw version
  3.  
  4. Proxmark3 RFID instrument
  5.  
  6.  
  7.  [ CLIENT ]
  8.  client: iceman build for RDV40 with flashmem; smartcard;
  9.  
  10.  [ ARM ]
  11.  bootrom: iceman/master/ice_v3.1.0-980-gbacf8aff 2018-08-04 13:36:38
  12.       os: iceman/master/ice_v3.1.0-980-gbacf8aff 2018-08-04 13:36:42
  13.  
  14.  [ FPGA ]
  15.  LF image built for 2s30vq100 on 2017/10/25 at 19:50:50
  16.  HF image built for 2s30vq100 on 2018/ 7/28 at 18:36:55
  17.  
  18.  [ Hardware ]
  19.   --= uC: AT91SAM7S512 Rev B
  20.   --= Embedded Processor: ARM7TDMI
  21.   --= Nonvolatile Program Memory Size: 512K bytes, Used: 237459 bytes (45%) Free: 286829 bytes (55%)
  22.   --= Second Nonvolatile Program Memory Size: None
  23.   --= Internal SRAM Size: 64K bytes
  24.   --= Architecture Identifier: AT91SAM7Sxx Series
  25.   --= Nonvolatile Program Memory Type: Embedded Flash Memory

Sprawdzanie anten:

  1. pm3 --> hw tune
  2. hw tune
  3.  
  4. [=] measuring antenna characteristics, please wait...
  5.  
  6. ....
  7.  
  8. [+] LF antenna: 26.77 V - 125.00 kHz
  9. [+] LF antenna: 33.85 V - 134.00 kHz
  10. [+] LF optimal: 35.41 V - 130.43 kHz
  11. [+] LF antenna is OK
  12.  
  13. [+] HF antenna: 33.96 V - 13.56 MHz
  14. [+] HF antenna is OK
  15.  
  16. [+] Displaying LF tuning graph. Divisor 89 is 134khz, 95 is 125khz.

Wyszukanie taga:

  1. pm3 --> hf search
  2. hf search
  3.  UID : 04 1F 35 5A 6A 68 80
  4. ATQA : 03 44
  5.  SAK : 20 [1]
  6. TYPE : NXP MIFARE DESFire 4k | DESFire EV1 2k/4k/8k | Plus 2k/4k SL3 | JCOP 31/41
  7. MANUFACTURER : NXP Semiconductors Germany
  8.  ATS : 06 75 77 81 02 80 02 F0
  9.        -  TL : length is 6 bytes
  10.        -  T0 : TA1 is present, TB1 is present, TC1 is present, FSCI is 5 (FSC = 64)
  11.        - TA1 : different divisors are supported, DR: [2, 4, 8], DS: [2, 4, 8]
  12.        - TB1 : SFGI = 1 (SFGT = 8192/fc), FWI = 8 (FWT = 1048576/fc)
  13.        - TC1 : NAD is NOT supported, CID is supported
  14. [=] Answers to magic commands: NO
  15.  
  16. [+] Valid ISO14443-A Tag Found

Wyświetlenie informacji o karcie i podstawowej konfiguracji:

  1. pm3 --> hf mfdes info
  2. hf mfdes info
  3. -- Desfire Information --------------------------------------
  4. -------------------------------------------------------------
  5.   UID                : 04 1F 35 5A 6A 68 80
  6.   Batch number       : B9 0C 22 49 70
  7.   Production date    : week 27, 2022
  8.   -----------------------------------------------------------
  9.   Hardware Information
  10.       Vendor Id      : NXP Semiconductors Germany
  11.       Type           : 0x01
  12.       Subtype        : 0x01
  13.       Version        : 1.0 (Desfire EV1)
  14.       Storage size   : 0x16 (2048 bytes)
  15.       Protocol       : 0x05 (ISO 14443-3, 14443-4)
  16.   -----------------------------------------------------------
  17.   Software Information
  18.       Vendor Id      : NXP Semiconductors Germany
  19.       Type           : 0x01
  20.       Subtype        : 0x01
  21.       Version        : 1.4
  22.       storage size   : 0x16 (2048 bytes)
  23.       Protocol       : 0x05 (ISO 14443-3, 14443-4)
  24. -------------------------------------------------------------
  25.  CMK - PICC, Card Master Key settings
  26.  
  27.    [0x08] Configuration changeable       : YES
  28.    [0x04] CMK required for create/delete : NO
  29.    [0x02] Directory list access with CMK : NO
  30.    [0x01] CMK is changeable              : YES
  31.  
  32.    Max number of keys       : 174
  33.    Master key Version       : 0 (0x00)
  34.    ----------------------------------------------------------
  35.    [0x0A] Authenticate      : YES
  36.    [0x1A] Authenticate ISO  : YES
  37.    [0xAA] Authenticate AES  : NO
  38.  
  39.    ----------------------------------------------------------
  40.    Available free memory on card       : 224 bytes

Wyświetlenie listy dostępnych aplikacji:

  1. pm3 --> hf mfdes enum
  2. hf mfdes enum
  3.  
  4. -- Desfire Enumerate Applications ---------------------------
  5. -------------------------------------------------------------
  6.  Aid 0 : 89 32 45
  7.  AMK - Application Master Key settings
  8. [!]    Can't read Application Master key settings
  9. [!]    Can't read Application Master key version. Trying all keys
  10. [!]    Can't get file ids
  11. [!]    Can't get ISO file ids
  12.  Aid 1 : 12 34 73
  13.  AMK - Application Master Key settings
  14. [!]    Can't read Application Master key settings
  15. [!]    Can't read Application Master key version. Trying all keys
  16. [!]    Can't get file ids
  17. [!]    Can't get ISO file ids
  18.  Aid 2 : 00 00 13
  19.  AMK - Application Master Key settings
  20. [!]    Can't read Application Master key settings
  21. [!]    Can't read Application Master key version. Trying all keys
  22. [!]    Can't get file ids
  23. [!]    Can't get ISO file ids
  24. -------------------------------------------------------------

Teraz wykonujemy autentykacje dostępu do karty:

  1. pm3 --> hf mfdes auth
  2.  
  3. hf mfdes auth
  4. Usage:  hf mfdes auth <1|2|3> <1|2|3|4> <keyno> <key>
  5.                     Auth modes
  6.                  1 = normal, 2 = iso, 3 = aes
  7.                     Crypto
  8.                  1 = DES 2 = 3DES 3 = 3K3DES 4 = AES
  9.  
  10. Examples:
  11.          hf mfdes auth 1 1 0 11223344
  12.          hf mfdes auth 3 4 0 404142434445464748494a4b4c4d4e4f
  13.  
  14. //-------------------------------------------------------------------
  15. //Mode normal, Crypto 3DES, klucz 0
  16.  
  17. pm3 --> hf mfdes auth 1 2 0 00000000000000000000000000000000
  18. hf mfdes auth 1 2 0 00000000000000000000000000000000
  19. 3DES selected
  20.   Key        :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  21.   SESSION    :00 00 00 00 65 AA E4 09 00 00 00 00 15 CE FC BD

I teraz właściwie możliwości odczytu karty desfire się zakończyły. Nie udaje mi się uzyskać żadnych dodatkowych informacji z karty oraz odczytać informacji z aplikacji. Oczywiście jeśli chodzi o testowaną wersję 32 bitową. Pewnie dla wersji standardowej będzie można uzyskać znaczniej więcej informacji.