Практические способы восстановления данных с файловых систем в Windows, Linux, BSD и других ОС
На форуме pgpru.com, да и в других местах, часто обсуждается задача как надёжного уничтожения данных с файловой системы, так и задача их восстановления в процессе утери. К тому же, в ответ на красивые слова "в принципе восстановить можно" часто подспудно возникает вопрос: а как же реально восстаналивают стёртые файлы эксперты по криминалистике? Известно, что для Windows (NTFS) и DOS (FAT) существуют сравнительно надёжные программы по восстановлению файлов, каковые и используется при надобности обычными пользователями или криминалистами. Сложнее обстоят дела с зоопарком файловых систем Linux, хотя простенькие утилиты восстановления файлов с ext*fs давно известны. Наибольший мрак неизвестности окружает более экзотические файловые системы, в частности, используемые в проприетарных UNIX или в разных *BSD-системах типа UFS1/UFS2, также часто называемые FFS. Некогда у меня самого стояла задача восстановления ошибочно затёртых файлов в FreeBSD, но на тот момент никакой внятной информации в интернете относительно спецификаций по UFS найти не удалось, равно как и утилит, помогающих восстановить данные. В итоге задача свелась к уровню "Use source, Luke!", которую пришлось оставить в покое, а с небольшим куском данных – распрощаться. В среде *BSDшников и поныне бытует мнение о практической нереальности восстановления файлов, т.е. отсутствии как готовых софтварных решений, так и готовых внятных спецификаций о том, как восстанавливать данные, по которым самому можно было бы написать программу.
Сегодня с большим удивлением для себя случайно наткнулся на книгу "Криминалистический анализ файловых систем" под авторством Брайан Кэрриэ (2007) – переводной вариант "File System Forensic Analysis", Brian Carrier (2005), причём переводной вариант можно без труда найти в сети в электронном виде. В данной книге (почти 500 стр.) детально анализируются структуры файловых систем FAT, NTFS, EXT2, EXT3, UFS1 и UFS2 с приведением почти полной их спецификации. Кроме того, схематически показаны, подробно расписаны и проанализированы процессы преобразования и затирания данных при удалении файлов, включая анализ и схему того, как их восстанавливать, с попутным описанием всех возникающих трудностей. Как интригующий результат книги могу сказать, что сложность восстановления файлов с ФС строго возрастает в ряде FAT, NTFS, EXT2, EXT3, UFS1 и UFS2, причём самой сложной задачей является восстановление файлов в той версии UFS, которая используется (использовалась?) в Sun Solaris. Примеры анализа для UFS1 и UFS2 приведены, соответственно, в виде конкретных команд под OpenBSD и FreeBSD, что позволяет лучше понять их смысл в контексте этих ОС. Наряду с анализом самих ФС приведены аналогичные спецификации (в том числе, с точки зрения полезности их исследования криминалистами) для конвенциональной системы разделов, используемых в ОС (разделы Free/Open/NetBSD и Linux LVM). В частности, обсуждаются вопросы задействования скрытых или неконвенционально созданных разделов, а также подозрительных данных в метаданных к ним или в "обычно не используемых местах", зарезервированных под метаданные.
Для полноты картины в книге кроме того рассмотрено вообще всё, что напрямую относится к жёстким дискам, типа их типов, хардваре, и принятых систем адресации. Описано влияние изменения параметров типа atime, ctime и команды touch с точки зрения того, что они реально меняют в структуре ФС, какие "нестыковки" порождают и как их неаккуратное применение выдаёт себя эксперту при изучении копии диска. В конце книги приводятся конкретные программы, используемые в криминалистике для указанных целей, так что при задаче восстановления стёртых файлов конечному пользователю можно начать поиск софта с изучения представленных программ. Написано понятным простым (даже не для великих гуру – системных программистов) языком, так что полагаю, что если читать с самого начала, то начинающему UNIX'оиду всё будет понятно. Советую всем параноикам обзавестись сей книжкой :-)
PS: попутно наткнулся на удивительный факт: данные файловой системы NTFS зачем-то содержат MAC-адрес машины... зачем – так и не понял.
комментариев: 155 документов: 20 редакций: 5
Да, в книге это перевели как необходимость использования "уровня приложений" при восстановлении файлов. В случае множества данных (улик), оперативно стёртых, типа rm -rf ~/ восстановление будет куда более сложным, хотя и не полный перебор.
комментариев: 11558 документов: 1036 редакций: 4118
И не только у них. Практически восстановить файлы возможно только на ext2, в журналируемых ФС это едва ли решаемая задача. Восстановить же данные, если они не были перезаписаны, можно в любом случае, если их полнота и структурированность не является самоцелью, что и происходит в криминалистике (криминалисту интереснее конкретные данные, которые можно извлечь с диска, чем то, как назывались файлы и в каких директориях они лежали).
Да, но интереснее ответ на вопрос "насколько практически трудоёмко восстановить эти данные" в случае той или иной ФС и ситуаций. Ведь можно себе вообразить ситуацию, когда на восстановление данных (а эта процедура тесно связано с попыткой восстановить файлы) потребуется так много ручной работы и машинного времени, что никто не захочет оплачивать подобную процедуру.
Обычный PR
Forensic Discovery — ещё одна книжка на эту же тему, описание заточено под разные *никсы.