Владелец небольшого предприятия вечером в понедельник решил заняться финансовым анализом текущих дел. Придя вечером домой, он расположился в домашнем кабинете, подключил к ноутбуку внешний накопитель Prestigio Data Safe II 500ГБ и погрузился в цифры. Внезапно его мысли прервал донесшийся шум, а следом в помещение с пронзительным мяуканьем влетел домашний любимец, который, игнорируя все препятствия, запрыгнул на стол, пулей промчался по нему, совершил прыжок на шторы и взобрался на карниз, где в итоге замер и лишь подозрительно косился на окружающих, шипя при любой попытке приближения.
Когда кульминация событий сошла на нет и стали ясны причины подобного поведения домашнего животного, хозяин обнаружил, что одним только перепуганным котом дело не ограничилось. На столе и вокруг него царил настоящий хаос: разлетевшиеся по комнате документы и безжизненно болтающийся на USB кабеле винчестер.
рис. 1
После устранения последствий забега несчастного животного было уделено пристальное внимание винчестеру. По спине владельца диска пробежал легкий холодок, когда он так и не дождался от накопителя запуска утилиты с предложением ввести пароль для доступа к скрытому от посторонних глаз разделу. После нескольких бесплодных попыток был срочно вызван системный администратор.
Администратор, убедившись в тщетности попыток работать с накопителем через USB, разобрал бокс, извлек него HDD Toshiba MK5059GSXP и подключил к SATA порту компьютера. Загрузив Windows, в оснастке управления дисками обнаружил, что с точки зрения ОС накопитель не содержит ни одного раздела. Была осуществлена попытка запуска программы автоматического восстановления, но сканирование, едва начавшись, подвесило компьютер, и из накопителя послышались щелчки. На этом этапе было принято решение, что пора остановиться.
С такой предысторией накопитель поступил в нашу лабораторию восстановления данных. Исходя из того, что накопитель был после удара и при попытке сканирования начал издавать стучащие звуки, то первой операцией будет его очистка от пыли и проведение обследования в условиях ламинарного бокса. Тщательному обследованию подлежат подвески и слайдеры БМГ, рециркуляционный воздушный фильтр, а также верхняя поверхность в пакете дисков.
рис. 2
Осмотр рециркуляционного воздушного фильтра и БМГ не выявил деформаций и наличия металлических частиц, на основании чего делаем вывод о допустимости старта накопителя с оригинальным БМГ. Осмотр верхней поверхности под микроскопом позволяет выявить наличие небольшой радиальной царапины у внешнего края.
Собрав накопитель, подключаем его к порту PC3000 и подаем питание. Слышен характерный шум воздуха при вращении вала и звук прохождения калибровочного теста. Далее возникает некоторая задержка, после которой накопитель наконец-то выдает по регистрам готовность принимать команды.
рис. 3
Выполняем резервирование микропрограммы, в процессе обнаруживаем нечитабельность G-list. Так как этот дефект лист необходим для работы системы трансляции, то накопитель не позволяет прочитать ни одного сектора из пользовательской зоны в обычном режиме.
Попытка записи на неиспользуемый трек служебной зоны приводит к тому, что жесткий диск начинает издавать стучащие звуки, что явно говорит о проблемах с записью. Так как возможности переписать нечитаемый модуль у нас нет, то не будем пытаться записать чистый модуль G-list.
Для накопителей Toshiba, у которых не работают или некорректно работают записывающие головки, либо имеются серьезные повреждения в служебной зоне, которые не позволяют корректно функционировать, можно использовать особенности технологического режима. После включения технологического режима, накопитель меняет логику работы: не осуществляется запись в SMART логи, отключено оффлайн сканирование, а также система трансляции работает без учета записей в P-list и G-list.
Перед вычитыванием в технологическом режиме необходимо проанализировать P-list жесткого диска, чтобы учесть все исключенные области из PBA диапазона и при вычитывании получить данные пользователя, которые записывались в рамках LBA диапазона (в котором учтены исключения из P-list), без сдвигов.
Следующим шагом будет построение карты зонного распределения, чтобы понимать каким образом сформировано логическое пространство. Для чтения построим карту из мини зон и отсортируем в порядке убывания, так как при обследовании повреждения обнаруживались у внешнего края пластины.
рис. 4
В данном случае без особых затруднений было прочитано до 15 998 ххх секторов. Потом обнаружились затруднения в чтении.
рис. 5
Попытка перестроить цепочки в порядке возрастания с дальнейшим чтением показало наличие дефектов от самого начала логического диапазона.
рис. 6
Исключаем чтение по головке №0 и пытаемся читать далее, следом обнаруживаются проблемы с 249 xxx сектора, также исключаем чтение по головке №2. Выполняем чтение зон головками №1 и №3 на интервале от 0 до 15 998 975 сектора.
Для дальнейшего вычитывания проблемных зон будем использовать PIO режим для более точного контроля состояния накопителя. Выполнив некоторое число попыток чтения с разным таймаутом ожидания готовности и разным размером прыжков при обнаружении нестабильностей, переходим к этапу многопроходного чтения дефектов. В результате всех попыток чтения непрочитанными остались менее 3000 секторов из всего множества 976 773 168 секторов.
Выполняем заполнение непрочитанных секторов на копии паттерном 0xDE 0xAD. Проводим анализ регулярных выражений для различных популярных типов файлов и обнаруживаем отсутствие пользовательских данных на диске, но в тоже время можно сказать, что диск заполнен некими данными более чем на 95% (согласно того, какое количество секторов заполнено ненулевыми значениями).
На этом этапе отложим посекторную копию и проведем анализ особенностей USB-SATA моста, используемого в боксе.
рис. 7
Данный USB-SATA адаптер основан на MCU J-Micron 20339. Возьмем накопитель, все сектора которого заполнены 0x00, присоединим к данному адаптеру и подключим к ПК.
рис. 8
ОС обнаружила 2 накопителя по 20Мб. При анализе выяснилось, что первый раздел доступен только для чтения. На втором запись доступна.
рис. 9
Исходя из названий устройств в паспортных данных, можно предположить, что роль первого предназначается для хранения приложения, конфигурирующего размер публичного и скрытого раздела, а также открывающего доступ к скрытому разделу. Второй раздел предназначен для хранения «публичных» данных и третий появится, только при вводе пароля в фирменной утилите.
При открытии в дисковом редакторе в каждом секторе любого из устройств видим заполнение неким паттерном.
рис. 10
Отключим диск от данного адаптера и проанализируем, располагает ли контроллер некие метаданные на самом накопителе, так как диск изначально был полностью заполнен нулями. В секторе 0x18FBF (102 335) и секторе 0x18FCF (102 351) обнаруживается заполнение неким хаотичным содержимым.
Начиная с сектора 102 352 выполним запись номера сектора в первые 4 байта на протяжении 40 960 секторов. Вновь подключив диск к адаптеру проанализируем заполнение первого двадцати мегабайтного раздела. Увидим, что на протяжении всего раздела остался прежний паттерн, как на рис. 10, но с изменениями в первых байтах. Выполнив XOR операции между и первоначальным паттерном и текущими значениями, получим сектора, содержимым которых будут нули с номером сектора в первых 4 байтах.
На основании этого, мы можем утверждать, что данный контроллер шифрует данные посредством XOR операции, размер ключа 512 байт. Недостаток данного «шифрования» в том, что в секторах, заполненных нулями, но прочитанных через данный USB-SATA адаптер, будут находиться все 512 байт ключа в оригинальном виде. Также обратим внимание, что в накопителях, где в секторах 102 335 и 102 351 содержится некорректное содержимое с точки зрения микропрограммы JM20339, то произойдет формирование новых ключей случайным образом.
Вернемся к копии проблемного накопителя и проанализируем карту прочитанного. Удостоверимся, что ключевые сектора 102 335 и 102 351 прочитаны и дополнительные методы анализа для нахождения ключа не потребуются. Перенесем содержимое ключевых секторов на чистый накопитель и подсмотрим, какой XOR паттерн сформирует микропрограмма контроллера JM20339.
Создадим резервную копию накопителя, на который была записана посекторная копия пациента, и выполним XOR операцию над каждым сектором, начиная с сектора 102352 с полученным ключом.
Начав анализ регулярных выражений, обратим внимание, что обнаруживается множество признаков наличия популярных типов файлов (jpg, doc, xls и т.п.). Это обстоятельство подтверждает корректность расшифровывания данных.
Для удобства анализа в 0 секторе напишем классическую таблицу разделов, в которой опишем 3 раздела, имеющихся на данном накопителе. В нашу первоначальную задачу подставим накопитель с расшифрованными данными.
Так как в задании клиентом было поставлено восстановление данных из скрытого раздела, то проведем оценку целостности файловой системы на нем посредством анализа расположения метаданных и проверим, нет ли непрочитанных участков. Анализ выявляет, что 16 секторов в MFT прочитать не удалось, что говорит о потере не более 8 файловых записей. Дальнейшее сопоставление файлов с картой прочитанного позволяет выявить еще 73 файла, пострадавших в результате контакта слайдеров с поверхностями пластин.
99, 9% восстановленных файлов – это конечный результат, который удовлетворил клиента.
В качестве заключения можно еще раз напомнить всем о необходимости резервного копирования и также отметить, что по сию пору на рынке существует немало решений, где опция шифрования данных — лишь маркетинговая уловка, которая не в состоянии надежно защитить пользовательские данные.
Предыдущая публикация: Восстановление данных с внешнего жесткого диска Seagate FreeAgent Go
Автор: Янчарский Павел