Hardware

Анализ аппаратных бэкдоров и supply chain attacks

Аппаратный бэкдор — это скрытая "лазейка" в железе (чипе, плате, устройстве), которую кто-то специально оставил, чтобы получить доступ без разрешения. Supply chain attack — когда на этапе производства или поставки в устройство вносят изменения (меняют прошивку, добавляют чип, подменяют компонент). В категории hardware на CTF эта тема встречается в задачах, где флаг спрятан за "невидимой" защитой или в модифицированном чипе. Новичку важно понять, что даже если код выглядит чистым, железо может быть "отравлено" на заводе или в цепочке поставок. Знание поможет тебе искать подозрительные пины, сравнивать реальную плату с оригинальной и находить скрытые интерфейсы, где обычно лежит флаг или ключ.

Словарь терминов

Термин
Что это простыми словами

Hardware backdoor

Скрытая возможность доступа, специально встроенная в железо

Supply chain attack

Изменение устройства на этапе производства или поставки

JTAG

Отладочный интерфейс, который часто оставляют как бэкдор

Debug port

Скрытый контакт для отладки и чтения памяти

Die shot

Фотография кристалла чипа под микроскопом

Decapping

Физическое вскрытие чипа, чтобы увидеть кристалл

Modified firmware

Изменённая прошивка, добавленная на заводе или в цепочке

Hidden debug interface

Тайный отладочный порт, не указанный в документации

Tampering

Тайное вмешательство в устройство

Обнаружение hardware backdoors (JTAG, debug ports)

Hardware backdoor часто реализуют через оставленные отладочные интерфейсы (JTAG, SWD, UART). Производитель мог забыть их отключить или специально не удалил.

Поиск начинается с визуального осмотра платы: ищешь группы из 4–10 маленьких контактов (пины), которые не подписаны, но расположены подозрительно близко друг к другу.

Если пины не подписаны — смотришь даташит микроконтроллера и сравниваешь с платой. Часто JTAG/SWD оставляют именно там.

В CTF это базовая задача: дают фото платы — нужно найти скрытый JTAG-порт, подключиться и прочитать память.

На практике: видишь группу из 10 пинов без подписей — проверяешь даташит — находишь JTAG — подключаешься и читаешь флеш-память с флагом.

Анализ модифицированных чипов (die shots, decapping)

Die shot — фотография кристалла чипа под микроскопом. На ней видно все блоки: процессор, память, крипто-модуль, и если кто-то добавил бэкдор — он будет виден как лишний кусок схемы.

Decapping — физическое вскрытие чипа: снимают корпус, растворяют защитный слой, фотографируют кристалл.

Сравнивают die shot подозрительного чипа с оригинальным (из даташита или другого устройства). Если есть лишние блоки — это бэкдор.

В CTF такие задачи дают на продвинутом уровне: показывают фото кристалла — нужно найти лишний блок или понять, что он делает.

На практике: видишь die shot — сравниваешь с официальным — находишь лишний крипто-блок — понимаешь, что через него можно вытащить ключ или флаг.

Supply chain tampering (modified firmware in chips)

Supply chain tampering — когда на заводе или в цепочке поставок меняют прошивку, добавляют бэкдор или подменяют чип.

Модифицированная прошивка может содержать лишние команды: отправлять данные на сервер, пропускать проверку, оставлять открытый debug-порт.

В CTF это классическая задача: дают устройство, которое "как оригинал", но внутри прошивка изменена.

На практике: сравниваешь дамп flash с официальной прошивкой — находишь лишние байты или строки — это и есть tampering; ищешь в дампе подозрительные адреса или строки с флагом.

Обнаружение hidden debug interfaces

Hidden debug interface — отладочный порт (JTAG, SWD, UART), который не указан в документации и спрятан на плате.

Искать его можно по:

  • группам из 4–6 пинов без подписей

  • контактам, которые идут прямо к кристаллу микроконтроллера

  • измерению напряжения (отладочные пины часто имеют 3.3 В или 1.8 В)

  • подключению отладчика и пробе разных комбинаций

В CTF это одна из первых задач на hardware: дают фото платы — нужно найти скрытый порт и подключиться.

На практике: видишь плату — находишь группу пинов рядом с микроконтроллером — подключаешь отладчик — если видит чип — это он; читаешь память и находишь флаг.

Итог

Анализ аппаратных бэкдоров и supply chain attacks — это поиск скрытых лазеек в железе и изменений на этапе производства. В hardware CTF это ключ к задачам, где защита кажется идеальной, но есть тайный доступ.

Главное запомнить: JTAG/SWD часто оставляют как бэкдор; die shot и decapping показывают лишние блоки; supply chain tampering меняет прошивку; hidden debug ports ищут визуально и мультиметром.

Ключевые слова/термины выучить: hardware backdoor, supply chain attack, JTAG, debug port, die shot, decapping, modified firmware, tampering, hidden debug interface.

Эти знания помогут тебе на плате сразу искать подозрительные группы пинов и подключаться к скрытому JTAG. В задачах ты сможешь найти отладочный порт, прочитать прошивку через него, сравнить die shot и обнаружить бэкдор или найти изменённые строки в дампе — и достать флаг через скрытый доступ к памяти.


Анализ аппаратных криптографических модулей

Аппаратные криптографические модули — это специальные блоки внутри микроконтроллеров или процессоров, которые выполняют шифрование, расшифровку и подписи быстрее и безопаснее, чем обычный код. Они используются для защиты ключей и данных в реальном времени. В категории hardware на CTF эта тема встречается в задачах, где флаг или ключ спрятан внутри такого блока. Новичку важно понять, что эти модули выглядят защищёнными, но их можно атаковать через побочные эффекты или сбои. Знание этих атак поможет тебе извлекать ключи из чипа, даже если производитель пытался их спрятать.

Словарь терминов

Термин
Что это простыми словами

Аппаратный крипто-модуль

Специальный блок в чипе для быстрого шифрования и подписей

AES

Самый популярный блочный шифр (16-байтные блоки)

DES

Старый блочный шифр с 64-битными блоками

RSA

Асимметричный алгоритм шифрования и подписи

ECC

Криптография на эллиптических кривых

Side-channel attack

Атака через побочные эффекты (потребление энергии, время)

Power analysis

Анализ энергопотребления чипа во время работы

EM analysis

Анализ электромагнитного излучения чипа

DPA

Дифференциальный анализ энергопотребления

CPA

Корреляционный анализ энергопотребления

Differential fault analysis

Атака через введение ошибки и сравнение результатов

DFA

Сокращение от differential fault analysis

Laser fault injection

Введение ошибки лазерным лучом в нужный момент

Извлечение ключей из AES, DES, RSA, ECC блоков

Аппаратные блоки AES, DES, RSA и ECC — это специальные схемы внутри чипа, которые выполняют шифрование и подписи за один такт или несколько. Ключи хранятся в защищённой памяти внутри блока и не выходят наружу.

