Guardian0x00
One Level
- 29.11.2025
- 5
- 1
Цель: выяснить, как прошивка работает с «хвостом» HDD (последние десятки секторов), и используется ли этот хвост как:
– токен/анти-swap,
– либо как контейнер ключа (eDEK) / параметров шифрования,
– либо вообще как нечто третье.
– токен/анти-swap,
– либо как контейнер ключа (eDEK) / параметров шифрования,
– либо вообще как нечто третье.
Входные данные:
- бинарный дамп U4.bin (SST25VF010A, 128 КБ);
- описание железа (модель 57Y4400, USB диск на INIC-1610 + PIC16F883);
- экспериментальные наблюдения:
- хвост 32 КБ с «магическими байтами» 25 C9 9C ...;
- при смене PIN / admin PIN на новом устройстве содержимое хвоста не меняется (бит-в-бит одинаковые дампы);
- иногда изменение байтов в хвосте через SATA приводит к появлению или пропаже LUN.
Задачи:
- Базовый реверс прошивки:
- настроить в Ghidra/IDA 8051-проект, указать правильную карту памяти (CODE/XDATA/IDATA, внешние регистры);
- выявить стартовую точку (reset vector, boot-код);
- найти обработчики USB/SATA/ATA, таблицы команд.
- Поиск логики чтения хвоста HDD:
- найти использование ATA команд 0xEC, 0xC8, 0x25;
- отследить где прошивка получает MaxLBA (результат IDENTIFY DEVICE);
- найти арифметику вида LBA_tail = MaxLBA - const (например, 0x3F сектора, 32 КБ и т.п.);
- найти код, который инициирует чтение именно этого диапазона.
- Анализ обработки буфера хвоста:
- определить адрес в XDATA / внутренней RAM, куда читается хвост;
- проследить дальнейший data-flow:
- цикл по буферу с подсчётом суммы/CRC/хеша и последующим сравнением с константой или регистром;
- либо цикл копирования байтов в фиксированный диапазон XDATA (предполагаемые MMIO-регистры криптоблока, например 0xB000–0xBFFF).
- Поиск связки с AES / криптологикой INIC:
- найти функции, настраивающие шифрование (режим, ключ, IV);
- выяснить, откуда берутся байты ключа (из хвоста или от внешнего МК по какому-то интерфейсу);
- зафиксировать адреса регистров, куда пишется ключ/вектор.
- Отчёт / выводы:
- текстовое описание найденных функций (адреса, назначение, псевдокод);
- схема: «ATA READ → буфер → … → (CRC check / MMIO write)»;
- однозначный ответ: используются ли данные хвоста как ключ/IV, или только как проверка/токен;
- если есть, отметить любые проверки, которые при несоответствии приводят к отсутствию LUN / блокировке диска.
Что НЕ требуется:
- не нужно писать эксплойты, ломать защиту, подбирать PIN и т.д.;
- задача — анализ логики прошивки, а не фактический взлом устройства.