hacktricks/radio-hacking/pentesting-rfid.md

125 lines
12 KiB
Markdown

# Pentesting RFID
{% hint style="success" %}
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Wsparcie HackTricks</summary>
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się sztuczkami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
</details>
{% endhint %}
## Wprowadzenie
**Identyfikacja radiowa (RFID)** to najpopularniejsze rozwiązanie radiowe o krótkim zasięgu. Zwykle jest używane do przechowywania i przesyłania informacji, które identyfikują podmiot.
Tag RFID może polegać na **własnym źródle zasilania (aktywnym)**, takim jak wbudowana bateria, lub otrzymywać zasilanie z anteny odczytującej, wykorzystując prąd **indukowany z odebranych fal radiowych** (**pasywny**).
### 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.
* Tagi **Klasy 0** to **pasywne** tagi działające w pasmach **UHF**. Producent **wstępnie programuje** je w fabryce produkcyjnej. W rezultacie **nie można zmienić** informacji przechowywanych w ich pamięci.
* Tagi **Klasy 1** mogą również działać w pasmach **HF**. Ponadto mogą być **zapisywane tylko raz** po produkcji. Wiele tagów Klasy 1 może również przetwarzać **cykliczne sumy kontrolne** (CRC) poleceń, które otrzymują. CRC to kilka dodatkowych bajtów na końcu poleceń do wykrywania błędów.
* Tagi **Klasy 2** mogą być **zapisywane wielokrotnie**.
* Tagi **Klasy 3** mogą zawierać **wbudowane czujniki**, które mogą rejestrować parametry środowiskowe, takie jak aktualna temperatura lub ruch tagu. Tagi te są **półpasywne**, ponieważ chociaż **mają** wbudowane źródło zasilania, takie jak zintegrowana **bateria**, **nie mogą inicjować** bezprzewodowej **komunikacji** z innymi tagami lub czytnikami.
* Tagi **Klasy 4** mogą inicjować komunikację z innymi tagami tej samej klasy, co czyni je **tagami aktywnymi**.
* Tagi **Klasy 5** mogą dostarczać **zasilanie innym tagom i komunikować się ze wszystkimi poprzednimi klasami tagów**. Tagi Klasy 5 mogą działać jako **czytniki RFID**.
### Informacje przechowywane w tagach RFID
Pamięć tagu RFID zazwyczaj przechowuje cztery rodzaje danych: **dane identyfikacyjne**, które **identyfikują** **podmiot**, do którego tag jest przymocowany (dane te obejmują pola zdefiniowane przez użytkownika, takie jak konta bankowe); **dane uzupełniające**, które dostarczają **dalszych** **szczegółów** dotyczących podmiotu; **dane kontrolne**, używane do wewnętrznej **konfiguracji** tagu; oraz **dane producenta** tagu, które zawierają unikalny identyfikator tagu (**UID**) oraz szczegóły dotyczące **produkcji**, **typu** i **producenta** tagu. Pierwsze dwa rodzaje danych znajdziesz we wszystkich komercyjnych tagach; ostatnie dwa mogą się różnić w zależności od producenta tagu.
Standard ISO określa wartość identyfikatora rodziny aplikacji (**AFI**), kod, który wskazuje **rodzaj obiektu**, do którego tag należy. Innym ważnym rejestrem, również określonym przez ISO, jest identyfikator formatu przechowywania danych (**DSFID**), który definiuje **logiczne zorganizowanie 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 blokujące** wykorzystują dane przechowywane w pamięci kontrolnej i mają **domyślne hasła** wstępnie skonfigurowane przez producenta, ale pozwalają właścicielom tagów na **konfigurowanie niestandardowych haseł**.
### Porównanie tagów niskiej i wysokiej częstotliwości
<figure><img src="../.gitbook/assets/image (27).png" alt=""><figcaption></figcaption></figure>
## Tagi RFID o niskiej częstotliwości (125 kHz)
**Tagi niskiej częstotliwości** są często używane w systemach, które **nie wymagają wysokiego bezpieczeństwa**: dostęp do budynków, klucze do domofonów, karty członkowskie na siłownię itp. Dzięki większemu zasięgowi są wygodne w użyciu do płatnych parkingów: kierowca nie musi zbliżać karty do czytnika, ponieważ jest aktywowana z większej odległości. Jednocześnie tagi niskiej częstotliwości są bardzo prymitywne, mają niski wskaźnik transferu danych. Z tego powodu niemożliwe jest wdrożenie złożonego dwukierunkowego transferu danych, na przykład do utrzymywania salda i kryptografii. Tagi niskiej częstotliwości przesyłają tylko swoje krótkie ID bez żadnych środków uwierzytelniających.
Urządzenia te polegają na technologii **pasywnej** **RFID** i działają w **zakresie od 30 kHz do 300 kHz**, chociaż częściej 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ą czytniki EM-Marin i HID, które działają z odległości do jednego metra. Często są używane na parkingach.
* **Prymitywny protokół** — z powodu niskiego wskaźnika 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. Gdy tylko karta znajdzie się w zasięgu czytnika, zaczyna po prostu przesyłać swoje ID.
* **Niskie bezpieczeństwo** — te karty mogą być łatwo kopiowane, a nawet odczytywane z kieszeni kogoś innego z powodu prymitywności protokołu.
**Popularne protokoły 125 kHz:**
* **EM-Marin** — EM4100, EM4102. Najpopularniejszy protokół w WNP. Może być odczytywany z odległości około metra z powodu swojej prostoty i stabilności.
* **HID Prox II** — protokół niskiej częstotliwości wprowadzony przez HID Global. Protokół ten 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 protokół niskiej częstotliwości, który został wprowadzony przez Motorolę, a później przejęty przez HID. Rzadziej można go spotkać w terenie w porównaniu do poprzednich dwóch, ponieważ wychodzi z użycia.
W rzeczywistości istnieje znacznie więcej protokołów niskiej częstotliwości. Ale wszystkie one używają tej samej modulacji na warstwie fizycznej i mogą być uważane, w ten czy inny sposób, za wariację tych wymienionych powyżej.
### Atak
Możesz **zaatakować te tagi za pomocą Flipper Zero**:
{% content-ref url="../todo/radio-hacking/flipper-zero/fz-125khz-rfid.md" %}
[fz-125khz-rfid.md](../todo/radio-hacking/flipper-zero/fz-125khz-rfid.md)
{% endcontent-ref %}
## Tagi RFID o wysokiej częstotliwości (13.56 MHz)
**Tagi wysokiej częstotliwości** są używane do bardziej złożonej interakcji między czytnikiem a tagiem, gdy potrzebna jest kryptografia, duży dwukierunkowy transfer danych, uwierzytelnianie itp.\
Zwykle występują w kartach bankowych, transporcie publicznym i innych zabezpieczonych przepustkach.
**Tagi wysokiej częstotliwości 13.56 MHz to zestaw standardów i protokołów**. Zwykle określa się je jako [NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/), ale to nie zawsze jest poprawne. Podstawowy zestaw protokołów używanych na poziomie fizycznym i logicznym to ISO 14443. Protokóły na wyższym poziomie, a także alternatywne standardy (takie jak ISO 19092), opierają się na nim. Wiele osób odnosi się do tej technologii jako **komunikacji bliskiego zasięgu (NFC)**, terminu dla urządzeń działających na częstotliwości 13.56 MHz.
<figure><img src="../.gitbook/assets/image (22).png" alt=""><figcaption></figcaption></figure>
Mówiąc prosto, architektura NFC działa w ten sposób: protokół transmisji jest wybierany przez firmę produkującą karty i wdrażany na podstawie niskopoziomowego ISO 14443. Na przykład, NXP wynalazł własny protokół transmisji na wyższym poziomie o nazwie Mifare. Ale na niższym poziomie karty Mifare opierają się na standardzie ISO 14443-A.
Flipper może współdziałać zarówno z niskopoziomowym protokołem ISO 14443, jak i 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 spojrzenie na protokoły i standardy, które tworzą NFC, zasługuje na osobny artykuł, który planujemy opublikować później.
Wszystkie karty wysokiej częstotliwości oparte na standardzie ISO 14443-A mają unikalny identyfikator chipu. Działa on jako numer seryjny karty, jak adres MAC karty sieciowej. **Zwykle UID ma długość 4 lub 7 bajtów**, ale rzadko może wynosić **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, aby **uwierzytelnić i przyznać dostęp**. Czasami dzieje się to **nawet** wtedy, gdy tagi RFID **obsługują kryptografię**. Takie **niewłaściwe użycie** obniża je do poziomu głupich **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 mogli otwierać drzwi za pomocą swojej aplikacji płatniczej.
* **Niski zasięg** — karty wysokiej częstotliwości są specjalnie zaprojektowane tak, aby musiały być umieszczane 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 było z niestandardowymi czytnikami o dużym zasięgu.
* **Zaawansowane protokoły** — prędkości transferu danych do 424 kbps pozwalają na złożone protokoły z pełnoprawnym dwukierunkowym transferem danych. Co z kolei **umożliwia kryptografię**, transfer danych itp.
* **Wysokie bezpieczeństwo** — karty bezkontaktowe o wysokiej częstotliwości w żaden sposób nie ustępują kartom inteligentnym. Istnieją karty, które obsługują kryptograficznie silne algorytmy, takie jak AES, i wdrażają 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](../todo/radio-hacking/flipper-zero/fz-nfc.md)
{% endcontent-ref %}
Lub używając **proxmark**:
{% content-ref url="../todo/radio-hacking/proxmark-3.md" %}
[proxmark-3.md](../todo/radio-hacking/proxmark-3.md)
{% endcontent-ref %}
## Referencje
* [https://blog.flipperzero.one/rfid/](https://blog.flipperzero.one/rfid/)
{% hint style="success" %}
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Wsparcie HackTricks</summary>
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się sztuczkami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
</details>
{% endhint %}