Извлечение ключей — это поиск способа прочитать или вычислить ключ, не имея прямого доступа. Чаще всего это делают через побочные каналы или ошибки.

В CTF задача обычно такая: чип шифрует/подписывает данные, но ключ спрятан. Нужно извлечь его, чтобы расшифровать флаг.

На практике: если видишь, что чип использует AES для шифрования — ищешь утечку ключа через энергопотребление или время; для RSA/ECC — через ошибки или побочные эффекты.

Side-channel attacks (power/EM analysis, DPA, CPA)

Side-channel attack — атака через побочные эффекты работы чипа: энергопотребление, электромагнитное излучение, время выполнения или шум.

Power analysis — измерение тока или напряжения на питании чипа во время шифрования. Разные ключи потребляют немного разную энергию.

EM analysis — то же самое, но через электромагнитное излучение (антенна рядом с чипом).

DPA (Differential Power Analysis) — сравнение множества измерений и поиск различий по битам ключа.

CPA (Correlation Power Analysis) — вычисление корреляции между измерениями и гипотезами о ключе.

В CTF side-channel — классика для аппаратных крипто-модулей. Если дают запись энергопотребления — это DPA/CPA.

На практике: имеешь 1000 записей энергопотребления при шифровании — группируешь их по гипотезе о первом байте ключа — находишь самый высокий пик корреляции — получаешь байт ключа.

Differential fault analysis (DFA) на AES и RSA

Differential fault analysis — атака через введение ошибки в работу алгоритма. Сравниваешь правильный результат и результат с ошибкой — находишь ключ.

Для AES: вводишь ошибку в один раунд — сравниваешь шифротексты — вычисляешь последний раунд ключа.

Для RSA: вводишь ошибку в вычисление подписи — сравниваешь с правильной подписью — находишь приватный ключ.

В CTF DFA — частая атака на аппаратные блоки AES и RSA. Если дают два результата (правильный и с ошибкой) — это DFA.

На практике: вводишь сбой в нужный момент — получаешь два шифротекста — сравниваешь их — вычисляешь ключ или часть ключа.

Laser fault injection на крипто-блоки

Laser fault injection — использование лазерного луча для создания ошибки в конкретном транзисторе или области кристалла. Лазер может изменить бит в регистре или сбить логику.

Это очень точная атака: можно попасть в нужный бит ключа или в проверку подписи.

В CTF laser fault — продвинутый уровень, но встречается в задачах на аппаратные модули. Если дают доступ к лазеру или описание сбоя — это лазерная атака.

На практике: синхронизируешь лазерный импульс с работой чипа — в момент проверки подписи сбиваешь бит — чип пропускает проверку — читаешь память или получаешь слабую подпись.

Итог

Анализ аппаратных криптографических модулей — это извлечение ключей из специальных блоков внутри чипа. В hardware CTF это одна из самых сложных и интересных тем: флаг или ключ прячут в AES/RSA/ECC блоке.

Главное запомнить: ключи не выходят из блока — их находят через побочные каналы; DPA/CPA — по энергопотреблению; DFA — через введение ошибки; laser fault — точечный сбой.

Ключевые слова/термины выучить: аппаратный крипто-модуль, AES, DES, RSA, ECC, side-channel attack, power analysis, EM analysis, DPA, CPA, differential fault analysis, DFA, laser fault injection.

Эти знания помогут тебе понять, что если чип шифрует данные аппаратно — ключ можно достать через энергопотребление или сбой. В задачах ты сможешь по записям мощности найти байты ключа AES методом DPA, ввести ошибку в RSA и восстановить приватный ключ через DFA, или сбить проверку лазером — и прочитать зашифрованный флаг.


Атаки на аппаратные токены и смарт-карты

Аппаратные токены и смарт-карты — это маленькие устройства с микросхемой внутри (пропуска, банковские карты, брелоки, JavaCard), которые хранят секретные ключи и выполняют криптографию. В категории hardware на CTF эта тема встречается в задачах, где нужно украсть доступ, подделать карту или вытащить ключ. Новичку важно понять, что эти карты выглядят защищёнными, но их часто можно клонировать, перехватить или сломать через побочные эффекты. Знание этих атак поможет тебе быстро находить слабые места в токенах и получать флаг там, где другие думают, что защита непробиваема.

Словарь терминов

Термин
Что это простыми словами

Смарт-карта

Пластиковая карточка с микросхемой внутри

JavaCard

Смарт-карта, на которой можно запускать свои программы

MIFARE Classic

Старый тип RFID-карты с простой защитой

MIFARE Ultralight

Простая и дешёвая RFID-карта с малым объёмом памяти

Relay attack

Перехват и пересылка сигнала между картой и считывателем

Side-channel attack

Атака через побочные эффекты (энергия, время, излучение)

Fault attack

Намеренный сбой чипа (глюк), чтобы он выдал секрет

Clone

Полное копирование карты на другую

Emulation

Имитация карты программой (телефон эмулирует карту)

UID

Уникальный номер карты (иногда используется как пароль)

Извлечение ключей из JavaCard, MIFARE Classic/Ultralight

JavaCard — это смарт-карта, на которой можно запускать маленькие программы (апплеты). Ключи хранятся внутри апплета и защищены PIN-кодом или крипто-алгоритмами.

MIFARE Classic — старая карта с секторами, каждый защищён ключами A и B. Ключи можно взломать за минуты крипто-анализом (Crypto-1 слабый).

MIFARE Ultralight — очень простая карта с 16–192 байтами памяти. Защита слабая или отсутствует — данные читаются свободно.

В CTF извлечение ключей — частая задача. Если дают дамп карты — ищешь ключи в секторах или апплетах.

На практике: читаешь дамп MIFARE Classic — видишь одинаковые ключи по умолчанию (FF FF FF FF FF FF) — используешь их для чтения всех секторов; в JavaCard ищешь апплет с ключом или PIN.

Relay attacks на NFC/RFID

Relay attack — это когда атакующий перехватывает сигнал между настоящей картой и считывателем и передаёт его дальше. Карта думает, что она рядом со считывателем, а считыватель — что карта рядом.

Это работает на расстоянии: один человек держит карту у телефона, второй телефон у считывателя — и карта "открывает" дверь на другом конце города.

В CTF relay — классика для NFC/RFID. Флаг или доступ дают через подделку карты.

На практике: перехватываешь обмен между картой и считывателем — передаёшь его на другую сторону — получаешь доступ или ответ с флагом.

Side-channel и fault атаки на смарт-карты

Side-channel attack — измерение побочных эффектов: энергопотребление, время ответа, электромагнитное излучение. По ним угадывают биты ключа.

