12 KiB
Pentesting RFID
{{#include ../../banners/hacktricks-training.md}}
Inleiding
Radio Frequency Identification (RFID) is die gewildste kortafstand radio-oplossing. Dit word gewoonlik gebruik om inligting wat 'n entiteit identifiseer, te stoor en oor te dra.
'n RFID-tag kan staatmaak op sy eie kragbron (active), soos 'n ingeslote battery, of sy krag van die lees-antenna ontvang deur die stroom wat geskep word uit die ontvangde radiogolwe (passive).
Klasse
EPCglobal verdeel RFID-tags in ses kategorieë. 'n Tag in elke kategorie het al die vermoëns wat in die vorige kategorie gelys is, wat dit agterwaarts versoenbaar maak.
- Class 0 tags is passive tags wat in UHF bands werk. Die verskaffer preprogrammeer dit by die vervaardigingsfabriek. Gevolglik kan jy nie verander die inligting wat in hul geheue gestoor is nie.
- Class 1 tags kan ook in HF bands werk. Daarbenewens kan hulle eenmalig geskryf word na produksie. Baie Class 1 tags kan ook cyclic redundancy checks (CRCs) van die opdragte wat hulle ontvang verwerk. CRCs is 'n paar ekstra bytes aan die einde van die opdragte vir foutopsporing.
- Class 2 tags kan meermale geskryf word.
- Class 3 tags kan ingeslote sensors bevat wat omgewingsparameters kan opneem, soos die huidige temperatuur of die tag se beweging. Hierdie tags is semi-passive, want alhoewel hulle 'n ingeslote kragbron het, soos 'n geïntegreerde battery, kan hulle nie inisieer draadlose kommunikasie met ander tags of readers nie.
- Class 4 tags kan kommunikasie met ander tags van dieselfde klas inisieer, wat hulle active tags maak.
- Class 5 tags kan krag aan ander tags voorsien en kommunikeer met al die vorige tag klasse. Class 5 tags kan as RFID readers optree.
Inligting gestoor in RFID-tags
'n RFID-tag se geheue stoor gewoonlik vier soorte data: die identifikasie-data, wat die entiteit waaraan die tag vasgemaak is identifiseer (hierdie data sluit gebruikersgedefinieerde velde in, soos bankrekeninge); die aanvullende data, wat verdere besonderhede oor die entiteit verskaf; die kontrole-data, wat gebruik word vir die tag se interne konfigurasie; en die tag se vervaardigersdata, wat 'n tag se Unique Identifier (UID) en besonderhede oor die tag se produksie, tipe, en verskaffer bevat. Jy sal die eerste twee soorte data in alle kommersiële tags vind; die laaste twee kan verskil afhangende van die tag se verskaffer.
Die ISO-standaard spesifiseer die Application Family Identifier (AFI) waarde, 'n kode wat die soort objek aandui waaraan die tag behoort. Nog 'n belangrike register, ook deur ISO gespesifiseer, is die Data Storage Format Identifier(DSFID), wat die logiese organisasie van die gebruikersdata definieer.
Die meeste RFID security controls het meganismes wat die lees of skryf operasies op elke gebruikersgeheueblok en op die spesiale registers wat die AFI en DSFID waardes bevat beperk. Hierdie slot meganismes gebruik data wat in die kontrolegeheue gestoor is en het padrone voorafgekonfigureer deur die verskaffer, maar laat die tag-eienaars toe om eie paswoorde te konfigureer.
Vergelyking van lae- en hoëfrekwensie-tags

Lae-frekwensie RFID-tags (125kHz)
Lae-frekwensie tags word dikwels gebruik in stelsels wat nie hoë sekuriteit vereis nie: gebou-toegang, interkom-sleutels, gimnasium-lidmaatskapkaarte, ens. Vanweë hul groter reikafstand is hulle gerieflik vir betaalde motorhuis-parkeerplekke: die bestuurder hoef nie die kaart naby die leser te bring nie, aangesien dit van verder af geaktiveer word. Tegelykertyd is lae-frekwensie tags baie primitief en het hulle 'n lae data-oordragspoed. Om daardie rede is dit onmoontlik om komplekse twee-weg data-oordrag vir dinge soos balansbestuur en kriptografie te implementeer. Lae-frekwensie tags stuur slegs hul kort ID sonder enige vorm van autentikasie.
Hierdie toestelle berus op passive RFID tegnologie en werk in 'n reeks van 30 kHz tot 300 kHz, alhoewel dit meer algemeen is om 125 kHz tot 134 kHz te gebruik:
- Lang Reikwydte — laer frekwensie vertaal na groter reikwydte. Daar is sommige EM-Marin en HID readers wat van 'n afstand tot ongeveer 'n meter werk. Hierdie word dikwels in motorparkeerareas gebruik.
- Primtiewe protokol — as gevolg van die lae data-oordragspoed kan hierdie tags slegs hul kort ID stuur. In meeste gevalle word data nie geverifieer nie en dit is op geen manier beskerm nie. Sodra die kaart in die reikwydte van die leser is, begin dit net om sy ID uit te stuur.
- Lae sekuriteit — Hierdie kaarte kan maklik gekopieer word, of selfs vanaf iemand anders se sak gelees word as gevolg van die protokol se primitiewe aard.
Gewilde 125 kHz protokolle:
- EM-Marin — EM4100, EM4102. Die gewildste protokol in CIS. Kan ongeveer van 'n meter gelees word vanweë sy eenvoud en stabiliteit.
- HID Prox II — low-frequency protokol bekendgestel deur HID Global. Hierdie protokol is meer gewild in Westerse lande. Dit is meer kompleks en die kaarte en readers vir hierdie protokol is relatief duur.
- Indala — baie ou low-frequency protokol wat deur Motorola bekendgestel is, en later deur HID verkry is. Jy sal dit minder waarskynlik in die veld teëkom in vergelyking met die vorige twee omdat dit uit gebruik raak.
In werklikheid is daar baie meer low-frequency protokolle. Maar hulle gebruik almal dieselfde modulering op die fisiese laag en kan in een of ander opsig as variasies van bogenoemde beskou word.
Aanval
Jy kan hierdie Tags met die Flipper Zero aanval:
{{#ref}} flipper-zero/fz-125khz-rfid.md {{#endref}}
Hoë-frekwensie RFID-tags (13.56 MHz)
Hoë-frekwensie tags word gebruik vir 'n meer komplekse reader-tag interaksie wanneer jy kriptografie, groot twee-weg data-oordrag, autentikasie, ens. benodig.
Dit word gewoonlik aangetref in bankkaarte, openbare vervoer, en ander veilige pases.
Hoë-frekwensie 13.56 MHz tags is 'n stel standaarde en protokolle. Hulle word gewoonlik na verwys as NFC, maar dit is nie altyd korrek nie. Die basiese protokolstel wat op die fisiese en logiese vlak gebruik word is ISO 14443. Hoëvlakprotokolle, sowel as alternatief standaarde (soos ISO 19092), is daarop gebaseer. Baie mense verwys na hierdie tegnologie as Near Field Communication (NFC), 'n term vir toestelle wat oor die 13.56 MHz frekwensie werk.

Om dit eenvoudig te stel, werk NFC se argitektuur so: die oordragprotokol word gekies deur die maatskappy wat die kaarte maak en geïmplementeer gebaseer op die lae-vlak ISO 14443. Byvoorbeeld, NXP het sy eie hoëvlakoordragprotokol uitgevind wat Mifare genoem word. Maar op die laer vlak is Mifare-kaarte gebaseer op die ISO 14443-A standaard.
Flipper kan met beide die lae-vlak ISO 14443 protokol kommunikeer, asook Mifare Ultralight data-oordragprotokol en EMV wat in bankkaarte gebruik word. Ons werk daaraan om ondersteuning vir Mifare Classic en NFC NDEF by te voeg. 'n Deeglike uiteensetting van die protokolle en standaarde wat NFC saamstel is die moeite werd vir 'n afsonderlike artikel wat ons beplan om later te publiseer.
Alle hoë-frekwensie kaarte gebaseer op die ISO 14443-A standaard het 'n unieke chip ID. Dit tree op as die kaart se seriële nommer, soos 'n netwerkkaart se MAC-adres. Gewoonlik is die UID 4 of 7 bytes lank, maar kan selde tot 10 gaan. UIDs is nie 'n geheim nie en hulle is maklik leesbaar, soms selfs op die kaart self gedruk.
Daar is baie toegangbeheer-stelsels wat op UID staatmaak om te autentiseer en toegang te verleen. Soms gebeur dit selfs wanneer RFID-tags kriptografie ondersteun. Sulke misbruik bring hulle terug na die vlak van dom 125 kHz kaarte in terme van sekuriteit. Virtuele kaarte (soos Apple Pay) gebruik 'n dinamiese UID sodat telefoon-eienaars nie deure met hul betaalapp gaan oopmaak nie.
- Lae reikwydte — hoë-frekwensie kaarte is spesifiek ontwerp sodat hulle naby die leser geplaas moet word. Dit help ook om die kaart teen ongemagtigde interaksies te beskerm. Die maksimum leesafstand wat ons kon bereik was ongeveer 15 cm, en dit was met pasgemaakte hoë-reikwydte lesers.
- Gevorderde protokolle — data-oordragspoed tot 424 kbps laat komplekse protokolle met volwaardige twee-weg data-oordrag toe. Wat op sy beurt kriptografie, data-oordrag, ens. toelaat.
- Hoë sekuriteit — hoë-frekwensie contactless kaarte is in geen opsig minderwaardige as smart cards nie. Daar is kaarte wat kriptografies sterk algoritmes soos AES ondersteun en asymmetriese kriptografie implementeer.
Aanval
Jy kan hierdie Tags met die Flipper Zero aanval:
{{#ref}} flipper-zero/fz-nfc.md {{#endref}}
Of gebruik die proxmark:
{{#ref}} proxmark-3.md {{#endref}}
MiFare Classic offline stored-value tampering (broken Crypto1)
Wanneer 'n stelsel 'n monetêre balans direk op 'n MiFare Classic kaart stoor, kan jy dit dikwels manipuleer omdat Classic NXP se verouderde Crypto1 cipher gebruik. Crypto1 is al jare gebreek, wat die herstel van sektor-sleutels en volle lees/skryf van kaartgeheue met kommersiële hardeware (bv., Proxmark3) toelaat.
End-to-end workflow (abstracted):
- Dump the original card and recover keys
# Attempt all built-in Classic key recovery attacks and dump the card
hf mf autopwn
Dit herstel tipies sector keys (A/B) en genereer 'n full-card dump in die client dumps folder.
- Lokaliseer en verstaan die value/integrity fields
- Voer legitime top-ups op die oorspronklike kaart uit en neem verskeie dumps (voor/na).
- Doen 'n diff van die twee dumps om die veranderende blocks/bytes te identifiseer wat die balans en enige integrity fields voorstel.
- Baie Classic deployments gebruik óf die native "value block" encoding óf bou hul eie checksums (bv., XOR van die balans met 'n ander field en 'n konstante). Nadat jy die balans verander het, herbereken die integrity bytes ooreenkomstig en verseker dat alle gedupliseerde/aanvullende fields konsekwent is.
- Skryf die gewijzigde dump na 'n writable “Chinese magic” Classic tag
# Load a modified binary dump onto a UID-changeable Classic tag
hf mf cload -f modified.bin
- Kloon die oorspronklike UID sodat terminale die kaart herken
# Set the UID on a UID-changeable tag (gen1a/gen2 magic)
hf mf csetuid -u <original_uid>
- Gebruik by terminale
Lesers wat op die balans op die kaart en die UID staatmaak, sal die gemanipuleerde kaart aanvaar. Veldwaarnemings toon dat baie uitrolle balanse beperk gebaseer op veldwydte (bv., 16-bit fixed-point).
Notas
- Indien die stelsel native Classic value blocks gebruik, onthou die formaat: value (4B) + ~value (4B) + value (4B) + block address + ~address. Al die dele moet ooreenstem.
- Vir custom formats met eenvoudige checksums is differential analysis die vinnigste manier om die integriteitsfunksie af te lei sonder reversing firmware.
- Slegs UID-changeable tags ("Chinese magic" gen1a/gen2) laat toe om block 0/UID te skryf. Normale Classic cards het read-only UIDs.
Vir hands-on Proxmark3 commands, sien:
{{#ref}} proxmark-3.md {{#endref}}
Bou 'n Draagbare HID MaxiProx 125 kHz Mobile Cloner
As jy 'n langafstand, op battery aangedrewe oplossing nodig het om HID Prox® badges te oes tydens red-team engagements, kan jy die muur-gemonteerde HID MaxiProx 5375 leser omskakel in 'n self-inkluderende cloner wat in 'n rugsak pas. Die volledige meganiese en elektriese deurloop is hier beskikbaar:
{{#ref}} maxiprox-mobile-cloner.md {{#endref}}
Verwysings
- 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)
{{#include ../../banners/hacktricks-training.md}}