Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Реверс-инжиниринг встраиваемых систем

Покупка
Новинка
Артикул: 856001.01.99
Доступ онлайн
1 649 ₽
В корзину
Перед вами руководство по погружению в мир встраиваемых систем — от их первоначального анализа и получения прошивки до нейтрализации механизмов защиты от реверс-инжиниринга и модификации. Приводится базовый набор оборудования и ПО, с помощью которого можно проводить исследования большинства систем. Опытному читателю книга пригодится в качестве справочника, а начинающим исследователям будет полезно изучить ее от начала до конца. Издание адресовано инженерам и разработчикам встраиваемых систем; также оно пригодится студентам технических вузов.
Усанов, А. Е. Реверс-инжиниринг встраиваемых систем : практическое руководство / А. Е. Усанов. – Москва : ДМК Пресс, 2023. - 298 с. – ISBN 978-5-93700-231-0. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2204253 (дата обращения: 03.04.2025). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Алексей Усанов
Реверс-инжиниринг 
встраиваемых систем
Москва, 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. Начинаем статический анализ. К этой главе мы уже получили образ 
прошивки, но пока не знаем, что с ней делать. (Ок, «грузить» в дизассем

Похожие

Доступ онлайн
1 649 ₽
В корзину