что такое дамп прошивки

Digifant 2. Скачиваем прошивку. Часть 2. Дамп памяти

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

В данной статье я опишу лишь процедуру считывания прошивки из микросхемы ПЗУ. Дальнейший анализ дампа памяти и его дисассемблирование опишу в других статьях, так как это будет очень тесно связано с электрической принципиальной схемой. И сразу хочется сказать спасибо дружище за светлые мысли и уверенность в действиях.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

После этого отсоединил платы друг от друга и достал микросхему ПЗУ с большой из них. Здесь и дальше условимся большую плату понимать под номером 1, а маленькую — под номером 2.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Здесь стоит учесть 2 вещи. Первая — микросхемы боятся статики, поэтому принял необходимые меры, вторая — микросхема ПЗУ — с ультрафиолетовым стиранием.
После этих процедур достаем программатор TL866, установил его драйвера, а также программу работы на прилагаемом к нему диске. В этой процедуре нет ничего сложного, поэтому я не стану ее описывать. После установки подключил программатор, программа предложила его прошить, я согласился. После завершения процедуры отключил программатор, вставил в него микросхему ПЗУ и снова подключил к компьютеру.
После нового запуска программы необходимо выбрать тип микросхемы, с которой будет производится работа и потом считать дамп памяти.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

После завершения процедуры считывания перед нами предстает таблица, состоящая из адресов и значений в них в 16-ричном виде. Собственно, это и есть программа работы контроллера.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

В завершении этой замечательной процедуры я сохранил файл в двух форматах HEX и BIN, пока не знаю, с каким из них будет удобнее работать.

Теперь немного о дисассемблере. Как и в предыдущей статье я для начала решил обратиться к опыту коллег из Коррадо-клуба и скачал дисассемблер Ida pro 6.8, только для удобства русифицировал его.
Открыл в Ida Pro свежеиспеченный файл программы, получил пока что непонятную фигню, в которой нужно разбираться очень досканально вместе с даташитом на контроллер.

Источник

Как снять дамп прошивки и получить доступ к консоли управления гаджета

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

В этой статье я покажу, как разобрать девайс, чтобы исследовать интерфейсы отладки, получение прошивки устройства или доступа к консоли управления. Если вы новичок в этой области, статья предложит вам подробный алгоритм действий, который позволит успешно справиться с подобной задачей.

Разбираем устройство

Скорее всего, многие читатели решат пропустить эту часть статьи. Именно так я бы и поступил несколько месяцев назад, но оказалось, что в этой теме есть множество нюансов, знание которых может заметно облегчить жизнь начинающему исследователю.

Винты

Чтобы максимально усложнить задачу любителям покопаться в потрохах электронных устройств, их производители напридумывали огромное количество специальных винтов самой причудливой формы.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

И не зря: в случае чего придется вскрывать устройство другими методами, в результате мы можем повредить плату и добровольно избавить разработчика гаджета от грустной обязанности выполнять гарантийные обязательства. На иллюстрации ниже показан классический пример нераскручиваемого винта.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

А вот так выглядит концепт «безопасного» винта Apple.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Чтобы быть максимально готовым к подобным сюрпризам, вам нужно заранее закупиться набором отверток с необходимыми переходниками. Не буду рекламировать решения конкретных производителей (тем более, они не платят за это денег), но наборы, специально предназначенные для разборки мобильных устройств, в среднем стоят около шестидесяти баксов.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Однако даже самый крутой набор отверток не гарантирует стопроцентного успеха. На практике мне попадались устройства с нормальными винтами, при откручивании которых внутри корпуса ломалась пластмассовая часть с внутренней винтовой резьбой. Поэтому очень важно обращаться с хрупкими девайсами аккуратно, используя отвертки руками, растущими строго из нужного места.

Защита от вскрытия: сторонние материалы на плате

Думаю, вы наверняка в детстве из любопытства разбирали электронику и изучали платы разных устройств. Очень часто на ней обнаруживалась странная черная «клякса» — примерно такая, как на картинке ниже.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Она называется «компаунд». Если сказать проще, это отвердевшая полимерная смола с некоторыми добавками. Используется она преимущественно как электроизоляционный материал и иногда может мешать подключиться к определенным контактам на плате. Примем за основу компаунда эпоксидную смолу, как самый популярный тип.

