id: Гость   вход   регистрация
текущее время 20:46 28/03/2024
создать
просмотр
ссылки

Практические способы восстановления данных с файловых систем в 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: попутно fileнаткнулся на удивительный факт: данные файловой системы NTFS зачем-то содержат MAC-адрес машины... зачем – так и не понял.


 
Комментарии
— Гость (15/06/2009 05:20)   <#>
В догонку – а вот и софт:
R-Studio is a family of powerful and cost-effective undelete and data recovery software. Empowered by the new unique data recovery technologies, it is the most comprehensive data recovery solution for recovery files from FAT12/16/32, NTFS, NTFS5 (created or updated by Windows 2000/XP/2003/Vista), HFS/HFS+ (Macintosh), Little and Big Endian variants of UFS1/UFS2 (FreeBSD/OpenBSD/NetBSD/Solaris) and Ext2FS/Ext3FS (Linux) partitions. It functions on local and network disks, even if such partitions are formatted, damaged or deleted. Flexible parameter settings give you absolute control over data recovery.
— Гость (15/06/2009 09:03)   <#>
Допустим "затёртый", "стёртый" и "удалённый" файл тождественны по своим останкам в экзотических fs. Но значит ли это, что "стёртый" файл можно восстановить, как и "удалённый", допустим из ntfs5 или ext3?
— Гость (15/06/2009 11:03)   <#>
В данной книжке рассматривается случай восстановления просто удалённого файла, т.е. без специального затирания места, которое он занимал на диске (типа shred'инга), ну, от силы, может быть, с некоторыми поправками на то, что чать данных уже была перезаписана в процессе естественного использования ФС. Там, кстати, конкретно написано что затирается из метаданных (и что нет) в случае той или иной ФС (см. стр. 436):
При удалении файла системы BSD и Solaris стирают указатели на блоки в индексных узлах, очищают поля размера и режима. Следовательно, размер файла, его тип и местонахождение содержимого восстановить не удастся. Тем не менее содержимое блоков косвенных указателей не стирается, поэтому поиск таких блоков может оказать помощь при восстановлении. Вероятно, для поиска блоков, заполненных 32- или 64-разрядными адресами, потребуется специальная программа. Обратите внимание на различия между процедурой удаления в UFS и той, что мы видели в Linux/ExtX: в Linux поле режима не стиралось, но зато в ExtX терялось содержимое косвенных указателей.
— Мухтар (15/06/2009 11:22)   профиль/связь   <#>
комментариев: 155   документов: 20   редакций: 5
Предположим, вам нужно восстановить некоторую базу данных, удаленную на Linux разделе. ext3 является само-дефрагментирующейся ФС, так что с высокой вероятностью, если мы найдем с помощью побайтного сканирования диска заголовок файла бд, то все остальные сектора вмещают данные файла. Даже если файл и фрагментирован, восстанавливающему достаточно написать функцию, которая для каждого сектора на диске вернет результат, соответсвтуют ли данные сектора формату файла бд. После этого нам достаточно перебором цепочек восстановить исходный файл. Вряде случаев это усложнится тем, что некоторые сектора будут содержать разные версии одного и того же файла: до или после изменения. Однако, количество перебора все равно не сравнимо с тем, которое предполагается для взломов существующих шифров.
— Гость (15/06/2009 11:42)   <#>
Даже если файл и фрагментирован, восстанавливающему достаточно написать функцию, которая для каждого сектора на диске вернет результат, соответсвтуют ли данные сектора формату файла бд.

Да, в книге это перевели как необходимость использования "уровня приложений" при восстановлении файлов. В случае множества данных (улик), оперативно стёртых, типа rm -rf ~/ восстановление будет куда более сложным, хотя и не полный перебор.
— SATtva (16/06/2009 14:53)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
В среде *BSDшников и поныне wwwбытует мнение о практической нереальности восстановления файлов

И не только у них. Практически восстановить файлы возможно только на ext2, в журналируемых ФС это едва ли решаемая задача. Восстановить же данные, если они не были перезаписаны, можно в любом случае, если их полнота и структурированность не является самоцелью, что и происходит в криминалистике (криминалисту интереснее конкретные данные, которые можно извлечь с диска, чем то, как назывались файлы и в каких директориях они лежали).
— Гость (16/06/2009 19:21)   <#>
Восстановить же данные, если они не были перезаписаны, можно в любом случае, если их полнота и структурированность не является самоцелью, что и происходит в криминалистике

Да, но интереснее ответ на вопрос "насколько практически трудоёмко восстановить эти данные" в случае той или иной ФС и ситуаций. Ведь можно себе вообразить ситуацию, когда на восстановление данных (а эта процедура тесно связано с попыткой восстановить файлы) потребуется так много ручной работы и машинного времени, что никто не захочет оплачивать подобную процедуру.
— Гость (16/09/2009 16:38)   <#>
fileСудебные дистры Linux.
— Гость (16/09/2009 17:28)   <#>
Гость (16/09/2009 16:38)

Обычный PR
— Гость (02/12/2013 06:08)   <#>

fileForensic Discovery — ещё одна книжка на эту же тему, описание заточено под разные *никсы.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3