Fault attack — введение ошибки (глюк): короткий сбой напряжения, лазер, электромагнитный импульс. Чип делает ошибку в вычислении — сравниваешь правильный и ошибочный результат — находишь ключ.

В CTF side-channel и fault — продвинутые атаки на смарт-карты. Если дают запись энергопотребления — это side-channel; если описание сбоя — fault.

На практике: имеешь запись энергопотребления при шифровании — применяешь DPA/CPA и находишь ключ; вводишь сбой в момент проверки — получаешь слабый результат и вычисляешь ключ.

Clone и emulation токенов

Clone — полное копирование карты на другую карту или устройство. Если ключи известны — копируешь все сектора и UID.

Emulation — имитация карты программой (телефон с NFC эмулирует MIFARE). Не нужно физической карты — достаточно дампа.

В CTF clone и emulation — способ получить доступ или флаг. Если карта защищена слабо — клонируешь её и используешь как настоящую.

На практике: читаешь дамп карты — если защита слабая — копируешь все данные на новую карту или эмулируешь на телефоне — получаешь доступ или ответ с флагом.

Итог

Атаки на аппаратные токены и смарт-карты — это способы украсть ключи, подделать карту или перехватить обмен. В hardware CTF это одна из самых популярных тем: флаг или доступ дают через карту или токен.

Главное запомнить: MIFARE Classic ломается крипто-анализом; relay позволяет обмануть расстояние; side-channel и fault ломают даже сильную криптографию; clone и emulation — простые способы подделки.

Ключевые слова/термины выучить: смарт-карта, JavaCard, MIFARE Classic, MIFARE Ultralight, relay attack, side-channel attack, fault attack, clone, emulation, UID.

Эти знания помогут тебе сразу понять, что если задача на пропуск или карту — это MIFARE или JavaCard. В задачах ты сможешь прочитать незащищённый сектор MIFARE, перехватить обмен и повторить его (relay), ввести сбой и вытащить ключ или скопировать карту и получить доступ — и достать флаг без сложных вычислений.


Атаки на интерфейсы отладки и программирования

Интерфейсы отладки — это специальные контакты на микроконтроллере (JTAG, SWD и другие), через которые разработчики подключаются, чтобы запускать код шаг за шагом, читать и записывать память. В CTF категории hardware это одна из самых частых и важных тем: флаг почти всегда лежит в прошивке, а доступ к ней получают именно через отладочный интерфейс. Новичку важно понять, что даже если производитель пытался закрыть доступ (debug lock), его часто можно обойти. Знание этих атак поможет тебе находить незащищённые пины, сбрасывать защиту и извлекать прошивку, чтобы потом найти флаг внутри.

Словарь терминов

Термин
Что это простыми словами

JTAG

Стандартный интерфейс отладки и программирования микроконтроллеров

SWD

Упрощённая версия JTAG для ARM-чипов (только два провода)

Pinout

Расположение и назначение контактов (пинов) на микроконтроллере

Brute-force

Перебор всех возможных вариантов (например всех пинов)

Debug lock

Защита, которая запрещает чтение и отладку через JTAG/SWD

Erase

Полное стирание flash-памяти, часто снимает защиту

Glitch

Короткий сбой напряжения или сигнала, чтобы обмануть защиту

Voltage fault injection

Намеренное изменение напряжения для обхода защиты

Firmware

Программа, записанная в память микроконтроллера

Side-channel leakage

Утечка информации через побочные эффекты (время, энергопотребление)

JTAG/SWD pinout discovery и brute-force

JTAG и SWD используют 4–6 контактов: питание, земля, часы, данные и иногда сброс. На плате эти пины могут быть спрятаны, не подписаны или выведены на разъём с нестандартным шагом.

Pinout discovery — это поиск этих контактов: смотрят даташит микроконтроллера, измеряют напряжение мультиметром, подключают отладчик и пробуют разные комбинации.

Brute-force — когда пинов мало и плата не защищена: просто перебирают все возможные подключения, пока отладчик не увидит чип.

В CTF это базовая задача на hardware. Если дают фото платы без подписей — нужно найти JTAG/SWD.

На практике: смотришь на микроконтроллер — находишь даташит — видишь пины TCK, TMS, TDI, TDO (JTAG) или SWCLK, SWDIO (SWD) — ищешь похожие контакты на плате.

Bypass debug lock (erase, glitch, voltage fault injection)

Debug lock — защита, которая запрещает чтение flash и отладку. Производитель включает её, чтобы никто не смог украсть прошивку.

Erase — самый простой способ: некоторые микроконтроллеры сбрасывают защиту при полном стирании flash. После erase можно заново прочитать память.

Glitch — короткий сбой напряжения или сигнала в момент проверки защиты. Микроконтроллер "глючит" и пропускает чтение.

Voltage fault injection — изменение напряжения питания (снижение или кратковременное повышение), чтобы защита сработала неправильно.

В CTF bypass debug lock — классика. Если отладчик говорит "protected" — пробуют erase или glitch.

На практике: подключаешься к чипу — видишь защиту — делаешь mass erase — защита снимается — читаешь flash и находишь флаг.

Extracting firmware via debug interface

Если debug-интерфейс открыт или защита снята — можно прочитать всю flash-память и получить прошивку.

Прошивка — это машинный код, который выполняет микроконтроллер. В ней лежат строки, ключи, алгоритмы и часто сам флаг.

В CTF извлечение прошивки — первый шаг в 90% hardware-задач. Без дампа flash дальше двигаться невозможно.

На практике: подключаешься через JTAG/SWD — читаешь flash в дамп — получаешь файл с прошивкой — дальше анализируешь его (строки, код, ключи).

Side-channel leakage через JTAG/SWD

Side-channel — побочные эффекты: время выполнения, энергопотребление, электромагнитное излучение или шум на линии данных.

Через JTAG/SWD можно измерить время ответа или энергопотребление при разных командах — это даёт утечку битов ключа или состояния.

В CTF side-channel через JTAG/SWD — редкая, но эффектная тема. Если дают доступ к линии данных — можно по времени или напряжению угадать секрет.

На практике: подключаешься к SWD — выполняешь команды чтения разных адресов — измеряешь время или напряжение — находишь утечку битов ключа.

Итог

Атаки на интерфейсы отладки и программирования — это способы получить доступ к памяти микроконтроллера через контакты JTAG/SWD. В hardware CTF это основа почти всех задач: флаг лежит в прошивке, а достать её можно именно через отладку.

Главное запомнить: пины JTAG/SWD часто не подписаны — их ищут по даташиту и мультиметром; debug lock снимают erase или glitch; прошивку читают через отладчик; side-channel даёт утечку через время и напряжение.

Ключевые слова/термины выучить: JTAG, SWD, pinout discovery, brute-force, debug lock, erase, glitch, voltage fault injection, firmware, side-channel leakage.

