Pentesting RFID

Reading time: 10 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Uvod

Radio Frequency Identification (RFID) je najpopularnije rešenje za radio komunikaciju na kratke distance. Obično se koristi za čuvanje i prenos informacija koje identifikuju entitet.

RFID tag može da se osloni na sopstveni izvor napajanja (active), kao što je ugrađena battery, ili da prima napajanje od antene čitača koristeći struju induciranu primljenim radio talasima (passive).

Klase

EPCglobal deli RFID tagove na šest kategorija. Tag u svakoj kategoriji poseduje sve mogućnosti navedene u prethodnoj kategoriji, što ih čini unazad kompatibilnim.

  • Class 0 tagovi su passive tagovi koji rade u UHF opsezima. Proizvođač ih preprograms u proizvodnoj fabrici. Kao rezultat, ne možete menjati informacije sačuvane u njihovoj memoriji.
  • Class 1 tagovi takođe mogu raditi u HF opsezima. Pored toga, mogu biti written only once nakon proizvodnje. Mnogi Class 1 tagovi mogu takođe obrađivati cyclic redundancy checks (CRCs) komandi koje primaju. CRC su nekoliko dodatnih bajtova na kraju komandi za detekciju grešaka.
  • Class 2 tagovi se mogu written multiple times.
  • Class 3 tagovi mogu sadržati ugrađene senzore koji beleže parametre okoline, kao što su trenutna temperatura ili kretanje taga. Ovi tagovi su semi-passive, jer iako have ugrađeni izvor napajanja, poput integrisane battery, oni can’t initiate bežičnu communication sa drugim tagovima ili čitačima.
  • Class 4 tagovi mogu inicirati komunikaciju sa drugim tagovima iste klase, što ih čini active tags.
  • Class 5 tagovi mogu obezbediti power to other tags and communicate with all the previous tag klase. Class 5 tagovi mogu delovati kao RFID readers.

Informacije sačuvane u RFID tagovima

Memorija RFID taga obično čuva četiri vrste podataka: identification data, koja identifies entitet na koji je tag pričvršćen (ti podaci uključuju polja definisana od strane korisnika, kao što su bankovni računi); supplementary data, koja daje further details u vezi sa entitetom; control data, koja se koristi za internu configuration taga; i manufacturer data taga, koja sadrži jedinstveni identifikator taga (UID) i detalje o njegovoj production, type, i vendor. Prve dve vrste podataka nalaze se u svim komercijalnim tagovima; poslednje dve se mogu razlikovati u zavisnosti od proizvođača taga.

ISO standard definiše vrednost Application Family Identifier (AFI), kod koji ukazuje kojoj vrsti objekta tag pripada. Još jedan važan registar, takođe definisan od strane ISO, je Data Storage Format Identifier(DSFID), koji definiše logičku organizaciju korisničkih podataka.

Većina RFID security controls ima mehanizme koji ograničavaju operacije read ili write na svakom korisničkom memorijskom bloku i na specijalnim registrima koji sadrže vrednosti AFI i DSFID. Ti lock mechanisms koriste podatke sačuvane u kontrolnoj memoriji i imaju default passwords koje je proizvođač unapred konfigurisao, ali dozvoljavaju vlasnicima tagova da configure custom passwords.

Poređenje niskofrekventnih i visokofrekventnih tagova

Low-Frequency RFID Tags (125kHz)

Niskofrekventni tagovi se često koriste u sistemima kojima nije potrebna visoka bezbednost: pristup zgradama, interkonske ključeve, članske karte teretana, itd. Zbog većeg dometa, pogodni su za naplatu parkiranja: vozač ne mora da približi karticu čitaču, jer se aktivira sa veće udaljenosti. Istovremeno, niskofrekventni tagovi su vrlo primitivni i imaju nisku brzinu prenosa podataka. Zbog toga je nemoguće implementirati složene dvosmerne prenose podataka za stvari kao što su održavanje stanja računa i kriptografija. Niskofrekventni tagovi prenose samo svoj kratak ID bez ikakvih sredstava za autentifikaciju.

