[Из песочницы] Удивительное устройство USB-флешки Kingston DataTraveler DT6000 и восстановление информации, утраченной в результате сбоя
Приветствую уважаемых Хабровчан. Я Артем Макаров aka Robin, ведущий инженер компании Хардмастер, уже много лет специализируюсь на восстановлении данных с разнообразных носителей, и сегодня я хотел бы поделиться с вами историей восстановления файлов с одной весьма любопытной флешки. Надеюсь получить отзывы на свой хабродебют в комментариях.Несмотря на то, что перевидать всяких девайсов довелось огромную кучу, с задачей, подобно описываемой далее, раньше мне сталкиваться не приходилось.
ПреамбулаИтак, USB Flash диск Кингстон DT6000, заявленный производителем, как надежное хранилище файлов, с использованием криптостойкого алгоритма AES256 FIPS140–2 Level 3.Логически флеха устроена следующим образом: раздел 68 мегабайт отформатированный в FAT16, является своего рода загрузочным. Когда девайс подключают к ПК, срабатывает автозапуск (либо пользователю предлагается запустить экзешник):
После чего на первый план выходит вот такое окошко:
Вводим пароль, вуаля — монтируется скрытый раздел с заботливо попрятанными фото и видео известного содержания.
Но у пользователя в один не очень прекрасный день случилась неприятность, флешку вставили, а «загрузчик» оказался пустым. При наличии пароля, оказалось, что тупо нет возможности этот пароль куда-либо ввести. Принесли диск на диагностику к нам.
Первым делом, подключив накопитель к тестовому ПК и открыв любимый шестнадцатеричный редактор WinHEX я полез в список физических дисков. Так и есть, два тома. Первый пустой, и что самое главное — в режиме «только для чтения»! Второй недоступный. Снял образ с первого раздела, проанализировал. Обе копии таблиц FAT в нормальном виде отсутствуют.
То есть с возможностью достать с «загрузочного раздела» файлы с именами и структурой можно попрощаться. «Черновым восстановлением» или восстановлением по известным заголовкам файлов (оно же raw recovery) удалось выдернуть некий zip архив и pdf-ку. По содержимому последней стало ясно, как всё было устроено, и чего на загрузочном разделе не хватает.
Учитывая, что раздел залочен производителем на запись, было ясно что ни о каком случайном форматировании со стороны пользователя речи, в данном случае, быть не может, и наиболее вероятная причина «обнуления» раздела — сбой в области таблиц трансляции обработки NAND, в результате чего часть корректных блоков была подменена на «альтернативные».
Этот эффект носит название «псевдо-логическая проблема с флешкой» и выглядит как глюк на уровне файловой системы, на самом деле являясь сбоем, по сути, аппаратным. А значит, скорее всего, придётся флешку препроводить на патологоанатомический стол и подвергнуть вскрытию, с целью отпаять микросхему (ы) памяти и попытаться собрать из прочитанных образов что-то осмысленное.
О шифровании и о том, как вообще собирать дампы с шифрованным контентом, на тот момент голову не стал забивать.
Проблемы полагается решать по мере их появления, поэтому первым делом надо было отыскать DT6000_Launcher со всем окружением. На сайте производителя, соответствующий продукту раздел загрузок был пуст. Оно и логично — смысл загружать файлы если предполагается что ты не сможешь их записать (см. залоченная запись)? Кинул клич коллегам по цеху. Нужные файлы прислали. Следующая проблема — указать лаунчеру где у нас шифрованное.
Попытки разлочить раздел FAT16 на самой флешке средствами ОС и записать лаунчер на него успехом не увенчались. Попытки запустить лаунчер с другого носителя и натравить на исследуемую флешку так же оказались безуспешными. Дальнейшее аппаратное вмешательство во внутренности Дата Травелера становилось неизбежным.
«Ну, сегодня нас ожидает несколько сенсаций…» © Удалив внешний пластиковый корпус пытливому взгляду исследователя открылось вот такое:
За исключением USB разъема всё залито пластиком. Убрать его получалось с помощью термовоздушной паяльной станции, нагревая область за областью до температуры примерно 150 С, после чего пластик начинал потихоньку гнуться и небольшими кусочками откалываться. Орудуя стоматологическими крючками и скальпелем, чувствуя себя археологом, очистил от пластика одну сторону. Увидел следующее:
АРМ-контроллер LPC3131FET180, плиска 3s500e (она же ПЛИСС, PLD — программируемая логическая интегральная схема) от XILINX, криптомодуль ROSETTA от компании Spyrus и Атмеловская ПЗУ-шка 25DF081A. Надо браться за вторую половину, ибо искомой НАНД памяти пока не обнаружено.
Начинаю счищать вторую сторону. Появляется что-то блестящее. Кварц? Не похоже. Еще пара размашистых ударов кувалды и зубила, опаньки — картридер!
Видать кризис ударил и по Кингстону. Чтобы не заморачиваться с аппаратной реализацией полноценного флеш-накопителя орлы из корпорации Kingston закупили у дядюшки Ляо партию MicroSD по сходной цене и навесили сверху шифровалку, обильно залив всё быстро застывающей пластмассой. Чтоб никто не догадался, стало быть. Учитывая внушительный прайс, за который торгуют этот DT6000 на том же ЯндексМаркете — профит производителя очевиден.
Выколупываем микро-сдшку, всё залито пластиком и приклеено со всех сторон. Дочищаем остатки, кроме обвязки смотреть там больше не на что.
Финишная прямая Вставляю извлеченную из-под завалов пластика MicroSD в карт-ридер. Флешка определяется на все свои 16 гигов. С нулевого сектора характерный для шифрования «белый шум».
Примерно с середины — нули. Смотрю под хвост. Опа, —, а вот и наш «загрузочный» раздел! Определил начало и кончало раздела, сравнил с ранее снятым образом, когда безродная MicroSD была еще породистым Kingston DataTraveler — отличия не обнаружены.
Ввиду открывшихся дополнительных обстоятельств первоначальной гипотезе о подмене блоков в таблице трансляции NAND присваивается статус «несостоятельная», и на место рабочей встает предположение о глюке шифровальной навески, она же строитель представления логической разметки микро-сд на УСБ интерфейсе DT6000.
Беру живую 32-х гиговую USB флешку. Прописываю, для чистоты эксперимента, в том же ВинХексе её нулями сверху донизу. В начало пишу ранее склоненный раздел. На него записываю с трудом добытый лаунчер, dt6000.zip и manifest.xml. Запускаю, ввожу пароль, сообщение о том, что шифрованный раздел не найден или поврежден.
В сектор, следующий за последним сектором «загрузочного» раздела вписываю образ всей шифрованной MicroSD целиком.Запускаю лаунчер, ввожу пароль. Бинго! Шифрованный раздел найден, подмонтирован,
Все пользовательские файлы на месте — можно копировать.