Pentesting RFID
Reading time: 12 minutes
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
Introduction
Radio Frequency Identification (RFID) è la soluzione radio a corto raggio più diffusa. Viene solitamente usata per memorizzare e trasmettere informazioni che identificano un'entità.
Un tag RFID può basarsi su una propria sorgente di alimentazione (active), come una batteria integrata, oppure ricevere la sua energia dall'antenna di lettura tramite la corrente indotta dalle onde radio ricevute (passive).
Classes
EPCglobal suddivide i tag RFID in sei categorie. Un tag di ciascuna categoria possiede tutte le capacità elencate nella categoria precedente, rendendolo retrocompatibile.
- Class 0 i tag sono passive che operano nelle bande UHF. Il produttore li preprogramma in fabbrica. Di conseguenza, non puoi cambiare le informazioni memorizzate nella loro memoria.
- Class 1 i tag possono anche operare nelle bande HF. Inoltre, possono essere scritti una sola volta dopo la produzione. Molti tag Class 1 possono anche elaborare cyclic redundancy checks (CRCs) dei comandi che ricevono. I CRC sono alcuni byte aggiuntivi alla fine dei comandi per il rilevamento degli errori.
- Class 2 i tag possono essere riscritti più volte.
- Class 3 i tag possono contenere sensori integrati che possono registrare parametri ambientali, come la temperatura attuale o il movimento del tag. Questi tag sono semi-passivi, perché anche se hanno una sorgente di alimentazione integrata, come una batteria, non possono iniziare comunicazioni wireless con altri tag o reader.
- Class 4 i tag possono iniziare la comunicazione con altri tag della stessa classe, rendendoli active tags.
- Class 5 i tag possono fornire alimentazione ad altri tag e comunicare con tutte le classi precedenti. I tag Class 5 possono agire come RFID readers.
Information Stored in RFID Tags
La memoria di un tag RFID solitamente conserva quattro tipi di dati: i dati di identificazione, che identificano l'entità a cui il tag è attaccato (questi dati includono campi definiti dall'utente, come conti bancari); i dati supplementari, che forniscono ulteriori dettagli sull'entità; i dati di controllo, usati per la configurazione interna del tag; e i dati del produttore, che contengono l'Unique Identifier (UID) del tag e dettagli riguardo alla produzione, tipo e vendor del tag. Troverai i primi due tipi di dati in tutti i tag commerciali; gli ultimi due possono variare in base al vendor del tag.
Lo standard ISO specifica il valore Application Family Identifier (AFI), un codice che indica il tipo di oggetto a cui il tag appartiene. Un altro registro importante, anch'esso specificato dall'ISO, è il Data Storage Format Identifier(DSFID), che definisce la organizzazione logica dei dati utente.
La maggior parte dei controlli di sicurezza RFID ha meccanismi che limitano le operazioni di lettura o scrittura su ogni blocco di memoria utente e sui registri speciali che contengono i valori AFI e DSFID. Questi meccanismi di lock utilizzano dati memorizzati nella memoria di controllo e hanno password predefinite configurate dal vendor ma permettono ai proprietari dei tag di configurare password personalizzate.
Low & High frequency tags comparison
.png)
Low-Frequency RFID Tags (125kHz)
I tag a bassa frequenza sono spesso usati in sistemi che non richiedono alta sicurezza: accessi agli edifici, citofoni, tessere di iscrizione alla palestra, ecc. Grazie alla loro maggiore portata, sono comodi da usare per i parcheggi a pagamento: il guidatore non deve avvicinare la tessera al reader, perché viene attivata da più lontano. Allo stesso tempo, i tag a bassa frequenza sono molto primitivi e hanno una bassa velocità di trasferimento dati. Per questo motivo è impossibile implementare trasferimenti dati bidirezionali complessi per funzioni come il mantenimento del saldo e la crittografia. I tag a bassa frequenza trasmettono solo il loro breve ID senza alcun mezzo di autenticazione.
Questi dispositivi si basano sulla tecnologia passive RFID e operano in un intervallo da 30 kHz a 300 kHz, anche se è più comune usare 125 kHz a 134 kHz:
- Lunga portata — frequenze più basse si traducono in maggiore portata. Esistono alcuni reader EM-Marin e HID che funzionano da una distanza fino a un metro. Questi sono spesso usati nei parcheggi per auto.
- Protocollo primitivo — a causa della bassa velocità di trasferimento dati questi tag possono solo trasmettere il loro breve ID. Nella maggior parte dei casi i dati non sono autenticati e non sono protetti in alcun modo. Appena la tessera è nel raggio del reader inizia semplicemente a trasmettere il suo ID.
- Bassa sicurezza — queste tessere possono essere facilmente clonate, o persino lette dalla tasca di qualcun altro a causa della primitivezza del protocollo.
Popular 125 kHz protocols:
- EM-Marin — EM4100, EM4102. Il protocollo più popolare nella CIS. Può essere letto da circa un metro grazie alla sua semplicità e stabilità.
- HID Prox II — protocollo a bassa frequenza introdotto da HID Global. Questo protocollo è più popolare nei paesi occidentali. È più complesso e le tessere e i reader per questo protocollo sono relativamente costosi.
- Indala — protocollo a bassa frequenza molto vecchio introdotto da Motorola e in seguito acquistato da HID. È meno probabile incontrarlo in natura rispetto ai due precedenti perché sta cadendo in disuso.
In realtà esistono molti altri protocolli a bassa frequenza. Ma usano tutti la stessa modulazione a livello fisico e possono essere considerati, in un modo o nell'altro, una variazione di quelli elencati sopra.
Attack
Puoi attaccare questi tag con il Flipper Zero:
High-Frequency RFID Tags (13.56 MHz)
I tag ad alta frequenza vengono usati per interazioni reader-tag più complesse quando sono necessarie crittografia, un ampio trasferimento dati bidirezionale, autenticazione, ecc.
Si trovano solitamente in carte bancarie, trasporto pubblico e altri pass per sicuri.
I tag ad alta frequenza 13.56 MHz sono un insieme di standard e protocolli. Vengono solitamente chiamati NFC, ma non è sempre corretto. L'insieme di protocolli di base usati ai livelli fisico e logico è ISO 14443. I protocolli di alto livello, così come standard alternativi (come ISO 19092), si basano su di esso. Molti chiamano questa tecnologia Near Field Communication (NFC), termine per dispositivi che operano sulla frequenza di 13.56 MHz.
.png)
Per semplificare, l'architettura di NFC funziona così: il protocollo di trasmissione è scelto dall'azienda che produce le tessere ed è implementato sulla base del livello basso ISO 14443. Per esempio, NXP ha inventato il proprio protocollo di trasmissione di alto livello chiamato Mifare. Ma a livello inferiore, le tessere Mifare si basano sullo standard ISO 14443-A.
Flipper può interagire sia con il protocollo di basso livello ISO 14443, sia con il protocollo di trasferimento dati Mifare Ultralight e EMV usato nelle carte bancarie. Stiamo lavorando per aggiungere il supporto per Mifare Classic e NFC NDEF. Un'analisi approfondita dei protocolli e degli standard che compongono NFC meriterebbe un articolo separato che prevediamo di pubblicare più avanti.
Tutte le tessere ad alta frequenza basate sullo standard ISO 14443-A hanno un ID chip univoco. Agisce come il numero seriale della tessera, come l'indirizzo MAC di una scheda di rete. Di solito, l'UID è lungo 4 o 7 byte, ma raramente può arrivare fino a 10. Gli UID non sono segreti e sono facilmente leggibili, a volte persino stampati sulla tessera stessa.
Ci sono molti sistemi di controllo accessi che si basano sull'UID per autenticare e concedere l'accesso. A volte ciò avviene anche quando i tag RFID supportano la crittografia. Tale abuso li porta allo stesso livello delle semplici tessere 125 kHz in termini di sicurezza. Le tessere virtuali (come Apple Pay) usano un UID dinamico in modo che i proprietari del telefono non aprano porte con la loro app di pagamento.
- Portata ridotta — le tessere ad alta frequenza sono progettate in modo che debbano essere avvicinate al reader. Questo aiuta anche a proteggere la tessera da interazioni non autorizzate. La portata massima di lettura che siamo riusciti a raggiungere è stata di circa 15 cm, e ciò con reader ad alta portata fatti su misura.
- Protocolli avanzati — velocità di trasferimento dati fino a 424 kbps permettono protocolli complessi con trasferimenti dati bidirezionali completi. Il che a sua volta consente crittografia, trasferimento dati, ecc.
- Alta sicurezza — le carte contactless ad alta frequenza non sono in alcun modo inferiori alle smart card. Ci sono carte che supportano algoritmi crittograficamente forti come AES e implementano crittografia asimmetrica.
Attack
Puoi attaccare questi tag con il Flipper Zero:
Oppure usando il proxmark:
MiFare Classic offline stored-value tampering (broken Crypto1)
Quando un sistema memorizza un saldo monetario direttamente su una carta MiFare Classic, spesso è possibile manipolarlo perché Classic usa il cifrario Crypto1 deprecato di NXP. Crypto1 è stato compromesso da anni, permettendo il recupero delle chiavi di settore e la lettura/scrittura completa della memoria della carta con hardware commerciale (es., Proxmark3).
End-to-end workflow (astratto):
- Effettua il dump della carta originale e recupera le chiavi
# Attempt all built-in Classic key recovery attacks and dump the card
hf mf autopwn
Questo tipicamente recupera le chiavi del settore (A/B) e genera un dump completo della scheda nella cartella client dumps.
- Individuare e comprendere i campi value/integrity
- Eseguire ricariche legittime sulla scheda originale e effettuare più dump (prima/dopo).
- Eseguire un diff tra i due dump per identificare i blocchi/byte che cambiano e che rappresentano il saldo e gli eventuali campi di integrità.
- Molte implementazioni Classic usano la codifica nativa "value block" oppure implementano checksum propri (es., XOR del saldo con un altro campo e una costante). Dopo aver modificato il saldo, ricalcola i byte di integrità di conseguenza e assicurati che tutti i campi duplicati/complementati siano coerenti.
- Scrivere il dump modificato su un tag Classic “Chinese magic” scrivibile
# Load a modified binary dump onto a UID-changeable Classic tag
hf mf cload -f modified.bin
- Clona l'UID originale in modo che i terminali riconoscano la tessera
# Set the UID on a UID-changeable tag (gen1a/gen2 magic)
hf mf csetuid -u <original_uid>
- Uso ai terminali
I lettori che si fidano del saldo sulla carta e dell'UID accetteranno la carta manipolata. Le osservazioni sul campo mostrano che molte installazioni limitano i saldi in base alla larghezza del campo (ad es., 16-bit fixed-point).
Note
- Se il sistema utilizza value blocks nativi Classic, ricorda il formato: value (4B) + ~value (4B) + value (4B) + block address + ~address. Tutte le parti devono corrispondere.
- Per formati custom con checksum semplici, l'analisi differenziale è il modo più veloce per ricavare la funzione di integrità senza effettuare il reverse engineering del firmware.
- Solo i tag con UID modificabile ("Chinese magic" gen1a/gen2) permettono la scrittura del block 0/UID. Le normali carte Classic hanno UID in sola lettura.
Per i comandi pratici di Proxmark3, vedi:
Costruire un cloner mobile portatile HID MaxiProx 125 kHz
Se hai bisogno di una soluzione long-range, battery-powered per raccogliere badge HID Prox® durante engagement red-team puoi convertire il lettore a muro HID MaxiProx 5375 in un cloner autonomo che entra in uno zaino. La guida completa meccanica ed elettrica è disponibile qui:
Riferimenti
- 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
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.