ProHoster > blog > administratie > Omkeren en hacken van Aigo zelfversleutelende externe harde schijf. Deel 1: Ontleden in delen
Omkeren en hacken van Aigo zelfversleutelende externe harde schijf. Deel 1: Ontleden in delen
Het omkeren en hacken van externe zelfversleutelende schijven is mijn oude hobby. In het verleden heb ik de kans gehad om te oefenen met modellen als Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Onlangs bracht een collega me nog een tentoonstelling: Patriot (Aigo) SK8671, die is gebouwd volgens een typisch ontwerp: een LCD-indicator en een toetsenbord voor het invoeren van een pincode. Dat is wat er uit voortkwam...
Toegang tot de gegevens die op de schijf zijn opgeslagen, die zogenaamd gecodeerd zijn, wordt uitgevoerd na het invoeren van de pincode. Een paar inleidende opmerkingen over dit apparaat:
Om de pincode te wijzigen, moet u op F1 drukken voordat u ontgrendelt;
De pincode moet 6 tot 9 cijfers bevatten;
Na 15 foutieve pogingen wordt de schijf gewist.
2. Hardware-architectuur
Eerst ontleden we het apparaat in onderdelen om te begrijpen uit welke componenten het bestaat. De meest vervelende taak is het openen van de behuizing: veel microscopisch kleine schroeven en plastic. Nadat we de behuizing hebben geopend, zien we het volgende (let op de vijfpolige connector die ik heb gesoldeerd):
2.1. Hoofdbord
Het moederbord is vrij eenvoudig:
De meest opvallende delen (zie van boven naar beneden):
Jmicron JMS539-controller (specificatie) voor USB-SATA (U1);
USB 3-connector (J1).
De SPI-flashdrive slaat de firmware voor JMS539 en enkele instellingen op.
2.2. LCD-indicatorbord
Er is niets opmerkelijks op het LCD-bord.
Alleen:
LCD-indicator van onbekende oorsprong (waarschijnlijk met een Chinese lettertypeset); met sequentiële besturing;
Lintconnector voor toetsenbordbord.
2.3. Toetsenbordbord
Bij het onderzoeken van het toetsenbord nemen de zaken een interessantere wending.
Hier zien we aan de achterkant een lintconnector, evenals een Cypress CY8C21434-microcontroller PSoC 1 (hierna zullen we deze eenvoudigweg PSoC noemen)
CY8C21434 gebruikt de M8C-instructieset (zie de documentatie). Op [productpagina]( (http://www.cypress.com/part/cy8c21434-24ltxi) wordt aangegeven dat het de technologie ondersteunt CapSense (oplossing van Cypress, voor capacitieve toetsenborden). Hier kun je de vijf-pins connector zien die ik heb gesoldeerd - dit is een standaardaanpak voor het aansluiten van een externe programmeur via de ISSP-interface.
2.4. Kijkend naar de draden
Laten we uitzoeken wat hier met elkaar verbonden is. Om dit te doen, test u gewoon de draden met een multimeter:
Uitleg voor dit diagram getekend op de knie:
De PSoC wordt beschreven in de technische specificatie;
de volgende connector, die aan de rechterkant, is de ISSP-interface, die, door de wil van het lot, overeenkomt met wat erover op internet staat;
De meest rechtse connector is de aansluiting voor de lintconnector op het toetsenbordbord;
De zwarte rechthoek is een tekening van de CN1-connector, ontworpen om het moederbord op het LCD-bord aan te sluiten. P11, P13 en P4 zijn verbonden met PSoC-pinnen 11, 13 en 4 op het LCD-bord.
3. Volgorde van aanvalsstappen
Nu we weten uit welke componenten deze schijf bestaat, moeten we: 1) ervoor zorgen dat de basiscoderingsfunctionaliteit daadwerkelijk aanwezig is; 2) ontdek hoe encryptiesleutels worden gegenereerd/opgeslagen; 3) Zoek waar de pincode precies wordt gecontroleerd.
Om dit te doen heb ik de volgende stappen uitgevoerd:
nam een datadump van een SPI-flashdrive;
geprobeerd gegevens van een PSoC-flashstation te dumpen;
geverifieerd dat de communicatie tussen Cypress PSoC en JMS539 daadwerkelijk toetsaanslagen bevat;
Ik heb ervoor gezorgd dat er bij het wijzigen van het wachtwoord niets op de SPI-flashdrive wordt overschreven;
was te lui om de 8051-firmware van JMS539 terug te draaien.
3.1. Een gegevensdump nemen van een SPI-flashdrive
Deze procedure is heel eenvoudig:
sluit sondes aan op de poten van de flashdrive: CLK, MOSI, MISO en (optioneel) EN;
"sniff" -communicatie met een sniffer met behulp van een logische analysator (ik gebruikte Saleae Logic Pro 16);
decodeer het SPI-protocol en exporteer resultaten naar CSV;
profiteer ervan decode_spi.rbom de resultaten te parseren en een dump te krijgen.
Houd er rekening mee dat deze aanpak vooral goed werkt in het geval van de JMS539-controller, omdat deze controller tijdens de initialisatiefase alle firmware van de flashdrive laadt.
Nadat ik een dump van de SPI-flashdrive had genomen, kwam ik tot de conclusie dat het de enige taak is om de firmware op te slaan voor het JMicron-besturingsapparaat, dat in de 8051-microcontroller is ingebouwd. Helaas bleek het nutteloos om een dump van de SPI-flashdrive te maken:
wanneer de pincode wordt gewijzigd, blijft de dump van de flashdrive hetzelfde;
Na de initialisatiefase heeft het apparaat geen toegang tot de SPI-flashdrive.
3.2. Communicatie snuiven
Dit is een manier om erachter te komen welke chip verantwoordelijk is voor het controleren van de communicatie op het tijdstip/de inhoud van interesse. Zoals we al weten, is de USB-SATA-controller via connector CN1 en twee linten verbonden met de Cypress PSoC LCD. Daarom verbinden we de sondes met de drie overeenkomstige poten:
P4, algemene invoer/uitvoer;
P11, I2C-SCL;
P13, I2C SDA.
Vervolgens starten we de Saleae-logica-analysator en voeren op het toetsenbord in: "123456~". Als resultaat zien we het volgende diagram.
Daarop kunnen we drie kanalen voor gegevensuitwisseling zien:
er zijn verschillende korte bursts op kanaal P4;
op P11 en P13 - vrijwel continue gegevensuitwisseling.
Als we inzoomen op de eerste piek op kanaal P4 (blauwe rechthoek in de vorige figuur), zien we het volgende:
Hier kun je zien dat er op P4 bijna 70 ms een monotoon signaal is, dat in eerste instantie de rol van een kloksignaal leek te spelen. Nadat ik echter wat tijd had besteed aan het controleren van mijn gok, ontdekte ik dat dit geen kloksignaal is, maar een audiostream die naar de tweeter wordt gestuurd wanneer de toetsen worden ingedrukt. Daarom bevat dit gedeelte van het signaal zelf geen nuttige informatie voor ons. Het kan echter worden gebruikt als indicator om te weten wanneer de PSoC een toetsaanslag registreert.
De nieuwste P4-audiostream is echter een beetje anders: het is de audio voor de "ongeldige pincode"!
Terugkerend naar de toetsaanslaggrafiek, inzoomend op de laatste audiostreamgrafiek (zie opnieuw de blauwe rechthoek), krijgen we:
Hier zien we monotone signalen op P11. Het lijkt er dus op dat dit het kloksignaal is. En P13 zijn gegevens. Merk op hoe het patroon verandert nadat de pieptoon is afgelopen. Het zou interessant zijn om te zien wat hier gebeurt.
Protocollen die met twee draden werken zijn meestal SPI of I2C, en de technische specificatie op Cypress stelt dat deze pinnen overeenkomen met I2C, wat in ons geval waar is:
De USB-SATA-chipset ondervraagt voortdurend de PSoC om de status van de sleutel te lezen, die standaard “0” is. Wanneer u vervolgens op de toets "1" drukt, verandert deze in "1". De uiteindelijke verzending onmiddellijk na het indrukken van “~” is anders als de verkeerde pincode wordt ingevoerd. Op dit moment heb ik echter niet gecontroleerd wat daar daadwerkelijk wordt uitgezonden. Maar ik vermoed dat het onwaarschijnlijk is dat dit een encryptiesleutel is. Hoe dan ook, zie het volgende gedeelte om te begrijpen hoe ik de interne PSoC-firmware heb verwijderd.