20:49
29/12/2013

Niewiele osób zdaje sobie sprawę z tego, że karty *SD to tak naprawdę małe komputery. Można nadpisać ich firmware i uruchomić na karcie własny kod, co umożliwia przeprowadzenie ataków Man in the Middle. Tak, nie przywidziało wam się, można uruchomić kod bezpośrednio w pamięci karty…

Po co karcie SD firmware i mikrokontroler?

Każda pamięć typu flash (tj. miroSD, SD, MMC, eMMC, iNAND) wyposażona jest nie tylko w chip “pamięci flash” ale również taniutki mikrokontroler, który zawiera firmware sterujący pracą karty (zazwyczaj 8051 lub ARM7 CPU 100MHz). Jest to konieczne ze względu na to, że pamięć typu flash prawie zawsze zawiera bad sectory. Zadaniem mikrokontrolera jest umożliwienie pracy algorytmom korekcji błędów, dzięki czemu poszatkowana bad sectorami karta pamięci przedstawia się systemowi operacyjnemu użytkownika jako ciągła, “dobra” pamięć.

Karty przebadane pod kątem możliwości przeprogramowania

Karty przebadane pod kątem możliwości przeprogramowania

Na marginesie, chińskie podróbki pendrive’ów i kart SD, które raportują systemowi większą liczbę gigabajtów niż rzeczywiście posiadają, to właśnie nic innego jak najtańsze i najmniejsze pamięci, którym przeprogramowano firmware tak, aby przedstawiał nośnik jako większy niż w rzeczywistości.

Fabryczne narzędzie do flashowania kart SD

Fabryczne narzędzie do flashowania kart SD

Firmware można “złośliwie” przeprogramować

Firmware niektórych mikrokonrolerów na kartach SD można “zaktualizować”. Jak informują badacze bunnie i xobs, którzy zajęli się głównie mikrokontrolerami producenta Appotech, aby wejść w procedurę aktualizacji firmware’u karty SD wystarczy wysłać do karty serię odpowiednich komend — chwilę później karta jest gotowa na przyjęcie 512 bajtów, które uruchomi w swoim środowisku.

Jakie ryzyko to stwarza? Atakujący po wgraniu swojego firmware’u na kartę ofiary może wykonywać klasyczne ataki MitM, w ramach których będzie przechwytywał dane i wysyłał fałszywe informacje do systemu ofiary. Przykładowo, atakujący może uniemożliwić usunięcie z karty konkretnych danych (np. klucza kryptograficznego) albo wręcz podstawić swój. W przypadku “usunięcie” złośliwy firmware oczywiście będzie raportował operację zakończoną powodzeniem, ale w rzeczywistości sektory zawierające klucz nie zostaną nadpisane.

Z tego powodu nie należy ufać jakimkolwiek algorytmom do “bezpiecznego” usuwania danych z nośników SD — jeśli chcecie się czegoś trwale pozbyć z takiej karty, najlepiej fizycznie ją zniszczcie.

To samo dotyczy dysków SSD i pendrive’ów

Badacze, którzy wyniki swoich badań przedstawili na trwającym właśnie konwencie 30C3 podkreślają, że chociaż badali mikrokontrolery tylko jednego producenta, to metoda ataku, którą przedstawili jest uniwersalna. Powinna zadziałać także na mikrokontrolery innych producentów kart SD ale również pendrive’ów i dysków SSD, bo i tam wykorzystywane są podobne rozwiązania.

Jednej osobie już udało się zainstalować Linuksa w pamięci dysku twardego (nie na “powierzchni” dysku twardego!).

Jeszcze jedno zastosowanie mikrokontrolera na kartach SD…

Badacze sugerują również, że skoro firmware kart SD można przeprogramować, to mogę one być dobrą (i dużo tańszą!) alternatywą dla modułów Arduino, które wykorzystują mniej wydajny mikrokontroler: 8 bit/16MHz.

Co ciekawe, to właśnie niski koszt mikrokontrolera na karcie SD (ok.15 centów) sprawia, że bardziej opłaca się go instalować na kartach niż przeprowadzać ręczną weryfikację bad sectorów w fabrykach. To wyjaśnia także, zagadkę dlaczego karty SD są tańsze niż czyste chipy pamięci flash o tej samej pojemności (te drugie po prostu nie zawierają ukrywanych programowo bad blocków).

PS. To już druga (i nie ostatnia) prezentacja z 30C3, którą opisujemy na łamach Niebezpiecznika (dostępny jest także jej streaming). Zapraszamy także do lektury opisu wykładu dotyczącego hackowania bankomatów poprzez port USB.

Przeczytaj także:

44 komentarzy

Dodaj komentarz
  1. To te karty mają w koncu procki 8051 czy ARM? Bo chyba nie oba jednocześnie?

    • Jeden lub drugi, tekst już został poprawiony.
      Warto by jednak uzupełnić, że te 100 MHz to jest takie nie do końca ścisłe. W oryginale czytamy: “In modern implementations, the microcontroller will approach 100 MHz performance levels, and also have several hardware accelerators on-die.” Więc nie wiadomo jaki mają zegar, tylko że wydajność jest porównywalna z czymś (ale nie napisano z czym), co chodzi na 100 MHz.

  2. Niektóre SD mają nawet wear leveling: http://electronics.stackexchange.com/a/27626/34837

  3. Zadaniem mikrokontrolera jest przede wszystkim umożliwienie komunikacji z kartą, czy to po protokole SPI czy to po protokole SD, w tym reagowanie na odpowiednie komendy, co zostało wspomniane w tekście. Korekcja błędów jest oczywiście ważna, ale to jest obok.

  4. ja tam zainstalowałem ubuntu (lekko okrojone) w mikrokontrolerze maojej karty microSD 2GB. proste to było nawet.

    • Nie pier*ol głupot. Ani na 8051 ani na arm7 nie da się zainstalować linuksa bo te rdzenie nie mają MMU

    • Warning! Troll detected ;)

    • Może masz na myśli instalację ubuntu(chociaż patrząc na rozmiar stawiam na podstawowego debiana) w pamięci karty jako bootowalny obraz – jak za pomocą unetbootin na pendriwe?

    • Nikt nie zrozumiał twojego żartu…

    • @klata: Na podobnej do eye-fi karcie Transcenda fabrycznie działa Linux, więc nie jest to takie oczywiste: http://hackaday.com/2013/08/12/hacking-transcend-wifi-sd-cards/

    • ‘klata’ a o uClinuxie słyszało? Wiele projektów DSP by nie działało, gdyby nie można było odpalić linuxa na procku bez MMU.

    • no własnie, mmu to nie jest need miozna emulować.
      a linuks wylądował na mikrokontrolerze za to sama pamięć karty czyli ok 2 GB to dostępna partycja.
      problem był z podłączniem wyjścia na monitor ale wystarczyło trochę pokombinować.
      taki sprzęt wystarczy np. jako kontroler tempertaury i połaczona z nim strona www

    • daj jakieś zdjęcie bo nie uwierzę…..

  5. http://hackaday.com/2013/08/12/hacking-transcend-wifi-sd-cards/
    w sumie już dawno się zabawili z trochę innym typem kard

  6. A co z kartami Compact Flash?

    • To samo, wszystkie tego rodzaju pamięci flash muszą posiadać mikrokontroler pozwalający komunikować im się przeznaczonym do tego celu interfejsem (chyba żadna kość flash nie obsługuje bezpośrednio interfejsu SD), do tego wprowadzający dodatkowe funkcje, jak wspomnianą korektę błędów, równoważenie zużycia, czasem TRIM, DRM i im podobne rzeczy. Z tego co wiem, karty SD można nawet zablokować hasłem.

  7. Grammar Nazi alert!

    A to jest po polsku “nie przewidzieliście się”? Nie powinno być “nie przywidziało się Wam”?

    • Nie. Użyta forma jest prawidłowa, a proponowana przez Ciebie nie. Zaimki osobowe piszemy z wielkiej litery tylko wtedy, kiedy zwracamy się do kogoś osobiście, czyli jeśli już powinno być “przewidziało się wam”.

    • Ale ja nie o zaimkach, tylko o tej konstrukcji
      “przewidzieliście się”. Choć co do Wam to moim zdaniem jest
      poprawnie pisać wielką literą:
      http://poradnia.pwn.pl/lista.php?id=8337 Zresztą pisząc do
      czytelników właśnie zwracamy się do nich osobiście.

    • PrzEwidzieć -> np. przewidzieć przyszłość,
      PrzYwidzieć = mieć omamy. PrzEwidzieć != PrzYwidzieć. QED.

  8. Karty SD żadną alternatywą dla Arduino nie są, ci badacze trochę popłynęli i nie ma sensu wspominać o tym w tekście. Arduino to mała płytka deweloperska z programatorem (a czasem bez jeśli uC wspiera sprzętowo SUB). A karta SD to… karta SD, czyli jakiś bliżej nieznany procesor, do którego nie ma wygodnego dostępu ani programatora, do którego nie ma narzędzi i dokumentacji. Gdzie tu alternatywa? Chodzi o prędkość? Przecież Arduino nie jest jedyną platformą dewelopersko-hobbystyczną, jest mnóstwo innych, także z szybszymi procesorami. Chodzi o cenę? Wydłubywanie dziwnego wynalazku z karty SD a potem męczenie się z nim nie jest w żaden sposób warte zaoszczędzenia tych kilku złotych.

  9. Jeszcze niech zrobia karte ze zmiennym CID i bedzie super….

  10. http://www.bunniestudios.com/blog/?p=3554

    • Przecież nie tylko ten link, ale i cały PDF oraz streaming wykładu jest podany w tekście…

  11. Znów da się czytać Niebezpiecznika w Operze Mini, wielkie dzięki.
    BTW: Nieraz czytałem ten blog w autobusie.

    • Nic nie zmieniliśmy, ani kiedy “przestało działać” ani teraz, kiedy “z powrotem wróciło” — wniosek: blame Opera ;)

  12. jakim programem można zwiększyć pamięć pendriva ?

    • Pill by V.i4gr4

    • nie moge tego znaleźć

    • no i chyba nie znajdziesz :)

    • Jesteście na bashu ;)

      http://bash.org.pl/4855196/

    • dzięki jestem sławny ale się pytałem na serio jak to można zrobić .

  13. […] ANT specjalizuje się także w rozwiązaniach pozwalających infekować BIOS. Zaleta: przetrwa całkowity “format” systemu. ANT-owcy są także w posiadaniu narzędzi umożliwiających podmianę firmware’u dysków twardych Western Digital, Seagate, Maxtor oraz Samsung (por. Hackowanie kart SD […]

  14. nie moge tego znaleźć

    • napisano o 13:37. Przypadek? Nie sądzę

  15. No i tego nie znajdziesz.

  16. To jest informacja warta uwagi? ktoś odkrył Amerykę znajdując kontroler w pamięci sd?
    Nie bardzo rozumiem sens tego artykułu. Dlaczego? Bo znów jest to bezmyślne przepisywanie..
    Może w celu uświadomienia ludzi że jest to możliwe. Takie założenie ma sens i jakiś cel..ale chyba warto zrobić to rzetelnie i podeprzeć konkretami.. a tak to wyszły nie do końca trzymający się kupy sensacja.”To samo dotyczy dysków SSD” sensacja .. i to wytłuszczona :-) dopiero ktoś w komentarzach napisał że HDD też :-)
    Już te 100MHz wołają o pomstę do nieba. nawet w źródle tego nie ma przecież :-p. I te “rozdłubane” karty.. reverse engineering poziom HARD :-)
    Tak swoją drogą..wystarczy się dogadać z jakimś chińskim producentem kart SD i można mieć w nich wszystko.. :-p. W jakim celu szukać podatnej karty.. pisać program na dany kontroler.. męczyć się.. kombinować. To już dawno zostało zrobione :-p
    Mogę próbkę SD do redakcji wysłać :-)
    Jeśli pisze się coś na specjalistyczny temat..myślę że warto mieć trochę specjalistycznej wiedzy. Lubię tą stronę ale w kwestiach związanych ze sprzętem poziom jest kiepski
    Może ja się czepiam.. ale zawsze ceniłem poziom informacji tutaj..
    Pozdrawiam

    • @Michał 2013.12.31 01:13
      “Jeśli pisze się coś na specjalistyczny temat..myślę że warto mieć trochę specjalistycznej wiedzy. Lubię tą stronę ale w kwestiach związanych ze sprzętem poziom jest kiepski
      Może ja się czepiam.. ale zawsze ceniłem poziom informacji tutaj..”

      Przyłącz się do Redakcji :) Proste. I nie raz, tylko w trybie ciągłym. Kiedy zabawa staje się obowiązkiem, bardziej się docenia, że ktoś jednak coś robi :) Też chętnie poczytam więcej technicznych aspektów różnych zagadnień.

  17. Czy jest program, który odblokuje możliwość zapisu na
    pendrive? W jakiś magiczny sposób mogę tylko odtwarzać pliki, a
    zapis niemożliwy?

    • hasło klucz:
      zobacz sobie format partycji ;)

  18. Przypomina się karta do dekoderów którą można(było) dostać na allegro. Był tam at90s8515 i jakaś pamięć na i2c w jednej strukturze. Co do pamięci flash to badbloki poza tym że tam są to też się robią. Procesor poza tym że musi zarządzać nimi ( są tam dodatkowe obszary do oznaczania bloków), dba o równomierny zapis tak aby uśrednić zużycie bloków. Inaczej bloki początkowe “wypaliły” by się szybciej (teoretycznie mają ok 10k cykli zapisu}.

    Co do płytek prototypowych – karta ich nie zastąpi bo ma za mało portów I/O no i opieranie o nie otwartych projektów ma mały sens gdyż producent może w dowolnym momencie zmodyfikować architekturę.

  19. Takie rzeczy tylko w trojanie androsyf

  20. @Michał Zaproponujesz jakieś lepsze strony w “kwestiach
    związanych ze sprzętem”? Chętnie poczytam.

  21. […] Jednym zdaniem: ta technika jest genialna (choć nie taka nowa — ataki np. podmieniające firmware w kartach SD na złośliwy opisywaliśmy 2 lata temu). […]

Twój komentarz

Zamieszczając komentarz akceptujesz regulamin dodawania komentarzy. Przez moderację nie przejdą: wycieczki osobiste, komentarze nie na temat, wulgaryzmy.

RSS dla komentarzy: