Bezpečnosť fyzického prístupu vs. Flipper Zero

V auguste 2022 bol vydaný nástroj Flipper Zero, ktorý zaujal entuziastov do hardwaru, rádiových / bezdrôtových technológii, fyzickej bezpečnosti aj hackingu a vyvoláva v komunite otázky ohľadom implikácií na fyzickú bezpečnosť. Čo nové tento nástroj ponúka? Dal by sa vytvoriť doma zo samostatných komponentov? Je to dobrý nápad? .. Uvidíme.

Flipper Zero je jedinečné spojenie viacerých technológii pre bezdrôtovú komunikáciu do malého zariadenia, ktoré je spoľahlivé, má vyladenú softwarovú stránku a dokonca sa na ňom zabávate s vlastným virtuálnym delfínom čo vyvoláva nostalgiu najmä v komunite, ktorá zažila originálne tamagochi.

Človek ktorý stojí za výrobou tohto nástroja to opísal takto:

„It is a Tamagotchi cyber-dolphin with its own personality, who can live in your pocket, and at the same time it's a Swiss army knife for pentesters.“

Odporúčam prečítať si sériu článkov k vývoju Flippera od jeho autora, ktorá je dostupná tu:

Flipper Zero
Flipper Zero

Flipper disponuje možnosťou čítať, zapisovať a emulovať rôzne typy frekvencií a protokolov, ktoré sa typicky používajú pre zabezpečenie fyzického prístupu napríklad do budov alebo áut. Rovnako sa však môžu používať aj pri bezkontaktných platbách.

Tieto technológie a možnosti pre ich analýzu a manipuláciu nie sú nič nové, existujú s nami už veľa rokov a v rámci HackingLabu sme už niektoré z nich aj skúmali:

Práca s nimi však doteraz bola pomerne nepraktická a vyžadovala ako špecializovaný hardware, tak aj pomerne slušnú zručnosť a know-how.

Flipper však dokázal to, že jednoduché možnosti na prácu s týmito technológiami sprístupnil masovo. Nehovoriac o tom, že obsahuje aj ďalšie špeciality ako Bad USB a U2F. Rovnako existuje šikovná mobilná aj desktopová aplikácia, ktorú je možné použiť napríklad na aktualizáciu firmwaru alebo prechádzanie uložených súborov.

Jednotlivé komponenty s ktorými dokáže Flipper pracovať si popíšeme nižšie.

Fyzická Bezpečnosť

Hlavná téma ktorá prichádza s týmto zariadením je fyzická bezpečnosť. Pre vstupy do budov, áut, skriniek v šatniach, garáží a mnoho ďalších sa najčastejšie používa istá forma prístupovej karty alebo vysielača.

Problém je, že bezpečnosť takýchto kariet a prístupov vo väčšine prípadov nemusí byť na vysokej úrovni.

Najjednoduchším prípadom, ktorý je aj veľmi rozšírený, je karta obsahujúca unikátny identifikátor, ktorý čítačka prečíta a pokiaľ ho pozná, tak povolí vstup. Tento identifikátor sa posiela nešifrovane a je replikovatelný. Typicky ide o 125kHz RFID karty, iButton kľúče, niektoré NFC karty a rovnako niektoré 433MHz vysielače. Všetko technológie, ktoré ovláda aj Flipper Zero. Pomocou tohto zariadenia je teda veľmi jednoduché takúto kartu prečítať a následne emulovať alebo klonovať.

Samozrejme existujú aj bezpečnejšie protokoly a prístupy postavené na týchto technológiách, ktoré už implementujú šifrovanie alebo tzv. plávajúce kľúče. S tými si už naše zariadenie jednoducho neporadí aj keď sa objavujú modifikácie firmwaru pre Flipper Zero, ktoré implementujú niektoré útoky.

Hardware

Ak sa vám podarí vychytiť moment kedy Flipper Zero nie je vypredaný (pol roka bol prakticky nedostupný), cena sa bude pohybovať okolo 170€ + DPH + doručenie (*2023).

Existuje alternatíva ak sa chceme ponoriť do sveta bezdrôtových komunikácií a zabezpečenia fyzického prístupu aj bez pomoci tohto zariadenia?

Flipper Zero obsahuje nasledujúce moduly:

  • 125kHz RFID
  • NFC
  • Sub-Ghz
  • Infrared
  • iButton
  • Ďalšie
    • BadUSB
    • U2F
    • GPIO
    • Bluetooth

Komponenty:

