A Aigo önkódoló külső HDD-meghajtó visszafejtése és feltörése. 1. rész: Részekre szedjük

A külső öntitkosító meghajtók visszafejtése és feltörése régóta a hobbim. A múltban már dolgoztam olyan modellekkel, mint a Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Nemrégiben a kollégám hozott nekem egy újabb példányt: Patriot (Aigo) SK8671, amely tipikus dizájn alapján készült – LCD-kijelző és billentyűzet a PIN-kód beírásához. Itt van, ami ebből született...

1. Bevezetés
2. Hardver architektúra
– 2.1. Alaplap
– 2.2. LCD-kijelző panel
– 2.3. Billentyűzet panel
– 2.4. Nézzük meg a vezetékeket
3. A támadás lépései
– 3.1. SPI flash mentés készítése
– 3.2. A kommunikációk figyelése

A Aigo önkódoló külső HDD-meghajtó visszafejtése és feltörése. 1. rész: Részekre szedjük


1. Bevezetés

A Aigo önkódoló külső HDD-meghajtó visszafejtése és feltörése. 1. rész: Részekre szedjük
Tokat

A Aigo önkódoló külső HDD-meghajtó visszafejtése és feltörése. 1. rész: Részekre szedjük
Csomagolás

A lemezen tárolt, állítólag titkosított adatokhoz való hozzáférés a PIN-kód megadását követően lehetséges. Néhány megjegyzés erről a készülékről:

  • A PIN-kód módosításához az F1-et kell nyomni a feloldás előtt;
  • A PIN-kódnak 6 és 9 számjegy között kell lennie;
  • 15 helytelen próbálkozás után a lemez törlődik.

2. Hardver architektúra

Először szét kell szednünk a készüléket, hogy megértsük, milyen alkatrészekből áll. A legunalmasabb rész a ház kinyitása: sok apró csavar és műanyag. A ház felnyitása után a következőket láthatjuk (figyeljen a nekem forrasztott ötpinű csatlakozóra):

A Aigo önkódoló külső HDD-meghajtó visszafejtése és feltörése. 1. rész: Részekre szedjük

2.1. Alaplap

Az alaplap meglehetősen egyszerű:

A Aigo önkódoló külső HDD-meghajtó visszafejtése és feltörése. 1. rész: Részekre szedjük

A legfigyelemreméltóbb részei (lásd fölülről lefelé):

Az SPI flash tárolja a JMS539 firmware-jét és néhány beállítást.

2.2. LCD-kijelző panel

Az LCD panelen nincs semmi figyelemre méltó.

A Aigo önkódoló külső HDD-meghajtó visszafejtése és feltörése. 1. rész: Részekre szedjük
A Aigo önkódoló külső HDD-meghajtó visszafejtése és feltörése. 1. rész: Részekre szedjük

Csak:

  • Ismeretlen eredetű LCD-kijelző (valószínűleg egy kínai betűtípus készlettel); soros vezérlés;
  • szalagcsatlakozó a billentyűzet panelhez.

2.3. Billentyűzet panel

A billentyűzet panel megvizsgálásakor a helyzet érdekes fordulatot vesz.

A Aigo önkódoló külső HDD-meghajtó visszafejtése és feltörése. 1. rész: Részekre szedjük

Itt, a hátsó oldalon, látjuk a szalagcsatlakozót és a Cypress CY8C21434 – PSoC 1 mikrokontrollert (a továbbiakban PSoC-ként említjük)

A Aigo önkódoló külső HDD-meghajtó visszafejtése és feltörése. 1. rész: Részekre szedjük

A CY8C21434 M8C utasításkészletet használ (lásd. a dokumentációval). A [termékoldalon]( (http://www.cypress.com/part/cy8c21434-24ltxi) azt mondják, hogy támogatja a CapSense (a Cypress megoldása, érintésérzékeny billentyűzetekhez). Itt látható az általam forrasztott ötpinű csatlakozó – ez a szabványos megközelítés a külső programozó csatlakoztatásához az ISSP interfészen keresztül.

2.4. Vizsgáljuk meg a vezetékeket

Nézzük meg, hogy mi van itt összekötve. Ehhez elegendő, ha multiméterrel átmérjük a vezetékeket:

A Aigo önkódoló külső HDD-meghajtó visszafejtése és feltörése. 1. rész: Részekre szedjük

Magyarázatok a vázlatos ábrához:

  • A PSoC a műszaki specifikációban van leírva;
  • a következő csatlakozó, ami jobbra van – ISSP interfész, ami az interneten leírtakkal megegyezik;
  • a legjobb oldalon lévő csatlakozó – a billentyűzet táblájához csatlakozó sávkábel érintkezője;
  • a fekete téglalap – a CN1 csatlakozó vázlata, amely a főlap és a LCD-tábla összekapcsolására szolgál. P11, P13 és P4 – a PSoC 11, 13 és 4 lábaival van összekötve a LCD-táblán.

3. A támadás lépései

Most, hogy tudjuk, hogy ezekből a komponensekből áll az eszköz, meg kell tennünk a következőket: 1) győződjünk meg arról, hogy a titkosítás alapvető funkciója valóban jelen van; 2) megtudni, hogyan generálják/tárolják a titkosítási kulcsokat; 3) kideríteni, hogy hol ellenőrzik a PIN-kódot.

Ehhez a következő lépéseket tettem:

  • kiválasztottam az SPI flash memória adatait;
  • megpróbáltam lekérni a PSoC flash memória adatait;
  • meggyőződtem arról, hogy a Cypress PSoC és a JMS539 közötti adatcsere valójában tartalmazza a benyomott billentyűket;
  • ellenőriztem, hogy a jelszó megváltoztatásakor az SPI flash memória nem ír felül semmit;
  • túlságosan lusta voltam ahhoz, hogy visszafejlesszem a JMS539 8051 firmware-t.

3.1. Az SPI flash memória adatainak lekérdezése

Ez a folyamat nagyon egyszerű:

  • csatlakoztassuk a szondákat a flash memória lábaihoz: CLK, MOSI, MISO és (opcionálisan) EN;
  • a kommunikációk „meghallgatása” egy logikai elemző segítségével (én a következőt használtam: Saleae Logic Pro 16.);
  • dekódoljuk az SPI protokollt és exportáljuk az eredményeket CSV-be;
  • használjuk a decode_spi.rb, hogy elemezzük az eredményeket és megkapjuk a dump-ot.

Vegye figyelembe, hogy ez a megközelítés a JMS539 vezérlő esetében különösen jól működik, mivel ez a vezérlő az inicializálás során az egész firmware-t betölti a flash memóriábó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

Miután lekértem az SPI flash memória dumpját, arra a következtetésre jutottam, hogy az egyetlen feladata a JMicron vezérlő firmware-jének tárolása, amely 8051 mikrokontrollerbe van beépítve. Sajnos az SPI flash memória dumpjának lekérése haszontalannak bizonyult:

  • a PIN-kód megváltoztatásakor a flash memória dump ugyanaz marad;
  • az inicializálási szakasz után az eszköz nem lép kapcsolatba az SPI flash memóriával.

3.2. Kommunikációk átvizsgálása

Ez az egyik módja annak, hogy megtaláljuk, melyik chip felelős a kommunikációk ellenőrzéséért, az érdekes időszakok/kon텐츠 számára. Ahogy már tudjuk, a USB-SATA vezérlő a Cypress PSoC LCD-hez csatlakozik, a CN1 csatlakozón és két szalagon keresztül. Ezért csatlakoztatjuk a szondákat a megfelelő három lábra:

  • P4, általános bemenet/kimenet;
  • P11, I2C SCL;
  • P13, I2C SDA.

A Aigo önkódoló külső HDD-meghajtó visszafejtése és feltörése. 1. rész: Részekre szedjük

Ezután elindítjuk a Saleae logikai analizátort, és a billentyűzeten beírjuk: "123456~". Az eredmény egy következő diagram.

A Aigo önkódoló külső HDD-meghajtó visszafejtése és feltörése. 1. rész: Részekre szedjük

Ezen láthatjuk a három adatátviteli csatornát:

  • az P4-en néhány rövid impulzus;
  • az P11-en és P13-on – majdnem folyamatos adatátvitel.

Az első impulzus felnagyításával P4-en (az előző ábra kék téglalapja), a következőt látjuk:

A Aigo önkódoló külső HDD-meghajtó visszafejtése és feltörése. 1. rész: Részekre szedjük

Itt látható, hogy P4-en majdnem 70 ms egyforma jel van, amelyről elsőre úgy tűnt, hogy szinkronjelként funkcionál. Azonban, miután egy kis időt eltöltöttem a sejtésem ellenőrzésével, felfedeztem, hogy ez nem szinkronjel, hanem audiofolyam, amely a gomb megnyomásakor szól a hangszórón. Így ez a jelző szakasz nem tartalmaz hasznos információt számunkra. Ugyanakkor indikátorként használható - hogy tudjuk, mikor rögzíti a PSoC a gomb megnyomását.

Azonban a P4 csatorna utolsó audiofolyama kissé eltér a többitől: ez a "rossz PIN-kód" hangja!

Visszatérve a gombnyomás diagramjához, a legutolsó audiofolyamtól (lásd újra a kék téglalapot) kinagyítva:

A Aigo önkódoló külső HDD-meghajtó visszafejtése és feltörése. 1. rész: Részekre szedjük

Itt egységes jeleket látunk P11-en. Tehát úgy tűnik, hogy ez a szinkronjel. És P13 – az adatok. Figyelje meg, hogyan változik a minta a hangjelzés végén. Érdekes lenne megnézni, mi történik itt.

A kétvezetékkel működő protokollok általában SPI vagy I2C, és a Cypress műszaki specifikációja azt írja, hogy ezek a lábak I2C-nek felelnek meg, ami láthatóan a mi esetünkben is helytálló:

A Aigo önkódoló külső HDD-meghajtó visszafejtése és feltörése. 1. rész: Részekre szedjük

A USB-SATA vezérlő folyamatosan lekérdezi a PSoC-ot, hogy olvassa a gomb állapotát, amely alapértelmezés szerint "0". Ezután, amikor a gomb "1" van megnyomva, az "1"-re változik. A végső átadás, közvetlenül a "~" megnyomása után, eltér, ha helytelen PIN-kódot adtak meg. Jelenleg azonban nem ellenőriztem, hogy valójában mi is kerül átadásra. De gyanítom, hogy valószínűleg nem titkosító kulcsról van szó. Mindenesetre nézd meg a következő részt, hogy megértsd, hogyan szedtem ki a belső PSoC firmware-t.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster