Rewers i hakowanie samoszyfrującego zewnętrznego dysku twardego Aigo. Część 1: Rozbieramy na części

Odwracanie i hakowanie zewnętrznych napędów samoszyfrujących to moje długoterminowe hobby. W przeszłości miałem okazję pracować z takimi modelami jak Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Ostatnio mój kolega przyniósł mi jeszcze jeden eksponat: Patriot (Aigo) SK8671, który ma typowy design – wyświetlacz LCD i klawiaturę do wprowadzania kodu PIN. Oto co z tego wynikło…

1. Wprowadzenie
2. Architektura sprzętowa
– 2.1. Płyta główna
– 2.2. Płyta wyświetlacza LCD
– 2.3. Płyta klawiatury
– 2.4. Sprawdzamy przewody
3. Sekwencja kroków ataku
– 3.1. Zrzut danych z pamięci SPI
– 3.2. Analiza komunikacji

Rewers i hakowanie samoszyfrującego zewnętrznego dysku twardego Aigo. Część 1: Rozbieramy na części


1. Wprowadzenie

Rewers i hakowanie samoszyfrującego zewnętrznego dysku twardego Aigo. Część 1: Rozbieramy na części
Obudowa

Rewers i hakowanie samoszyfrującego zewnętrznego dysku twardego Aigo. Część 1: Rozbieramy na części
Opakowanie

Dostęp do danych zapisanych na dysku, które rzekomo są zaszyfrowane, uzyskuje się po wprowadzeniu kodu PIN. Kilka wstępnych uwag na temat tego urządzenia:

  • Aby zmienić kod PIN, należy nacisnąć F1 przed odblokowaniem;
  • Kod PIN musi mieć od 6 do 9 cyfr;
  • Po 15 nieudanych próbach dysk zostaje wyczyszczony.

2. Architektura sprzętowa

Najpierw zdemontujemy urządzenie, aby zrozumieć, z jakich komponentów się składa. Najnudniejsza część to otwieranie obudowy: mnóstwo mikroskopijnych śrubek i plastiku. Po otwarciu obudowy widzimy to, co następuje (zwróć uwagę na pięcio-pinowy złącze, które przylutowałem):

Rewers i hakowanie samoszyfrującego zewnętrznego dysku twardego Aigo. Część 1: Rozbieramy na części

2.1. Płyta główna

Płyta główna jest dość prosta:

Rewers i hakowanie samoszyfrującego zewnętrznego dysku twardego Aigo. Część 1: Rozbieramy na części

Najbardziej charakterystyczne jej elementy (od góry do dołu):

  • złącze dla wyświetlacza LCD (CN1);
  • buzzerek (SP1);
  • Pm25LD010 (specyfikacja) pamięć SPI (U2);
  • kontroler Jmicron JMS539 (specyfikacja) dla USB-SATA (U1);
  • złącze USB 3 (J1).

Pamięć SPI przechowuje oprogramowanie dla JMS539 oraz niektóre ustawienia.

2.2. Płyta wyświetlacza LCD

Na płycie LCD nie ma nic godnego uwagi.

Rewers i hakowanie samoszyfrującego zewnętrznego dysku twardego Aigo. Część 1: Rozbieramy na części
Rewers i hakowanie samoszyfrującego zewnętrznego dysku twardego Aigo. Część 1: Rozbieramy na części

Jest tylko:

  • wyświetlacz LCD o nieznanym pochodzeniu (prawdopodobnie z chińskim zestawem czcionek); z sekwencyjnym sterowaniem;
  • wstążkowy złącze dla płyty klawiatury.

2.3. Płyta klawiatury

Podczas przeglądania płyty klawiatury, sytuacja staje się ciekawsza.

Rewers i hakowanie samoszyfrującego zewnętrznego dysku twardego Aigo. Część 1: Rozbieramy na części

Tutaj, na tylnej stronie, widzimy wstążkowy złącze oraz Cypress CY8C21434 – mikrokontroler PSoC 1 (dalej będziemy nazywać go po prostu PSoC).