Если вы поищите по форумам советы о том, чем ее убрать, то найдете много разных способов для самых различных случаев. Бессмысленно перечислять их все, подскажу только самый проверенный: нагревать верхние слои смолы и удалять. Это, конечно, не так красиво, как растворение, но зато почти всегда работает!

Кроме того стоит упомянуть, что на китайских платах иногда может встретиться прозрачный клей. Он легко удаляется, поэтому не будем на нем останавливаться.

Защита от вскрытия: прочие варианты

На практике другие методы защиты от вскрытия встречаются крайне редко. В специализированной литературе мне попадались упоминания о наличии специальных клипс, после вскрытия которых устройство уже будет нецелесообразно изучать. Так вот, это настолько диковинный способ защиты, что я даже не могу предложить пример такого устройства. Если вам попадалось что-то подобное, обязательно поделитесь своим опытом в комментариях.

Изучение платы устройства

После вскрытия устройства нас будет интересовать только его электронная плата.

Поиск информации в интернете

Часто на печатной плате устройства пишут ее номер или название, можно нагуглить по ним схему с описанием всех интерфейсов и пропустить сразу несколько этапов тестирования, которые проводятся, чтобы определить протоколы.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Ищем информацию о чипах

Кроме названия платы, следует найти и записать наименования всех чипов на ней. После этого нужно погуглить их назначение и поддерживаемые интерфейсы.

На фото ниже показан пример найденной технической спецификации чипа STM32F207: в этом документе приведены подробные описания предназначения каждого из контактов микросхемы.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Изучаем разъемы

Если на видном месте платы расположены разъемы, вероятнее всего разработчики девайса предполагали, что они будут как-то задействованы. Нужно помнить, что некоторые из портов устройства могут также использоваться как отладочные.

Так, у многих видеокамер разъем Ethernet используется еще и в режиме Power Over Ethernet (PoE). Если это ваш случай, то советую приобрести специальные разветвители.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Кроме того, у некоторых устройств этот порт может использоваться как RS-232, о котором я расскажу чуть позже. Для таких случаев подойдет другой специальный проводок.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Обратите внимание: если на плате нашелся подходящий разъем, не факт, что переходник к нему идеально подойдет, ведь есть несколько стандартов распиновки.

Разъемы USB на платах умных устройств встречаются реже, и предназначены они преимущественно для подключения цифровых накопителей. Иногда такой порт может использоваться как отладочный, например на смартфонах с Android.

Разъемы RS-232 чаще всего встречаются на промышленном оборудовании и нужны для решения задач администрирования. Переходники для таких разъемов продаются на каждом углу.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Контакты микросхем

Для работы с аппаратными интерфейсами требуется сначала определить их наличие и расположение на микросхеме. Для этого рассмотрим восемь самых распространенных вариантов их размещения.

Внимательно посмотрите на следующую фотографию платы.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Видите вот эти контакты?

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Почти со стопроцентной уверенностью утверждаю, что какие-то из них будут отвечать за отладку устройства по определенному интерфейсу, а может, даже и нескольким. Для подключения к этим пинам придется воспользоваться паяльником.

Также у некоторых устройств подобные контакты могут быть хорошо спрятаны.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

А вот другой пример. Посмотрите на картинку.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Некоторые контакты представляют собой сквозные отверстия с металлизацией. Для подключения к ним можно использовать стандартные пины, например для Arduino UNO. Но нужно учитывать ширину штырьков, иначе есть шанс повредить плату при подключении.

А вот еще один пример.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Если пины от Arduino не подойдут, можно использовать следующий метод. Берем провод с разъемом, показанным на следующем рисунке, — похожие разъемы часто используются для подключения индикаторов и управляющих кнопок к материнской плате компьютера. Удаляем пластмассовую оболочку, затем корректируем размер клеммы плоскогубцами и оборачиваем ее изолентой, чтобы избежать контакта с соседними пинами.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивкиБыло что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивкиСтало

У устройства, показанного на следующей иллюстрации, отладочный разъем был смонтирован отдельно для удобства подключения. Лучше всего тут воспользоваться паяльником и вывести все нужные контакты на отдельные проводки.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Рассмотрим еще один пример.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