Všetky typy komunikácie, s ktorými vie Flipper Zero pracovať sú dobre známe a pomerne dlho a široko využívané. Skúsme si teda na vlastnú päsť poskladať komponenty, ktoré budú podporovať rovnaké možnosti komunikácie.

V množstve obchodov, ktoré ponúkajú elektronické súčiastky a komponenty, je možné tieto časti kúpiť samostatne a poskladať si z nich doma nástroj ktorý bude napodobňovať funkcionalitu Flippera.

Arduino Nano

Ako jadro a mozog zariadenia môžeme použiť napríklad:

  • Raspberry Pi / Raspberry Pi Zero
  • ESP32
  • Arduino / Arduino Nano

Pri našej ukážke použijeme Arduino Nano kvôli malým rozmerom, dostupnosti a nízkej cene. Ak by sme chceli zariadeniu dodať wifi a bluetooth moduly, môžeme použiť ESP32 čip prípadne (momentálne ťažko dostupné) Raspberry Pi.

Pre Arduino existuje množstvo knihovní a pripravených príkladov pre prácu s komponentami ktoré budeme používať. Bude teda jednoduchšie pracovať s nimi po softwarovej stránke a množstvo kódu ktoré bude potrebné upraviť alebo napísať pre jednoduchú demonštráciu je minimálne.

Arduino Nano
Arduino Nano

125kHz RFID

Používanie nízkofrekvenčných RFID kariet na prístup do budov a objektov je pomerne bežné. Vzhľadom na to, že RFID 125kHz pracuje na relatívne nízkej frekvencii, má obmedzený dosah a citlivosť, preto je potrebné mať čítače umiestnené v dostatočnej blízkosti identifikovaného objektu. Pre účely zabezpečenia prístupu môžu byť čipy používané napríklad vo forme kariet alebo kľúčeniek.

Technológia je nákladovo efektívna a ľahko použiteľná ale nepovažuje sa za bezpečnú. Tieto karty sú často náchylné na rôzne druhy útokov, ako napríklad odpočúvanie alebo klonovanie. Na zvýšenie bezpečnosti by mala byť použitá kryptografia, čím by sa znížila pravdepodobnosť neoprávneného prístupu. Je tiež dôležité mať pravidlá pre správu a ochranu RFID kariet a prístupových kódov, aby sa minimalizovalo riziko straty alebo krádeže týchto kariet.

Ako čítačku pre naše zariadenie môžeme použiť komponent RDM6300

RDM6300
RDM6300

Ako anténa nám poslúži medená cievka použitého modulu. Pomerne jednoduchý kód nižšie nám bude slúžiť na odchytenie identifikátoru uloženého na karte:

RFID Arduino Serial Monitor
RFID Arduino Serial Monitor

Kód ktorý sme takto zachytili potom môžeme nahrať na špeciálnu zapisovateľnú RFID kartu T5577, alebo emulovať iným zariadením / modulom pre Arduino (samotná čítačka RDM6300 emuláciu nepodporuje).

Software ktorý používa Flipper Zero nám jednoducho pomocou pár kliknutí umožní tieto karty prečítať, uložiť do pamäte a emulovať ich, prípadne zapísať na novú kartu.

Viac informácií k implementácií je možné nájsť tu

13.56MHz NFC

Vysokofrekvenčné, 13.56 MHz NFC karty sa tiež často používajú na prístup do budov a objektov, ale možnosti využitia sú oveľa širšie. Často sa používajú napríklad aj vo verejnej doprave alebo bezdotykových platbách . V porovnaní s nízkofrekvenčnými RFID kartami majú vysokofrekvenčné NFC karty typicky vyššiu úroveň bezpečnosti, ale aj tu sa nájdu štandardy ktoré sú zraniteľné, prípadne bezpečnostné prvky nepodporujú. Detailnejšie sme sa o NFC rozpísali v článku NFC je bezpečné! A nebo není?.

Ako čítačku pre naše zariadenie môžeme použiť komponent RFID-RC522, alternatívne PN532.

RC522 a PN532
RC522 a PN532

Pre demonštráciu použijeme karty Mifare Classic 1k a Mifare Ultralight. Pomocou kódu nižšie môžeme prečítať a emulovať tieto NFC karty

Mifare Classic NFC Arduino Serial Monitor
Mifare Classic NFC Arduino Serial Monitor
Ultralight NFC Arduino Serial Monitor
Ultralight NFC Arduino Serial Monitor

