hacktricks/radio-hacking/pentesting-rfid.md
2024-02-11 01:46:25 +00:00

12 KiB

Pentestowanie RFID

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Wprowadzenie

Radio Frequency Identification (RFID) to najpopularniejsze rozwiązanie radiowe krótkiego zasięgu. Zazwyczaj służy do przechowywania i przesyłania informacji identyfikujących jednostkę.

Etykieta RFID może polegać na własnym źródle zasilania (aktywna), takim jak wbudowana bateria, lub otrzymywać zasilanie z anteny odczytującej za pomocą prądu indukowanego przez otrzymane fale radiowe (pasywna).

Klasy

EPCglobal dzieli etykiety RFID na sześć kategorii. Etykieta w każdej kategorii ma wszystkie możliwości wymienione w poprzedniej kategorii, co czyni ją wstecznie kompatybilną.

  • Etykiety klasy 0 to etykiety pasywne, które działają w pasmach UHF. Producent preprogramowuje je w fabryce produkcyjnej. W rezultacie nie można zmienić informacji przechowywanych w ich pamięci.
  • Etykiety klasy 1 mogą również działać w pasmach HF. Ponadto, można je zapisać tylko raz po produkcji. Wiele etykiet klasy 1 może również przetwarzać cykliczne sumy kontrolne (CRC) otrzymywanych poleceń. CRC to kilka dodatkowych bajtów na końcu poleceń służących do wykrywania błędów.
  • Etykiety klasy 2 można zapisywać wielokrotnie.
  • Etykiety klasy 3 mogą zawierać wbudowane sensory, które mogą rejestrować parametry środowiskowe, takie jak aktualna temperatura lub ruch etykiety. Te etykiety są półpasywne, ponieważ chociaż posiadają wbudowane źródło zasilania, takie jak zintegrowana bateria, nie mogą inicjować bezprzewodowej komunikacji z innymi etykietami lub czytnikami.
  • Etykiety klasy 4 mogą inicjować komunikację z innymi etykietami tej samej klasy, co czyni je aktywnymi etykietami.
  • Etykiety klasy 5 mogą dostarczać zasilanie innym etykietom i komunikować się ze wszystkimi poprzednimi klasami etykiet. Etykiety klasy 5 mogą działać jako czytniki RFID.

Informacje przechowywane w etykietach RFID

Pamięć etykiety RFID zazwyczaj przechowuje cztery rodzaje danych: dane identyfikacyjne, które identyfikują jednostkę, do której przyczepiona jest etykieta (dane te obejmują pola zdefiniowane przez użytkownika, takie jak konta bankowe); dane uzupełniające, które dostarczają dodatkowych informacji dotyczących jednostki; dane kontrolne, używane do konfiguracji wewnętrznej etykiety; oraz dane producenta etykiety, które zawierają unikalny identyfikator etykiety (UID) oraz szczegóły dotyczące produkcji, typu i producenta etykiety. Pierwsze dwa rodzaje danych znajdują się we wszystkich komercyjnych etykietach; ostatnie dwa mogą się różnić w zależności od producenta etykiety.

Standard ISO określa wartość identyfikatora rodziny aplikacji (AFI), kodu wskazującego rodzaj obiektu, do którego należy etykieta. Innym ważnym rejestratorem, również określonym przez ISO, jest identyfikator formatu przechowywania danych (DSFID), który definiuje logiczną organizację danych użytkownika.

Większość kontroli bezpieczeństwa RFID ma mechanizmy, które ograniczają operacje odczytu lub zapisu na każdym bloku pamięci użytkownika oraz na specjalnych rejestrach zawierających wartości AFI i DSFID. Te mechanizmy blokady używają danych przechowywanych w pamięci kontrolnej i mają prekonfigurowane domyślne hasła dostawcy, ale pozwalają właścicielom etykiety na konfigurację niestandardowych haseł.

Porównanie tagów o niskiej i wysokiej częstotliwości

Tagi RFID o niskiej częstotliwości (125kHz)

Tagi o niskiej częstotliwości są często używane w systemach, które nie wymagają wysokiego poziomu bezpieczeństwa: dostęp do budynków, klucze do domofonów, karty członkowskie siłowni, itp. Ze względu na większy zasięg są wygodne w przypadku płatnego parkowania samochodów: kierowca nie musi przybliżać karty do czytnika, ponieważ jest ona aktywowana z większej odległości. Jednocześnie tagi o niskiej częstotliwości są bardzo prymitywne, mają niską szybkość transferu danych. Z tego powodu niemożliwe jest zaimplementowanie złożonego dwukierunkowego transferu danych, takiego jak utrzymanie salda i kryptografia. Tagi o niskiej częstotliwości przesyłają tylko swoje krótkie ID bez żadnych środków uwierzytelniania.

