Pentesting RFID
Reading time: 10 minutes
tip
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
Wstęp
Radio Frequency Identification (RFID) jest najpopularniejszym rozwiązaniem radiowym na krótkie odległości. Zazwyczaj służy do przechowywania i przesyłania informacji identyfikujących dany podmiot.
Tag RFID może polegać na własnym źródle zasilania (active), takim jak wbudowana bateria, albo otrzymywać zasilanie z anteny czytnika przy użyciu prądu indukowanego z otrzymanych fal radiowych (passive).
Klasy
EPCglobal dzieli tagi RFID na sześć kategorii. Tag w każdej kategorii ma wszystkie możliwości wymienione w poprzedniej kategorii, co czyni go wstecznie kompatybilnym.
- Class 0 tags are passive tags that operate in UHF bands. The vendor preprograms them at the production factory. As a result, you can’t change the information stored in their memory.
- Class 1 tags can also operate in HF bands. In addition, they can be written only once after production. Many Class 1 tags can also process cyclic redundancy checks (CRCs) of the commands they receive. CRCs are a few extra bytes at the end of the commands for error detection.
- Class 2 tags can be written multiple times.
- Class 3 tags can contain embedded sensors that can record environmental parameters, such as the current temperature or the tag’s motion. These tags are semi-passive, because although they have an embedded power source, such as an integrated battery, they can’t initiate wireless communication with other tags or readers.
- Class 4 tags can initiate communication with other tags of the same class, making them active tags.
- Class 5 tags can provide power to other tags and communicate with all the previous tag classes. Class 5 tags can act as RFID readers.
Informacje przechowywane w tagach RFID
Pamięć taga RFID zwykle przechowuje cztery rodzaje danych: dane identyfikacyjne, które identyfikują podmiot, do którego przypisany jest tag (te dane mogą zawierać pola definiowane przez użytkownika, np. konta bankowe); dane uzupełniające, które dostarczają dalszych informacji o podmiocie; dane kontrolne, używane do wewnętrznej konfiguracji taga; oraz dane producenta, które zawierają unikalny identyfikator taga (UID) i szczegóły dotyczące produkcji, typu i dostawcy taga. Pierwsze dwa rodzaje danych znajdziesz we wszystkich komercyjnych tagach; dwa ostatnie mogą się różnić w zależności od dostawcy taga.
Standard ISO określa wartość Application Family Identifier (AFI), kod wskazujący rodzaj obiektu, do którego należy tag. Innym ważnym rejestrem, również określonym przez ISO, jest Data Storage Format Identifier (DSFID), który definiuje logiczny układ danych użytkownika.
Większość mechanizmów zabezpieczeń RFID ma sposoby ograniczania operacji odczytu i zapisu na każdym bloku pamięci użytkownika oraz na specjalnych rejestrach zawierających wartości AFI i DSFID. Te mechanizmy blokujące wykorzystują dane przechowywane w pamięci kontrolnej i mają domyślne hasła skonfigurowane przez dostawcę, ale pozwalają właścicielom tagów skonfigurować własne hasła.
Porównanie tagów niskiej i wysokiej częstotliwości
.png)
Low-Frequency RFID Tags (125kHz)
Low-frequency tags są często używane w systemach, które nie wymagają wysokiego poziomu bezpieczeństwa: dostęp do budynków, klucze interkomu, karty członkowskie do siłowni itp. Ze względu na większy zasięg są wygodne do stosowania w płatnych parkingach: kierowca nie musi zbliżać karty do czytnika, ponieważ jest wykrywana z większej odległości. Jednocześnie tagi niskoczęstotliwościowe są bardzo prymitywne i mają niską przepustowość danych. Z tego powodu niemożliwe jest wdrożenie złożonej dwukierunkowej komunikacji dla takich funkcji jak utrzymanie salda czy kryptografia. Tagi niskoczęstotliwościowe transmitują jedynie krótki ID bez mechanizmów uwierzytelniania.
Te urządzenia opierają się na technologii passive RFID i działają w zakresie od 30 kHz do 300 kHz, chociaż częściej stosuje się 125 kHz do 134 kHz:
- Long Range — niższa częstotliwość przekłada się na większy zasięg. Istnieją czytniki EM-Marin i HID, które działają z odległości do około metra. Często są wykorzystywane na parkingach.
- Primitive protocol — ze względu na niską przepustowość tych tagów mogą one jedynie przesyłać swój krótki ID. W większości przypadków dane nie są uwierzytelniane i nie są w żaden sposób chronione. Gdy tylko karta znajdzie się w zasięgu czytnika, zaczyna po prostu nadawać swój ID.
- Low security — Te karty można łatwo skopiować, a nawet odczytać z czyjejś kieszeni z powodu prymitywności protokołu.
Popularne protokoły 125 kHz:
- EM-Marin — EM4100, EM4102. Najpopularniejszy protokół na obszarze CIS. Można go odczytać z około metra ze względu na prostotę i stabilność.
- HID Prox II — low-frequency protocol wprowadzony przez HID Global. Ten protokół jest bardziej popularny w krajach zachodnich. Jest bardziej złożony, a karty i czytniki dla tego protokołu są stosunkowo drogie.
- Indala — bardzo stary low-frequency protocol wprowadzony przez Motorolę, a później przejęty przez HID. Rzadziej spotykany w praktyce w porównaniu do dwóch poprzednich, ponieważ wychodzi z użycia.
W rzeczywistości istnieje znacznie więcej protokołów niskoczęstotliwościowych. Jednak wszystkie używają tej samej modulacji na warstwie fizycznej i mogą być uważane, w pewnym sensie, za wariację wymienionych powyżej.
Atak
Możesz atakować te Tagi za pomocą Flipper Zero:
High-Frequency RFID Tags (13.56 MHz)
High-frequency tags są używane do bardziej złożonej interakcji czytnik–tag, kiedy potrzebujesz kryptografii, dużej dwukierunkowej transmisji danych, uwierzytelniania itp.
Zwykle występują w kartach bankowych, biletach komunikacji miejskiej i innych bezpiecznych przepustkach.
High-frequency 13.56 MHz tags are a set of standards and protocols. Często nazywa się je NFC, ale nie zawsze jest to poprawne. Podstawowy zestaw protokołów używany na poziomie fizycznym i logicznym to ISO 14443. Protokoły wyższego poziomu, jak również alternatywne standardy (np. ISO 19092), opierają się na nim. Wiele osób odnosi się do tej technologii jako Near Field Communication (NFC) — terminu dla urządzeń pracujących na częstotliwości 13.56 MHz.
.png)
Mówiąc najprościej, architektura NFC wygląda tak: protokół transmisji wybiera firma produkująca karty i implementuje go na podstawie niskopoziomowego ISO 14443. Na przykład NXP wynalazło własny protokół transmisji wysokiego poziomu o nazwie Mifare. Jednak na niższym poziomie karty Mifare bazują na standardzie ISO 14443-A.
Flipper może współdziałać zarówno z niskopoziomowym protokołem ISO 14443, jak i z protokołem transferu danych Mifare Ultralight oraz EMV używanym w kartach bankowych. Pracujemy nad dodaniem wsparcia dla Mifare Classic i NFC NDEF. Dokładne omówienie protokołów i standardów składających się na NFC zasługuje na osobny artykuł, który planujemy opublikować później.
Wszystkie karty wysokoczęstotliwościowe oparte na standardzie ISO 14443-A mają unikalny identyfikator chipu. Działa on jak numer seryjny karty, podobnie jak adres MAC karty sieciowej. Zwykle UID ma długość 4 lub 7 bajtów, ale rzadko może sięgać aż 10. UID nie są tajne i są łatwo czytelne, czasami nawet nadrukowane na samej karcie.
Wiele systemów kontroli dostępu opiera się na UID, aby uwierzytelnić i przyznać dostęp. Czasami dzieje się to nawet gdy tagi RFID obsługują kryptografię. Tego rodzaju nadużycie sprowadza je do poziomu głupich kart 125 kHz pod względem bezpieczeństwa. Karty wirtualne (np. Apple Pay) używają dynamicznego UID, aby właściciele telefonów nie otwierali drzwi swoją aplikacją płatniczą.
- Low range — karty high-frequency są zaprojektowane tak, aby trzeba było je umieścić blisko czytnika. To pomaga chronić kartę przed nieautoryzowanymi interakcjami. Maksymalny zasięg odczytu, który udało nam się osiągnąć, wynosił około 15 cm, i to przy użyciu niestandardowych czytników o dużym zasięgu.
- Advanced protocols — prędkości transferu danych do 424 kbps umożliwiają złożone protokoły z pełną dwukierunkową transmisją danych, co z kolei pozwala na kryptografię, transfer danych itp.
- High security — bezstykowe karty high-frequency nie ustępują inteligentnym kartom. Istnieją karty obsługujące kryptograficznie silne algorytmy, takie jak AES, oraz implementujące kryptografię asymetryczną.
Atak
Możesz atakować te Tagi za pomocą Flipper Zero:
Lub używając proxmark:
MiFare Classic offline stored-value tampering (broken Crypto1)
Gdy system przechowuje saldo pieniężne bezpośrednio na karcie MiFare Classic, często można je manipulować, ponieważ Classic używa przestarzałego szyfru Crypto1 firmy NXP. Crypto1 został złamany wiele lat temu, co umożliwia odzyskanie kluczy sektorów i pełny odczyt/zapis pamięci karty przy użyciu powszechnego sprzętu (np. Proxmark3).
Ogólny przebieg procesu (abstrahowany):
- Zgrać zawartość oryginalnej karty i odzyskać klucze
# Attempt all built-in Classic key recovery attacks and dump the card
hf mf autopwn
To zwykle odzyskuje klucze sektorów (A/B) i generuje pełny zrzut karty w folderze client dumps.
- Zlokalizuj i zrozum value/integrity fields
- Wykonaj legalne doładowania na oryginalnej karcie i zrób kilka zrzutów (przed/po).
- Wykonaj diff obu zrzutów, aby zidentyfikować zmieniające się bloki/bajty, które reprezentują saldo i ewentualne pola integralności.
- Wiele wdrożeń Classic albo używa natywnego "value block" encoding, albo implementuje własne sumy kontrolne (np. XOR salda z innym polem i stałą). Po zmianie salda przelicz odpowiednio bajty integralności i upewnij się, że wszystkie zduplikowane/komplementowane pola są spójne.
- Zapisz zmodyfikowany zrzut na zapisywalnym “Chinese magic” Classic tag
# Load a modified binary dump onto a UID-changeable Classic tag
hf mf cload -f modified.bin
- Sklonuj oryginalne UID, aby terminale rozpoznały kartę
# Set the UID on a UID-changeable tag (gen1a/gen2 magic)
hf mf csetuid -u <original_uid>
- Użycie przy terminalach
Czytelnicy, którzy ufają saldu zapisanemu na karcie i UID, zaakceptują zmodyfikowaną kartę. Obserwacje w terenie pokazują, że wiele wdrożeń ogranicza salda na podstawie szerokości pola (np. 16-bit fixed-point).
Uwagi
- Jeśli system używa natywnych Classic value blocks, pamiętaj o formacie: value (4B) + ~value (4B) + value (4B) + block address + ~address. Wszystkie części muszą się zgadzać.
- Dla niestandardowych formatów z prostymi sumami kontrolnymi, analiza różnicowa jest najszybszym sposobem wydedukowania funkcji integralności bez reverse-engineeringu firmware.
- Tylko UID-changeable tags ("Chinese magic" gen1a/gen2) pozwalają na zapis block 0/UID. Normalne Classic cards mają read-only UIDs.
For hands-on Proxmark3 commands, see:
Budowa przenośnego HID MaxiProx 125 kHz Mobile Cloner
Jeśli potrzebujesz long-range, battery-powered rozwiązania do zbierania identyfikatorów HID Prox® podczas red-team engagements, możesz przekształcić montowany na ścianie czytnik HID MaxiProx 5375 w samodzielny cloner mieszczący się w plecaku. Pełny mechaniczny i elektryczny opis krok po kroku jest dostępny tutaj:
References
- https://blog.flipperzero.one/rfid/
- Let's Clone a Cloner – Part 3 (TrustedSec)
- NXP statement on MIFARE Classic Crypto1
- MIFARE security overview (Wikipedia)
- NFC card vulnerability exploitation in KioSoft Stored Value (SEC Consult)
tip
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.