Эти знания помогут тебе на плате с микроконтроллером сразу искать JTAG/SWD пины и подключаться. В задачах ты сможешь снять защиту через erase, прочитать дамп flash, найти строки с флагом или использовать side-channel, чтобы угадать секретный ключ — и получить флаг без сложного реверса.


Чтение и анализ дампов памяти микроконтроллеров

Дамп памяти микроконтроллера — это полная копия всего содержимого его внутренней памяти: прошивки, настроек, ключей и иногда даже секретных строк. Микроконтроллер — это маленький компьютер внутри устройства (Arduino, плата в умной розетке, брелок и т.д.). В категории hardware и forensics на CTF эта тема встречается почти в каждой задаче: флаг прячут именно в дампе flash или EEPROM. Новичку важно понять, как достать и прочитать такой дамп, потому что без этого невозможно узнать, что делает устройство и где лежит секрет. Знание поможет тебе извлекать дампы, искать в них строки с флагом и понимать, когда прошивка специально запутана.

Словарь терминов

Термин
Что это простыми словами

Дамп памяти

Файл-копия всей внутренней памяти микроконтроллера

Flash

Основная память, куда записывают прошивку (программу)

EEPROM

Маленькая память для настроек и ключей, сохраняется без питания

Программатор

Устройство для чтения и записи памяти микроконтроллера

CH341A

Дешёвый программатор для flash и EEPROM

Bus Pirate

Универсальный инструмент для работы с чипами и протоколами

ST-Link

Официальный отладчик для микроконтроллеров STM32

Hex-редактор

Программа для просмотра и редактирования файла побайтно

Binwalk

Инструмент для поиска встроенных файлов и структур в дампе

Обфускация

Запутывание кода, чтобы его было сложно понять

Шифрование прошивки

Когда прошивка зашифрована и без ключа выглядит как мусор

Flash — это память, куда записывают основную программу микроконтроллера. EEPROM — маленькая память для настроек, паролей и серийных номеров.

Программатор — это устройство, которое подключается к микроконтроллеру и читает или пишет память. Самые популярные: CH341A (дешёвый, для многих китайских чипов), Bus Pirate (универсальный, работает с разными протоколами), ST-Link (для STM32).

Чтобы извлечь дамп — подключаешь программатор к нужным пинам (VCC, GND, CLK, DATA и т.д.), запускаешь программу и читаешь память.

В CTF дампы часто дают уже готовыми, но иногда просят понять, как их добывают. Если задача на реальное железо — подключаешь программатор и читаешь flash.

На практике: видишь микроконтроллер — ищешь даташит, находишь пины для flash/EEPROM, подключаешь программатор и читаешь память в дамп.

Анализ дампов в hex-редакторах и Binwalk

Hex-редактор показывает дамп побайтно: слева номера, посередине байты в hex, справа — текст, если байты читаемые.

Binwalk сканирует дамп и ищет внутри знакомые структуры: файловые системы, архивы, картинки, сжатые данные, прошивки других чипов.

В CTF дампы редко бывают чистыми: в flash лежит прошивка + настройки + мусор; в EEPROM — пароли и ключи.

На практике: открываешь дамп в hex-редакторе — ищешь читаемые строки "flag", "CTF", "password"; запускаешь Binwalk — он находит встроенные zip, squashfs или картинки с флагом.

Поиск строк, ключей, паролей и флагов в дампах

Strings — поиск всех читаемых текстовых строк в дампе. Флаги часто лежат в открытом виде в прошивке или настройках.

Ключи и пароли — это последовательности символов, которые выглядят как base64, hex или длинные случайные строки. В EEPROM они часто хранятся рядом с названиями "wifi_pass", "key", "token".

В CTF поиск строк — первый и самый эффективный шаг. 60–70% флагов находят именно так.

На практике: запускаешь strings на дампе flash или EEPROM — ищешь "flag{", "CTF{", "password=" — и видишь нужную строку с флагом.

Обнаружение обфускации и шифрования прошивок

Обфускация — когда код специально запутывают: меняют имена переменных, вставляют мусорные инструкции, шифруют куски прошивки.

Шифрование прошивки — когда весь дамп или часть выглядит как случайные байты, потому что зашифрована простым XOR, RC4 или AES с фиксированным ключом.

В CTF обфускация и шифрование — частый способ усложнить задачу. Если дамп выглядит как шум — это почти всегда шифрование.

На практике: видишь дамп без строк — проверяешь на XOR с простыми ключами (0xFF, 0x5A); ищешь повторяющиеся байты — это может быть RC4 или AES; пробуешь расшифровать с ключом из EEPROM.

Итог

Чтение и анализ дампов памяти микроконтроллеров — это извлечение и разбор прошивки и настроек из flash и EEPROM. В hardware и forensics CTF это основа задач: флаг почти всегда в дампе микроконтроллера.

Главное запомнить: программаторы читают flash и EEPROM; hex-редактор и Binwalk — для просмотра и поиска структур; строки и ключи часто лежат открыто; обфускация и шифрование — это когда дамп выглядит как мусор.

Ключевые слова/термины выучить: дамп памяти, flash, EEPROM, программатор, CH341A, Bus Pirate, ST-Link, hex-редактор, Binwalk, обфускация, шифрование прошивки.

Эти знания помогут тебе сразу после получения дампа микроконтроллера открыть его в hex-редакторе и искать строки с флагом. В задачах ты сможешь прочитать пароль из EEPROM, найти флаг в открытой строке прошивки или расшифровать XOR-защищённый кусок — и получить флаг без сложного реверса.


Эмуляция и отладка микроконтроллеров

Эмуляция и отладка микроконтроллеров — это способы запускать и проверять программы для маленьких чипов (микроконтроллеров) без физического устройства. Эмуляция — это когда компьютер притворяется микроконтроллером, а отладка — пошаговый просмотр, что происходит внутри. В категории hardware на CTF эта тема встречается почти в каждой задаче: флаг прячут в прошивке микроконтроллера, и нужно понять, как она работает. Новичку важно освоить эти методы, потому что без эмуляции и отладки прошивку очень сложно разобрать и найти секрет. Знание позволит тебе запускать код в безопасной среде, ставить точки останова и видеть, где программа выдаёт флаг.

Словарь терминов

Термин
Что это простыми словами

Микроконтроллер

Маленький компьютер на одном чипе (Arduino, STM32 и т.д.)

Прошивка

Программа, которая записана в память микроконтроллера

Эмуляция

Когда обычный компьютер притворяется микроконтроллером

Отладка

Пошаговый просмотр работы программы и значений переменных

AVR

Семейство микроконтроллеров (используется в Arduino Uno)

ARM Cortex-M

Современные микроконтроллеры (STM32, nRF52 и т.д.)

PIC

Семейство микроконтроллеров от Microchip

MSP430

Микроконтроллеры от Texas Instruments с низким энергопотреблением

JTAG

