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

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Перед вами руководство по погружению в мир встраиваемых систем – от их первоначального анализа и получения прошивки до нейтрализации механизмов защиты от реверс-инжиниринга и модификации. Приводится базовый набор оборудования и ПО, с помощью которого можно проводить исследования большинства систем. Опытному читателю книга пригодится в качестве справочника, а начинающим исследователям будет полезно изучить ее от начала до конца. Издание адресовано инженерам и разработчикам встраиваемых систем; также оно пригодится студентам технических вузов.

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
Все для пайки
Используемое для исследований ПО
Список использованных источников