Te urządzenia polegają na technologii pasywnej RFID i działają w zakresie od 30 kHz do 300 kHz, chociaż zazwyczaj używa się 125 kHz do 134 kHz:

  • Długi zasięg — niższa częstotliwość przekłada się na większy zasięg. Istnieją niektóre czytniki EM-Marin i HID, które działają z odległości do jednego metra. Są one często stosowane w parkingu samochodowym.
  • Protokół prymitywny — ze względu na niską szybkość transferu danych te tagi mogą przesyłać tylko swoje krótkie ID. W większości przypadków dane nie są uwierzytelniane i nie są w żaden sposób chronione. Jak tylko karta znajduje się w zasięgu czytnika, zaczyna przesyłać swoje ID.
  • Niskie bezpieczeństwo — te karty można łatwo skopiować lub nawet odczytać z kieszeni innej osoby ze względu na prymitywność protokołu.

Popularne protokoły 125 kHz:

  • EM-Marin — EM4100

Tagi RFID o wysokiej częstotliwości (13,56 MHz)

Tagi o wysokiej częstotliwości są używane do bardziej złożonej interakcji między czytnikiem a tagiem, gdy potrzebna jest kryptografia, duża dwukierunkowa transmisja danych, uwierzytelnianie itp.
Zazwyczaj są one stosowane w kartach bankowych, transporcie publicznym i innych bezpiecznych przepustkach.

Tagi o wysokiej częstotliwości 13,56 MHz to zestaw standardów i protokołów. Zazwyczaj są one określane jako NFC, ale nie zawsze jest to poprawne. Podstawowy zestaw protokołów używanych na poziomie fizycznym i logicznym to ISO 14443. Protokoły na wyższym poziomie, a także alternatywne standardy (takie jak ISO 19092), są oparte na nim. Wielu ludzi odnosi się do tej technologii jako komunikacji w polu zbliżeniowym (NFC), terminu używanego dla urządzeń działających w częstotliwości 13,56 MHz.

W skrócie, architektura NFC działa w ten sposób: protokół transmisji jest wybierany przez firmę produkującą karty i implementowany na podstawie niskopoziomowego ISO 14443. Na przykład, NXP wynalazł własny protokół transmisji na wyższym poziomie, zwany Mifare. Ale na niższym poziomie karty Mifare są oparte na standardzie ISO 14443-A.

Flipper może współpracować zarówno z protokołem ISO 14443 na niskim poziomie, jak i z protokołem transmisji danych Mifare Ultralight i EMV używanym w kartach bankowych. Pracujemy nad dodaniem obsługi dla Mifare Classic i NFC NDEF. Dokładne omówienie protokołów i standardów, które tworzą NFC, warto przeczytać w osobnym artykule, który planujemy opublikować wkrótce.

Wszystkie karty o wysokiej częstotliwości oparte na standardzie ISO 14443-A mają unikalny identyfikator chipa. Działa on jako numer seryjny karty, podobnie jak adres MAC karty sieciowej. Zazwyczaj UID ma długość 4 lub 7 bajtów, ale czasami może sięgać aż do 10. UID nie jest tajemnicą i jest łatwo odczytywalny, czasami nawet wydrukowany na samej karcie.

Istnieje wiele systemów kontroli dostępu, które polegają na UID do uwierzytelniania i przyznawania dostępu. Czasami dzieje się tak nawet w przypadku, gdy tagi RFID obsługują kryptografię. Takie niewłaściwe wykorzystanie obniża je do poziomu kart 125 kHz pod względem bezpieczeństwa. Wirtualne karty (takie jak Apple Pay) używają dynamicznego UID, aby właściciele telefonów nie otwierali drzwi za pomocą aplikacji płatniczej.

  • Krótki zasięg - karty o wysokiej częstotliwości są specjalnie zaprojektowane tak, aby musiały być umieszczone blisko czytnika. Pomaga to również chronić kartę przed nieautoryzowanymi interakcjami. Maksymalny zasięg odczytu, który udało nam się osiągnąć, wynosił około 15 cm, a to dzięki specjalnie wykonanym czytnikom o dużym zasięgu.
  • Zaawansowane protokoły - prędkości transferu danych do 424 kbps umożliwiają złożone protokoły z pełną dwukierunkową transmisją danych. Co z kolei umożliwia kryptografię, transfer danych itp.
  • Wysokie bezpieczeństwo - bezstykowe karty o wysokiej częstotliwości nie ustępują w żaden sposób kartom inteligentnym. Istnieją karty, które obsługują silne algorytmy kryptograficzne, takie jak AES, i implementują kryptografię asymetryczną.

Atak

Możesz zaatakować te tagi za pomocą Flipper Zero:

{% content-ref url="../todo/radio-hacking/flipper-zero/fz-nfc.md" %} fz-nfc.md {% endcontent-ref %}

Lub używając proxmarka:

{% content-ref url="../todo/radio-hacking/proxmark-3.md" %} proxmark-3.md {% endcontent-ref %}

Odwołania

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!