ProHoster > Blog > Pangangasiwa > Pag-reverse at pag-hack ng Aigo self-encrypting external HDD drive. Bahagi 1: Paghiwa-hiwalayin sa mga bahagi
Pag-reverse at pag-hack ng Aigo self-encrypting external HDD drive. Bahagi 1: Paghiwa-hiwalayin sa mga bahagi
Ang pag-reverse at pag-hack ng mga external na self-encrypting drive ay ang dati kong libangan. Noong nakaraan, nagkaroon ako ng pagkakataong magsanay kasama ang mga modelo tulad ng Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Kamakailan lamang, dinalhan ako ng isang kasamahan ng isa pang eksibit: Patriot (Aigo) SK8671, na binuo ayon sa karaniwang disenyo - isang LCD indicator at isang keyboard para sa pagpasok ng PIN code. Yan ang lumabas...
Ang pag-access sa data na nakaimbak sa disk, na diumano'y naka-encrypt, ay isinasagawa pagkatapos ipasok ang PIN code. Ilang panimulang tala sa device na ito:
Upang baguhin ang PIN code, kailangan mong pindutin ang F1 bago i-unlock;
Ang PIN code ay dapat maglaman ng mula 6 hanggang 9 na numero;
Pagkatapos ng 15 maling pagtatangka, ang disk ay na-clear.
2. arkitektura ng hardware
Una, hinahati namin ang device sa mga bahagi upang maunawaan kung anong mga bahagi ang binubuo nito. Ang pinaka nakakapagod na gawain ay ang pagbubukas ng kaso: maraming microscopic screws at plastic. Sa pagbukas ng kaso, nakita namin ang sumusunod (bigyang-pansin ang limang-pin na konektor na aking ibinebenta):
2.1. Pangunahing board
Ang pangunahing board ay medyo simple:
Ang pinakakilalang mga bahagi nito (tingnan mula sa itaas hanggang sa ibaba):
Jmicron JMS539 controller (espesipikasyon) para sa USB-SATA (U1);
USB 3 connector (J1).
Ang SPI flash drive ay nag-iimbak ng firmware para sa JMS539 at ilang mga setting.
2.2. LCD indicator board
Walang kapansin-pansin sa LCD board.
Tanging:
LCD indicator ng hindi kilalang pinanggalingan (marahil ay may Chinese font set); may sequential control;
Ribbon connector para sa keyboard board.
2.3. Keyboard board
Kapag sinusuri ang keyboard board, nagiging mas kawili-wiling ang mga bagay.
Dito, sa likod na bahagi, nakikita namin ang isang ribbon connector, pati na rin ang isang Cypress CY8C21434 microcontroller PSoC 1 (simula dito ay tatawagin lang natin itong PSoC)
Ginagamit ng CY8C21434 ang set ng pagtuturo ng M8C (tingnan dokumentasyon). Sa [pahina ng produkto]( (http://www.cypress.com/part/cy8c21434-24ltxi) ito ay ipinahiwatig na ito ay sumusuporta sa teknolohiya CapSense (solusyon mula sa Cypress, para sa mga capacitive na keyboard). Dito makikita mo ang limang-pin na connector na ibinebenta ko - ito ay isang karaniwang diskarte para sa pagkonekta ng isang panlabas na programmer sa pamamagitan ng interface ng ISSP.
2.4. Tinitingnan ang mga wire
Alamin natin kung ano ang konektado dito. Upang gawin ito, subukan lamang ang mga wire gamit ang isang multimeter:
Mga paliwanag para sa diagram na ito na iginuhit sa tuhod:
Ang PSoC ay inilarawan sa teknikal na detalye;
ang susunod na konektor, ang isa sa kanan, ay ang interface ng ISSP, na, sa pamamagitan ng kalooban ng kapalaran, ay tumutugma sa kung ano ang nakasulat tungkol dito sa Internet;
Ang pinakakanang connector ay ang terminal para sa ribbon connector sa keyboard board;
Ang itim na parihaba ay isang guhit ng CN1 connector, na idinisenyo upang ikonekta ang pangunahing board sa LCD board. Ang P11, P13 at P4 ay konektado sa PSoC pin 11, 13 at 4, sa LCD board.
3. Pagkakasunod-sunod ng mga hakbang sa pag-atake
Ngayong alam na natin kung anong mga bahagi ang drive na ito, kailangan nating: 1) tiyakin na ang pangunahing pag-andar ng pag-encrypt ay aktwal na naroroon; 2) alamin kung paano nabuo/nai-save ang mga susi sa pag-encrypt; 3) hanapin kung saan eksaktong susuriin ang PIN code.
Upang gawin ito, ginawa ko ang mga sumusunod na hakbang:
kumuha ng data dump mula sa isang SPI flash drive;
sinubukang i-dump ang data mula sa isang PSoC flash drive;
na-verify na ang komunikasyon sa pagitan ng Cypress PSoC at ng JMS539 ay talagang naglalaman ng mga pinindot na key;
Tiniyak ko na kapag binabago ang password, walang na-overwrite sa SPI flash drive;
ay masyadong tamad na i-reverse ang 8051 firmware mula sa JMS539.
3.1. Pagkuha ng data dump mula sa isang SPI flash drive
Ang pamamaraang ito ay napaka-simple:
ikonekta ang mga probe sa mga binti ng flash drive: CLK, MOSI, MISO at (opsyonal) EN;
"sniff" na mga komunikasyon sa isang sniffer gamit ang logic analyzer (ginamit ko Saleae Logic Pro 16);
mag-decode ng SPI protocol at mag-export ng mga resulta sa CSV;
samantalahin decode_spi.rbpara i-parse ang mga resulta at makakuha ng dump.
Pakitandaan na ang diskarte na ito ay gumagana lalo na sa kaso ng JMS539 controller, dahil ang controller na ito ay naglo-load ng lahat ng firmware mula sa flash drive sa yugto ng pagsisimula.
Ang pagkakaroon ng isang dump mula sa SPI flash drive, dumating ako sa konklusyon na ang tanging gawain nito ay ang pag-imbak ng firmware para sa JMicron control device, na binuo sa 8051 microcontroller. Sa kasamaang palad, ang pagtatapon ng SPI flash drive ay naging walang silbi:
kapag ang PIN code ay binago, ang flash drive dump ay nananatiling pareho;
Pagkatapos ng yugto ng pagsisimula, hindi naa-access ng device ang SPI flash drive.
3.2. Pagsinghot ng mga komunikasyon
Ito ay isang paraan upang mahanap kung aling chip ang responsable para sa pagsuri sa mga komunikasyon para sa oras/nilalaman ng interes. Tulad ng alam na natin, ang USB-SATA controller ay konektado sa Cypress PSoC LCD sa pamamagitan ng connector CN1 at dalawang ribbons. Samakatuwid, ikinonekta namin ang mga probes sa tatlong kaukulang mga binti:
P4, pangkalahatang input/output;
P11, I2C SCL;
P13, I2C SDA.
Pagkatapos ay ilulunsad namin ang Saleae logic analyzer at ipasok sa keyboard: "123456~". Bilang resulta, nakikita natin ang sumusunod na diagram.
Dito makikita natin ang tatlong channel ng palitan ng data:
mayroong ilang maikling pagsabog sa channel P4;
sa P11 at P13 - halos tuloy-tuloy na pagpapalitan ng data.
Ang pag-zoom in sa unang spike sa channel P4 (asul na parihaba sa nakaraang figure), makikita natin ang sumusunod:
Dito makikita mo na sa P4 mayroong halos 70ms ng isang monotonous na signal, na sa una ay tila sa akin ay gumaganap ng papel ng isang signal ng orasan. Gayunpaman, pagkatapos gumugol ng ilang oras na suriin ang aking hula, natuklasan ko na ito ay hindi isang signal ng orasan, ngunit isang audio stream na output sa tweeter kapag pinindot ang mga key. Samakatuwid, ang seksyong ito ng signal mismo ay hindi naglalaman ng kapaki-pakinabang na impormasyon para sa amin. Gayunpaman, maaari itong gamitin bilang tagapagpahiwatig upang malaman kung kailan nagrerehistro ang PSoC ng key press.
Gayunpaman, medyo naiiba ang pinakabagong P4 audio stream: ito ang audio para sa "invalid PIN"!
Pagbabalik sa keystroke graph, pag-zoom in sa huling audio stream graph (tingnan muli ang asul na parihaba), makukuha natin ang:
Dito makikita natin ang mga monotonous na signal sa P11. Kaya parang ito ang signal ng orasan. At P13 ang data. Pansinin kung paano nagbabago ang pattern pagkatapos ng beep. Ito ay magiging kagiliw-giliw na makita kung ano ang nangyayari dito.
Ang mga protocol na gumagana sa dalawang wire ay karaniwang SPI o I2C, at ang teknikal na detalye sa Cypress ay nagsasaad na ang mga pin na ito ay tumutugma sa I2C, na nakikita naming totoo sa aming kaso:
Ang USB-SATA chipset ay patuloy na nag-poll sa PSoC upang basahin ang estado ng key, na bilang default ay "0". Pagkatapos, kapag pinindot mo ang "1" na key, ito ay magiging "1". Ang huling pagpapadala kaagad pagkatapos pindutin ang "~" ay iba kung maling PIN code ang ipinasok. Gayunpaman, sa ngayon ay hindi ko pa nasusuri kung ano ang aktwal na ipinadala doon. Ngunit pinaghihinalaan ko na ito ay malamang na hindi isang encryption key. Anyway, tingnan ang susunod na seksyon para maunawaan kung paano ko inalis ang internal firmware ng PSoC.