Rovnako ako pri nízkofrekvenčných RFID kartách je použitím Flippera možné tieto karty jednoducho čítať a uložiť do pamäte a následne emulovať alebo klonovať na novú kartu.

Viac informácií k implementácií je možné nájsť tu

433MHz Sub-GHz

433MHz komunikácia sa využíva na rôzne účely, ako napríklad pre riadenie brán, pre komunikáciu v rôznych priemyselných aplikáciách alebo na zabezpečenie vstupu do áut. Táto frekvencia má niekoľko výhod, medzi ktoré patrí schopnosť prenikať stenami a prekážkami, čo umožňuje väčšiu dosah a prenos signálu cez väčšie vzdialenosti.

V závislosti na implementácií konkrétneho systému môže byť úroveň zabezpečenia prenosu údajov rôzna. Pokiaľ sú údaje prenášané bez šifrovania a zabezpečenia proti tzv. „replay“ útokom, môže útočník ľahko získať prístup k systémom ktoré technológia zabezpečuje.

Pre prijímanie a odosielanie signálov v 433Mhz pásme použijeme v Arduine komponent „RF 433MHz Transmitter/Receiver Module“.

RF 433MHz Transmitter/Receiver Module
RF 433MHz Transmitter/Receiver Module

Ako príklad použijeme ovládač na osvetlenie ktorý som mal po ruke. Pomocou kódu nižšie môžeme odchytiť signál na zapnutie a vypnutie svetla a následne ho emulovať:

433MHz Receiver Arduino Serial Monitor
433MHz Receiver Arduino Serial Monitor

Aj pomocou tohto malého prijímača je možné signál zachytiť a odoslať na vzdialenosť vyše jedného metra.

Software Flippera implementuje jednoduché použitie pre prijímanie a odosielanie signálov a samozrejme ich ukladanie do pamäte. Navyše umožňuje napríklad analýzu frekvencie, zaznamenanie postupnosti viacerých signálov v rade a rôzne upravovanie konfigurácie prijímača a vysielača.

Viac informácií k implementácií je možné nájsť tu:

iButton

iButton je malé, odolné zariadenie, ktoré sa často používa pre bezkontaktnú identifikáciu a kontrolu prístupu do budov a objektov. iButton obsahuje unikátny identifikátor, ktorý sa používa na overenie totožnosti osoby, ktorá sa snaží získať prístup. Pre kontrolu prístupu sa často využíva integrovaný systém, ktorý dokáže overiť identitu užívateľa na základe identifikátoru a priradiť mu prístupové práva. Pre komunikáciu sa používa tzv. 1-Wire protokol, ktorý je jednoduchý na implementáciu a pre prenos dát mu stačí použitie jedného vodiča.

Pre prijímanie a odosielanie pomocou 1-Wire protokolu použijeme v Arduine komponent „TM probe DS9092“ pre jednoduchšiu manipuláciu. Stačilo by nám však použiť jeden dátový kábel a jeden kábel pre uzemnenie.

TM probe DS9092
TM probe DS9092

Pomocou kódu nižšie možeme čítať iButton identifikátory, prípadne ich klonovať na zapisovateľný RW1990 iButton:

iButton Arduino Serial Monitor
iButton Arduino Serial Monitor

Viac informácií k implementácií je možné nájsť tu:

Infrared (receiver)

Infračervená (IR) komunikácia sa využíva na rôzne účely, ako napríklad na prenos dát a ovládanie zariadení, ako sú televízory, audio systémy a klimatizácie. Infračervené ovládače sú jednoduché a lacné a umožňujú manipuláciu so zariadeniami, ktoré majú zabudovaný IR prijímač. Na druhej strane, IR komunikácia má svoje obmedzenia, ako je napríklad potreba neustáleho vizuálneho kontaktu medzi vysielačom a prijímačom a obmedzený dosah signálu. Preto sa používa tam, kde nie je potrebná veľká prenosová rýchlosť a vysielač a prijímač sa nachádzajú v rovnakej miestnosti alebo blízko seba.

Dáta sa typicky prenášajú bez šifrovania a je teda možné ich jednoducho zachytiť a opakovať. Typicky sa však táto technológia nepoužíva na zabezpečovanie prístupov a tak útoky nemajú veľký dopad. Môžeme tak napríklad prepínať kanály v TV, meniť nastavenie klimatizácie alebo vypnúť/zapnúť svetlo.

Pre prijímanie IR signálov použijeme v Arduine komponent VS1838B.

VS1838B
VS1838B

Jedná sa len o prijímač a tak signály nebudeme vedieť v tomto príklade poslať. Pomocou kódu nižšie môžeme odchytiť signál na zapnutie / vypnutie TV:

IR Arduino Serial Monitor
IR Arduino Serial Monitor

Software Flippera má v pamäti uložené rôzne univerzálne ovládače na TV, klimatizácie, projektory alebo audio prehrávače. To znamená, že bez toho aby ste museli komunikáciu najskôr zachytiť, vo väčšine prípadov bude Flipper schopný ovládať tieto zariadenia. Rovnako má možnosť naučiť sa a uložiť do pamäte nový ovládač na základe odchytávania IR signálov.

Viac informácií k implementácií je možné nájsť tu:

Zhrnutie

Kompletná cena pre komponenty ktoré sme spomenuli, ak nerátame drobnosti ako vývojovú dosku a káble na prepojenie by bola zhruba 25 – 40€ v závislosti od presného typu, ktorý vyberieme (niektoré z uvedených nemusia podporovať všetky funkcie čo Flipper). Problém nastáva ak by ste to chceli zakomponovať do jedného malého prenosného zariadenia. Len zapojenie v breadboarde už začína byť pomerne neprehľadné:

Breadboard

Samozrejme Flipper Zero ponúka dalšie časti ktoré sme nezahrnuli, prípadne používa vlastné navrhnuté komponenty aby ich bolo možné zabaliť do pomerne malého tela zariadenia. Ide napríklad o možnosť úložiska, batériu, hadrwarové tlačítka alebo LCD display. Kompletnú schému Flippera je možné nájsť v jeho dokumentácií.

Ak ďalej zarátame čas na vývoj spoľahlivého softwaru, ktorý podporuje všetky pokročilé funkcie, vývoj vlastných komponentov a PCB a samotný design Flippera, myslím že jeho cenovka je adekvátna.

Software je z môjho pohľadu jeden z najväčších „selling points“ zariadenia Flipper Zero. Vývoj softwaru ktorý bude spoľahlivo komunikovať so všetkými modulmi, bude jednoduchý na použitie a customizovateľný, zaberie veľké množstvo času. Ďalšia skvelá správa je, že software je open source.

Ak by sme si teda doma chceli poskladať zariadenie, ktoré by podporovalo všetky funkcie ktoré sme spomenuli, je to možné ale určite nie jednoduché. Všetky komponenty a možno aj väčšina zdrojového kódu už síce existuje, človek ich ale sám musí zlepiť dohromady a rozbehnúť, čo určite nie je pre každého. Flipper Zero dáva túto možnosť do rúk všetkým a jednoducho.

Záver

Tento článok nebol vyčerpávajúcim prehľadom všetkých funkcií Flippera. Chceli sme poukázať na fakt, že tieto technológie a bezpečnostné chyby v nich existujú už dlho a útočníci ich aj doteraz boli schopní zneužívať aj vlastnými DYI komponentami a nástrojmi.

Flipper ani nemá slúžiť ako profesionálny nástroj na testovanie bezpečnosti. V tejto oblasti existujú špecializované nástroje ako napríklad Proxmark na testovanie RFID/NFC alebo HackRF One na testovanie širokého rozsahu bezdrôtových signálov.

Nástroj Flipper Zero zmenil to, že sprístupnil možnosť zneužiť tieto chyby jednoduchšie aj bežným užívateľom, ktorí by sa k tomu pred tým nedostali. Tým nechcem tvrdiť, že toto je jeho primárna funkcia ale sme na stránke HackingLabu, tak sa zameriame na implikácie pre bezpečnosť.

Vo svete softwaru je bežné a žiadané, že existujú dostupné nástroje na testovanie bezpečnostných chýb. Tu je ale (teoreticky) jednoduchšie, tieto chyby opravovať a tlačiť aktualizácie a záplaty chýb globálne. Vo svete fyzickej bezpečnosti toto môže byť problém. Vymeniť systém pre vstup na miliónoch budovách nie je jednoduché. Ak existuje zariadenie ako Flipper Zero, ktoré dovolí slabšiu bezpečnosť jednoducho obísť, bude sa musieť táto bezpečnosť zvyšovať čo je na jednu stranu dobrá správa, otázka je ale ako dlho to môže trvať. Vo veľkom množstve prípadov to ani samotný užívateľ opraviť nevie – napr. nájomník bytu, hosť v hoteli atď.

Na túto tému je veľa rôznych názorov a každý z nich obsahuje kus pravdy. Ku ktorému sa viac prikláňate vy?