Kormányablak, Ügyfélkapu, magyarorszag.hu, kormany.hu
KORMÁNYABLAK, ÜGYFÉLKAPU - A ZÁRT AJTÓK MÖGÖTT...
(nem hivatalos e-kormányzati témájú oldal)
  
BEMUTATKOZÁS 
E-KÖZIGAZGATÁS 
IT BIZTONSÁG 
  
































  Mottó:
A sportszerű küzdelem,
a fair play az a művészet,
amikor úgy kapunk hajba,
hogy egymás frizuráját
nem tesszük tönkre.
/Gerhard Bronner/
2012. augusztus 20.  
 MIFARE-play I. 
   
Figyelem! Az alábbi bejegyzésben kizárólag olyan adatok szerepelnek, amelyek nyilvános forrásokból is megismerhetők, azaz üzleti titkot nem sértenek!

A közelítőkártyák, az NFC-s technológia kapcsán Európában a Philips leányvállalata, az NXP által kifejlesztett MIFARE kártyák a legismertebbek. A tömegközlekedésben már számos helyen bizonyított a MIFARE Classic. A népszerűséggel együtt járt az is, hogy támadások célpontjává vált, és 2007-ben kiderítették, hogy mind a véletlenszám generálása, mind a saját fejlesztésű CRYPTO1 algoritmusa is kudarcott vallott. A hibák napvilágra kerülése után azonban az NXP gyorsan lépett, és piacra dobta a javított példányokat.

A MIFARE eszközöknél fejlesztői szemszögből nézve a legfontosabb az első lépés, azaz hogy lehet megszerezni a szükséges jogosultságokat pl. a kártya írásához. A többi már csak néhány írás-olvasás parancs kiadása...

A jelen bejegyzés a MIFARE Classic 4k (S70) modell dokumentációján (illetve egyéb nyilvános információkon) alapul, de a műveletek szempontjából ez nem jelent különbséget a MIFARE Classic 1k (S50) változathoz képest (legfeljebb a címzésekben, címzési tartományokban van eltérés).
A memória (EEPROM) felosztása:





Az egyes "sector"-ok utolsó "block"-ja tartalmazza az "Access Bits" értékeket, amelyek adott "sector"-ra vonatkozólag határozzák meg a hozzáférési beállításokat. Az "Access Bits" 4 byte, a "Key A" szimmetrikus kulcs 6 byte, a "Key B" szimmetrikus kulcs 6 byte.

Az "Access Bits" értékek az adott "sector"-t több tömbre osztják (pl. a C13, C23, C33 minden "sector" utolsó "block"-jára - a 3-ra, illetve a 15-re -, azaz pont az "Access Bits", "Key A" illetve "Key B" értékeket tartalmazó byte-okra vonatkoznak).



Az "Access Bits", "Key A", "Key B" értékeket tartalmazó "sector trailer block"-ra vonatkozó beállítások az alábbi táblázat mutatja be (pl. látható, hogy a C1, C2, C3 bitek "1 1 0", illetve "1 1 1" beállítása esetén a "Key A" és "Key B" utólag már nem módosítható és ki sem olvasható, illetve maguk az "Access Bits" értékek sem módosíthatók utólag).



A "Data" értékeket tartalmazó "data block"-ra vonatkozó beállítások az alábbi táblázat mutatja be (pl. látható, hogy a C1, C2, C3 bitek "0 1 1" beállítása esetén kizárólag a "Key B" segítségével lehet olvasni és írni az adatmezőket, azaz a "Key A" kulcsot nincs értelme kiadni pl. BKV e-jegyellenőr kézi gépére, fent lehet a "Key A" kulcsot tartani kizárólag a védett környezetben történő kártya-perszonalizálásra).



Az adott "sector"-hoz való hozzáférés lehetséges szabványos - ISO/IEC 7816-4 leírásnak megfelelő - APDU utasítások segítségével (PC/SC esetén), illetve pseudo-APDU utasításokat használva (nem PC/SC esetén).

Az APDU és pseudo-APDU utasítások mind az "OpenSC" révén, mind az ACS saját, "ACR122U PC/SC Scripting Tool" segédalkalmazásával kezelhetők.

Az alábbi példában az APDU utasítások lekérdezik a kártya 4 byte-os egyedi azonosítóját, majd a 0x00 "block"-hoz (amely a 0x00 "sector" része) kérnek hozzáférést a 6 byte-os "Key A" kulcsot használva, amelynek értéke "FF FF FF FF FF FF", hogy kiolvassák a 0x00 "block" tartalmát (16 byte-ot).







A példában szereplő APDU utasítások értelmezése az alábbiakban olvasható.

  1. APDU: FF CA 00 00 00


  2. APDU: FF 82 00 00 06 FF FF FF FF FF FF


  3. APDU: FF 86 00 00 05 01 00 00 60 00


  4. APDU: FF B0 00 00 10


Most már tudjuk, hogy lehet az elvártaknak megfelelően hozzáférni a kártya adataihoz. Na, de milyen alternatív utak létezhetnek a jogosultságok megszerzéséhez? A MIFARE Classic kártyával kapcsolatban először Karsten Nohl és Henryk Plötz ismertette 2007-ben a véletlenszám-generátor gyengeségeit. A CRYPTO1 nevű, NXP által fejlesztett szimmetrikus rejtjelező algoritmust is ízekre szedte 2008-ban a Flavio Gracia, Jaap-Henk Hoepman és Gerhard de Koning Gans alkotta triumvirátus. Az NXP az eseményekre reagálva egyrészt lecserélte az újabb kártyáinál (MIFARE Plus, MIFARE DESFire EV1) a CRYPTO1 algoritmust a jól bevált AES-re (a visszafelé való kompatibilitás miatt a MIFARE Classic kártyáknál erre nem volt lehetőség), másrészt javította a véletlenszám-generálást (ez viszont a 2010 után kiadott MIFARE Classic kártyákra is igaz). Ezt fontos megjegyezni, ugyanis kísérleteim alapján ez már önmagában is elég volt ahhoz, hogy legalábbis a jelenleg használt törési algoritmusok (pl. Andrei Costin: mfcuk vagy Pavol Lupták által vezetett Nethemba: mfoc) hatástalanok legyenek.

Ahhoz, hogy kezdődhessen a játék, először létre kellett hozni a környezetet. Ez egyáltalán nem volt triviális! Próbáltam Debian-on, illetve Ubuntu-n "berendezkedni", de sokadszor is bebizonyosodott, hogy érdemes a BackTrack-et használni (jelen esetben BackTrack 5 R2), mert azon - majdnem - pöccre működött minden!



A szoftverek mellett megfelelő hardverek is kellettek! Sok nyomozás és tesztelés alapján derült ki, hogy a tool-ok csak bizonyos eszközök, bizonyos verziójú driver-eivel működnek stabilan. A lényeg a lényeg: az olcsó, de sokat tudó ACR122-típusú olvasókból kellett egyet-egyet beszerezni az ACS-től, illetve az Alcatel-Lucent-től (az előbbihez nagyon jó segédprogramok vannak APDU-szintű kommunikációhoz, az utóbbival pedig stabilan fut az mfcuk :D). Nagyjából így nézett ki az arzenál:



Minden beállításra került, így tehát lehetett tenni egy próbát: megnéztem, hogy egy szűz kártyán az alapértelmezett kulccsal ("FF FF FF FF FF FF") tud-e valamit kezdeni az mfcuk!



A sikeres próba után már lehetett is kezdeni a kísérletezést az éles kártyákkal (pl. itt egy bukaresti tömegközlekedési kártyával). Sajnos, azonban ez már javított véletlenszám-generátorral volt megáldva, így 4 napig futott a törés, de nem hozta meg a várt eredményt.



Ha 2010 előtti MIFARE Classic kártyát használtam volna (pl. régebbi Oyster kártya a londoni tömegközlekedésből), akkor az alábbiakhoz hasonló képeket láttam volna:



És ha a kulcs megvan, és az authentikációt sikeresen le tudtuk zavarni, akkor írási jogosultságot is tudtunk szerezni...

Kapcsolódó anyagok:
 vissza 
   
  info@kormanyablak.org
info@ugyfelkapu.info