Bezpieczeństwo kart zbliżeniowych MIFARE 1k

Cześć!

Naszło mnie ostatnio na przemyślenia odnośnie bezpieczeństwa kart zbliżeniowych. I nie mówię tu o tych bankowych, ale o niektórych kartach miejskich, czy też takich do otwierania drzwi w jakimś zabezpieczonym obiekcie, czy gdziekolwiek indziej.

Dostałem od kolegi kartę miejską z Lublina - typu MIFARE 1k i co mogłoby się wydawać oczywiste - była zaszyfrowana niestandardowymi kluczami.
Ale mimo to - chciałbym was uczulić, karty zbliżeniowe nie są bezpieczne.
Pokażę wam jak można odczytać informacje z zaszyfrowanej karty - odczytać klucze A i B - na potrzeby na przykład wykonania kopii karty, czy nawet zmiany wartości w niej zapisanej(np. stan konta).


Ostrzegam przed wykorzystywaniem tego poradnika w celach niezgodnych z prawem. Poradnik został stworzony żeby pokazać,
że te karty nie są bezpieczne. Nie biorę odpowiedzialności za używanie
tego poradnika w celach niezgodnych z prawem.

Wiecie ile zajęło mi czasu odczytanie z pomocą programu mfoc klucza A i klucza B?
6 minut i 22 sekundy :D

Zestaw jakiego użyłem, to moduł PN532 i konwerter UART-USB - CP2102 .
Można je znaleźć na Allegro, w sklepach z modułami elektronicznymi, czy na AliExpress - tam najtaniej ale też na przesyłkę trzeba długo czekać



Oprogramowanie uruchomiłem na systemie Linux Mint 18.1 Cinnamon,
należy zainstalować pakiety libnfc-bin libnfc-examples mfoc i mfcuk
Komenda: sudo apt-get install libnfc-bin libnfc-examples mfoc mfcuk
Teraz z podłączonym konwerterem UART sprawdź nazwe podłączonego po USB konwertera wpisując dmesg | grep tty

Powinno się ukazać coś mniej więcej tego(u mnie to tak wygląda):
[    0.000000] console [tty0] enabled
[    1.746414] 0000:00:16.3: ttyS4 at I/O 0x4090 (irq = 17, base_baud = 115200) is a 16550A
[   12.832172] usb 1-1.5: Qualcomm USB modem converter now attached to ttyUSB0
[   12.837401] usb 1-1.5: Qualcomm USB modem converter now attached to ttyUSB1
[   12.840510] usb 1-1.5: Qualcomm USB modem converter now attached to ttyUSB2
[  203.742977] usb 1-1.2: pl2303 converter now attached to ttyUSB3


Interesuje nas zapis zaznaczony na niebiesko - zawiera nazwę konwertera wraz z fizycznym interfejsem który musimy skojarzyć z NFC w komputerze.

Teraz z pozimu konsoli, ja polecam edytor tekstu nano - dodaj do pliku 
 /etc/nfc/libnfc.conf  device.connstring = "pn532_uart:/dev/ttyUSBx"
W miejsce x wpisz numer adaptera USB, w moim przypadku to 3. 

Teraz pakiet libnfc wie, jakiego interfejsu używać do komunikacji z urządzeniem NFC. Możemy zacząć działać...

ale nie dzisiaj.
Dobranoc

P.S.  Pare informacji o MIFARE 1k:
  • Jest szeroko stosowany na świecie - karty miejskie, bilety elektroniczne, karty hotelowe itp. itd.
  • Obsługuje szyfrowanie, które w wielu kartach nie jest używane (np. Karta biblioteki Raczyńskich w Poznaniu)
  • Szyfrowanie zawartości
  • ACL - kontrola uprawnień odczyt/zapis
  • w 2008 dwóch studentów z Uniwersytetu Radbond złamało i udostępniło dokumentację szyfru (CIPHER-1) - NXP, firma tworząca mifare i cipher-1 pozwała ich do sądu, który stanął po stronie badaczy i zgodnie z prawem wolności wypowiedzi zezwolił na publikacje.
    Swoją drogą ciekawa historia, 2 naukowców wygrywa spór prawny z wielką firmą NXP...
  • Odkrycie ułatwiło pracę nad narzędziami do "odzyskiwania kluczy" z kart Mifare  które dzisiaj są publiczne(narzędzia, nie klucze).

Komentarze

Popularne posty