ProHoster > Blog > podávání > Reverzování a hackování Aigo samošifrovacího externího HDD disku. Část 1: Rozdělení na části
Reverzování a hackování Aigo samošifrovacího externího HDD disku. Část 1: Rozdělení na části
Reverzování a hackování externích samošifrovacích jednotek je můj starý koníček. V minulosti jsem měl možnost cvičit s takovými modely jako Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Zrovna nedávno mi kolega přinesl další exponát: Patriot (Aigo) SK8671, který je postaven podle typické konstrukce - LCD indikátor a klávesnice pro zadání PIN kódu. To z toho vyšlo…
Přístup k datům uloženým na disku, která jsou údajně šifrovaná, se provádí po zadání PIN kódu. Několik poznámek na úvod k tomuto zařízení:
Chcete-li změnit PIN kód, musíte před odemknutím stisknout F1;
PIN kód musí obsahovat 6 až 9 číslic;
Po 15 nesprávných pokusech se disk vymaže.
2. Architektura hardwaru
Nejprve si zařízení rozebereme na části, abychom pochopili, z jakých komponent se skládá. Nejnudnějším úkolem je otevření pouzdra: spousta mikroskopických šroubů a plastu. Po otevření pouzdra vidíme následující (pozor na pětikolíkový konektor, který jsem připájel):
Řadič Jmicron JMS539 (Specifikace) pro USB-SATA (U1);
USB 3 konektor (J1).
SPI flash disk ukládá firmware pro JMS539 a některá nastavení.
2.2. LCD indikační deska
Na desce LCD není nic pozoruhodného.
Pouze:
LCD indikátor neznámého původu (pravděpodobně se sadou čínských písem); se sekvenčním ovládáním;
Páskový konektor pro desku klávesnice.
2.3. Deska s klávesnicí
Při zkoumání desky klávesnice naberou věci zajímavější spád.
Zde na zadní straně vidíme plochý konektor a také mikrokontrolér Cypress CY8C21434 PSoC 1 (dále mu budeme říkat jednoduše PSoC)
CY8C21434 používá instrukční sadu M8C (viz dokumentace). Na [stránce produktu]( (http://www.cypress.com/part/cy8c21434-24ltxi) je uvedeno, že technologii podporuje CapSense (řešení od Cypress, pro kapacitní klávesnice). Zde vidíte mnou připájený pětipinový konektor - jedná se o standardní přístup pro připojení externího programátoru přes rozhraní ISSP.
2.4. Při pohledu na dráty
Pojďme zjistit, co je zde propojeno. Chcete-li to provést, stačí otestovat vodiče pomocí multimetru:
Vysvětlení tohoto diagramu nakresleného na koleni:
PSoC je popsán v technické specifikaci;
další konektor, ten vpravo, je rozhraní ISSP, které z vůle osudu odpovídá tomu, co se o něm píše na internetu;
Konektor zcela vpravo je svorka pro plochý konektor k desce klávesnice;
Černý obdélník je nákres konektoru CN1, určený pro připojení hlavní desky k desce LCD. P11, P13 a P4 jsou připojeny ke kolíkům PSoC 11, 13 a 4 na desce LCD.
3. Posloupnost kroků útoku
Nyní, když víme, z jakých součástí se tento disk skládá, musíme: 1) ujistit se, že základní funkce šifrování je skutečně přítomna; 2) zjistit, jak se generují/ukládají šifrovací klíče; 3) zjistěte, kde přesně bude PIN kód kontrolován.
K tomu jsem provedl následující kroky:
vzal výpis dat z SPI flash disku;
pokusil se vypsat data z flash disku PSoC;
ověřili, že komunikace mezi Cypress PSoC a JMS539 skutečně obsahuje stisknuté klávesy;
Ujistil jsem se, že při změně hesla se v SPI flash disku nic nepřepíše;
byl příliš líný na to, aby zvrátil firmware 8051 z JMS539.
3.1. Převzetí výpisu dat z SPI flash disku
Tento postup je velmi jednoduchý:
připojte sondy k nohám flash disku: CLK, MOSI, MISO a (volitelně) EN;
„čichání“ komunikace s čichačem pomocí logického analyzátoru (použil jsem Prodám Logic Pro 16);
dekódovat protokol SPI a exportovat výsledky do CSV;
využít decode_spi.rbanalyzovat výsledky a získat výpis.
Upozorňujeme, že tento přístup funguje obzvláště dobře v případě řadiče JMS539, protože tento řadič načítá veškerý firmware z flash disku ve fázi inicializace.
Po odebrání výpisu z flash disku SPI jsem došel k závěru, že jeho jediným úkolem je uložit firmware pro řídicí zařízení JMicron, které je vestavěno do mikrokontroléru 8051. Bohužel se ukázalo, že výpis paměti SPI flash disku je k ničemu:
při změně PIN kódu zůstane výpis paměti flash stejný;
Po inicializační fázi zařízení nepřistupuje k SPI flash disku.
3.2. Sledování komunikace
Toto je jeden způsob, jak zjistit, který čip je zodpovědný za kontrolu komunikace po dobu/obsah, který nás zajímá. Jak již víme, USB-SATA řadič je připojen k Cypress PSoC LCD pomocí konektoru CN1 a dvou stuh. Proto připojujeme sondy ke třem odpovídajícím nohám:
P4, obecný vstup/výstup;
P11, I2C SCL;
P13, I2C SDA.
Poté spustíme logický analyzátor Saleae a na klávesnici zadáme: „123456~“. V důsledku toho vidíme následující diagram.
Na něm můžeme vidět tři kanály výměny dat:
na kanálu P4 je několik krátkých shluků;
na P11 a P13 - téměř nepřetržitá výměna dat.
Přiblížením na první bodec na kanálu P4 (modrý obdélník na předchozím obrázku) vidíme následující:
Zde je vidět, že na P4 je téměř 70ms monotónního signálu, který se mi zprvu zdál hrát roli hodinového signálu. Nicméně poté, co jsem strávil nějaký čas kontrolou svého odhadu, jsem zjistil, že se nejedná o hodinový signál, ale o zvukový proud, který je při stisku kláves vyveden na výškový reproduktor. Proto tato část signálu sama o sobě neobsahuje pro nás užitečné informace. Lze jej však použít jako indikátor pro zjištění, kdy PSoC zaregistruje stisknutí klávesy.
Nejnovější audio stream P4 je však trochu jiný: je to zvuk pro „neplatný PIN“!
Vrátíme-li se ke grafu úhozů a přiblížíme graf posledního audio streamu (viz opět modrý obdélník), dostaneme:
Zde vidíme monotónní signály na P11. Takže to vypadá, že jde o hodinový signál. A P13 jsou data. Všimněte si, jak se vzor změní po skončení pípnutí. Bylo by zajímavé vidět, co se zde stane.
Protokoly, které pracují se dvěma vodiči, jsou obvykle SPI nebo I2C a technická specifikace na Cypressu uvádí, že tyto piny odpovídají I2C, což je v našem případě pravda:
Čipová sada USB-SATA neustále dotazuje PSoC, aby přečetl stav klíče, který je ve výchozím nastavení „0“. Poté, když stisknete klávesu "1", změní se na "1". Konečný přenos ihned po stisknutí „~“ se liší, pokud je zadán nesprávný PIN kód. V tuto chvíli však nemám ověřeno, co se tam vlastně vysílá. Ale mám podezření, že to pravděpodobně nebude šifrovací klíč. Každopádně si přečtěte další část, abyste pochopili, jak jsem odstranil interní firmware PSoC.