Ovi uređaji se oslanjaju na passive RFID tehnologiju i rade u opsegu od 30 kHz do 300 kHz, iako je uobičajeno koristiti 125 kHz do 134 kHz:

  • Long Range — niža frekvencija se prevodi u veći domet. Postoje neki EM-Marin i HID čitači koji rade sa udaljenosti do jednog metra. Oni se često koriste za parkiranje.
  • Primitive protocol — zbog niske brzine prenosa podataka ovi tagovi mogu preneti samo svoj kratak ID. U većini slučajeva podaci nisu autentifikovani i nisu zaštićeni na bilo koji način. Čim je kartica u dometu čitača, ona jednostavno počinje da šalje svoj ID.
  • Low security — ove kartice se lako mogu kopirati, pa čak i očitati iz nečijeg džepa zbog primitivnosti protokola.

Popularni 125 kHz protokoli:

  • EM-Marin — EM4100, EM4102. Najpopularniji protokol u CIS regionu. Može se čitati sa oko metar zbog svoje jednostavnosti i stabilnosti.
  • HID Prox II — niskofrekventni protokol koji je uvela HID Global. Ovaj protokol je popularniji u zapadnim zemljama. Složeniji je i kartice i čitači za ovaj protokol su relativno skupi.
  • Indala — vrlo stara niskofrekventna specifikacija koju je uveo Motorola, a kasnije preuzela HID. Manje je verovatno da ćete je sresti u divljini u poređenju sa prethodna dva jer izlazi iz upotrebe.

U stvarnosti postoji mnogo više niskofrekventnih protokola. Ali svi oni koriste istu modulaciju na fizičkom sloju i mogu se smatrati, na ovaj ili onaj način, varijacijom gore navedenih.

Napad

Možete attack ove tagove pomoću Flipper Zero:

FZ - 125kHz RFID

High-Frequency RFID Tags (13.56 MHz)

Visokofrekventni tagovi se koriste za složeniju interakciju čitač–tag kada su potrebni kriptografija, veliki dvosmerni prenos podataka, autentifikacija itd.
Obično se nalaze u bankovnim karticama, javnom prevozu i drugim sigurnim propusnicama.

High-frequency 13.56 MHz tags are a set of standards and protocols. Često se nazivaju NFC, ali to nije uvek tačno. Osnovni skup protokola koji se koristi na fizičkom i logičkom nivou je ISO 14443. Protokoli višeg nivoa, kao i alternativni standardi (kao što je ISO 19092), zasnivaju se na njemu. Mnogi ljudi ovu tehnologiju nazivaju Near Field Communication (NFC), terminom za uređaje koji rade na frekvenciji 13.56 MHz.

Da pojednostavimo, arhitektura NFC-a funkcioniše ovako: protokol prenosa bira kompanija koja pravi kartice i implementira ga na osnovu niskonivnog ISO 14443. Na primer, NXP je izumeo sopstveni protokol prenosa višeg nivoa pod nazivom Mifare. Ali na nižem nivou, Mifare kartice su zasnovane na standardu ISO 14443-A.

Flipper može da komunicira i sa niskonivnim ISO 14443 protokolom, kao i sa Mifare Ultralight protokolom prenosa podataka i EMV koji se koristi u bankovnim karticama. Radimo na dodavanju podrške za Mifare Classic i NFC NDEF. Detaljan pregled protokola i standarda koji čine NFC zaslužuje zaseban članak koji planiramo kasnije objaviti.

Sve visokofrekventne kartice zasnovane na standardu ISO 14443-A imaju jedinstveni ID čipa. On funkcioniše kao serijski broj kartice, poput MAC adrese mrežnog adaptera. Obično je UID dug 4 ili 7 bajtova, ali retko može ići do 10. UID nije tajna i lako se čita, ponekad je čak i odštampan na samoj kartici.