Интерфейс для отладки и программирования микроконтроллеров

SWD

Более простой интерфейс отладки для ARM (Serial Wire Debug)

GDB

Программа для пошаговой отладки кода

Flash

Память, куда записывают прошивку

EEPROM

Маленькая память для настроек, сохраняется без питания

Эмуляция AVR, ARM Cortex-M, PIC, MSP430 в QEMU, Renode, SimulAVR

Эмуляция — это запуск прошивки на обычном компьютере, как будто она работает на настоящем чипе. Это безопасно: можно ломать, менять память и не бояться сжечь устройство.

QEMU умеет эмулировать ARM Cortex-M и некоторые AVR. Renode — более удобный для микроконтроллеров: поддерживает ARM, RISC-V, AVR и другие, плюс можно подключать виртуальные датчики и периферию.

SimulAVR — специализированный эмулятор именно для AVR (Arduino и ATmega).

В CTF эмуляция — главный способ запустить неизвестную прошивку и посмотреть, что она делает.

На практике: получил прошивку для STM32 (ARM) — запускаешь в Renode или QEMU, подключаешь GDB и смотришь, какие строки выводятся или где лежит флаг.

JTAG и SWD — это провода, которые подключают отладчик к микроконтроллеру. Через них можно читать и писать память, ставить точки останова, запускать код шаг за шагом.

OpenOCD — самая популярная программа для работы с JTAG/SWD. Она соединяет отладчик (Segger J-Link, ST-Link) с компьютером.

Segger J-Link — коммерческий отладчик, очень быстрый и надёжный. pyOCD — Python-библиотека для работы с ARM Cortex-M.

В CTF JTAG/SWD часто эмулируют: дают виртуальный чип и возможность подключиться. Это позволяет читать флеш-память и EEPROM.

На практике: подключаешься к эмулируемому чипу через OpenOCD — ставишь точку останова на функцию main — видишь, куда идёт программа и где она выдаёт флаг.

Использование GDB и GDB-multiarch для прошивок

GDB — это отладчик: позволяет ставить точки останова (break), запускать шаг за шагом (step, next), смотреть значения регистров и памяти (print, x).

GDB-multiarch — версия GDB, которая понимает много архитектур: ARM, AVR, MIPS, RISC-V и другие.

В CTF GDB используют для пошагового анализа прошивки: видишь, какие функции вызываются, какие строки выводятся и где лежит секрет.

На практике: запускаешь эмулятор (QEMU или Renode) — подключаешь GDB — ставишь break на start — шагаешь и смотришь регистры и память, ищешь строки с флагом.

Анализ дампов flash/EEPROM в Ghidra и Binwalk

Дамп flash — это полная копия основной памяти микроконтроллера, где лежит прошивка. Дамп EEPROM — маленькая память с настройками и ключами.

Binwalk — ищет внутри дампа сжатые архивы, файловые системы, картинки и другие встроенные данные.

Ghidra — мощный инструмент для анализа бинарного кода: показывает ассемблер, функции, строки и помогает понять логику программы.

В CTF дампы flash и EEPROM — основа hardware-задач. Флаг часто лежит в строке прошивки или в настройках EEPROM.

На практике: получил дамп flash — запускаешь binwalk — извлекаешь прошивку; открываешь в Ghidra — ищешь строки "flag" или "CTF" и смотришь функции, которые их выводят.

Итог

Эмуляция и отладка микроконтроллеров — это способы запускать и проверять программы для маленьких чипов на обычном компьютере. В hardware CTF это ключевой навык: флаг почти всегда в прошивке или настройках микроконтроллера.

Главное запомнить: эмуляция позволяет запускать код без железа; JTAG/SWD и GDB дают пошаговый контроль; дампы flash и EEPROM анализируют в Ghidra и Binwalk.

Ключевые слова/термины выучить: микроконтроллер, прошивка, эмуляция, отладка, AVR, ARM Cortex-M, PIC, MSP430, JTAG, SWD, GDB, flash, EEPROM.

Эти знания помогут тебе запускать неизвестную прошивку в эмуляторе, ставить точки останова в GDB и видеть, где программа выводит флаг. В задачах ты сможешь подключиться к виртуальному чипу, прочитать память flash, найти строки с флагом в Ghidra или извлечь настройки из EEPROM — и получить флаг без физического устройства.


Глитчинг и fault injection

Глитчинг и fault injection — это способы искусственно "сломать" устройство на короткое время, чтобы оно повело себя неправильно и выдало секрет. Это как подёргать провод питания или сбить тактовую частоту — микроконтроллер "глючит" и пропускает проверку защиты. В категории hardware на CTF эта тема встречается в задачах, где нужно обойти защиту от чтения прошивки или вытащить ключ. Новичку важно понять, что многие устройства выглядят защищёнными, но их можно обмануть коротким сбоем. Знание этих атак поможет тебе снимать debug lock, обходить bootloader и извлекать флаг из "нечитаемой" памяти.

Словарь терминов

Термин
Что это простыми словами

Глитчинг

Короткий сбой устройства, чтобы оно повело себя неправильно

Fault injection

Намеренное введение ошибки в работу чипа

Voltage glitching

Кратковременное изменение напряжения питания

Clock glitching

Кратковременный сбой тактовой частоты (часов)

Timing attack

Атака через измерение времени выполнения операций

Electromagnetic fault injection

Сбой от электромагнитного импульса (EMFI)

Bootloader

Программа, которая загружает основную прошивку при включении

Bootloader bypass

Обход загрузчика, чтобы запустить свой код или прочитать память

Voltage glitching (ChipWhisperer, custom setups)

Voltage glitching — это когда на короткое время (милли- или микросекунды) резко снижают или поднимают напряжение питания микроконтроллера. Чип "не успевает" проверить защиту и пропускает чтение памяти или выполняет лишнюю команду.

ChipWhisperer — популярный инструмент для таких атак: он генерирует точные импульсы напряжения и синхронизирует их с работой чипа. Custom setups — самодельные устройства на транзисторах и конденсаторах.

В CTF voltage glitching используют, чтобы снять debug lock или обойти проверку подписи в bootloader.

На практике: подключаешься к питанию чипа — в момент проверки защиты подаёшь короткий glitch — чип пропускает проверку — читаешь прошивку или ключ.

Clock glitching и timing attacks

Clock glitching — короткое нарушение тактовой частоты (часов) микроконтроллера. Чип получает меньше тактов, чем ожидает, и может пропустить инструкцию или выполнить её неправильно.

Timing attack — измерение времени выполнения операций: если проверка ключа занимает разное время в зависимости от правильности бита — можно угадать ключ по времени.

В CTF clock glitching — частый способ обойти защиту bootloader или крипто-проверки. Timing attack используют для угадывания пароля или ключа побитно.