Rewers i hakowanie samoszyfrującego zewnętrznego dysku twardego Aigo. Część 1: Rozbieramy na części

CY8C21434 wykorzystuje zestaw instrukcji M8C (patrz. dokumentację). Na [stronie produktu] ( (http://www.cypress.com/part/cy8c21434-24ltxi) wskazano, że obsługuje technologię CapSense (rozwiązanie od Cypress dla klawiatur pojemnościowych). Tutaj widoczne jest przylutowane przeze mnie pięcio-pinowe złącze – to standardowe podejście do podłączania zewnętrznego programatora przez interfejs ISSP.

2.4. Sprawdzanie kabli

Zrozumiemy, co z czym tutaj jest związane. W tym celu wystarczy sprawdzić przewody multimetrem:

Rewers i hakowanie samoszyfrującego zewnętrznego dysku twardego Aigo. Część 1: Rozbieramy na części

Objaśnienia do tego prostego rysunku:

  • PSoC opisany jest w specyfikacji technicznej;
  • następny złącze, ten po prawej – interfejs ISSP, który zgodnie z losem odpowiada temu, co o nim napisano w Internecie;
  • najbardziej po prawej złącze – to terminal do złącza taśmowego z płytą klawiatury;
  • czarny prostokąt – rysunek złącza CN1, przeznaczonego do podłączenia płyty głównej z płytą LCD. P11, P13 i P4 – są podłączone do nóżek PSoC 11, 13 i 4 na płycie LCD.

3. Sekwencja kroków ataku

Teraz, gdy wiemy, z jakich komponentów składa się ten nośnik, musimy: 1) upewnić się, że podstawowa funkcjonalność szyfrowania rzeczywiście jest obecna; 2) dowiedzieć się, jak generowane/są przechowywane klucze szyfrowania; 3) znaleźć, gdzie dokładnie weryfikowany jest kod PIN.

W tym celu wykonałem następujące kroki:

  • zdjąłem dump danych z pamięci SPI;
  • próbowałem zdjąć dump danych z pamięci PSoC;
  • upewniłem się, że wymiana danych między Cypress PSoC a JMS539 faktycznie zawiera naciśnięte klawisze;
  • upewniłem się, że przy zmianie hasła w pamięci SPI nic nie jest zapisywane;
  • byłem zbyt leniwy, aby odwrócić oprogramowanie 8051 od JMS539.

3.1. Zdejmujemy dump danych z pamięci SPI

Procedura ta jest bardzo prosta:

  • podłączyć sondy do nóżek pamięci: CLK, MOSI, MISO i (opcjonalnie) EN;
  • «podsłuchać» komunikacje sniffem, używając analizatora logicznego (skorzystałem z Saleae Logic Pro 16);
  • zdekodować protokół SPI i eksportować wyniki do CSV;
  • skorzystać z decode_spi.rb, aby sparsować wyniki i uzyskać dump.

Zauważ, że takie podejście w przypadku kontrolera JMS539 działa szczególnie dobrze, ponieważ ten kontroler na etapie inicjalizacji ładuje z pamięci całą wersję oprogramowania.

$ decode_spi.rb boot_spi1.csv dump
0.039776 : WRITE DISABLE
0.039777 : JEDEC READ ID
0.039784 : ID 0x7f 0x9d 0x21
---------------------
0.039788 : READ @ 0x0
0x12,0x42,0x00,0xd3,0x22,0x00,
[...]
$ ls --size --block-size=1 dump
49152 dump
$ sha1sum dump
3d9db0dde7b4aadd2b7705a46b5d04e1a1f3b125 dump

Zdejście dumpu z pamięci SPI skłoniło mnie do wniosku, że jej jedynym zadaniem jest przechowywanie oprogramowania dla urządzenia sterującego JMicron, które jest wbudowane w mikrokontroler 8051. Niestety, zdjecie dumpu pamięci SPI okazało się bezcelowe:

  • przy zmianie kodu PIN dump pamięci pozostaje tym samym;
  • po etapie inicjalizacji urządzenie nie zwraca się do pamięci SPI.

