http://habrahabr.ru/post/250327/
Приветствую уважаемых Хабровчан. Я Артем Макаров 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 целиком.
Запускаю лаунчер, ввожу пароль. Бинго! Шифрованный раздел найден, подмонтирован,
Все пользовательские файлы на месте — можно копировать.