Реверс-инжиниринг встраиваемых систем
Покупка
Новинка
Тематика:
Общетехнические дисциплины
Издательство:
ДМК Пресс
Автор:
Усанов Алексей Евгеньевич
Год издания: 2023
Кол-во страниц: 298
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-93700-231-0
Артикул: 856001.01.99
Перед вами руководство по погружению в мир встраиваемых систем — от их первоначального анализа и получения прошивки до нейтрализации механизмов защиты от реверс-инжиниринга и модификации. Приводится базовый набор оборудования и ПО, с помощью которого можно проводить исследования большинства систем. Опытному читателю книга пригодится в качестве справочника, а начинающим исследователям будет полезно изучить ее от начала до конца.
Издание адресовано инженерам и разработчикам встраиваемых систем; также оно пригодится студентам технических вузов.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Алексей Усанов Реверс-инжиниринг встраиваемых систем Москва, 2023
УДК 62-1/9 ББК 30.1 У74 У74 Усанов А. Е. Реверс-инжиниринг встраиваемых систем. – М.: ДМК Пресс, 2023. – 296 с.: ил. ISBN 978-5-93700-231-0 Перед вами руководство по погружению в мир встраиваемых систем – от их первоначального анализа и получения прошивки до нейтрализации механизмов защиты от реверс-инжиниринга и модификации. Приводится базовый набор оборудования и ПО, с помощью которого можно проводить исследования большинства систем. Опытному читателю книга пригодится в качестве справочника, а начинающим исследователям будет полезно изучить ее от начала до конца. Издание адресовано инженерам и разработчикам встраиваемых систем; также оно пригодится студентам технических вузов. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. ISBN 978-5-93700-231-0 © Усанов А. Е., 2023 © Оформление, издание, ДМК Пресс, 2023
Оглавление Intro (Зачем исследовать встраиваемые системы?).................................... 8 Background: особенности цифровых электрических сигналов................ 12 Кодирование цифровых сигналов....................................................................13 Синхронизация сигналов..................................................................................15 Параллельные и последовательные интерфейсы...........................................20 Механизмы детектирования, снижения и исправления ошибок передачи.......................................................................................................22 Level 0. Первичный анализ........................................................................... 23 Сбор информации.............................................................................................23 Инженерный анализ устройства......................................................................24 Вскрываем корпус и разбираем устройство..........................................................26 Из чего состоит плата устройства?........................................................................29 Описание процесса производства цифрового устройства...................................33 Маркировка компонентов на плате устройства...................................................35 «Прозвонка» платы устройства..............................................................................37 Микроконтроллер...................................................................................................39 Память......................................................................................................................41 FPGA .........................................................................................................................50 Модули связи + антенны.........................................................................................52 Менее интересные компоненты............................................................................54 SoM, SoC, SiP и другие типы компоновки..............................................................57 Интерфейсы связи компонентов...........................................................................60 Отладочные и диагностические интерфейсы.......................................................75 Хардкор – рентген...................................................................................................83 Level Up!..............................................................................................................84 Level 1. Добываем прошивку........................................................................ 87 Считывание из ПЗУ...........................................................................................87 Сниффинг интерфейсов....................................................................................93 Считывание через отладочные интерфейсы...................................................96 JTAG..........................................................................................................................96 ARM Debug Interface и интерфейс SWD...............................................................103 Считывание прошивки с помощью OpenOCD и SWD........................................113 Считывание прошивки с помощью Segger J-Link и JTAG...................................121 Механизмы защиты от считывания.....................................................................125 Считывание через диагностические интерфейсы........................................127 Препарирование обновлений.........................................................................128 Неинвазивные атаки.......................................................................................130 Атаки на синхронизацию (CLK-glitch).................................................................132 Атаки «по питанию» (VCC-glitch).........................................................................135
4 Оглавление Атаки электромагнитным импульсом (EMFI).....................................................137 Атаки оптическим импульсом (LFI).....................................................................141 Side-Channel атаки................................................................................................143 Хардкор – инвазивные атаки..........................................................................148 Восстановление ROM............................................................................................150 Микрозондовый анализ........................................................................................152 Модификация кристалла микросхемы................................................................153 Хардкор – услуги на китайских форумах.......................................................153 Level Up!............................................................................................................154 Level 2. Начинаем статический анализ......................................................155 Архитектурные подходы проектирования ЭВМ............................................156 Гарвардская архитектура......................................................................................156 Архитектура фон Неймана...................................................................................157 Модифицированная гарвардская архитектура...................................................158 Системы команд RISC и CISC ..............................................................................158 Архитектура, микроархитектура и система команд...........................................159 Распространенные архитектуры..........................................................................161 Процесс разработки и производства микроконтроллера..................................167 Определение архитектуры и системы команд ядра микроконтроллера....170 По документации на чип......................................................................................172 По кодам основных инструкций..........................................................................173 Хардкор – восстановление неизвестной системы команд.................................176 Реверс-инжиниринг прошивки FPGA............................................................176 Подготовка прошивки к дизассемблированию.............................................177 Выделение образа прошивки из образа ПЗУ......................................................177 Определение структуры прошивки.....................................................................181 Сжатая или зашифрованная прошивка...............................................................184 Структура адресного пространства микроконтроллера...............................185 Карта памяти микроконтроллера........................................................................188 Декодеры адресного пространства и банки памяти...........................................193 Межъядерное взаимодействие.............................................................................193 Определение адреса загрузки прошивки......................................................194 Статические ссылки..............................................................................................194 Прерывания...........................................................................................................195 Ошибки при загрузке в дизассемблер.................................................................197 Что стоит искать в дизассемблированном коде прошивки в первую очередь.......................................................................................................197 Строки (если они есть)..........................................................................................198 Константы..............................................................................................................198 Обработчики интерфейсов и взаимодействие с аппаратными регистрами....204 Главный цикл.........................................................................................................208 Виды организаций прошивок и embedded ОС..............................................209 Загрузчик (Bootloader)..........................................................................................209 Bare-metal..............................................................................................................211 Real-time OS (RTOS)...............................................................................................212 Embedded Linux.....................................................................................................214
Оглавление 5 Windows CE, Embedded и IoT................................................................................214 Эмуляция..........................................................................................................215 QEMU......................................................................................................................215 Unicorn Engine.......................................................................................................215 Level Up!............................................................................................................216 Level 3. Настраиваем связь с внешним миром (динамический анализ)...............................................................................217 Динамический анализ.....................................................................................217 Собираем стенд для отладки..........................................................................217 Оснастки и 3D-печать...........................................................................................218 Автоматизация рутинных действий....................................................................220 Адаптеры и эмуляция ПЗУ...................................................................................222 Используем отладочные интерфейсы............................................................224 UART и трассировка.........................................................................................233 Используем логический анализатор и осциллограф....................................234 Хардкор – нестандартные подходы к получению информации..................235 Мигаем светодиодом............................................................................................235 Отладка через шину SPI........................................................................................236 Отладка задержками и зависанием.....................................................................237 Анализ содержимого ОЗУ.....................................................................................238 MITM......................................................................................................................241 Получение информации по беспроводным протоколам..............................242 SDR.........................................................................................................................242 Flipper Zero.............................................................................................................244 Разрабатываем патч прошивки......................................................................245 Level Up!............................................................................................................252 Level 4. Механизмы защиты встраиваемых систем.................................254 Контрольные суммы прошивки.....................................................................254 Криптографическая подпись прошивки........................................................256 Доверенная загрузка устройства....................................................................259 Шифрованные обновления.............................................................................260 Аппаратная поддержка механизмов защиты................................................261 Датчики на вскрытие корпуса (тамперы)............................................................261 Криптопамять и Secure Element...........................................................................262 Trusted Execution Environment.............................................................................265 SRAM PUF...............................................................................................................269 Watchdog...........................................................................................................270 Level Up!............................................................................................................272 Well Done.......................................................................................................273 Приложение..................................................................................................276 Рабочее место..................................................................................................276 Полезные ручные инструменты.....................................................................277 Микроскоп.......................................................................................................281 Мультиметр......................................................................................................281
6 Оглавление Отладчики........................................................................................................282 Программаторы микросхем памяти..............................................................283 Логический анализатор..................................................................................284 Осциллограф....................................................................................................285 Конвертеры интерфейсов (USB 2 everything).................................................285 Отладочные платы..........................................................................................286 SDR....................................................................................................................288 Все для пайки...................................................................................................288 Используемое для исследований ПО..........................................................291 Список использованных источников.........................................................293
Книга посвящена информационной безопасности встраиваемых систем. Считается, что история этого термина начинается в 1966 году, когда в США был разработан бортовой управляющий компьютер для лунной программы «Аполлон». В этом 16-битном компьютере впервые применялись интегральные схемы вместо отдельных транзисторов и электронных ламп, что снизило массу, уменьшило габариты и позволило назвать его первой встраиваемой системой, или встраиваемым устройством. С тех пор такой подход начал применяться в военной технике, авиации и автомобилях. Следующий рывок связан с распространением интернета. Наличие высокоскоростного доступа к сети привело к взрывному росту встраиваемых устройств, так как теперь они объединялись в сложные системы на базе «интернета вещей» (Internet of things, IoT). Снижение стоимости производства привело к тому, что уже сложно обозначить границу между тем, что является, а что не является встраиваемыми устройствами – такие системы повсюду. Сразу после появления их начали пытаться нелегально копировать, но это не имело массового характера, и производители особо не беспокоились о защите. Однако доступность интернета изменила все – теперь хакеры могли взламывать их удаленно и получать огромное количество информации, которая хранится или обрабатывается на встраиваемых устройствах. Производители же стали использовать различные способы для усложнения анализа и взлома – зашифровывать прошивки устройств (firmware), внедрять электронные подписи и регулярно обновлять устройства через интернет, устраняя найденные уязвимости. Но количество успешных атак показывает, что достаточный уровень защиты не обеспечивается. Часто производители считают, что безопасность через неясность (Security through obscurity) отпугнет хакеров и никто не начнет исследовать устройство, так как это требует специфических навыков и оборудования. Книга покажет, насколько такое предположение ошибочно. Литературы, рассказывающей о безопасности встраиваемых систем, не так много. «Реверс-инжиниринг встраиваемых систем» – одна из тех книг, которые позволяют вам понять, как происходят атаки на такие системы, как от них можно защититься, и даже поможет исследовать «подозрительное» устройство у вас дома. Профессионалы найдут в данной книге информацию, которая будут полезной в повседневной работе, – современные методы атак на микросхемы и способы защиты, ссылки на современные исследования. Если же вы только начинаете свой путь в исследовании встраиваемых систем, то сэкономите время и бюджет, применяя рекомендации из этой книги. После прочтения вы будете смотреть на свою систему видеонаблюдения или чайник с Bluetooth совсем по-другому. Я благодарен автору за то, что он предоставил мне возможность ознакомиться с этой книгой в числе первых. Максим Горячий (@h0t_max), Device Security Engineer
Intro (Зачем исследовать встраиваемые системы?) Что движет людьми, которые занимаются реверс-инжинирингом? На мой взгляд, желание разобраться, как устроен мир, и понять, как мыслят другие люди, создающие что-то. С детства я всегда разбирал все, что попадало под руку. Эта тяга осталась до сих пор, только игрушки стали другими. Мне повезло познакомиться и работать с людьми, которые также имеют нездоровую тягу к исследованию внутренностей электронных устройств. Накопленный опыт хочется систематизировать и изложить в максимально доступном виде. Сразу сделаю уточнение: я не хотел писать академическую книгу сухим языком. Ведь общаемся мы совсем по-другому. Второе уточнение – это слово «реверс-инжиниринг» в названии книги. Лучше бы подошло слово «исследование», ведь в основном люди занимаются исследованием с помощью реверс-инжиниринга. Однако большинству людей понятнее слово реверс-инжиниринг, поэтому пусть в названии будет оно :) Под словосочетанием встраиваемые системы (англ. embedded) мы будем понимать именно цифровые устройства. Некоторые из них могут иметь аналоговые блоки, выполняющие определенные функции, но темой данной книги будет исследование именно цифровых устройств. Почему именно цифровые устройства? Наверное, потому что, в отличие от реверс-инжиниринга ПО, есть возможность «пощупать» объект исследований, получить тактильные ощущения, совершить с ним различные манипуляции. Рано или поздно увидеть волшебный дым, на котором работает электроника (https://en.wikipedia.org/wiki/Magic_smoke). А еще потому, что в современном мире цифровые устройства стали максимально распространены. Они применяются в транспорте, умных домах, игрушках, IoT-системах, заводах и т. д. Какое электронное устройство в руки не возьми – везде встраиваемые системы. Практически в любой современной информационной системе корнем доверия является уровень «железа», т. е. аппаратного обеспечения, лежащего в основе цифровых устройств. Компрометация этого уровня или самих устройств приведет к компрометации всей информационной системы. Книга была написана после сильного изменения взаимоотношений в мире в 2022 году. Многие технологии для разработчиков в нашей стране стали недоступны. Поэтому реверс-инжиниринг, в том числе встраиваемых систем, становится еще актуальнее. Ведь какие-то из устройств могут перестать работать и надо найти технические пути для их возвращения «в строй». Ну и конечно же, нельзя забывать про аудит безопасности устройств. Иногда проведение иссле
Intro (Зачем исследовать встраиваемые системы?) 9 дований для оценки защищенности – единственный способ удостовериться, что устройство всегда будет работать так, как заявлено. Не менее важен аудит защищенности российских устройств, особенно в контексте возрастающей угрозы атак на цепочку поставок. Все эти проблемы стали сверхактуальными для российского (да и мирового) рынка в последние годы. Для кого эта книга? Я позиционирую ее как первичное руководство-справочник по погружению в мир цифровых устройств для исследователей, уже попробовавших реверс-инжиниринг ПО. Имеющих представление, что такое дизассемблер и декомпилятор, зачем нужны регистры процессора, из чего состоит бинарный исполняемый файл и что такое виртуальная память. Хотя бы на начальном уровне. В этой книге не будет глав про процесс реверс-инжиниринга ПО, интерфейсы дизассемблеров и т. д., на эту тему написано большое количество книг и статей. Другая, не менее важная целевая аудитория – это разработчики встраиваемых систем. Ведь мало грамотно спроектировать устройство, надо еще его качественно защитить от копирования или исследования. Кто лучше всех знает, как защищаться? Тот, кто умеет нападать. Разработчик, понимающий логику и подходы исследователя, сможет гораздо лучше защитить свое устройство. Также книга будет полезна студентам, обучающимся на кафедрах по специальностям «Информационная безопасность» и «Проектирование электронных устройств». Я ставил себе задачу показать людям, никогда не имевшим дела с исследованием «железа», что это не сложно, но нужно получить знания во многих областях, которых практически не касаешься в большинстве случаев исследования или разработки ПО. Если у читателя был опыт программирования каких-то микроконтроллеров (хотя бы проекта Arduino), то многие вещи уже будут знакомы и понятны. Фактически данная книга – это методология, показывающая один из вариантов пути исследования электронных устройств, а также объясняющая, почему путь именно такой, какие на этом пути есть распространенные ошибки и как их избежать. Этот путь наверняка не единственный, но он показал свою эффективность более чем за 10 лет практических исследований устройств, так почему бы не начать свои шаги с него? Когда я начинал заниматься исследованием устройств, вся информация собиралась от старших коллег, разрозненных источников, из множества экспериментов, зачастую уводящих в сторону от результата, из «убитых» устройств и размышлений, можно ли было этого избежать. Все это позволило сформировать подход, описываемый в данной книге. На стажировках я рассказывал, почему именно такой порядок действий будет эффективным, но единого материала, который можно было бы прочитать и понять путь и методы проведения исследования цифровых устройств, не было. При проведении любых исследований мы можем иметь разный уровень знаний об объекте исследования. В зависимости от количества имеющихся знаний о встраиваемой системе исследования могут проводиться с помощью методов белого, черного и серого ящика. Если у нас есть вся информация о системе, то это исследование методом «белого ящика». Если информации минимум, то исследование проводится методом «черного ящика» – анализируется реакция на воздействия, и постепенно получаем все больше информации об объекте исследования. Метод «серого ящика» является промежуточным, когда мы смог
10 Intro (Зачем исследовать встраиваемые системы?) ли получить какую-то информацию о системе. Большинство описываемых в книге подходов применимы для любого метода исследований, но часть из них будет весьма полезна для исследований методами черного и серого ящика. Исследование методом «черного ящика» является наиболее сложным, особенно для начинающих исследователей цифровых устройств. Поэтому мы сконцентрируемся на том, чтобы максимально быстро получить прошивку устройства и перейти к исследованию методом «серого ящика», основываясь на ее анализе. На схеме представлен путь, которым я предлагаю пройти читателю при первых попытках исследования устройств. Рис. I.1. Вариант пути проведения исследований встраиваемых систем Структура книги соответствует предложенной методологии и состоит из пяти основных глав-уровней и нескольких вспомогательных разделов. В самом начале, в разделе «Background», мы договоримся о том, что такое цифровой электрический сигнал и какие существуют особенности его передачи. Level 0. Первоначальный анализ. С него начинается исследование цифрового устройства. Мы пройдем по пути анализа основных компонентов устройства и восстановим структурную, возможно функциональную, и даже некоторые части принципиальной схемы. (Конечно же не полностью, но на достаточном для понимания базовой структуры устройства уровне. Подробно про разные типы схем можно прочитать в статье по адресу: https://habr.com/ru/post/451158/.) В этой главе я расскажу, из чего состоит большинство устройств, как делать этот анализ и почему эти знания помогут в дальнейшем исследовании. Level 1. Добываем прошивку. Логика работы цифрового устройства заложена в программном обеспечении, оно же прошивка (firmware). Пока у нас ее нет, исследования проводить намного сложнее. В этой главе мы рассмотрим, как прошивку можно получить. От очевидных до весьма нестандартных путей. Level 2. Начинаем статический анализ. К этой главе мы уже получили образ прошивки, но пока не знаем, что с ней делать. (Ок, «грузить» в дизассем