ProHoster > блог > адміністраванне > Рэверсінг і ўзлом самошифрующегося вонкавага HDD-назапашвальніка Aigo. Частка 1: Прэпаруем на часткі
Рэверсінг і ўзлом самошифрующегося вонкавага HDD-назапашвальніка Aigo. Частка 1: Прэпаруем на часткі
Рэверсінг і ўзлом вонкавых самошифрующихся назапашвальнікаў - маё даўняе хобі. У мінулым мне даводзілася практыкавацца з такімі мадэлямі, як Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Зусім нядаўна калега занёс мне яшчэ адзін экспанат: Patriot (Aigo) SK8671, які пабудаваны па тыповым дызайне - ВК-індыкатар і клавіятура для ўводу ПІН-кода. Вось што з гэтага атрымалася...
Доступ да захаваных на дыску дадзеных, якія нібыта зашыфраваныя, ажыццяўляецца пасля ўводу пінкада. Некалькі ўступных заўваг па гэтым девайсе:
Для змены пінкада неабходна націснуць F1 перад разблакоўкай;
У пінкодзе павінна быць ад 6 да 9 лічбаў;
Пасля 15 няслушных спроб кружэлка чысціцца.
2. Апаратная архітэктура
Спачатку прэпаруем девайс на часткі, каб зразумець, з якіх кампанентаў ён складаецца. Самы нудны занятак - выкрыццё корпуса: шмат мікраскапічных шрубак і пластыка. Выявіўшы корпус, бачым наступнае (звярніце ўвагу на прыпаяны мной, пяцікантактны раздым):
кантролер Jmicron JMS539 (спецыфікацыя) для USB-SATA (U1);
раз'ём USB 3 (J1).
SPI-флэшка захоўвае прашыўку для JMS539 і некаторыя наладкі.
2.2. Плата ВК-індыкатара
На плаце ВК няма нічога характэрнага.
Ўсяго толькі:
ВК-індыкатар невядомага паходжання (верагодна з кітайскім наборам шрыфтоў); з паслядоўным кіраваннем;
істужачны злучальнік для клавіятурнай платы.
2.3. Клавіятурная плата
Пры аглядзе клавіятурнай платы, справы знаходзяць цікавейшы паварот.
Вось тут, на заднім боку, мы бачым істужачны злучальнік, а таксама Cypress CY8C21434 – мікракантролер PSoC 1 (далей па тэксце будзем клікаць яго проста PSoC)
CY8C21434 выкарыстоўвае набор інструкцый M8C (гл. дакументацыю). На [старонцы прадукта]( (http://www.cypress.com/part/cy8c21434-24ltxi) паказана, што ён падтрымлівае тэхналогію CapSense (рашэнне ад Cypress, для ёмістных клавіятур). Тут бачны прыпаяны мной пяцікантактны раздым - гэта стандартны падыход для падлучэння вонкавага праграматара праз ISSP-інтэрфейс.
2.4. Глядзім на правады
Разбяромся што з чым тут звязана. Для гэтага дастаткова празваніць правады мультыметрам:
Тлумачэнні да гэтай на каленцы намаляванай схемы:
PSoC апісаны ў тэхнічнай спецыфікацыі;
наступны раздым, які правей – ISSP-інтэрфейс, які воляю лёсаў адпавядае таму, што пра яго напісана ў Інтэрнэце;
самы правы раз'ём – гэта клема для істужачнага злучальніка з клавіятурнай платай;
чорны прастакутнік – чарцёж раздыма CN1, прызначанага для злучэння асноўнай платы з ВК-платай. P11, P13 і P4 - далучаныя да ножкамі PSoC 11, 13 і 4, на ВК-плаце.
3. Паслядоўнасць крокаў атакі
Цяпер калі мы ведаем, з якіх кампанентаў складаецца гэты назапашвальнік, нам неабходна: 1) пераканацца, што базавая функцыянальнасць шыфравання сапраўды прысутнічае; 2) даведацца, як генеруюцца/захоўваюцца ключы шыфравання; 3) знайсці, дзе менавіта праверацца Пінкод.
Для гэтага я зрабіў наступныя крокі:
зняў дамп дадзеных SPI-флэшкі;
паспрабаваў зняць дамп дадзеных PSoC-флэшкі;
пераканаўся, што абмен дадзенымі паміж Cypress PSoC і JMS539 фактычна ўтрымоўвае націснутыя клавішы;
пераканаўся, што пры змене пароля, у SPI-флэшцы нічога не перапісваецца;
быў занадта лянівым, каб рэверсаваць 8051-прашыўку ад JMS539.
3.1. Здымаем дамп дадзеных SPI-флэшкі
Гэтая працэдура вельмі простая:
падлучыць зонды да ножак флэшкі: CLK, MOSI, MISO і (апцыянальна) EN;
"абнюхаць" камунікацыі з ніферам, выкарыстоўваючы лагічны аналізатар (я скарыстаўся Saleae Logic Pro 16);
дэкадаваць SPI-пратакол і экспартаваць вынікі ў CSV;
скарыстацца decode_spi.rb, Каб распарсіць вынікі і атрымаць дамп.
Звярніце ўвагу, што такі падыход у выпадку з JMS539-кантролерам працуе асабліва добра, паколькі гэты кантролер на этапе ініцыялізацыі загружае з флэшкі ўсю прашыўку.
Зняўшы дамп з SPI-флэшкі, я прыйшоў да высновы, што яе адзіная задача - захоўваць прашыўку для прылады кіравання JMicron, якая ўбудоўваецца ў 8051-мікракантролер. Нажаль зняцце дампа SPI-флэшкі апынулася бескарысным:
пры змене пін-кода дамп флэшкі застаецца тым жа самым;
пасля этапу ініцыялізацыі девайс да SPI-флэшцы не звяртаецца.
3.2. Абнюхваем камунікацыі
Гэта адзін са спосабаў знайсці, які чып адказвае за праверку камунікацый, для якія цікавяць часу/кантэнту. Як мы ўжо ведаем, кантролер USB-SATA падлучаны да ВК Cypress PSoC, праз раз'ём CN1 і дзве стужкі. Таму падлучальны зонды да трох адпаведных ножак:
P4, агульны ўвод / вывад;
P11, I2C SCL;
P13, I2C SDA.
Затым запускаем лагічны аналізатар Saleae, і ўводны на клавіятуры: "123456~". У выніку бачым наступную дыяграму.
На ёй можам бачыць тры каналы абмену дадзенымі:
на канале P4 некалькі кароткіх усплёскаў;
на P11 і P13 - амаль бесперапынны абмен дадзенымі.
Павялічваючы першы ўсплёск на канале P4 (сіні прастакутнік папярэдняга малюнка), бачым наступнае:
Тут відаць, што на P4 амаль 70мс аднастайнага сігналу, які як мне спачатку здалося, гуляе ролю сінхрасігнала. Аднак, выдаткаваўшы некаторы час на тое, каб праверыць сваю здагадку, я выявіў, што гэта не сінхрасігнал, а аўдыёструмень, які выводзіцца на ціўкалку пры націску клавіш. Таму сам па сабе гэты ўчастак сігналу не змяшчае для нас карысную інфармацыю. Аднак яго можна выкарыстоўваць у якасці індыкатара, - каб ведаць момант, калі PSoC рэгіструе націск клавішы.
Аднак апошні аўдыё-струмень канала P4 трохі адрозніваецца ад іншых: гэта гук для «няслушнага пінкада»!
Вяртаючыся да дыяграмы націску клавіш, пры павелічэнні дыяграмы апошняга аўдыё-струменю (гл. зноў сіні прастакутнік), атрымліваем:
Тут мы бачым аднастайныя сігналы на P11. Так што падобна, гэта і ёсць сінхрасігнал. А P13 - дадзеныя. Звярніце ўвагу, як шаблон змяняецца пасля заканчэння гукавога сігналу. Было б цікава паглядзець, што тут адбываецца.
Пратаколы, якія працуюць з двума правадамі, гэта звычайна SPI ці I2C, і ў тэхнічнай спецыфікацыі на Cypress гаворыцца, што гэтыя кантакты адпавядаюць I2C, што як бачым справядліва і для нашага выпадку:
Чыпсэт USB-SATA стала апытвае PSoC – каб счытваць стан клавішы, якое па змаўчанні роўна "0". Затым, пры націску клавішы "1", яно змяняецца на "1". Канчатковая перадача адразу пасля націску “~” адрозніваецца, калі ўведзены няслушны пінкод. Аднак на дадзены момант я не правяраў, што там фактычна перадаецца. Але падазраю, што ці наўрад гэта ключ шыфравання. Так ці інакш, глядзі наступны раздзел, каб зразумець як я зняў дам унутранай прашыўкі PSoC.