На многослойных печатных платах встречаются участки, наводящие на мысли о том, что там могли отломать какую-то лишнюю деталь. В данном случае есть шанс, что отладочные пины были выведены на отдельную плату, которую при выпуске продукта удалили. Подробно рассматривать этот случай мы не будем, скажу только, что возможность подключения к таким контактам сильно зависит от архитектуры платы устройства, поскольку всегда остается шанс случайно повредить остальные элементы.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Если вы найдете в интернете схему распиновки какого-нибудь чипа, можно подключиться к нему напрямую, примерно так, как это показано на фото выше. Правда, для этого нужно уметь хорошо паять.

Некоторые пины могут быть спрятаны припойным покрытием — такой вариант показан на следующей картинке. Но опять же подобное встречается крайне редко.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Исследователь Деннис Гис (Dennis Giese) на DEFCON 26 рассказывал (PDF) про безопасность устройств Xiaomi. Во время изучения платы одного из гаджетов производства этой компании он столкнулся с тем, что контактная площадка чипов находилось точно под ними, из-за чего не было никакой возможности подключиться к ним без пайки.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Но позже он заметил на плате контактные дорожки, идущие к другому чипу. После этого Деннису потребовалось немного времени для поиска datasheet этой микросхемы.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Таким образом он смог определить, что эти контактные дорожки отвечают за общение чипа с RAM. Осталось лишь подключиться к дорожкам и сдампить прошивку.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Определяем интерфейсы на контактах

После того как мы разобрались с контактами, нам потребуется определить, какие протоколы работают на отладочных пинах. В этой части статьи мы рассмотрим оборудование, предназначенное для исследования протоколов взаимодействия с нашим девайсом.

Осциллограф

С осциллографами многие уже знакомы. Этот прибор позволяет визуально и программно определить активность на соответствующих пинах. Минус такого решения заключается в высокой стоимости осциллографа. А плюс — в том, что вы получаете полноценное оборудование для определения интерфейсов. К тому же многие дорогие осциллографы имеют функцию логического анализатора.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Логический анализатор

Существует несколько конкурирующих логических анализаторов, например DSLogic и Saleae Logic. Сравнительные характеристики этих устройств можно найти в интернете, мы же рассмотрим работу с анализатором Saleae Logic.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Стоимость девайса — от 500 долларов (для студентов предусмотрена скидка 50%). Контакты подключаем к исследуемым пинам, включаем устройство в режим прослушивания и наблюдаем примерно следующую картину.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Определить протоколы, которые используются на выбранных нами пинах, можно либо визуально, либо программно — для этого в интерфейсе приложения анализатора имеется специальная вкладка Analyzers. В некоторых случаях вам придется подбирать параметры — например, скорость передачи данных.

Мультиметр

При помощи мультиметра можно установить наличие сигнала на определенных пинах — достаточно найти контакты, на которых периодически будет подскакивать напряжение. Это удобно, если на исследуемой вами плате полно пинов, на проверку которых другими способами может уйти много времени.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Arduino

Если у вас есть Arduino и, желательно, небольшой экран для него, из этого комплекта вполне можно собрать портативный осциллограф. Как это делать, подскажет Великий Гугль — в интернете можно отыскать готовые проекты подобных приборов.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

JTAGenum

В некоторых случаях нужно догадаться, какой протокол вероятнее всего используется на том или ином интерфейсе. Для интерфейса JTAG существует специальный проект JTAGenum.

С помощью JTAGenum исследователь может определить, какой пин на изучаемой плате за что отвечает. Для этого достаточно приобрести Arduino, загрузить на него ПО JTAGenum и подключить контакты со 2-го по 11-й к тестируемой плате, после чего запустить сканирование. Пример работы такого устройства показан на следующей иллюстрации.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

JTAGulator

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Эта гламурная розовая плата в стиле Hello Kitty предназначена для решения тех же проблем, что и JTAGenum. Преимущества у этой платы, которая называется JTAGulator, следующие:

Кроме того, в настоящее время ведется разработка ПО для применения JTAGulator в роли логического анализатора.

Из минусов стоит отметить только ее высокую стоимость — порядка 175 долларов.

Какой вариант лучше? Об этом подробно рассказано в статье JTAGulator vs. JTAGenum, Tools for Identifying JTAG Pins in IoT Devices. Спойлер: и Arduino, и JTAGulator прекрасно справились со своей задачей.

Взаимодействие с интерфейсами

UART — один из наиболее часто встречающихся отладочных протоколов. В зависимости от платы и прошивки устройства он позволяет общаться с загрузчиком и терминалом операционной системы.

Протокол использует минимум два обязательных пина: RX — приемник, TX — передатчик — и два необязательных: GND — земля, VCC — напряжение. Чаще всего на плате потребуется искать четыре сгруппированных пина.

Для работы с Serial-консолью устройства понадобится соответствующая программа. В Unix-based-системах лучше всего использовать minicom, а в Windows — Realterm.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивкиИнтерфейс Realterm

После загрузки программы вам потребуется вручную подключать пины RX, и если не получится, то еще и GND, пока на экране при включении устройства не появится периодически прерывающийся (это важно!) поток байтов. Затем остается лишь подобрать частоту передачи данных, чтобы на экране вместо потока нечитабельных символов появились читабельные. Самые популярные частоты приведены в следующей таблице (первая колонка).

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Подобрать частоту можно вручную, переключая значения в самой программе, а можно с использованием популярного скрипта на питоне baudrate.py.

Оборудование

Для работы с протоколом UART используются специальные переходники, например позволяющие подключиться к разъему USB.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Переходник с USB на COM-порт тоже можно приспособить в качестве переходника USB — UART, достаточно использовать только контакты RD, TD и Ground.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Вот как выглядит переходник для UART, переделанный из переходника USB — RS-232.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

А еще в качестве переходника UART — USB можно использовать Arduino Uno. Для этого следует закоротить контакты Reset и GND.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Как вариант, можно приобрести плату Bus Pirate, которая позволяет решать целый спектр задач, но сейчас мы поговорим о ее использовании в качестве переходника USB — TTL.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Для перевода платы в режим переходника потребуется подключить ее к компьютеру и, используя Realterm/minicom (о которых я рассказывал ранее) на частоте 115 200 начать общаться с командной строкой устройства.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Не будем вдаваться в подробности настройки этого девайса. Листинг общения во время переключения платы в режим переходника предоставлен на картинке ниже.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Далее потребуется соединить пины MOSI → RX, MISO → TX, GND → GND, и можно использовать Bus Pirate как стандартный переходник.

А теперь настало время снова вспомнить про девайс под названием JTAGulator. Хоть изначально он создавался не для этого, JTAGulator все же можно приспособить в качестве переходника USB — TTL. Для этого аналогично Bus Pirate требуется подключиться к консоли управления устройством и вбить команды, показанные на следующей иллюстрации.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Перед тем как приступить к творческим экспериментам, проверьте все пины мультиметром на отсутствие высокого напряжения, иначе велик шанс спалить такие устройства, как Arduino и USB — UART. На удивление, на моей практике именно переходники USB — Serial показали себя с лучшей стороны и ни разу не сгорели во время тестирования плат.

JTAG — это название рабочей группы по разработке стандарта IEEE 1449, но многие ассоциируют его с названием отладочного интерфейса. Доступ к этому интерфейсу в большинстве случаев дает нам неограниченный контроль над устройством, например возможность сдампить его прошивку. Чаще всего для работы с JTAG используется система отладки для микроконтроллеров — OpenOCD.

У этого интерфейса есть четыре обязательных рабочих пина: TDI (сигнал данных на вход), TDO (сигнал данных на выход), TCK (тактовая частота), TMS (выбор режима тестирования) — и один необязательный — TRST (TestReset).

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Чаще всего контакты на плате группируются с другими в одну-две дорожки, поэтому поиск нужных пинов осложняется. Способы определить, за что отвечает каждый порт, указывались ранее, а сейчас мы рассмотрим примеры общения с устройствами по интерфейсу JTAG.

Оборудование

Сергей Поделкин уже подробно описал использование Arduino в качестве программатора для некоторых чипов, поэтому настоятельно советую вам ознакомиться с его статьей «Превращаем Arduino в полноценный AVRISP программатор». От себя добавлю, что проектов для Arduino существует множество, и если вам вдруг понадобился программатор для определенной архитектуры, то ищите информацию в интернете — скорее всего, кто-то уже его реализовал.

Если мы уже знаем, за что отвечает каждый пин, и у нас есть плата JTAGulator, можно переключить ее в режим совместимости с OpenOCD и заставить работать как переходник.

Один из дешевых и многофункциональных программаторов, позволяющих работать с большим количеством различных процессоров и совместимых с OpenOCD, называется J-Link. Обойдется он примерно в 5000 рублей.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Напоследок стоит упомянуть о возможности работы с интерфейсом JTAG с использованием платы Bus Pirate и ПО OpenOCD. Подробно настройка устройства описана в статье Gonemad’s Bus Pirate/OpenOCD walk through.

Этот интерфейс чаще всего используется для общения с памятью EEPROM. Для подключения минимально требуется две дорожки. Рассмотрим способы, позволяющие прослушивать общение.

Оборудование

Активность I2C можно мониторить при помощи Arduino — есть соответствующий проект на GitHub.

Очевидно, этого инструментария недостаточно для полноценного дампа прошивки, но с помощью такого метода можно как минимум убедиться, что данные по этому интерфейсу передаются. Кроме того, для работы с I2C можно воспользоваться Bus Pirate. Помни, что при передаче данных могут возникнуть помехи, поэтому не стоит доверять этой информации на сто процентов. Подключение пинов: MOSI → SDA, CLK → SCL.

Подробный туториал по использованию Bus Pirate можно посмотреть в блоге Digitalpeer.

Существует еще девайс под названием I2CDriver: он предназначен для взаимодействия компьютера с I2C-интерфейсом по каналу USB. Он позволяет не только управлять устройством, но и прослушивать или декодировать его трафик. Сам я пока это приспособление не использовал, но выглядит оно крайне интересно.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Хоть и нечасто приходится работать с этим интерфейсом, но рассмотреть его надо.

SPI — интерфейс для последовательного обмена данными между микросхемами. Работает он по принципу Master — Slave и использует четыре сигнала: MOSI (от ведущего к ведомому), MISO (от ведомого к ведущему), SCK (тактовый сигнал) и CS (выбор ведомого).

Оборудование

Как всегда, начнем мы с Arduino. Проект под названием spi-dump позволяет использовать этот компьютер для дампа прошивки с SPI EEPROM. Много об этом писать не буду, на GitHub лежит хороший туториал по использованию этой технологии, написанный ее автором.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

У Bus Pirate тоже есть функция SPI-сниффера. Настраивается так же, как и I2C.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Схема подключения пинов: MOSI → MOSI, CLK → CLOCK, MISO → MISO, CS→ CS.

Скажу сразу: ни разу не встречал этот интерфейс в устройствах IoT, но, поскольку он широко применяется разработчиками микроконтроллеров, то, вероятнее всего, в скором времени появится и в составе умных устройств. Интерфейс SWD использует тот же протокол, что и JTAG. Для работы ему требуется только три провода: DIO (input-output), CLK и GND.

Оборудование

Так как у Bus Pirate нет полноценной поддержки SWD, мы сможем только записать прошивку на чип. Для этого схема подключения будет следующей: MOSI → DIO, CLK → CLK и GND → GND.

После того как мы рассмотрели работу с интерфейсами, разберемся, чем же нам это поможет при тестировании умного девайса.

Полезная нагрузка

Используя обнаруженные ранее интерфейсы, мы постараемся получить исчерпывающую информацию о устройстве — версию ПО, исходники, доступ в консоль управления и прочее.

Получаем дамп прошивки…

…с использованием интерфейса UART

Посредством UART чаще всего мы сможем общаться с загрузчиком операционной системы. Так как возможности интерфейса командной строки загрузчика ограничиваются требованиями разработчиков платы, мы не сможем изучить все случаи, поэтому будут рассмотрены два отдельных варианта с разными загрузчиками: Universal Boot Loader (U-Boot) и Common Firmware Environment (CFE).

Чтобы подключиться к загрузчикам, мы воспользуемся одной из программ для работы с Serial-устройствами — Minicom или Realterm. Частоту передачи данных мы уже определили на предыдущих этапах исследования. Также для активации консоли может потребоваться зажать Ctrl + C или другие комбинации клавиш, поэтому придется следить за сообщениями, появляющимися на экране.

Если вы используете U-Boot, после подключения к консоли можно посмотреть список доступных команд, набрав на клавиатуре волшебное слово help.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

В ответ мы получим сообщение, что по адресу 0x81000000 во флеш-памяти записан наш файл. Прочитаем его командой md.l (memory display).

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

В дальнейшем этот процесс можно автоматизировать, например при помощи библиотеки PySerial.

В случае с загрузчиком CFE меняется только последовательность вводимых команд.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Попробуем прочитать 100 байт с устройства nflash1.nvram.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

И, аналогично случаю с U-Boot, можно автоматизировать процесс чтения памяти при помощи PySerial.

В зависимости от конфигурации загрузчика иногда вместо того, чтобы тратить время на получение дампа памяти по UART (бывало, 15 Мбайт скачивались всю ночь), можно отправить их по протоколу TFTP или записать на microSD.

…с использованием интерфейса JTAG

При работе с JTAG очень важно определиться, какое ПО может взаимодействовать с этим интерфейсом. Сейчас я расскажу, как получить дамп прошивки, используя сборку OpenOCD + Bus Pirate.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Нам потребуется программа OpenOCD и настроенная конфигурация для Bus Pirate, которая доступна в репозитории Proxmark.

Для начала запустим OpenOCD с нашим конфигом.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Затем подключим пины Bus Pirate к JTAG Proxmark3 следующим образом: CS → TMS, MOSI → TDI, MISO → TDO, CLK → TCK, GND → GND и 3.3 → 3.3.

Теперь останется только подключиться к поднятому нами сервису на порте 4444, который указан в конфиге, и ввести пару команд.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

И в этой же директории мы обнаружим файлик backup.bin с прошивкой устройства.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Процесс занял всего 246 секунд, и прошивка уже у нас!

…с использованием интерфейса I2C/SPI

Преимущественно нас будет интересовать использование этих интерфейсов у чипов энергонезависимой памяти EEPROM. Отмечу сразу, что Arduino — не лучшее оборудование для работы с памятью, но считаю, что использовать его все-таки можно.

Для Arduino имеется как минимум два проекта по дампу прошивки чипов I2C/SPI: arduino-i2c-read-eeprom и spi-dump.

Не советую пользоваться этими разработками новичкам, так как при некорректном подключении устройства к пинам можно запросто его сжечь.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Отдельно хочу рассказать о программаторе tl866plus, который может работать с EPROM, EEPROM, FLASH, SPI, I2C,93Cxx, ICSP и другими чипами. По сравнению с другим аналогичным оборудованием стоит он копейки.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

ПО для tl866plus есть только под Windows, но, если вы используете другую ОС, оно хорошо заработает в виртуалке, и проблем с пробросом устройства быть не должно. Также для этого программатора есть наборы переходников, позволяющих подключать к нему разные чипы.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Мы рассмотрим считывание прошивки с JTAGulator без пайки, с использованием прищепки для SOP8.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Сразу оговорюсь: во время работы JTAGulator находился в ждущем режиме и был запитан по USB, поскольку программатор не справлялся с обеспечением питания для всей платы устройства. Чтобы девайс не проявлял активность в процессе дампа прошивки, лучше всего зажать на чипе пин Reset.

Начнем с запуска ПО для работы с TL866 — Xpro. Ниже показан скриншот интерфейса программы.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

На фотографии ниже отмечен чип памяти, смонтированный на плате JTAGulator, — у меня это 24LC5121.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Выбираем его в программе.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Далее подключаем к памяти клипсу зажима (как на фото).

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Нажимаем на кнопку Chip read и получаем дамп прошивки JTAGulator.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Получение root-консоли

Если у вас по какой-то причине не получилось сдампить прошивку, можно попробовать получить доступ к админской консоли управления по интерфейсу UART.

Аргументы запуска

Для начала посмотрим, какие переменные были установлены разработчиками.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Нас должна заинтересовать переменная аргументов запуска bootargs:

bootargs=mem=42M console=ttyAMA0,115200 root=/dev/mtdblock1rootfstype=cramfsmtdparts=xm\_sfc:256K(boot),3520K(romfs),2560K(user),1280K(web),256K(custom),320K(mtd)

Для получения рутового доступа можно попробовать дописать в аргументы запуска путь до Bash/BusyBox, чтобы обеспечить автозапуск рутовой консоли при старте системы. Для этого в консоль требуется ввести одну из следующих команд:

Этот метод срабатывает нечасто. Советую посмотреть презентацию компании Synack на DEFCON 23, где были протестированы четырнадцать устройств и к двенадцати из них получены рутовые консоли именно таким методом.

Подмена прошивки

Подменить прошивку устройства с помощью TFTP можно только при наличии порта Ethernet. В переменных окружения потребуется ввести команду setenv и указать настройки сети.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Здесь ipaddr — IP-адрес устройства, netmask — маска сети, serverip — адрес сервера TFTP на вашем компьютере. Синтаксис команды tftpboot имеет следующий вид.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Команда mccinit нужна для инициализации карточки, а ext2ls — для загрузки файла с карточки во флеш-память. Подробнее эта процедура описана в вики OpenMoko.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Ниже показан пример использования этой команды.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Метод швейной иглы

Этому способу было посвящено выступление «pin2pwn — How to Root anEmbedded Linux Box with a Sewing Needle» на конференции DEFCON 24.

Суть хака заключалась в том, чтобы закоротить соответствующие пины на чтение во время загрузки девайса и тем самым вызвать исключение у скрипта автозагрузки, которое выкинет нас в рутовую консоль.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Внимание! Есть шанс сжечь память устройства, так что используйте этот метод осторожно.

На этой радостной ноте с теорией мы, пожалуй, закончим и перейдем к практике. Нам предстоит решить увлекательную задачу: извлечь прошивку из IP-камеры. Не переключайтесь.

Практическая часть: извлечение прошивки камеры

Для эксперимента я использовал камеру с незатейливым названием WiFi Smart Camera. Это очень симпатичный девайс, внешне похожий на гибрид фена с ночником.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Поскольку камера китайская, открыть ее не составило особого труда, даже без отвертки.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

В первую очередь изучим название платы.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Теперь посмотрим на нее с другой стороны.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Наименование платы видно на первой фотографии: IPG-RM-BLK510-0062-S. Гуглим.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Сайт 121.40.191.139:81 на момент написания статьи был отключен, поэтому воспользуемся кешем Google.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

В первой колонке таблицы перечислены названия контактных площадок на плате, во второй — номера контактов, в третьей и четвертой — их описание и предназначение.

Быстро просматриваем табличку в поисках интересных интерфейсов и обнаруживаем, что у площадки J10 вынесены порты UART.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Находим ее на плате.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Количество пинов совпадает, нумерация есть. Дело за малым! Подключаем Arduino к пинам GND (земля), UART0_TXD (отправка) и UART0_RXD (прием).

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Включаем программу для работы с Serial-устройствами: в моем случае это IONinja, перезапускаем устройство и зажимаем Ctrl + C на клавиатуре для входа в консоль загрузчика U-Boot.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Получить рутовую консоль не удалось, так что перейдем к следующему пункту. У нас есть возможность использовать команды cramfsls и cramfsload. Попробуем сдампить файлик с именами пользователей и паролями.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Вот мы и получили первый зашитый пароль в камере:

На одном из форумов находим уже декодированный хеш.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Красным отмечен чип памяти EEPROM с контактной площадкой SOP8. На нем написано его название: 25L6433F. Погуглив, определяем, что общение идет по SPI, а также находим распиновку микросхемы.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Считать содержимое чипа напрямую с платы не получилось. Придется выпаивать.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Подключаем извлеченную при помощи паяльника микросхему к программатору.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Записываем дамп, припаиваем чип обратно и удостоверимся, что в сохраненном файле есть то, что нам требуется. Для этого воспользуемся утилитой binwalk.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Посмотрим, что получилось распаковать.

что такое дамп прошивки. Смотреть фото что такое дамп прошивки. Смотреть картинку что такое дамп прошивки. Картинка про что такое дамп прошивки. Фото что такое дамп прошивки

Вот мы и получили все файлы с этого устройства!

В завершение

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *