Книга Алексея Усанова по реверс инжинирингу встраиваемых систем, ISBN: 978-5-93700-231-0.
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
Атаки электромагнитным импульсом (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
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
Отладчики .......................................................................................................282
Программаторы микросхем памяти .............................................................283
Логический анализатор .................................................................................284
Осциллограф ...................................................................................................285
Конвертеры интерфейсов (USB 2 everything) ................................................285
Отладочные платы..........................................................................................286
SDR ...................................................................................................................288
Все для пайки ..................................................................................................288
Используемое для исследований ПО .........................................................291
Список использованных источников ........................................................293
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
Атаки электромагнитным импульсом (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
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
Отладчики .......................................................................................................282
Программаторы микросхем памяти .............................................................283
Логический анализатор .................................................................................284
Осциллограф ...................................................................................................285
Конвертеры интерфейсов (USB 2 everything) ................................................285
Отладочные платы..........................................................................................286
SDR ...................................................................................................................288
Все для пайки ..................................................................................................288
Используемое для исследований ПО .........................................................291
Список использованных источников ........................................................293