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…

1. Bevezetés
2. Hardver architektúra
– 2.1. Fő tábla
– 2.2. LCD kijelző tábla
– 2.3. Billentyűzet tábla
– 2.4. A vezetékeket nézve
3. A támadás lépéseinek sorrendje
– 3.1. Adatkiírás készítése SPI flash meghajtóról
– 3.2. Kommunikáció szippantása

Visszafordítás és feltörés Aigo öntitkosító külső HDD. 1. rész: A részek boncolása


1. Bevezetés

Visszafordítás és feltörés Aigo öntitkosító külső HDD. 1. rész: A részek boncolása
ház

Visszafordítás és feltörés Aigo öntitkosító külső HDD. 1. rész: A részek boncolása
Упаковка

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):

Visszafordítás és feltörés Aigo öntitkosító külső HDD. 1. rész: A részek boncolása

2.1. Fő tábla

Az alaplap meglehetősen egyszerű:

Visszafordítás és feltörés Aigo öntitkosító külső HDD. 1. rész: A részek boncolása

Legjelentősebb részei (lásd fentről lefelé):

  • csatlakozó az LCD kijelzőhöz (CN1);
  • magassugárzó (SP1);
  • Pm25LD010 (leírás) SPI flash meghajtó (U2);
  • Jmicron JMS539 vezérlő (leírás) USB-SATA (U1) esetén;
  • USB 3 csatlakozó (J1).

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ó.

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

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.

Visszafordítás és feltörés Aigo öntitkosító külső HDD. 1. rész: A részek boncolása

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)

Visszafordítás és feltörés Aigo öntitkosító külső HDD. 1. rész: A részek boncolása

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:

Visszafordítás és feltörés Aigo öntitkosító külső HDD. 1. rész: A részek boncolása

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.

$ 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

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.

Visszafordítás és feltörés Aigo öntitkosító külső HDD. 1. rész: A részek boncolása

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.

Visszafordítás és feltörés Aigo öntitkosító külső HDD. 1. rész: A részek boncolása

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:

Visszafordítás és feltörés Aigo öntitkosító külső HDD. 1. rész: A részek boncolása

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:

Visszafordítás és feltörés Aigo öntitkosító külső HDD. 1. rész: A részek boncolása

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:

Visszafordítás és feltörés Aigo öntitkosító külső HDD. 1. rész: A részek boncolása

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.

Forrás: will.com

Hozzászólás