Postoji mnogo sistema za kontrolu pristupa koji se oslanjaju na UID kako bi authenticate and grant access. Ponekad se to dešava čak i kada RFID tagovi support cryptography. Takva zloupotreba spušta ih na nivo glupih 125 kHz kartica po pitanju security. Virtualne kartice (kao Apple Pay) koriste dinamički UID kako vlasnici telefona ne bi otvarali vrata pomoću svoje aplikacije za plaćanje.

  • Low range — visokofrekventne kartice su dizajnirane da moraju biti postavljene blizu čitača. To takođe pomaže u zaštiti kartice od neovlašćenih interakcija. Maksimalni domet čitanja koji smo uspeli da postignemo bio je oko 15 cm, i to sa prilagođenim čitačima velikog dometa.
  • Advanced protocols — brzine prenosa podataka do 424 kbps omogućavaju složene protokole sa punim dvosmernim prenosom podataka. Što zauzvrat omogućava kriptografiju, prenos podataka, itd.
  • High security — visokofrekventne bežične kartice ni u kom pogledu nisu inferiorne u odnosu na smart kartice. Postoje kartice koje podržavaju kriptografski jake algoritme kao što je AES i implementiraju asimetričnu kriptografiju.

Napad

Možete attack ove tagove pomoću Flipper Zero:

FZ - NFC

Ili koristeći proxmark:

Proxmark 3

MiFare Classic offline stored-value tampering (broken Crypto1)

Kada sistem čuva novčani saldo direktno na MiFare Classic kartici, često ga možete manipulirati zato što Classic koristi NXP-ov zastareli Crypto1 šifarski algoritam. Crypto1 je već godinama probijen, što omogućava vraćanje ključeva sektora i potpuni read/write memorije kartice koristeći standardni hardver (npr. Proxmark3).

Celokupan tok rada (apstraktno):

  1. Napravite dump originalne kartice i povratite ključeve
bash
# Attempt all built-in Classic key recovery attacks and dump the card
hf mf autopwn

Ovo obično oporavi sector keys (A/B) i generiše full-card dump u client dumps folderu.

  1. Pronađite i razumite polja vrednosti/integriteta
  • Izvršite legitimna dopunjavanja (top-ups) na originalnoj kartici i napravite više dumps (pre/posle).
  • Uradite diff između ta dva dumps da identifikujete promenljive blocks/bytes koji predstavljaju stanje (balance) i bilo koja polja integriteta.
  • Mnoge Classic implementacije ili koriste nativno "value block" kodiranje ili razvijaju svoje checksums (npr. XOR stanja sa drugim poljem i konstantom). Nakon promene stanja, ponovo izračunajte integrity bajtove i proverite da su sva duplirana/komplementarna polja konzistentna.
  1. Upišite modifikovani dump na upisivu “Chinese magic” Classic tag
bash
# Load a modified binary dump onto a UID-changeable Classic tag
hf mf cload -f modified.bin
  1. Klonirajte originalni UID tako da terminali prepoznaju karticu
bash
# Set the UID on a UID-changeable tag (gen1a/gen2 magic)
hf mf csetuid -u <original_uid>
  1. Korišćenje na terminalima

Čitači koji veruju saldu na kartici i UID-u prihvatiće manipulisanu karticu. Terenska zapažanja pokazuju da mnoga postrojenja ograničavaju salda na osnovu širine polja (npr. 16-bit fixed-point).

Napomene

  • Ako sistem koristi native Classic value blocks, zapamtite format: value (4B) + ~value (4B) + value (4B) + block address + ~address. Svi delovi moraju da se poklapaju.
  • Za prilagođene formate sa jednostavnim checksum-ovima, diferencijalna analiza je najbrži način da se izvede funkcija integriteta bez reverz inženjeringa firmware-a.
  • Samo tagovi kod kojih se može promeniti UID ("Chinese magic" gen1a/gen2) dozvoljavaju pisanje bloka 0/UID. Normalne Classic kartice imaju UID-ove samo za čitanje.

Za praktične Proxmark3 komande, vidi:

Proxmark 3

Izrada prenosivog HID MaxiProx 125 kHz Mobile Cloner

Ako vam treba rešenje za rad na većim udaljenostima i napajano baterijama za sakupljanje HID Prox® bedževa tokom red-team angažmana, možete pretvoriti zidno montirani HID MaxiProx 5375 čitač u samostalan cloner koji staje u ranac. Kompletan mehanički i električni vodič je dostupan ovde:

Maxiprox Mobile Cloner


Izvori

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks