Перед вами руководство по погружению в мир встраиваемых систем – от их первоначального анализа и получения прошивки до нейтрализации механизмов защиты от реверс-инжиниринга и модификации. Приводится базовый набор оборудования и ПО, с помощью которого можно проводить исследования большинства систем. Опытному читателю книга пригодится в качестве справочника, а начинающим исследователям будет полезно изучить ее от начала до конца.
Издание адресовано инженерам и разработчикам встраиваемых систем; также оно пригодится студентам технических вузов.
Author(s): Алексей Усанов
Edition: 1
Publisher: ДМК Пресс
Year: 2023
Language: Russian
Commentary: Publisher's PDF
Pages: 296
City: М.
Tags: Computer Security; Debugging; Hardware; Best Practices; Static Analysis; Dynamic Analysis; Microcontrollers; Electronic Components; MITM; Embedded Systems; Digital Electronics; Memory Devices; FPGAs; JTAG; Reverse Engineering; Antennas; Computer Architecture
Intro (Зачем исследовать встраиваемые системы?)
Background: особенности цифровых электрических сигналов
Кодирование цифровых сигналов
Синхронизация сигналов
Параллельные и последовательные интерфейсы
Механизмы детектирования, снижения и исправления ошибок передачи
Level 0 – Первичный анализ
Сбор информации
Инженерный анализ устройства
Вскрываем корпус и разбираем устройство
Из чего состоит плата устройства?
Описание процесса производства цифрового устройства
Маркировка компонентов на плате устройства
«Прозвонка» платы устройства
Микроконтроллер
Память
FPGA
Модули связи + антенны
Менее интересные компоненты
SoM, SoC, SiP и другие типы компоновки
Интерфейсы связи компонентов
Отладочные и диагностические интерфейсы
Хардкор – рентген
Level Up!
Level 1 – Добываем прошивку
Считывание из ПЗУ
Сниффинг интерфейсов
Считывание через отладочные интерфейсы
JTAG
ARM Debug Interface и интерфейс SWD
Считывание прошивки с помощью OpenOCD и SWD
Считывание прошивки с помощью Segger J-Link и JTAG
Механизмы защиты от считывания
Считывание через диагностические интерфейсы
Препарирование обновлений
Неинвазивные атаки
Атаки на синхронизацию (CLK-glitch)
Атаки «по питанию» (VCC-glitch)
Атаки электромагнитным импульсом (EMFI)
Атаки оптическим импульсом (LFI)
Side-Channel атаки
Хардкор – инвазивные атаки
Восстановление ROM
Микрозондовый анализ
Модификация кристалла микросхемы
Хардкор – услуги на китайских форумах
Level Up!
Level 2 – Начинаем статический анализ
Архитектурные подходы проектирования ЭВМ
Гарвардская архитектура
Архитектура фон Неймана
Модифицированная гарвардская архитектура
Системы команд RISC и CISC
Архитектура, микроархитектура и система команд
Распространенные архитектуры
Процесс разработки и производства микроконтроллера
Определение архитектуры и системы команд ядра микроконтроллера
По документации на чип
По кодам основных инструкций
Хардкор – восстановление неизвестной системы команд
Реверс-инжиниринг прошивки FPGA
Подготовка прошивки к дизассемблированию
Выделение образа прошивки из образа ПЗУ
Определение структуры прошивки
Сжатая или зашифрованная прошивка
Структура адресного пространства микроконтроллера
Карта памяти микроконтроллера
Декодеры адресного пространства и банки памяти
Межъядерное взаимодействие
Определение адреса загрузки прошивки
Статические ссылки
Прерывания
Ошибки при загрузке в дизассемблер
Что стоит искать в дизассемблированном коде прошивки в первую очередь
Строки (если они есть)
Константы
Обработчики интерфейсов и взаимодействие с аппаратными регистрами
Главный цикл
Виды организаций прошивок и embedded ОС
Загрузчик (Bootloader)
Bare-metal
Real-time OS (RTOS)
Embedded Linux
Windows CE, Embedded и IoT
Эмуляция
QEMU
Unicorn Engine
Level Up!
Level 3 – Настраиваем связь с внешним миром (динамический анализ)
Динамический анализ
Собираем стенд для отладки
Оснастки и 3D-печать
Автоматизация рутинных действий
Адаптеры и эмуляция ПЗУ
Используем отладочные интерфейсы
UART и трассировка
Используем логический анализатор и осциллограф
Хардкор – нестандартные подходы к получению информации
Мигаем светодиодом
Отладка через шину SPI
Отладка задержками и зависанием
Анализ содержимого ОЗУ
MITM
Получение информации по беспроводным протоколам
SDR
Flipper Zero
Разрабатываем патч прошивки
Level Up!
Level 4 – Механизмы защиты встраиваемых систем
Контрольные суммы прошивки
Криптографическая подпись прошивки
Доверенная загрузка устройства
Шифрованные обновления
Аппаратная поддержка механизмов защиты
Датчики на вскрытие корпуса (тамперы)
Криптопамять и Secure Element
Trusted Execution Environment
SRAM PUF
Watchdog
Level Up!
Well Done
Приложение
Рабочее место
Полезные ручные инструменты
Микроскоп
Мультиметр
Отладчики
Программаторы микросхем памяти
Логический анализатор
Осциллограф
Конвертеры интерфейсов (USB 2 everything)
Отладочные платы
SDR
Все для пайки
Используемое для исследований ПО
Список использованных источников