На практике: подаёшь короткий glitch на линию CLK в момент проверки — чип пропускает инструкцию — читаешь память; или измеряешь время ответа на разные пароли — находишь правильный бит за битом.

Electromagnetic fault injection (EMFI)

Electromagnetic fault injection — создание сильного электромагнитного импульса рядом с чипом. Импульс индуцирует ток в проводах внутри кристалла и вызывает сбой в нужный момент.

EMFI может сбить проверку защиты, изменить значение регистра или пропустить инструкцию.

В CTF EMFI используют для обхода защиты без физического подключения к пинам. Это "бесконтактный" glitch.

На практике: если чип в корпусе и пины недоступны — подносишь катушку с импульсом к кристаллу в момент проверки — чип глючит и позволяет прочитать память.

Glitch на этапе загрузки (bootloader bypass)

Bootloader — программа, которая запускается первой при включении микроконтроллера и загружает основную прошивку. Часто в bootloader есть проверка подписи или debug lock.

Glitch на этапе загрузки — сбой именно в момент, когда bootloader проверяет защиту или подпись. Чип пропускает проверку и позволяет прочитать или изменить память.

В CTF это самый частый способ обойти защиту. Если устройство не даёт читать flash — glitch'ают в момент загрузки.

На практике: синхронизируешь glitch с включением питания или сбросом — подаёшь сбой в момент проверки подписи — bootloader пропускает проверку — читаешь всю прошивку.

Итог

Глитчинг и fault injection — это искусственное введение коротких сбоев в работу микроконтроллера, чтобы он пропустил проверку защиты. В hardware CTF это основной способ обойти debug lock и прочитать прошивку.

Главное запомнить: voltage и clock glitching — самые доступные атаки; EMFI работает бесконтактно; glitch на этапе загрузки обходит bootloader и защиту; timing атаки угадывают секреты по времени.

Ключевые слова/термины выучить: глитчинг, fault injection, voltage glitching, clock glitching, timing attack, electromagnetic fault injection, EMFI, bootloader bypass.

Эти знания помогут тебе на защищённом микроконтроллере подать короткий сбой напряжения или частоты в момент проверки — и получить доступ к памяти. В задачах ты сможешь снять debug lock через voltage glitch, обойти подпись в bootloader или угадать ключ по времени ответа — и прочитать прошивку с флагом.


Инструменты и оборудование для hardware CTF

Инструменты и оборудование для hardware CTF — это специальные устройства и программы, которые помогают читать, отлаживать и ломать микроконтроллеры, чипы, флешки и другие железки. Без них почти невозможно работать с реальным оборудованием в задачах. В категории hardware эта тема встречается в каждой второй задаче: флаг прячут в прошивке чипа, и чтобы его достать — нужно подключиться, прочитать память или вызвать сбой. Новичку важно знать, какие инструменты решают разные задачи (чтение памяти, глитчинг, анализ сигналов), потому что они превращают "чёрный ящик" в понятный код. Знание поможет тебе выбрать правильный инструмент для конкретной платы и быстро добраться до флага.

Словарь терминов

Термин
Что это простыми словами

Side-channel attack

Атака через побочные эффекты (энергия, излучение, время)

Glitching

Короткий сбой устройства, чтобы оно пропустило проверку

ChipWhisperer

Набор для глитчинга и анализа энергопотребления

Bus Pirate

Универсальный инструмент для работы с протоколами и чипами

Saleae Logic

Логический анализатор — записывает сигналы на проводах

JTAGulator

Устройство для автоматического поиска JTAG/SWD пинов

Ghidra

Программа для дизассемблинга и анализа прошивок

Binwalk

Инструмент для поиска встроенных файлов в дампах

OpenOCD

Программа для работы с JTAG/SWD отладкой

pyOCD

Python-библиотека для отладки ARM-чипов

flashrom

Программа для чтения и записи flash-памяти

Multimeter

Прибор для измерения напряжения, сопротивления и тока

Oscilloscope

Устройство для просмотра формы сигнала во времени

Logic analyzer

Записывает цифровые сигналы с нескольких проводов

ChipWhisperer (Lite, Pro, Husky) для side-channel и glitch

ChipWhisperer — это семейство устройств специально для атак на аппаратную криптографию. Lite — простая версия для начинающих, Pro — мощнее, Husky — самая новая и точная.

Side-channel — измерение энергопотребления или электромагнитного излучения чипа во время шифрования. Разные ключи потребляют чуть-чуть разную энергию — по этому можно угадать ключ.

Glitch — короткий сбой напряжения или тактовой частоты, чтобы чип пропустил проверку защиты или сделал ошибку в вычислении.

В CTF ChipWhisperer используют для задач на извлечение ключей из AES или обход защиты чтения памяти.

На практике: подключаешь чип к ChipWhisperer — записываешь энергопотребление при шифровании — применяешь DPA/CPA и находишь ключ; подаёшь glitch в момент проверки — чип пропускает защиту и выдаёт флаг.

Bus Pirate, Saleae Logic, JTAGulator

Bus Pirate — маленький универсальный инструмент: умеет работать с I2C, SPI, UART, 1-Wire, JTAG и даже измерять напряжение. Подключаешься к плате и читаешь/пишешь данные.

Saleae Logic — логический анализатор: записывает сигналы с 8–16 проводов одновременно и показывает их как волны с временными метками. Идеален для анализа неизвестных протоколов.

JTAGulator — устройство, которое автоматически перебирает пины платы и находит, где спрятан JTAG или SWD интерфейс.

В CTF эти инструменты — основа для работы с неизвестными платами. Если пины не подписаны — используешь JTAGulator; если нужно понять протокол — Saleae Logic; если нужно быстро подключиться — Bus Pirate.

На практике: видишь плату без подписей — подключаешь JTAGulator — он находит JTAG-порты; записываешь обмен по SPI через Saleae — понимаешь, как устройство общается с датчиком.

Ghidra, Binwalk, OpenOCD, pyOCD, flashrom

Ghidra — программа для дизассемблинга и анализа прошивок. Показывает код в виде ассемблера, ищет строки, функции и помогает понять логику.

Binwalk — сканирует дамп и находит внутри архивы, файловые системы, картинки и другие встроенные данные.

OpenOCD — программа для работы с JTAG/SWD: читает и пишет память, ставит точки останова, запускает код.

pyOCD — Python-библиотека для отладки ARM-чипов через SWD/JTAG.

flashrom — программа для чтения и записи flash-памяти (BIOS, флешки, чипы на плате).

В CTF эти инструменты — основа для анализа дампов и отладки. Ghidra и Binwalk — для чтения прошивки; OpenOCD и pyOCD — для живой отладки.

На практике: получил дамп flash — открываешь в Binwalk — извлекаешь прошивку — загружаешь в Ghidra — ищешь строки с флагом; подключаешься к чипу через OpenOCD — ставишь breakpoint и смотришь, где программа выводит секрет.

