ProHoster > Blog > Administrácia > Reverzovanie a hackovanie Aigo samošifrovacieho externého HDD. Časť 1: Rozoberanie častí
Reverzovanie a hackovanie Aigo samošifrovacieho externého HDD. Časť 1: Rozoberanie častí
Reverzovanie a hackovanie externých samošifrovacích diskov je moje staré hobby. V minulosti som mal možnosť cvičiť s takými modelmi ako Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Len nedávno mi kolega priniesol ďalší exponát: Patriot (Aigo) SK8671, ktorý je postavený podľa typického dizajnu - LCD indikátor a klávesnica na zadávanie PIN kódu. To je to, čo z toho vyšlo…
Prístup k údajom uloženým na disku, ktorý je údajne šifrovaný, sa uskutoční po zadaní PIN kódu. Niekoľko poznámok na úvod k tomuto zariadeniu:
Ak chcete zmeniť PIN kód, musíte pred odomknutím stlačiť F1;
PIN kód musí obsahovať 6 až 9 číslic;
Po 15 nesprávnych pokusoch sa disk vymaže.
2. Hardvérová architektúra
Najprv zariadenie rozoberieme na časti, aby sme pochopili, z akých komponentov sa skladá. Najnamáhavejšou úlohou je otváranie puzdra: veľa mikroskopických skrutiek a plastu. Po otvorení puzdra vidíme nasledovné (venujte pozornosť päťkolíkovému konektoru, ktorý som spájkoval):
Ovládač Jmicron JMS539 (špecifikácia) pre USB-SATA (U1);
USB 3 konektor (J1).
SPI flash disk ukladá firmvér pre JMS539 a niektoré nastavenia.
2.2. LCD indikačná doska
Na doske LCD nie je nič pozoruhodné.
iba:
LCD indikátor neznámeho pôvodu (pravdepodobne s čínskym písmom); so sekvenčným ovládaním;
Pásový konektor pre dosku klávesnice.
2.3. Doska s klávesnicou
Pri skúmaní dosky klávesnice veci naberú zaujímavejší spád.
Tu na zadnej strane vidíme páskový konektor, ako aj mikrokontrolér Cypress CY8C21434 PSoC 1 (ďalej ho budeme jednoducho nazývať PSoC)
CY8C21434 používa inštrukčnú sadu M8C (pozri dokumentácia). Na [stránke produktu]( (http://www.cypress.com/part/cy8c21434-24ltxi) je uvedené, že podporuje technológiu CapSense (riešenie od Cypress, pre kapacitné klávesnice). Tu môžete vidieť päťpinový konektor, ktorý som spájkoval - ide o štandardný prístup pre pripojenie externého programátora cez rozhranie ISSP.
2.4. Pri pohľade na drôty
Poďme zistiť, čo je tu spojené. Ak to chcete urobiť, stačí otestovať vodiče pomocou multimetra:
Vysvetlivky pre tento diagram nakreslený na kolene:
PSoC je opísaný v technickej špecifikácii;
ďalší konektor, ten vpravo, je rozhranie ISSP, ktoré podľa vôle osudu zodpovedá tomu, čo sa o ňom píše na internete;
Konektor úplne vpravo je svorka pre plochý konektor na doske klávesnice;
Čierny obdĺžnik je nákres konektora CN1, určený na pripojenie hlavnej dosky k doske LCD. P11, P13 a P4 sú pripojené ku kolíkom PSoC 11, 13 a 4 na doske LCD.
3. Postupnosť krokov útoku
Teraz, keď vieme, z akých komponentov pozostáva tento disk, musíme: 1) uistiť sa, že je skutočne prítomná základná funkcia šifrovania; 2) zistiť, ako sa generujú/ukladajú šifrovacie kľúče; 3) nájdite, kde presne sa bude kontrolovať PIN kód.
Aby som to urobil, urobil som nasledujúce kroky:
vzal výpis dát z SPI flash disku;
pokúsil sa vypísať údaje z flash disku PSoC;
overili, že komunikácia medzi Cypress PSoC a JMS539 skutočne obsahuje stlačenia klávesov;
Uistil som sa, že pri zmene hesla sa na flash disku SPI nič neprepíše;
bol príliš lenivý na to, aby zvrátil firmvér 8051 z JMS539.
3.1. Prevzatie výpisu dát z SPI flash disku
Tento postup je veľmi jednoduchý:
pripojte sondy k nohám flash disku: CLK, MOSI, MISO a (voliteľné) EN;
„čuchať“ komunikáciu so snifferom pomocou logického analyzátora (použil som Predám Logic Pro 16);
dekódovať protokol SPI a exportovať výsledky do CSV;
využiť decode_spi.rbanalyzovať výsledky a získať výpis.
Upozorňujeme, že tento prístup funguje obzvlášť dobre v prípade ovládača JMS539, pretože tento ovládač načíta všetok firmvér z jednotky flash vo fáze inicializácie.
Po odstránení výpisu z flash disku SPI som dospel k záveru, že jeho jedinou úlohou je uložiť firmvér pre riadiace zariadenie JMicron, ktoré je zabudované do mikrokontroléra 8051. Bohužiaľ sa ukázalo, že výpis z flash disku SPI je zbytočný:
pri zmene PIN kódu zostane výpis z flash disku rovnaký;
Po inicializačnej fáze zariadenie nepristupuje k SPI flash disku.
3.2. Čuchanie komunikácie
Toto je jeden zo spôsobov, ako zistiť, ktorý čip je zodpovedný za kontrolu komunikácie pre čas/obsah záujmu. Ako už vieme, USB-SATA radič je pripojený k Cypress PSoC LCD cez konektor CN1 a dva pásky. Preto pripájame sondy k trom zodpovedajúcim nohám:
P4, všeobecný vstup/výstup;
P11, I2C SCL;
P13, I2C SDA.
Potom spustíme logický analyzátor Saleae a na klávesnici zadáme: „123456~“. V dôsledku toho vidíme nasledujúci diagram.
Na ňom môžeme vidieť tri kanály výmeny údajov:
na kanáli P4 je niekoľko krátkych zhlukov;
na P11 a P13 - takmer nepretržitá výmena dát.
Pri priblížení prvého hrotu na kanáli P4 (modrý obdĺžnik na predchádzajúcom obrázku) vidíme nasledovné:
Tu vidno, že na P4 je takmer 70ms monotónny signál, ktorý sa mi spočiatku zdal hrať úlohu hodinového signálu. Po chvíli kontroly môjho odhadu som však zistil, že nejde o hodinový signál, ale o zvukový tok, ktorý sa po stlačení kláves dostane do výškového reproduktora. Preto táto časť samotného signálu neobsahuje pre nás užitočné informácie. Môže sa však použiť ako indikátor na zistenie, kedy PSoC zaregistruje stlačenie klávesu.
Najnovší audio stream P4 je však trochu iný: je to zvuk pre „neplatný PIN“!
Ak sa vrátime ku grafu stlačenia klávesov, priblížime si posledný graf zvukového toku (pozri opäť modrý obdĺžnik), dostaneme:
Tu vidíme monotónne signály na P11. Vyzerá to teda, že toto je hodinový signál. A P13 sú dáta. Všimnite si, ako sa vzor zmení po skončení pípnutia. Bolo by zaujímavé vidieť, čo sa tu stane.
Protokoly, ktoré pracujú s dvoma vodičmi, sú zvyčajne SPI alebo I2C a technická špecifikácia na Cypress uvádza, že tieto kolíky zodpovedajú I2C, čo je v našom prípade pravda:
Čipová súprava USB-SATA neustále žiada PSoC, aby prečítal stav kľúča, ktorý je predvolene „0“. Potom, keď stlačíte tlačidlo "1", zmení sa na "1". Konečný prenos ihneď po stlačení „~“ je iný, ak zadáte nesprávny PIN kód. Momentálne však nemám skontrolované, čo sa tam vlastne prenáša. Mám však podozrenie, že je nepravdepodobné, že by to bol šifrovací kľúč. Každopádne, pozrite si nasledujúcu časť, aby ste pochopili, ako som odstránil interný firmvér PSoC.