Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
What The Fudan!? – czyli jak produkt kompatybilny z MIFARE Classic wprowadził backdoor
Karty MIFARE Classic znać powinien praktycznie każdy, a już na pewno każdy choć raz trzymał takową w ręce – są one używane bardzo często w systemach kontroli dostępu, kontroli czasu pracy, jako bilety transportu publicznego oraz parkingowe, klucze hotelowe, karnety narciarskie czy basenowe oraz mają wiele innych aplikacji. Dla osób bardziej interesujących się tematem wiadomym jest, że system tych tagów RFID ma wiele podatności, o czym zresztą opowiadałem na ostatniej edycji MSHP we wrześniu 2024 w Krakowie. Tymczasem odkąd przygotowywałem swoje wystąpienie do momentu jego wygłoszenia badacze odkryli zupełnie nową “ciekawostkę” związaną z tym systemem.
MIFARE – krótka powtórka
Zacznijmy od krótkiego przypomnienia – MIFARE to standard kart bezstykowych pracujących na częstotliwości nośnej 13.56 MHz, który został wprowadzony przez firmę NXP (niegdyś Phillips) w 1994 roku. Pierwszym systemem tej klasy jest MIFARE Classic, który po dzień dzisiejszy jest chyba najbardziej popularnym standardem pracującym w tym systemie.
Karty posiadają 1/2/4 kB pamięci, podzielonej na bloki i sektory. Każdy sektor zabezpieczony jest dwoma 48-bitowymi kluczami (A oraz B), które mogą być niezależnie konfigurowane dla przyznawania różnych poziomów dostępu do danych. Przykładowo A może służyć tylko do odczytu, zaś B do odczytu i zapisu. Karty posiadają także swój numer identyfikacyjny (UID) oraz inne dane producenta, przechowywane w bloku 0, sektor 0, które nie mogą być zmodyfikowane przez użytkownika.
Możliwość przechowywania danych na kartach umożliwia ich działanie w systemach offline, gdzie możliwe jest uwierzytelnianie pewnych akcji i ich liczenie na podstawie tylko danych zawartych na karcie – bez konieczności kontaktu z jakiś centralnym systemem. Wykorzystanie dwóch kluczy zapewnia brak konieczności używania klucza do zapisu w czytnikach poza punktami sprzedaży. Co więcej, klucze nie są wymieniane bezpośrednio – stosowany jest algorytm uwierzytelniania i szyfrowania oparty o liczby pseudolosowe. Wszystko to miało zapewnić nam naprawdę elastyczny i bezpieczny system, ale…
Wszystko co słyszymy przed “ale” jest nieważne…
No niestety to powiedzenie tu sprawdza się bardzo dobrze. Już w okolicach 2007 roku prowadzone były intensywne prace badawcze nad systemami MIFARE. Od tego czasu dokonanych zostało naprawdę wiele odkryć, które dodatkowo zostały zaimplementowane w postaci gotowych do użycia narzędzi. Jednym z takich urządzeń jest Proxmark3 wraz z oprogramowaniem przygotowywanym między innymi przez jednego z bardziej znanych badaczy tej tematyki, Iceman’a. Ataki, których można dokonać opierają się na tych wymagających jedynie posiadania karty, jak i bardziej wyrafinowanych, opartych na podsłuchu komunikacji oryginalnego czytnika z kartą lub emulacji karty. Właśnie o takich atakach opowiadałem na MSHP, ale w skrócie możemy ograniczyć się do kilku faktów i wniosków:
- Jeśli uzyskamy choć jeden klucz do karty MIFARE Classic (oraz niektórych kart MIFARE Plus skonfigurowanych w konkretne tryby kompatybilności wstecznej) jest bardzo prawdopodobne, że po zastosowaniu ataków typu Nested uzyskamy wszystkie klucze zabezpieczające daną kartę.
- W niektórych tagach możemy wykorzystać wady generatora liczb pseudolosowych (PRNG) aby uzyskać jeden z kluczy. Potem już tylko wystarczy przeprowadzić atak jak w punkcie pierwszym i gotowe!
- Wiele systemów używa domyślnych kluczy (dostarczanych przez producentów całych systemów i często wymienianych nawet w instrukcjach, z uprzejmą prośbą o zmianę na własne, która często jest ignorowana), kluczy fabrycznych (czyli 0xFF…FF). Ponadto w Internecie łatwo znaleźć różne bazy już złamanych kluczy, których sprawdzenie zajmuje co najwyżej parę minut. Co więcej – często systemy używają identycznych kluczy dla całego systemu, a nie, jak to jest zalecane, używanie kluczy generowanych dynamicznie na podstawie UID karty. Potem już tylko wystarczy przeprowadzić atak jak w punkcie pierwszym i gotowe!
- Jeśli nie uda nam się w punktach 2 i 3 – możemy użyć Proxmark3 lub Flippera Zero do podsłuchania transmisji z czytnikiem i pozyskania klucza w ten sposób. Potem już tylko wystarczy przeprowadzić atak jak w punkcie pierwszym i gotowe!
- Na rynku są dostępne różne karty “magiczne”, które pozwalają na zmianę całego bloku producenta, w tym numeru UID.
Z powyższego niestety wynika, że jeśli nie stosujemy odpowiednio zaawansowanego systemu oprogramowania bazującego na kartach MIFARE Classic to nasz system nie jest zbyt bezpieczny.
O co chodzi z tym Fudan?
Powszechnie wiemy, że produkty odnoszące sukces bardzo szybko doczekują się tańszych klonów, czy, żeby to ładnie powiedzieć, produktów kompatybilnych – nie inaczej stało się w wypadku systemu MIFARE Classic. Jedną z firm, która zaczęła produkować takie kompatybilne produkty jest Shanghai Fudan Microelectronics.
Czy to źle, że mamy klony? Niekoniecznie – często to mechanizm obniżający cenę produktu i ograniczający monopol jednego producenta. Jednak jak zawsze za to płacimy swoją cenę. Czasem będzie to niepełna kompatybilność, a czasem… inne niespodzianki, takie jak backdoor odkryty w badaniach wspomnianych na początku tego artykułu.
Żeby już nie przedłużać – przejdźmy do sedna sprawy. Zmieniając jeden bit w komendach stanowiących sekwencję autoryzacji dostępu do karty (dokładnie w miejscu, w którym przekazuje się numer klucza), możemy użyć klucza – backdooru do odczytu zawartości danego bloku (poza blokami z innymi hasłami) – bez konieczności znania właściwego, zaprogramowanego na karcie klucza A albo B. Klucz – backdoor oraz metoda jego użycia nie są oczywiście zgodne ze standardem komunikacji z kartami MIFARE Classic! Sam klucz ten zaszyty jest na etapie produkcji dosyć głęboko w układzie scalonym będącym sercem karty i na tę chwile nie są znane żadne metody jego zmiany, ani dokładna lokalizacja jego przechowywania. Zidentyfikowano, że producent używa kilku różnych kluczy typu backdoor w zależności od modelu/serii układu. Co więcej kluczy tych można potencjalnie użyć jako znanego klucza w atakach typu Nested (tego co prawda nie udało mi się jak na razie odtworzyć na moim biurku).
W więc zacznijmy – wysyłamy komendę hf mf info
– najnowsza wersja oprogramowania Iceman’a do Proxmarka3 wykrywa podatne karty i identyfikuje klucz – backdoor.
Następnie używamy komendy do odczytu bloku danych posługując się kluczem backdoor:
hf mf rdbl --blk 1 -c 4 -k A31667A8CEC1
Parametr -c 4
powoduje właśnie ustawienie wspomnianego wcześniej bitu, w celu użycia klucza backdoor zamiast jednego z kluczy A/B zapisanych na karcie.
Konkluzje? Zmieszany, nie wstrząśnięty…
Cóż, to tylko kolejna metoda ataku na wysłużone karty MIFARE Classic, nic nowego, ale z drugiej strony jest to bardzo interesujące odkrycie. Odkrycie, którego dokonano dopiero ładnych parę lat od momentu pojawienia się na rynku tych kompatybilnych kart. To daje do myślenia ile tego typu backdoorów w wielu kompatybilnych produktach jeszcze czeka na odkrycie? Nawet jeśli decydujemy się na użycie oryginalnych kart – jeśli będziemy “na celowniku” ktoś może przecież zinfiltrować nasz łańcuch dostaw…
Najlepszym dowodem na to, jak daleko dotarły omawiane “karty z Fudan” jest fakt, że w swoim zbiorze kart zakupionych do testów znalazłem pewną ilość (5-10% posiadanych kart typu MIFARE Classic) takich z backdoorem. Co więcej, zidentyfikowałem, że jedna instytucja używa takich kart, na szczęście w zupełnie nie krytycznej aplikacji, chociaż kupowała je z dosyć zaufanego źródła. Cała zakupiona partia okazała się podatna…
Mój oryginalny tekst na ten temat: https://net21.pl/2024/10/04/mifare-fudan-backdoor-what-the-fudan/
Piotr Rzeszut
Ładne znalezisko. Pewnie poszukowanie trefnych partii zajmie kolejne lata.
Czy można to porównać do sytuacji, kiedy dostajemy klucz prywatny od dostawcy, zamiast samemu go generować na zaufanym urządzeniu? To się bardzo często zdarza u dostawców certyfikatów ssl. Tyko raz spotkałem się z sytuacją, kiedy dostawca nawet nie przewidywał możliwości wygenerowania klucza, ale oczekiwał pliku z żądaniem certyfikatu.
Zapodaj dostawcę, jeśli możesz.
To bardziej jakby Twoje dane udało się odczytać dwoma kluczami prywatnymi – Twoim i jakimś znanym tylko dostawcy 😎.
Co do poszukiwań to po pierwsze administratorzy systemów musieli by chcieć. A z chęciami i świadomością podatności w używanych systemach jest słabo…