Multimeter, oscilloscope, logic analyzer, UV/glitch setups

Multimeter — простой прибор для измерения напряжения, сопротивления и тока. Помогает найти питание, землю и отладочные пины (часто 3.3 В или 1.8 В).

Oscilloscope — показывает форму сигнала во времени. Можно увидеть, как меняется напряжение на линии CLK или данных.

Logic analyzer — записывает цифровые сигналы с нескольких проводов. Показывает, что передаётся по I2C, SPI, UART.

UV/glitch setups — самодельные устройства для ультрафиолетового стирания EEPROM или точечного глитчинга напряжения.

В CTF эти приборы используют для поиска пинов и анализа сигналов. Если плата неизвестная — мультиметром ищешь питание, осциллографом — форму сигналов.

На практике: подключаешь мультиметр — находишь VCC и GND; осциллографом смотришь на пины — видишь часы и данные — понимаешь протокол; logic analyzer записывает обмен — разбираешь I2C или SPI.

Итог

Инструменты и оборудование для hardware CTF — это устройства и программы, которые помогают читать память, отлаживать код и ломать защиту микроконтроллеров. В hardware задачах они используются почти всегда: без них невозможно подключиться или проанализировать дамп.

Главное запомнить: ChipWhisperer — для глитчинга и side-channel; Bus Pirate и Saleae — для работы с протоколами; Ghidra и Binwalk — для анализа прошивок; мультиметр и осциллограф — для поиска пинов и сигналов.

Ключевые слова/термины выучить: side-channel attack, glitching, ChipWhisperer, Bus Pirate, Saleae Logic, JTAGulator, Ghidra, Binwalk, OpenOCD, pyOCD, flashrom, multimeter, oscilloscope, logic analyzer.

Эти знания помогут тебе выбрать правильный инструмент для конкретной платы или задачи. В CTF ты сможешь подключиться к неизвестному чипу через Bus Pirate, прочитать дамп в Ghidra, найти флаг в строках прошивки, вызвать glitch через ChipWhisperer и обойти защиту — и получить флаг без долгого поиска.


Протоколы связи с периферией и датчиками

Протоколы связи с периферией — это правила, по которым микроконтроллер общается с датчиками, дисплеями, модулями памяти, RFID-картами и другими устройствами. Это как разные языки, на которых чип говорит с окружающим миром. В категории hardware на CTF эта тема встречается почти в каждой задаче: флаг прячут в данных датчика, в ответе RFID-метки или в сообщении по CAN-шине автомобиля. Новичку важно понять основные протоколы, потому что они показывают, где можно перехватить, подменить или проанализировать данные. Знание поможет тебе быстро распознавать протокол по виду сигналов и находить флаг в перехваченном обмене.

Словарь терминов

Термин
Что это простыми словами

I2C

Двухпроводной протокол для связи с датчиками и памятью

SPI

Четырёхпроводной быстрый протокол для датчиков и флэш-памяти

UART

Простой последовательный протокол (две провода TX/RX)

1-Wire

Однопроводной протокол (Dallas, iButton)

SWD/JTAG

Протоколы отладки микроконтроллеров

Sniffing

Перехват (прослушка) сигналов между устройствами

Replay attack

Повтор ранее перехваченного обмена

RFID

Бесконтактные метки и карты (радиочастотная идентификация)

NFC

Близкая бесконтактная связь (телефоны, оплата)

MIFARE

Популярный тип RFID-карт (Classic, Ultralight, DESFire)

ISO14443

Международный стандарт для RFID/NFC на 13.56 МГц

CAN

Протокол для автомобилей (Controller Area Network)

LIN

Простой протокол для автомобильных датчиков

FlexRay

Высокоскоростной протокол для автомобилей

I2C, SPI, UART, 1-Wire, SWD/JTAG протоколы

I2C — два провода (SDA — данные, SCL — часы). Микроконтроллер общается с несколькими устройствами по одному адресу. Самый популярный для датчиков температуры, акселерометров, OLED-дисплеев.

SPI — четыре провода (MOSI, MISO, SCLK, CS). Быстрее I2C, используется для флэш-памяти, SD-карт, дисплеев. CS (chip select) выбирает устройство.

UART — два провода (TX и RX). Самый простой, без тактирования. Используется для отладки, GPS-модулей, Bluetooth-модулей.

1-Wire — один провод + земля. Устройства имеют уникальный адрес. Используется в датчиках температуры (DS18B20) и iButton-ключах.

SWD/JTAG — протоколы отладки. SWD — два провода (SWCLK, SWDIO), JTAG — 4–5 проводов. Через них читают/пишут память микроконтроллера.

В CTF эти протоколы — основа hardware-задач. Флаг передаётся по I2C от датчика, по UART от GPS или по SWD/JTAG из памяти чипа.

На практике: видишь два провода + часы — это I2C; четыре провода + CS — SPI; TX/RX — UART; один провод — 1-Wire; SWD/JTAG — отладочные пины.

Sniffing и replay атак на I2C/SPI (Bus Pirate, Saleae, Logic Analyzer)

Sniffing — перехват сигналов между микроконтроллером и периферией. Ты подключаешься к линиям и записываешь весь обмен.

Replay attack — повтор перехваченного обмена. Например, считал показания датчика — повторяешь запрос и получаешь те же данные.

Logic Analyzer — устройство, которое записывает сигналы на нескольких проводах и показывает их как волны с временными метками.

В CTF sniffing и replay — классика для I2C/SPI. Флаг передаётся по I2C от датчика или по SPI от флэш-памяти.

На практике: подключаешься к линиям SDA/SCL (I2C) — записываешь обмен — видишь запрос "дай температуру" и ответ с флагом; повторяешь запрос — получаешь флаг снова.

Анализ протоколов RFID/NFC (MIFARE, DESFire, ISO14443)

RFID — бесконтактные метки и карты на 125 кГц или 13.56 МГц. NFC — подмножество RFID для телефонов и оплаты.

MIFARE Classic — старая карта с секторами и ключами A/B. Ломается крипто-анализом.

DESFire — современная карта с шифрованием AES/DES, но часто неправильно настроена.

ISO14443 — стандарт для 13.56 МГц карт. Определяет команды: SELECT, AUTHENTICATE, READ, WRITE.

В CTF RFID/NFC — частая тема. Флаг лежит в блоке карты или в ответе на команду.

На практике: перехватываешь обмен с картой — видишь команды READ BINARY — читаешь блоки — находишь флаг в данных.

Протоколы автомобильные (CAN, LIN, FlexRay)

CAN (Controller Area Network) — протокол для автомобилей. Два провода (CAN-H, CAN-L), сообщения с ID и данными до 8 байт. Все устройства слышат всё.

LIN — простой и дешёвый протокол для неважных датчиков (стеклоподъёмники, зеркала). Один провод + земля.

FlexRay — высокоскоростной и надёжный протокол для критических систем (тормоза, рулевое управление).

В CTF автомобильные протоколы дают в задачах на "взлом машины". Флаг прячут в CAN-сообщении или в ответе датчика.

На практике: видишь два провода с дифференциальным сигналом — это CAN; перехватываешь сообщения — ищешь ID с флагом или подозрительные данные.

Итог

Протоколы связи с периферией и датчиками — это "языки", на которых микроконтроллер говорит с окружающими устройствами. В hardware CTF это основа задач: флаг передаётся по I2C, SPI, UART, RFID или CAN.

Главное запомнить: I2C — два провода, SPI — четыре, UART — TX/RX, 1-Wire — один провод; sniffing позволяет перехватывать обмен; RFID/NFC — бесконтактные карты; CAN — автомобильный протокол с общим проводом.

Ключевые слова/термины выучить: I2C, SPI, UART, 1-Wire, SWD/JTAG, sniffing, replay attack, RFID, NFC, MIFARE, DESFire, ISO14443, CAN, LIN, FlexRay.

Эти знания помогут тебе сразу понять, какой протокол используется по количеству проводов или виду сигналов. В задачах ты сможешь перехватить обмен по I2C от датчика, прочитать блок MIFARE-карты, собрать сообщение по CAN или повторить запрос по UART — и найти флаг в данных периферии или датчика.


Reverse engineering прошивок микроконтроллеров

Reverse engineering прошивок микроконтроллеров — это разбор программы, записанной в маленьком чипе, чтобы понять, что она делает и где спрятан секрет. Прошивка — это машинный код, который управляет устройством (Arduino, умная розетка, брелок и т.д.). В категории hardware и reverse на CTF эта тема встречается почти в каждой задаче: флаг лежит внутри прошивки, и нужно его найти. Новичку важно научиться читать код микроконтроллера, потому что без этого невозможно понять логику устройства. Знание поможет тебе разбирать неизвестный бинарник, находить строки с флагом и даже менять код, чтобы устройство само выдало секрет.

Словарь терминов

Термин
Что это простыми словами

Прошивка

Программа, записанная в память микроконтроллера

Reverse engineering

Разбор чужого кода, чтобы понять, как он работает

Дизассемблинг

Преобразование машинного кода в читаемый ассемблер

AVR

Семейство микроконтроллеров (Arduino Uno и подобные)

ARM Thumb/Thumb-2

Упрощённый режим инструкций для ARM-процессоров

PIC

Семейство микроконтроллеров от Microchip

Векторы прерываний

Таблица адресов, куда прыгает программа при событиях

Startup-код

Самый первый код, который запускается после включения

Bootloader

Программа-загрузчик, которая обновляет основную прошивку

Firmware update

Механизм обновления прошивки по воздуху или кабелю

Патчинг

Изменение кода прошивки (замена инструкций)

Эмуляция

Запуск прошивки на компьютере, как будто на настоящем чипе

QEMU

Эмулятор процессоров и микроконтроллеров

Дизассемблинг AVR, ARM Thumb/Thumb-2, PIC в Ghidra и IDA

Дизассемблинг — это превращение машинного кода (байтов) в читаемый текст — ассемблерные инструкции (mov, add, jmp и т.д.).

AVR (Arduino) использует 8-битные инструкции, ARM Thumb/Thumb-2 — 16/32-битные, PIC — тоже 14/16-битные.

Ghidra и IDA — программы, которые автоматически разбирают байты на инструкции и показывают структуру: функции, строки, вызовы.

В CTF дизассемблинг — первый шаг. Если дали дамп flash — открываешь его в Ghidra и видишь, что делает код.

На практике: загружаешь дамп прошивки в Ghidra — выбираешь архитектуру (AVR, ARM Thumb, PIC) — видишь функции и строки, ищешь "flag" или "CTF".

Понимание векторов прерываний и startup-кода

Векторы прерываний — таблица в начале прошивки. Каждое событие (таймер сработал, кнопка нажата, UART получил байт) имеет свой адрес — процессор прыгает туда.

Startup-код — самый первый кусок, который запускается после включения питания или сброса. Он настраивает регистры, копирует данные из flash в RAM, обнуляет переменные и вызывает main().

В CTF векторы и startup помогают понять, как начинается программа и какие прерывания используются.

На практике: в дизассемблере смотришь начало дампа — видишь таблицу векторов — находишь адрес reset-вектора — идёшь туда и видишь startup-код — понимаешь, как инициализируется устройство.

Анализ bootloader и firmware update механизмов

Bootloader — программа-загрузчик. Она запускается первой и проверяет, нужно ли обновить прошивку (по кнопке, UART, USB и т.д.). Если обновление не нужно — передаёт управление основной программе.

Firmware update — механизм загрузки новой прошивки: обычно через UART, USB или OTA (по воздуху). Bootloader принимает данные, проверяет подпись или CRC и записывает в flash.

В CTF bootloader часто содержит флаг или уязвимость: можно загрузить свою прошивку, прочитать память или обойти защиту.

На практике: находишь функцию bootloader в дизассемблере — видишь, как он принимает команды — отправляешь свою прошивку — получаешь флаг или читаешь память.

Патчинг и эмуляция прошивок в QEMU

Патчинг — изменение кода прошивки: заменяешь одну инструкцию на другую (например jmp на nop), чтобы отключить проверку или вывести флаг.

Эмуляция — запуск изменённой прошивки на компьютере в QEMU (эмулятор процессоров). Можно безопасно тестировать патчи и смотреть, что происходит.

В CTF патчинг и эмуляция — способ быстро проверить гипотезы. Если видишь проверку пароля — патчишь её и запускаешь в QEMU — видишь флаг.

На практике: находишь в дизассемблере проверку — заменяешь условный переход на безусловный — сохраняешь патченную прошивку — запускаешь в QEMU — программа выдаёт флаг.

Итог

Reverse engineering прошивок микроконтроллеров — это разбор и изменение программы маленького чипа, чтобы найти секрет. В hardware и reverse CTF это основа задач: флаг лежит внутри прошивки.

Главное запомнить: дизассемблинг превращает байты в читаемый код; startup-код и векторы показывают начало программы; bootloader часто содержит уязвимости; патчинг и эмуляция позволяют менять и тестировать код.

Ключевые слова/термины выучить: прошивка, reverse engineering, дизассемблинг, AVR, ARM Thumb, PIC, векторы прерываний, startup-код, bootloader, firmware update, патчинг, эмуляция, QEMU.

Эти знания помогут тебе загрузить дамп прошивки в дизассемблер и сразу увидеть функции и строки с флагом. В задачах ты сможешь найти startup-код, понять логику bootloader, запатчить проверку и запустить прошивку в эмуляторе — и получить флаг без физического устройства.