ProHoster > Blog > Adminisztráció > Visszafordítás és feltörés Aigo öntitkosító külső HDD. 1. rész: A részek boncolása
Visszafordítás és feltörés Aigo öntitkosító külső HDD. 1. rész: A részek boncolása
Régi hobbim a külső öntitkosító meghajtók visszafordítása és feltörése. Korábban olyan modellekkel volt lehetőségem gyakorolni, mint a Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Nemrég egy kolléga hozott nekem egy másik kiállítást is: a Patriot (Aigo) SK8671-et, amely egy tipikus kialakítás szerint épült - LCD kijelző és billentyűzet a PIN kód megadásához. Ez jött ki belőle…
A lemezen tárolt, feltételezhetően titkosított adatokhoz való hozzáférés a PIN kód megadása után történik. Néhány bevezető megjegyzés ehhez a készülékhez:
A PIN-kód megváltoztatásához a feloldás előtt meg kell nyomnia az F1-et;
A PIN-kódnak 6-9 számjegyből kell állnia;
15 helytelen próbálkozás után a lemez törlődik.
2. Hardver architektúra
Először az eszközt részekre bontjuk, hogy megértsük, milyen alkatrészekből áll. A legunalmasabb feladat a ház kinyitása: sok mikroszkopikus csavar és műanyag. A ház kinyitása után a következőket látjuk (ügyeljen az általam forrasztott öt tűs csatlakozóra):
Az SPI flash meghajtó tárolja a JMS539 firmware-jét és néhány beállítást.
2.2. LCD kijelző tábla
Az LCD táblán nincs semmi figyelemre méltó.
Csak:
Ismeretlen eredetű LCD kijelző (valószínűleg kínai betűkészlettel); szekvenciális vezérléssel;
Szalag csatlakozó a billentyűzethez.
2.3. Billentyűzet tábla
A billentyűzet vizsgálatakor a dolgok érdekesebb fordulatot vesznek.
Itt a hátoldalon egy szalagos csatlakozót látunk, valamint egy Cypress CY8C21434 PSoC 1 mikrokontrollert (a továbbiakban egyszerűen PSoC-nek nevezzük)
A CY8C21434 az M8C utasításkészletet használja (lásd dokumentáció). A [termékoldalon]( (http://www.cypress.com/part/cy8c21434-24ltxi) jelzi, hogy támogatja a technológiát CapSense (a Cypress megoldása, kapacitív billentyűzetekhez). Itt látható az általam forrasztott öt tűs csatlakozó - ez egy szabványos megközelítés egy külső programozó csatlakoztatásához az ISSP interfészen keresztül.
2.4. A vezetékeket nézve
Találjuk ki, mi kapcsolódik ide. Ehhez csak tesztelje a vezetékeket multiméterrel:
A térdre rajzolt diagram magyarázatai:
A PSoC leírása a műszaki leírásban található;
a következő csatlakozó, a jobb oldali, az ISSP interfész, amely a sors akaratából megfelel az interneten róla írottaknak;
A jobb szélső csatlakozó a billentyűzet szalagos csatlakozójának terminálja;
A fekete téglalap a CN1 csatlakozó rajza, amely az alaplap és az LCD kártya csatlakoztatására szolgál. A P11, P13 és P4 a PSoC 11., 13. és 4. érintkezőihez csatlakozik az LCD-kártyán.
3. A támadás lépéseinek sorrendje
Most, hogy tudjuk, hogy ez a meghajtó milyen összetevőkből áll, a következőket kell tenni: 1) meg kell győződnünk arról, hogy az alapvető titkosítási funkciók valóban jelen vannak; 2) megtudja, hogyan generálódnak/menthetők a titkosítási kulcsok; 3) keresse meg, hogy pontosan hol történik a PIN-kód ellenőrzése.
Ehhez a következő lépéseket tettem:
adatkiíratást vett egy SPI flash meghajtóról;
megpróbált adatokat törölni egy PSoC flash meghajtóról;
ellenőrizte, hogy a Cypress PSoC és a JMS539 közötti kommunikáció valóban tartalmaz-e billentyűleütéseket;
Gondoskodtam arról, hogy a jelszó megváltoztatásakor semmi ne legyen felülírva az SPI flash meghajtón;
túl lusta volt ahhoz, hogy visszafordítsa a 8051-es firmware-t a JMS539-ről.
3.1. Adatkiírás készítése SPI flash meghajtóról
Ez az eljárás nagyon egyszerű:
csatlakoztassa a szondákat a flash meghajtó lábaihoz: CLK, MOSI, MISO és (opcionális) EN;
„szippantani” a kommunikációt egy szippantóval egy logikai elemző segítségével (én Saleae Logic Pro 16);
dekódolja az SPI protokollt és exportálja az eredményeket CSV-be;
kihasználni decode_spi.rbaz eredmények elemzéséhez és kiíratáshoz.
Kérjük, vegye figyelembe, hogy ez a megközelítés különösen jól működik a JMS539 vezérlő esetében, mivel ez a vezérlő az inicializálási szakaszban betölti az összes firmware-t a flash meghajtóról.
Az SPI flash meghajtóról kiíratva arra a következtetésre jutottam, hogy az egyetlen feladata a 8051-es mikrokontrollerbe beépített JMicron vezérlőeszköz firmware-ének tárolása. Sajnos az SPI flash meghajtó kiürítése haszontalannak bizonyult:
a PIN-kód megváltoztatásakor a flash meghajtó dump változata marad;
Az inicializálási szakasz után az eszköz nem fér hozzá az SPI flash meghajtóhoz.
3.2. Kommunikáció szippantása
Ez az egyik módja annak, hogy megtudja, melyik chip felelős a kommunikáció ellenőrzéséért a kívánt idő/tartalom tekintetében. Mint már tudjuk, az USB-SATA vezérlő a CN1 csatlakozón és két szalagon keresztül csatlakozik a Cypress PSoC LCD-hez. Ezért a szondákat a három megfelelő lábhoz csatlakoztatjuk:
P4, általános bemenet/kimenet;
P11, I2C SCL;
P13, I2C SDA.
Ezután elindítjuk a Saleae logikai elemzőt, és beírjuk a billentyűzetre: „123456~”. Ennek eredményeként a következő diagramot látjuk.
Három adatcsere csatornát láthatunk rajta:
több rövid sorozatfelvétel van a P4 csatornán;
P11-en és P13-on - szinte folyamatos adatcsere.
A P4 csatorna első tüskéjére nagyítva (az előző ábrán kék téglalap) a következőket látjuk:
Itt látható, hogy a P4-en majdnem 70 ms monoton jel van, ami elsőre úgy tűnt, hogy órajel szerepét tölti be. Miután azonban némi időt eltöltöttem a sejtésem ellenőrzésével, rájöttem, hogy ez nem egy órajel, hanem egy hangfolyam, amely a billentyűk lenyomásakor a magassugárzóba kerül. Ezért magának a jelnek ez a része nem tartalmaz számunkra hasznos információkat. Használható azonban jelzőként annak megállapítására, hogy a PSoC mikor regisztrál billentyűleütést.
A legújabb P4 audio stream azonban egy kicsit más: ez az "érvénytelen PIN-kód" hangja!
Visszatérve a billentyűleütési grafikonhoz, az utolsó hangfolyam grafikonjára nagyítva (lásd még egyszer a kék téglalapot) kapjuk:
Itt monoton jeleket látunk a P11-en. Tehát úgy tűnik, ez az órajel. A P13 pedig adat. Figyelje meg, hogyan változik a minta a hangjelzés befejezése után. Érdekes lenne látni, mi történik itt.
A két vezetékkel működő protokollok általában SPI vagy I2C, és a Cypress műszaki leírása szerint ezek a tűk megfelelnek az I2C-nek, ami a mi esetünkben igaz:
Az USB-SATA lapkakészlet folyamatosan lekérdezi a PSoC-t, hogy leolvassa a kulcs állapotát, amely alapértelmezés szerint „0”. Ezután, amikor megnyomja az "1" gombot, az "1"-re változik. A „~” megnyomása után közvetlenül az utolsó átvitel más, ha rossz PIN-kódot ad meg. Jelenleg azonban nem ellenőriztem, hogy valójában mit is továbbítanak ott. De gyanítom, hogy ez nem valószínű, hogy titkosítási kulcs. Mindenesetre lásd a következő részt, hogy megértse, hogyan távolítottam el a PSoC belső firmware-t.