Рэверсінг і ўзлом самошифрующегося вонкавага HDD-назапашвальніка Aigo. Частка 1: Прэпаруем на часткі

Рэверсінг і ўзлом вонкавых самошифрующихся назапашвальнікаў - маё даўняе хобі. У мінулым мне даводзілася практыкавацца з такімі мадэлямі, як Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Зусім нядаўна калега занёс мне яшчэ адзін экспанат: Patriot (Aigo) SK8671, які пабудаваны па тыповым дызайне - ВК-індыкатар і клавіятура для ўводу ПІН-кода. Вось што з гэтага атрымалася...

1. ўвядзенне
2. Апаратная архітэктура
- 2.1. Асноўная плата
- 2.2. Плата ВК-індыкатара
- 2.3. Клавіятурная плата
- 2.4. Глядзім на правады
3. Паслядоўнасць крокаў атакі
- 3.1. Здымаем дамп дадзеных SPI-флэшкі
- 3.2. Абнюхваем камунікацыі

Рэверсінг і ўзлом самошифрующегося вонкавага HDD-назапашвальніка Aigo. Частка 1: Прэпаруем на часткі


1. ўвядзенне

Рэверсінг і ўзлом самошифрующегося вонкавага HDD-назапашвальніка Aigo. Частка 1: Прэпаруем на часткі
корпус

Рэверсінг і ўзлом самошифрующегося вонкавага HDD-назапашвальніка Aigo. Частка 1: Прэпаруем на часткі
Ўпакоўка

Доступ да захаваных на дыску дадзеных, якія нібыта зашыфраваныя, ажыццяўляецца пасля ўводу пінкада. Некалькі ўступных заўваг па гэтым девайсе:

  • Для змены пінкада неабходна націснуць F1 перад разблакоўкай;
  • У пінкодзе павінна быць ад 6 да 9 лічбаў;
  • Пасля 15 няслушных спроб кружэлка чысціцца.

2. Апаратная архітэктура

Спачатку прэпаруем девайс на часткі, каб зразумець, з якіх кампанентаў ён складаецца. Самы нудны занятак - выкрыццё корпуса: шмат мікраскапічных шрубак і пластыка. Выявіўшы корпус, бачым наступнае (звярніце ўвагу на прыпаяны мной, пяцікантактны раздым):

Рэверсінг і ўзлом самошифрующегося вонкавага HDD-назапашвальніка Aigo. Частка 1: Прэпаруем на часткі

2.1. Асноўная плата

Асноўная плата даволі простая:

Рэверсінг і ўзлом самошифрующегося вонкавага HDD-назапашвальніка Aigo. Частка 1: Прэпаруем на часткі

Найбольш характэрныя яе часткі (гл. зверху ўніз):

  • раз'ём для ВК-індыкатара (CN1);
  • ціўкалка (SP1);
  • Pm25LD010 (спецыфікацыя) SPI-флэшка (U2);
  • кантролер Jmicron JMS539 (спецыфікацыя) для USB-SATA (U1);
  • раз'ём USB 3 (J1).

SPI-флэшка захоўвае прашыўку для JMS539 і некаторыя наладкі.

2.2. Плата ВК-індыкатара

На плаце ВК няма нічога характэрнага.

Рэверсінг і ўзлом самошифрующегося вонкавага HDD-назапашвальніка Aigo. Частка 1: Прэпаруем на часткі
Рэверсінг і ўзлом самошифрующегося вонкавага HDD-назапашвальніка Aigo. Частка 1: Прэпаруем на часткі

Ўсяго толькі:

  • ВК-індыкатар невядомага паходжання (верагодна з кітайскім наборам шрыфтоў); з паслядоўным кіраваннем;
  • істужачны злучальнік для клавіятурнай платы.

2.3. Клавіятурная плата

Пры аглядзе клавіятурнай платы, справы знаходзяць цікавейшы паварот.

Рэверсінг і ўзлом самошифрующегося вонкавага HDD-назапашвальніка Aigo. Частка 1: Прэпаруем на часткі

Вось тут, на заднім боку, мы бачым істужачны злучальнік, а таксама Cypress CY8C21434 – мікракантролер PSoC 1 (далей па тэксце будзем клікаць яго проста PSoC)

Рэверсінг і ўзлом самошифрующегося вонкавага HDD-назапашвальніка Aigo. Частка 1: Прэпаруем на часткі

CY8C21434 выкарыстоўвае набор інструкцый M8C (гл. дакументацыю). На [старонцы прадукта]( (http://www.cypress.com/part/cy8c21434-24ltxi) паказана, што ён падтрымлівае тэхналогію CapSense (рашэнне ад Cypress, для ёмістных клавіятур). Тут бачны прыпаяны мной пяцікантактны раздым - гэта стандартны падыход для падлучэння вонкавага праграматара праз ISSP-інтэрфейс.

2.4. Глядзім на правады

Разбяромся што з чым тут звязана. Для гэтага дастаткова празваніць правады мультыметрам:

Рэверсінг і ўзлом самошифрующегося вонкавага HDD-назапашвальніка Aigo. Частка 1: Прэпаруем на часткі

Тлумачэнні да гэтай на каленцы намаляванай схемы:

  • 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-кантролерам працуе асабліва добра, паколькі гэты кантролер на этапе ініцыялізацыі загружае з флэшкі ўсю прашыўку.

$ 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

Зняўшы дамп з SPI-флэшкі, я прыйшоў да высновы, што яе адзіная задача - захоўваць прашыўку для прылады кіравання JMicron, якая ўбудоўваецца ў 8051-мікракантролер. Нажаль зняцце дампа SPI-флэшкі апынулася бескарысным:

  • пры змене пін-кода дамп флэшкі застаецца тым жа самым;
  • пасля этапу ініцыялізацыі девайс да SPI-флэшцы не звяртаецца.

3.2. Абнюхваем камунікацыі

Гэта адзін са спосабаў знайсці, які чып адказвае за праверку камунікацый, для якія цікавяць часу/кантэнту. Як мы ўжо ведаем, кантролер USB-SATA падлучаны да ВК Cypress PSoC, праз раз'ём CN1 і дзве стужкі. Таму падлучальны зонды да трох адпаведных ножак:

  • P4, агульны ўвод / вывад;
  • P11, I2C SCL;
  • P13, I2C SDA.

Рэверсінг і ўзлом самошифрующегося вонкавага HDD-назапашвальніка Aigo. Частка 1: Прэпаруем на часткі

Затым запускаем лагічны аналізатар Saleae, і ўводны на клавіятуры: "123456~". У выніку бачым наступную дыяграму.

Рэверсінг і ўзлом самошифрующегося вонкавага HDD-назапашвальніка Aigo. Частка 1: Прэпаруем на часткі

На ёй можам бачыць тры каналы абмену дадзенымі:

  • на канале P4 некалькі кароткіх усплёскаў;
  • на P11 і P13 - амаль бесперапынны абмен дадзенымі.

Павялічваючы першы ўсплёск на канале P4 (сіні прастакутнік папярэдняга малюнка), бачым наступнае:

Рэверсінг і ўзлом самошифрующегося вонкавага HDD-назапашвальніка Aigo. Частка 1: Прэпаруем на часткі

Тут відаць, што на P4 амаль 70мс аднастайнага сігналу, які як мне спачатку здалося, гуляе ролю сінхрасігнала. Аднак, выдаткаваўшы некаторы час на тое, каб праверыць сваю здагадку, я выявіў, што гэта не сінхрасігнал, а аўдыёструмень, які выводзіцца на ціўкалку пры націску клавіш. Таму сам па сабе гэты ўчастак сігналу не змяшчае для нас карысную інфармацыю. Аднак яго можна выкарыстоўваць у якасці індыкатара, - каб ведаць момант, калі PSoC рэгіструе націск клавішы.

Аднак апошні аўдыё-струмень канала P4 трохі адрозніваецца ад іншых: гэта гук для «няслушнага пінкада»!

Вяртаючыся да дыяграмы націску клавіш, пры павелічэнні дыяграмы апошняга аўдыё-струменю (гл. зноў сіні прастакутнік), атрымліваем:

Рэверсінг і ўзлом самошифрующегося вонкавага HDD-назапашвальніка Aigo. Частка 1: Прэпаруем на часткі

Тут мы бачым аднастайныя сігналы на P11. Так што падобна, гэта і ёсць сінхрасігнал. А P13 - дадзеныя. Звярніце ўвагу, як шаблон змяняецца пасля заканчэння гукавога сігналу. Было б цікава паглядзець, што тут адбываецца.

Пратаколы, якія працуюць з двума правадамі, гэта звычайна SPI ці I2C, і ў тэхнічнай спецыфікацыі на Cypress гаворыцца, што гэтыя кантакты адпавядаюць I2C, што як бачым справядліва і для нашага выпадку:

Рэверсінг і ўзлом самошифрующегося вонкавага HDD-назапашвальніка Aigo. Частка 1: Прэпаруем на часткі

Чыпсэт USB-SATA стала апытвае PSoC – каб счытваць стан клавішы, якое па змаўчанні роўна "0". Затым, пры націску клавішы "1", яно змяняецца на "1". Канчатковая перадача адразу пасля націску “~” адрозніваецца, калі ўведзены няслушны пінкод. Аднак на дадзены момант я не правяраў, што там фактычна перадаецца. Але падазраю, што ці наўрад гэта ключ шыфравання. Так ці інакш, глядзі наступны раздзел, каб зразумець як я зняў дам унутранай прашыўкі PSoC.

Крыніца: habr.com

Дадаць каментар