Обръщане и хакване на Aigo самокриптиращо външно HDD устройство. Част 1: Разчленяване на части

Обръщането и хакването на външни самокриптиращи устройства е моето старо хоби. В миналото имах възможност да практикувам с модели като Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Съвсем наскоро колега ми донесе друг експонат: Patriot (Aigo) SK8671, който е изграден по типичен дизайн - LCD индикатор и клавиатура за въвеждане на PIN код. Ето какво излезе от това…

1. Въведение
2. Хардуерна архитектура
– 2.1. Основна платка
– 2.2. LCD индикаторно табло
– 2.3. Клавиатурна дъска
– 2.4. Гледайки жиците
3. Последователност от стъпки на атака
– 3.1. Вземане на дъмп на данни от SPI флаш устройство
– 3.2. Надушване на комуникации

Обръщане и хакване на Aigo самокриптиращо външно HDD устройство. Част 1: Разчленяване на части


1. Въведение

Обръщане и хакване на Aigo самокриптиращо външно HDD устройство. Част 1: Разчленяване на части
жилище

Обръщане и хакване на Aigo самокриптиращо външно HDD устройство. Част 1: Разчленяване на части
Упаковка

Достъпът до данните, съхранявани на диска, който се предполага, че е криптиран, се осъществява след въвеждане на ПИН код. Няколко уводни бележки за това устройство:

  • За да промените ПИН кода, трябва да натиснете F1 преди отключване;
  • ПИН кодът трябва да съдържа от 6 до 9 цифри;
  • След 15 неправилни опита дискът се изчиства.

2. Хардуерна архитектура

Първо, ние разделяме устройството на части, за да разберем от какви компоненти се състои. Най-досадната задача е отварянето на кутията: много микроскопични винтове и пластмаса. След като отворихме кутията, виждаме следното (обърнете внимание на пет-пиновия конектор, който запоих):

Обръщане и хакване на Aigo самокриптиращо външно HDD устройство. Част 1: Разчленяване на части

2.1. Основна платка

Основната платка е доста проста:

Обръщане и хакване на Aigo самокриптиращо външно HDD устройство. Част 1: Разчленяване на части

Най-забележителните му части (вижте отгоре надолу):

  • конектор за LCD индикатор (CN1);
  • пищялка (SP1);
  • Pm25LD010 (спецификация) SPI флаш устройство (U2);
  • Контролер Jmicron JMS539 (спецификация) за USB-SATA (U1);
  • USB 3 конектор (J1).

SPI флаш устройството съхранява фърмуера за JMS539 и някои настройки.

2.2. LCD индикаторно табло

Няма нищо забележително на LCD платката.

Обръщане и хакване на Aigo самокриптиращо външно HDD устройство. Част 1: Разчленяване на части
Обръщане и хакване на Aigo самокриптиращо външно HDD устройство. Част 1: Разчленяване на части

Само:

  • LCD индикатор с неизвестен произход (вероятно с набор от китайски шрифт); с последователно управление;
  • Лентов конектор за клавиатурна платка.

2.3. Клавиатурна дъска

При изследването на клавиатурата нещата стават по-интересни.

Обръщане и хакване на Aigo самокриптиращо външно HDD устройство. Част 1: Разчленяване на части

Тук, от задната страна, виждаме лентов конектор, както и Cypress CY8C21434 микроконтролер PSoC 1 (по-нататък ще го наричаме просто PSoC)

Обръщане и хакване на Aigo самокриптиращо външно HDD устройство. Част 1: Разчленяване на части

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

2.4. Гледайки жиците

Нека да разберем какво е свързано тук. За да направите това, просто тествайте проводниците с мултицет:

Обръщане и хакване на Aigo самокриптиращо външно HDD устройство. Част 1: Разчленяване на части

Обяснения за тази диаграма, начертана на коляното:

  • PSoC е описан в техническата спецификация;
  • следващият конектор, този вдясно, е ISSP интерфейсът, който по волята на съдбата отговаря на написаното за него в интернет;
  • Най-десният конектор е терминалът за лентовия конектор към клавиатурната платка;
  • Черният правоъгълник е чертеж на конектора CN1, предназначен за свързване на основната платка към LCD платката. P11, P13 и P4 са свързани към PSoC пинове 11, 13 и 4 на LCD платката.

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 LCD чрез конектор CN1 и две ленти. Следователно свързваме сондите към трите съответни крака:

  • P4, общ вход/изход;
  • P11, I2C SCL;
  • P13, I2C SDA.

Обръщане и хакване на Aigo самокриптиращо външно HDD устройство. Част 1: Разчленяване на части

След това стартираме логическия анализатор Saleae и въвеждаме на клавиатурата: “123456~”. В резултат на това виждаме следната диаграма.

Обръщане и хакване на Aigo самокриптиращо външно HDD устройство. Част 1: Разчленяване на части

На него можем да видим три канала за обмен на данни:

  • има няколко кратки изблици на канал P4;
  • на P11 и P13 - почти непрекъснат обмен на данни.

Увеличавайки първия скок на канал P4 (син правоъгълник на предишната фигура), виждаме следното:

Обръщане и хакване на Aigo самокриптиращо външно HDD устройство. Част 1: Разчленяване на части

Тук можете да видите, че на P4 има почти 70ms монотонен сигнал, който в началото ми се стори, че играе ролята на часовник. Въпреки това, след като прекарах известно време в проверка на предположението си, открих, че това не е часовников сигнал, а аудио поток, който се извежда към високоговорителя при натискане на клавишите. Следователно този раздел на сигнала не съдържа полезна за нас информация. Въпреки това може да се използва като индикатор, за да се знае кога PSoC регистрира натискане на клавиш.

Последният аудио поток на P4 обаче е малко по-различен: това е аудиото за „невалиден ПИН“!

Връщайки се към графиката на натискане на клавиш, увеличавайки графиката на последния аудио поток (вижте отново синия правоъгълник), получаваме:

Обръщане и хакване на Aigo самокриптиращо външно HDD устройство. Част 1: Разчленяване на части

Тук виждаме монотонни сигнали на P11. Изглежда, че това е часовниковият сигнал. И P13 са данни. Забележете как моделът се променя след края на звуковия сигнал. Би било интересно да видим какво ще се случи тук.

Протоколите, които работят с два проводника, обикновено са SPI или I2C, а техническата спецификация на Cypress гласи, че тези щифтове съответстват на I2C, което виждаме, че е вярно в нашия случай:

Обръщане и хакване на Aigo самокриптиращо външно HDD устройство. Част 1: Разчленяване на части

USB-SATA чипсетът постоянно проверява PSoC, за да прочете състоянието на ключа, който по подразбиране е „0“. След това, когато натиснете клавиша "1", той се променя на "1". Окончателното предаване веднага след натискане на “~” е различно, ако е въведен грешен PIN код. За момента обаче не съм проверил какво всъщност се предава там. Но подозирам, че това е малко вероятно да е ключ за криптиране. Както и да е, вижте следващия раздел, за да разберете как премахнах вътрешния фърмуер на PSoC.

Източник: www.habr.com

Добавяне на нов коментар