3.2. Obserwujemy komunikacje

To jeden ze sposobów na zidentyfikowanie, który chip odpowiada za sprawdzanie komunikacji, dla interesujących nas czasów/tresc. Jak już wiemy, kontroler USB-SATA jest podłączony do procesora Cypress PSoC przez złącze CN1 i dwa paski. Dlatego podłączamy sondy do trzech odpowiednich pinów:

  • P4, ogólny wejście/wyjście;
  • P11, I2C SCL;
  • P13, I2C SDA.

Rewers i hakowanie samoszyfrującego zewnętrznego dysku twardego Aigo. Część 1: Rozbieramy na części

Następnie uruchamiamy analizator logiczny Saleae i wprowadzamy na klawiaturze: "123456~". W wyniku tego widzimy następujący wykres.

Rewers i hakowanie samoszyfrującego zewnętrznego dysku twardego Aigo. Część 1: Rozbieramy na części

Na nim możemy zobaczyć trzy kanały wymiany danych:

  • na kanale P4 kilka krótkich impulsów;
  • na P11 i P13 – prawie ciągła wymiana danych.

Zwiększając pierwszy impuls na kanale P4 (niebieski prostokąt z wcześniejszego rysunku), widzimy następujące wyniki:

Rewers i hakowanie samoszyfrującego zewnętrznego dysku twardego Aigo. Część 1: Rozbieramy na części

Tutaj widać, że na P4 prawie 70 ms jednolitego sygnału, który na początku wydawał mi się sygnałem synchronizacji. Jednak poświęcając trochę czasu na sprawdzenie mojej hipotezy, odkryłem, że nie jest to sygnał synchronizacji, a strumień audio, który jest emitowany na głośnik przy naciśnięciu klawiszy. Dlatego sam ten fragment sygnału nie zawiera dla nas przydatnych informacji. Można go jednak wykorzystać jako wskaźnik, aby wiedzieć, kiedy PSoC rejestruje naciśnięcie klawisza.

Jednak ostatni strumień audio kanału P4 nieco różni się od pozostałych: to dźwięk dla "nieprawidłowego kodu PIN"!

Wracając do wykresu naciśnięcia klawiszy, po powiększeniu wykresu ostatniego strumienia audio (patrz ponownie niebieski prostokąt), otrzymujemy:

Rewers i hakowanie samoszyfrującego zewnętrznego dysku twardego Aigo. Część 1: Rozbieramy na części

Widzimy tutaj jednolite sygnały na P11. Wygląda na to, że to jest sygnał synchronizacji. A P13 – dane. Zwróć uwagę, jak wzór zmienia się po zakończeniu sygnału dźwiękowego. Byłoby interesujące zobaczyć, co tutaj się dzieje.

Protokół działający z dwoma przewodami to zazwyczaj SPI lub I2C, a w specyfikacji technicznej Cypress mówi się, że te piny odpowiadają I2C, co jak widać jest prawdą i w naszym przypadku:

Rewers i hakowanie samoszyfrującego zewnętrznego dysku twardego Aigo. Część 1: Rozbieramy na części

Chipset USB-SATA ciągle pyta PSoC – aby odczytać stan przycisku, który domyślnie wynosi „0”. Następnie, po naciśnięciu przycisku „1”, zmienia się na „1”. Ostateczna transmisja, tuż po naciśnięciu „~”, różni się, jeśli wprowadzono nieprawidłowy kod PIN. Jednak na razie nie sprawdzałem, co tam faktycznie jest przekazywane. Ale podejrzewam, że to raczej nie jest klucz szyfrowania. Tak czy inaczej, zobacz następny rozdział, aby zrozumieć, jak wydobyłem dane z wewnętrznego oprogramowania PSoC.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster