Comments 60
Жесть.
Получается вообще, никакие железные защиты не помогут?
В том же MIG рядом с ESP32 стоит ПЛИС от Lattice. Её "прошивка" (bitstream) записана в NVCM - подобие фьюзов. Но они очень сильно заморочились на тему вычитывания, и, по их заверениям, там даже микроскоп не поможет.
А так, здесь всегда баланс: стоимость атаки / выгода от её проведения. В большинстве случаев хватает самых простых защит, чтобы сделать задачу невыгодной.
Почти ничего не понял, но прочитал, как остросюжетный детектив.
Почти ничего не понял, но прочитал, как остросюжетный детектив.
Присоединяюсь.
Re график распределения единичных бит.
Ну где-то 3 ну 3.5 гдэ- то так? Да? Мат. Ожидание да дорогой?
Re: Raspberry Pi Pico прекрасно подходит для проведения voltage glitch атак
Еще плюс электронный микроскоп (там же в статье)
Re Корреляция поможет....Я пытался использовать статистические алгоритм но понял как легко уводит в далёкие дали.
Как красиво В далекие Дали
Пароль: Рыба-мечь /s
Мощно, снимаю шляпу! Понял что мой загрузчик с АЕS128 защита от честных людей))
Тупой "аналоговый" вопрос: а если внедрить в чип конденсатор на питание блока расшифровки? Ну будет там ровное потребление...
(не рассматривая вопрос целесообразности такого усложнения и удорожания)
Осциллограммы можно и не с линии питания снимать, а прям сверху корпуса CPU электромагнитным пробником (такое у нас тоже есть). И тут уже конденсатор не поможет.
Просто отвал башки! Хороший гайд для "начинающих" xDD)
Хорошо, когда внутри ESP32 есть действительно что-то заслуживающее такого внимания, а не прошивка от метеостанции.
Это получается, что развертывание ключа и шифрование выполняется в железе отдельными циклами, а не конвейером?
Присоединяюсь к комментаторам выше (которые не всё поняли)), но плюсанул с разбега! ) Очень круто!
Ня! Ещë технопр0н!
…а если внедрить в чип конденсатор на питание блока расшифровки?
Экономически нецелесообразно. На кристалле затруднительно еë набрать без раздувания размера. А делать “гибридку”… с другой стороны Flash и/или PSRAM - уже гибридка. Подверженная рентгену и дремелю.
Я видел конденсаторы, засунутые в корпус рядом с кристаллом. Но вы правы, это тоже выковыривается при необходимости.
В ESP-Pico внутрь корпуса чипа засунули не только конденсаторы обвязки, но ещё и кварц. При этом такой чип стоит не сильно дороже ESP-WROOM.
Вероятно, вы про мини-плату с ESP процессором и компонентами на борту. Здесь же речь про помещение конденсаторов прямо внутрь пластикового корпуса микроконтроллера.
в микросдшках внутри "корпуса" керамические кондеры есть/бывают, кстати.
ESP-Pico - это как раз пластиковый корпус с конденсаторами и кварцем внутри корпуса.
Ещё есть чипы часов типа DS3231 с цилиндрическим кварцем внутри.
Это пластиковый корпус, но не самого микропроцессора. Либо я не то нагуглил, есть ссылочка?
Пипец как круто !!! Обожаю такие статьи !
Кстати интересно, почему ребята применили в своем эмуляторе именно esp32 ? У меня он самогонным аппаратом управляет. Но там причина очевидная - управление по вайфаю хоть с компьютера хоть с телефона через веб-морду. У них же как я понимаю, никаких беспроводных возможностей нет.
Красивое. Не имея мини лабы под рукой, правда не реализуемое. Но как мемуары методологии уложил. Способ очевидный, но настолько сложно реализуемый, что при реальном кейсе попытаться сломать - будет отложен в ящик "Последний шанс".
А статья то как раз про обратное. Всё, кроме микроскопа - можно сделать подручными средствами и недорого. Посмотрите на заглавную фотку, там есть некоторые мои прототипы, на которых были достигнуты все результаты, как по гличу, так и по SCA.
Но конец статьи указывает на самый очевидный метод с просветом фьюза, ведь в теории можно коррелятивно перебрать паттерны. Атака в начале статьи настолько комплексна и затратна по времени, что вряд - ли будет применена на практике. Хотя я уже такое видел. Подобным образом сливали ключи загрузчика Xiaomi под Black Shark 4 и 5. Снова переполнение буфера, снова выполнение кода. Привет квалкому и TEE. Полностью защитить что - либо невозможно, но сделать это достаточно болезненным, чтоб от решения отказались на практике - статья просто это доказала. В любом случае как материал от специалиста очень ценно и понятно описано. Аригато.
Чтобы фьюзы под микроскопом посмотреть, там тоже целая эпопея - растворить корпус, сошлифовать верхний слой металлизации, не повредив структуры, найти, где эти фьюзы на кристалле вообще, просмотреть всё глазами, повторить десяток раз с образцами, чтоб понять, а где какие фьюзы... SCA может оказаться в разы проще. Один раз пострадал с подбором параметров, дальше чуть ли не в один клик
Я ни в коем случае не профессионал, но я понимал, как оно работает. Я даже не работаю в айти, потому так приятно видеть материал, который я понял и даже частично применял сходные методы. А на счёт расстворения и шлифовки... Существует канал лисина с YT. Там такими извращениями мистер без электрики занимается, увеличивая потом схемотехнику каплей воды поверх чипа, ещё и снимает.
Просто как мысль для размышления. Даже при наличии всего одного образца при ограниченном наборе фьюзов и ограличенной длине ключа, которая известна заранее даже при наличии всего двух образцов одной серии можно предположить, как пережжённый влияет на битмаску ключа и OpenCL на простенькой 3060 быстро накидает ключей. Радужный перебор куда затратнее по ресурсам, но осуществим в приемлимое время. Но тут уже скорее тема для криптоанализа и атак на алгоритм шифрования, нежли на загрузчик. Приятное у вас заведение, Positive Technologies, интересные таски и мероприятия. Жалею, что так и не попал никуда на подобные позиции.
Подскажите, а что можно почитать по реверс инжинирингу? Есть плата с SOC, на него нет никакой информации, есть только полностью считанная прошивка. Хотелось понять, что конкретно делает эта плата. Известно её предназначение, есть предположение, какой компилятор использовался, есть предположения, что из всего этого прошивка (установлена флеш на 4ГБ), на этом, наверное, всё. Есть ли шанс декомпилировать прошивку?
Конкретно в вашем случае стоит натравить на прошивку binwalk, самые банальные вещи он покажет. Дальше на код можно натравить cpu_rec, если определить архитектуру не удается. Ну и дальше только дизасм и реверс кода, поиск дебажных строк и попытка осознать происходящее.
Спасибо за быстрый ответ!
Утилиты натравить и на boot, и на user? Файловой системы, по-видимому, там нет, компилировалось, предположительно, с помощью ARMCC. А с дизассемблированием может что-то помочь? Понятно, что имён функций и подобного не будет, но сидеть и ковырять ассемблер придётся очень долго)
Ну раз вы уже упоминаете boot и user, значит, это eMMC и, с большой вероятностью, ARM устройство. Binwalk может в них найти что-то интересное. Например файловую систему, сжатое ядро линукса, распаковав которые можно что-то копать дальше. Сходу весь раздел в дизассемблер грузить смысла нет, нужно сначала выковырять код и ресурсы. Вообще тут лучше на какой-нибудь ресурс фриланса, подкинуть задачку реверсерам.
Да, я тоже полагаю, что это ARM, учитывая emmc 4ГБ и ram 0.5ГБ. В других дампах, которые смотрел, сразу было видно файловую систему, здесь никаких намёков (но и плата специфичная). Также экспериментально выяснил, что весь код занимает ~5МБ (идентичен для всех плат), всё остальное — данные, специфичные для конкретной платы. Хорошо, спасибо, попробую поковыряться!
P.S. Не совсем в тему: есть много плат с микросхемами, на которые нет никакой информации (по крайней мере, я найти не смог). Сами платы по прямому назначению использоваться не будут, а микросхемы, предположительно, какие-то FPGA. Можно их куда-то приспособить или без документации только в мусор? Могу скинуть фото, как под рукой будут, если имеет значение
Обычно даже платы с микросхемами, на которые есть документация, мало кому нужны. Чего уж говорить про неизвестные компоненты...
Не могу не согласиться:) Поэтому для меня это имело бы смысл только в случае, если это FPGA. А как вы поступаете, если встречаетесь с какой-то микросхемой, на которую ничего нет? Или с затертой маркировкой, как в статье? (если не повезло найти такую же плату без затертой)
Можно искать в открытом доступе похожие по параметрам контроллеры, сравнивать распиновку в даташите с тем, что видно на плате. Можно растворить корпус, металлизацию, и поискать на кристалле микроскопом метки о производителе. Если есть дамп прошивки, то поискать упоминания о чипе в нём.
Автор молодец, налейте чаю ему за счёт заведения!
борьба снаряда и брони только в другом измерении. очень бы хотелось увижеть реакции авторов mig на эту статью. а с учетом того что они чем то подобным занимались только уже со свичем, могли бы и рассказать интересного
Я правильно понимаю, что основная проблема в этой железке, это хранение ключа на устройстве? Это позволяет снимать тысячи трасс, применять математику и пр.
Система распределения ключей (доставки их на конечное устройство) должна закрывать проблему. Конечно, это не про игровые приставки.
Устройство использует этот ключ для расшифровки собственной прошивки. Не хранить ключ на нем же - не вариант.
Ну как .. загрузчик должен взять ключ из какого-то доверенного устройства (корень доверия, мне тут подсказывают) по какому-то интерфейсу. КД же отдаёт ключи только после успешного ввода пароля (с ограничением числа попыток). А на него ключи заливаются в системе распределения.
Но это, конечно, гораздо дороже чем конденсатор встроить в корпус.
Спасибо за статью, кстати. Большое. Много о вас наслышан. Теперь ещё и читать буду.
Прочитал статью и что-то не совсем понял, так удалось сдампить прошивку и ключи или нет? Если да то почему не выложили в открытый доступ.

Глухарь ESPшный — мемуары охотника