ProHoster > Blog > administracja > Odwracanie i hakowanie samoszyfrującego zewnętrznego dysku twardego Aigo. Część 1: Sekcja części
Odwracanie i hakowanie samoszyfrującego zewnętrznego dysku twardego Aigo. Część 1: Sekcja części
Odwracanie i hakowanie zewnętrznych dysków samoszyfrujących to moje stare hobby. W przeszłości miałem okazję ćwiczyć z takimi modelami jak Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Niedawno kolega przywiózł mi kolejny eksponat: Patriot (Aigo) SK8671, który zbudowany jest według typowej konstrukcji - wskaźnik LCD i klawiatura do wprowadzania kodu PIN. Oto co z tego wyszło…
Dostęp do danych zapisanych na dysku, który rzekomo jest zaszyfrowany, następuje po wprowadzeniu kodu PIN. Kilka uwag wstępnych na temat tego urządzenia:
Aby zmienić kod PIN, należy przed odblokowaniem nacisnąć klawisz F1;
Kod PIN musi zawierać od 6 do 9 cyfr;
Po 15 błędnych próbach dysk zostanie wyczyszczony.
2. Architektura sprzętowa
Najpierw rozkładamy urządzenie na części, aby zrozumieć, z jakich elementów się składa. Najbardziej żmudnym zadaniem jest otwieranie obudowy: mnóstwo mikroskopijnych śrubek i plastiku. Po otwarciu obudowy widzimy co następuje (zwróć uwagę na pięciopinowe złącze, które wlutowałem):
2.1. Płyta główna
Płyta główna jest dość prosta:
Jego najbardziej godne uwagi części (patrz od góry do dołu):
Kontroler Jmicron JMS539 (specyfikacja) dla USB-SATA (U1);
Złącze USB 3 (J1).
Na dysku flash SPI przechowywane jest oprogramowanie układowe JMS539 i niektóre ustawienia.
2.2. Tablica wskaźników LCD
Na płycie LCD nie ma nic godnego uwagi.
Tylko:
Wskaźnik LCD niewiadomego pochodzenia (prawdopodobnie z zestawem chińskich czcionek); ze sterowaniem sekwencyjnym;
Złącze taśmowe do płyty klawiatury.
2.3. Płyta klawiatury
Kiedy przyjrzymy się klawiaturze, sprawy przybierają ciekawszy obrót.
Tutaj, z tyłu, widzimy złącze taśmowe, a także mikrokontroler Cypress CY8C21434 PSoC 1 (w dalszej części będziemy go nazywać po prostu PSoC)
CY8C21434 wykorzystuje zestaw instrukcji M8C (patrz dokumentacja). Na [stronie produktu]( (http://www.cypress.com/part/cy8c21434-24ltxi) wskazano, że obsługuje tę technologię CapSense (rozwiązanie firmy Cypress, dla klawiatur pojemnościowych). Tutaj widać pięciopinowe złącze, które wlutowałem - to standardowe podejście do podłączenia zewnętrznego programatora poprzez interfejs ISSP.
2.4. Patrząc na przewody
Zastanówmy się, co jest tutaj połączone. Aby to zrobić, po prostu przetestuj przewody za pomocą multimetru:
Objaśnienia do tego diagramu narysowanego na kolanie:
PSoC opisano w specyfikacji technicznej;
kolejne złącze, to po prawej, to interfejs ISSP, który zrządzeniem losu odpowiada temu, co o nim napisano w Internecie;
Złącze znajdujące się najbardziej na prawo to zacisk złącza taśmowego do płyty klawiatury;
Czarny prostokąt to rysunek złącza CN1, przeznaczonego do połączenia płyty głównej z płytką LCD. P11, P13 i P4 są podłączone do pinów PSoC 11, 13 i 4 na płycie LCD.
3. Kolejność kroków ataku
Teraz, gdy wiemy, z jakich elementów składa się ten dysk, musimy: 1) upewnić się, że podstawowa funkcja szyfrowania rzeczywiście jest dostępna; 2) dowiedzieć się, w jaki sposób generowane/zapisywane są klucze szyfrujące; 3) dowiedzieć się, gdzie dokładnie będzie sprawdzany kod PIN.
Aby to zrobić, wykonałem następujące kroki:
wykonał zrzut danych z dysku flash SPI;
próbował zrzucić dane z dysku flash PSoC;
zweryfikowano, że komunikacja pomiędzy Cypress PSoC i JMS539 faktycznie zawiera wciśnięte klawisze;
Upewniłem się, że przy zmianie hasła nic nie zostanie nadpisane na dysku flash SPI;
był zbyt leniwy, aby cofnąć oprogramowanie układowe 8051 z JMS539.
3.1. Pobieranie zrzutu danych z dysku flash SPI
Ta procedura jest bardzo prosta:
podłącz sondy do nóg pendrive'a: CLK, MOSI, MISO i (opcjonalnie) EN;
„podsłuchiwanie” komunikacji ze snifferem za pomocą analizatora logicznego (użyłem Sprzedam Logic Pro 16);
dekodować protokół SPI i eksportować wyniki do CSV;
skorzystaj decode_spi.rbaby przeanalizować wyniki i uzyskać zrzut.
Należy pamiętać, że to podejście sprawdza się szczególnie dobrze w przypadku kontrolera JMS539, ponieważ kontroler ten ładuje całe oprogramowanie z pendrive'a na etapie inicjalizacji.
Po zrobieniu zrzutu z pendrive'a SPI doszedłem do wniosku, że jego jedynym zadaniem jest przechowywanie oprogramowania układowego dla urządzenia sterującego JMicron, które jest wbudowane w mikrokontroler 8051. Niestety wykonanie zrzutu pendrive'a SPI okazało się bezużyteczne:
po zmianie kodu PIN zrzut dysku flash pozostaje taki sam;
Po etapie inicjalizacji urządzenie nie uzyskuje dostępu do dysku flash SPI.
3.2. Podsłuchiwanie komunikacji
Jest to jeden ze sposobów sprawdzenia, który chip jest odpowiedzialny za sprawdzanie komunikacji pod kątem interesującego czasu/treści. Jak już wiemy, kontroler USB-SATA podłączony jest do Cypress PSoC LCD za pomocą złącza CN1 i dwóch taśm. Dlatego podłączamy sondy do trzech odpowiednich nóg:
P4, ogólne wejście/wyjście;
P11, I2C SCL;
P13, I2C SDA.
Następnie uruchamiamy analizator logiczny Saleae i wpisujemy na klawiaturze: „123456~”. W rezultacie widzimy następujący diagram.
Widzimy na nim trzy kanały wymiany danych:
na kanale P4 jest kilka krótkich impulsów;
na P11 i P13 - prawie ciągła wymiana danych.
Powiększając pierwszy skok na kanale P4 (niebieski prostokąt na poprzednim rysunku), widzimy, co następuje:
Tu widać, że na P4 jest prawie 70ms monotonnego sygnału, który początkowo wydawał mi się pełnić rolę sygnału zegarowego. Jednak po pewnym czasie sprawdzając moje przypuszczenia, odkryłem, że nie jest to sygnał zegara, ale strumień audio wysyłany do głośnika wysokotonowego po naciśnięciu klawiszy. Dlatego ta część samego sygnału nie zawiera dla nas przydatnych informacji. Można go jednak wykorzystać jako wskaźnik informujący, kiedy PSoC zarejestruje naciśnięcie klawisza.
Jednak najnowszy strumień audio P4 jest nieco inny: jest to dźwięk dla „nieprawidłowego PIN-u”!
Wracając do wykresu naciśnięć klawiszy, powiększając wykres ostatniego strumienia audio (zobacz ponownie niebieski prostokąt), otrzymujemy:
Tutaj widzimy monotonne sygnały na P11. Wygląda więc na to, że to jest sygnał zegara. A P13 to dane. Zwróć uwagę, jak wzór zmienia się po zakończeniu sygnału dźwiękowego. Byłoby ciekawie zobaczyć, co się tutaj stanie.
Protokoły pracujące z dwoma przewodami to zazwyczaj SPI lub I2C, a specyfikacja techniczna Cypressa podaje, że te piny odpowiadają I2C, co, jak widzimy, jest prawdą w naszym przypadku:
Chipset USB-SATA stale odpytuje PSoC, aby odczytać stan klucza, który domyślnie wynosi „0”. Następnie po naciśnięciu klawisza „1” zmienia się on na „1”. Ostateczna transmisja bezpośrednio po naciśnięciu „~” będzie inna w przypadku wprowadzenia błędnego kodu PIN. Jednak w tej chwili nie sprawdzałem, co tak naprawdę jest tam transmitowane. Podejrzewam jednak, że jest mało prawdopodobne, aby był to klucz szyfrujący. W każdym razie zobacz następną sekcję, aby dowiedzieć się, jak usunąłem wewnętrzne oprogramowanie sprzętowe PSoC.