Hlavní navigace

Bezpečnost přístupových karet, aneb klonování prakticky

Jaromír Kuba

Před časem vyšel na Lupě článek „Když vám blondýna naklonuje kartu aneb Jak fungují útoky na české banky a firmy“ a vyvolal oprávněný rozruch. Dnes bych rád volně navázal návodem, jak si vytvořit funkční kopii přístupové karty.

Doba čtení: 4 minuty

Sdílet

Předesílám, že tento text se nezabývá kartami na frekvenci 125 kHz. V případě těchto karet odkáži ctěného čtenáře na vyhledávač, pro začátek stačí zadat „handheld rfid writer“. Nás budou zajímat novější karty, využívající frekvenci 13,56 MHz. Ty najdeme hlavně v novějších administrativních budovách a poznáme je i podle toho, že je lze „pípnout“ mobilním telefonem.

Pro úplnost je vhodné zmínit, že stejnou technologii (frekvenci) používají i různé „městské karty“ a karty pro hromadnou dopravu. Jejich klonování a úpravy ale nejsou cílem tohoto článku, nám jde o to trochu „vyděsit šéfy“ a dodat jim jako poděkování za zapůjčení karty ještě jednu rezervní. Zaručuji, že aplikováním v článku popsaných postupů získáte pozornost, zvláště máte-li IT bezpečnost v popisu práce. Vhodné i pro dodavatele GDPR služeb.

Co budeme potřebovat

V první řadě musíme mít tolerantního šéfa, klienta, nebo najít někoho, kdo je ochotný nechat si otestovat bezpečnost používaného řešení.

Dále potřebujete knihovnu libnfc a další nástroje, viz github.com/nfc-tools/libnfc.

Určitě se neobejdeme bez čtečky. Ta by měla umět „raw režim“, mně se osvědčila ACR122U (u značí USB). Bastlířům by ale mělo stačit cokoliv, co má ve specifikaci napsáno PN532. Důležité totiž je, aby s tím uměla pracovat knihovna  libnfc.

Poslední, co potřebujeme, jsou tzv. „NFC magic cards“. Jde o čínské kopie karet Mifare, kde lze nastavit UID. Originální karty mají tento jednoznačný identifikátor nastaven z výroby a měnit ho nelze.

Možná budeme potřebovat i vhodnou aplikaci pro mobil, např. NFC Tools. Tu využijeme v případě, kdy nám na recepci zapůjčí kartu a není čas provést klasické načtení přes počítač. Používá-li instituce např. Mifare Classic 1k, měli bychom mít díky výše zmíněné appce vše potřebné pro vytvoření funkční přístupové karty, pomocí které při příští návštěvě instituce projdeme turniketem a otevřeme si výtah nebo dveře bez zastávky v recepci. Platí zvláště v případě, kdy je bezpečnost založena výhradně na UID.

Cena za čtečku i karty se v případě nákupu z Číny pohybuje v řádu stokorun, jde tak o přijatelné náklady.

Nyní se již pusťme do díla.

Začínáme

Předpokládám, že karty i čtečka dorazily.


Nejdříve se musíme rozhodnout, zda chceme čtečku zprovoznit pod Linuxem, nebo preferujeme Windows.

Linux

Postup kompilace je detailně popsán na stránkách projektu a v dokumentaci. Výsledkem jsou funkční utility i knihovna libnfc, doporučuji sestavit si aktuální verzi z GitHubu. Pokud by něco nefungovalo, tak aplikujte patch, který zmiňuji níže.

Vysoce pravděpodobně nepůjde čtečku pod Linuxem okamžitě použít, neboť si jádro natáhne jiné ovladače, než potřebujeme. To vyřešíme vytvořením souboru /etc/modprobe.d/blacklist-libnfc.conf s následujícím obsahem a restartem počítače.

blacklist pn533_usb
blacklist pn533
blacklist nfc

Po restartu již bude vše normálně fungovat. Není to jediná cesta, ale blacklist mi přijde nejčistší.

Windows

Zde máme k dispozici skript mingw-cross-compile.sh, který udělá spoustu práce. Tedy udělal by, pokud by neskončil chybou. Tu vyřešíme úpravou souboru examples/CmakeLists.txt, konkrétně zakomentováním řádků „pn53×-diagnose, pn53×-sam, pn53×-tamashell“. Nepřijdeme o nic důležitého. Kdo by chtěl čistší řešení, lepší oprava je k dohledání mezi pull requesty na GitHubu.

Nyní již kompilace proběhne, ale může se stát, že každý pokus o komunikaci se čtečkou skončí chybou „Unable to claim USB interface“. Tento problém vyřešíme pomocí záplaty, která je součástí archivu ke stažení. Záplata nás zbaví i chyby „Unable to set alternate setting on USB interface“.

Pro urychlení testování jsem vše potřebné sestavil, archiv je možné stáhnout pomocí odkazu výše. Pro úplnost dodávám, že výsledné exe soubory vznikly díky Fedoře Remix for WSL a dostupným nástrojům pro cross-kompilaci.

Libusb a Windows

Před použitím nově sestavených utilit budeme muset změnit ovladač čtečky. S tím nám pomůže nástroj Zadig (nesmíme zapomenout zaškrtnout List all devices v menu Options), ke stažení na adrese zadig.akeo.ie.


Upozorňuji, že čtečka se po výměně ovladače chová nepatrně jinak. Nesvítí ani nepípá. Po úspěšném nastavení UID na nové kartě tak doporučuji ovladač vrátit zpět a zbylé nastavení dokončit např. pomocí programu NFC Tools ve Windows nebo v Linuxu (NFC Tools není jen aplikace pro Android).


Nastavení původního ovladače provedeme klasicky v Ovládacích panelech, viz obrázek níže (vybrán je ovladač od libnfc). Jak můžeme vidět, přes funkci Aktualizace ovladačů můžeme jednoduše volit mezi klasickým ovladačem a alternativním (po instalaci přes Zadig). Originální ovladač je na obrázku poslední.


Hotovo

Nyní by nám již nic nemělo bránit v použití aplikace nfc-mfsetuid pro nastavení UID nové karty. Použití je jednoduché, jako parametr zadáváme UID, které chceme nastavit.

Příklad: „nfc-mfsetuid 01234567“ (pro nastavení UID 01234567).


V některých případech se zápis nepodaří napoprvé, nebojte se příkaz zopakovat. Napodruhé to vyjde. Pro úplnost uvádím, že karta se na čtečku položí, následuje spuštění příkazu výše a po úspěšném naprogramování se karta odebere. Potřebujeme-li zkontrolovat úspěšnou úpravu UID, pomůže např nfc-list (na obrázku po nastavení UID 00700700).


Je to překvapivě snadné

Tento článek není návodem k jakémukoliv protizákonnému jednání, má za úkol upozornit na skutečnost, že ke zhotovení funkční přístupové karty vede často poměrně snadná cesta.

Diners Vánoce 2019

Proto položí-li vám někdo „jakoby náhodou“ na stůl mobil, podívejte se, zda pod tím telefonem není náhodou visačka s vaší přístupovou kartou. Nikdy nevíte.

V perexu zmiňovaný článek ze serveru Lupa.cz najdete zde: Když vám blondýna naklonuje kartu aneb Jak fungují útoky na české banky a firmy