From: Михаил Конник <http://mydebianblog.blogspot.com>
Date: Sun, 16 Feb 2008 17:02:14 +0000 (UTC)
Subject: Восстановление спрятанных или потерянных данных
Есть ситуации: ваша флешка начинает помирать, диск плохо читается и на
нём важные данные, или вы пришли к какому-нибудь недругу и
подозреваете, что у него на винчестере есть данные, которые вам нужны,
а он их показывать не хочет. В общем, вопрос: как выдрать файлы из
труднодоступных носителей?
Решение: имеется класс программ "судебного анализа данных" (forensic
analisys), позволяющих без шума и пыли (и ректальной имплантации
горячих паяльников) выудить данные, даже если они хитро записаны.
Лирическое отступление
Всё началось с того, что ко мне пришёл один пользователь виндовс, и,
гордо размахивая флешкой, сказал, что у него есть вордовский файл с
паролями, но на этой флешке его никто никогда не отыщет. Мне стало
интересно, и я, отвлекая его внимание запущенным на ноутбуке Kororaa с
XGL, по-тихому перегнал всю гиговую флешку к себе с помощью dd... На
следующий день он очень удивился, увидев в своём почтовом ящике все
свои пароли. Ниже рассказывается, как мне это удалось сделать,
используя Дебиан и программы, имеющиеся в нём.
Что есть для этого в Дебиан?
Чего только не найдёшь в Дебиановском репозитории! Например, очень и
очень интересная программа foremost. Она позволяет искать файлы на
сменных носителях / внутри образов дисков по hex-данным, характерным
заголовкам и окончаниям. В Sarge версия довольно старая, но с
сайта можно скачать тарболл и скомпилировать его. После чего
foremost можно запустить и прочитать мануал, который, надо сказать,
весьма примечателен:
Foremost was written by Special Agent Kris Kendall and Special Agent Jesse
Kornblum of the United States Air Force Office of Special Investigations
starting in March 2001. This program would not be what it is today without
help from (in no particular order): Rob Meekins, Dan Kalil, and Chet
Maciag. This project was inspired by CarvThis, written by the Defense
Computer Forensic Lab in 1999.
Выделенные курсивом строки, надеюсь, в переводе не нуждаются?
Как это работает?
Программа прочёсывает файлы на предмет совпадения заранее определённых
hex-кодов, соответствующих наиболее распространённым форматам файлов.
После чего экстрагирует их из диска / образа и складывает в каталог,
вместе с подробным отчётом о том, чего, сколько и откуда было выдрано.
Мануал к программе написан очень подробный, с возможностью добавлять
свои форматы, о которых программа не знает. Заголовки и окончания
декодируются перед использованием из шестнадцатеричного формата:
Headers and footers are decoded before use. To specify a value in
hexadecimal use x[0-f][0-f], and for octal use [1-9][1-9][1-9]. Spaces
can be represented by s. Example: "x4F123IsCCI" decodes to "OSI CCI".
А вот и пример того, как выглядят для foremost файлы:
# extension case-sens max-size header footer (option)
#
# GIF and JPG files (very common)
gif y 155000 x47x49x46x38x37x61 x00x3b
gif y 155000 x47x49x46x38x39x61 x00x00x3b
jpg y 200000 xffxd8xff xffxd9
Так что если есть желание и необходимость, можно добавить информацию
для поиска шифрованный файлов и прочих наводящих на размышления
данных.
Foremost в действии
Отлично, программа собрана и установлена, с требуемого носителя содран
образ при помощи dd, теперь осталось поискать там файлы.
Попробуем поискать файлы, замаскированные под другой формат.
Берём флешку, втыкаем и не монтируем - пробуем выдрать оттуда файлы
типа doc, один из которых переименован в jpg (наивный юноша...):
После чего идём в подкаталог ../output и наблюдаем радостную картину -
файлик обнаружился. А вот и отчёт программы:
Foremost version 1.3 by Jesse Kornblum, Kris Kendall, and Nick Mikus
Audit File
Foremost started at Sat Dec 16 21:48:07 2006
Invocation: ./foremost -t doc -o /opt/foremost-1.3/output/ -i /dev/sdf
Output directory: /opt/foremost-1.3/output
Configuration file: /opt/foremost-1.3/foremost.conf
------------------------------------------------------------------
File: /dev/sdf
Start: Sat Dec 16 21:48:07 2006
Length: 15 MB (16121856 bytes)
Num (bs=512) Size Offset
0: 129.jpg 155 KB 66048
Finish: Sat Dec 16 21:48:12 2006
1 FILES EXTRACTED
doc:= 1
------------------------------------------------------------------
Имя не сохранено, но содержимое в порядке. Нагретый паяльник и утюг
можно отложить в сторону. :-)
Другой пример. Пусть хакер Нео хочет скрытно передать товарищу Морфею
диск с изображением кодов к Матрице (фотографией голой Тринити). Для
этого можно схитрить: приказывать писать программе cdrecord не
iso-образ, а просто файл:
cdrecord -v speed=0 dev=ATAPI:0,0,0 matrixcodes
На другом конце Морфей делает
dd if=/dev/cdrom bs=2048 of=~/temp/matrix.jpg
Но вот всех застукал агент Смит, приволок в отделение и ласково
спрашивает, что на болванке. Хакер Нео с ясными глазами говорит почти
правду - ничего, болванка пустая (ясное дело, что "в лоб" такая
болванка не читается). Агент Смит знает Линукс и поэтому он набирает в
консоли:
# foremost -t all -o ~/output/ -i /dev/hda
И выуживает из диска крамольные данные: в подкаталоге ..output/
появляется файл audit.txt следующего содержания:
Foremost version 1.3 by Jesse Kornblum, Kris Kendall, and Nick Mikus
Audit File
Foremost started at Sat Dec 16 22:15:26 2006
Invocation: ./foremost -t all -o /opt/foremost-1.3/output/ -i /dev/hda
Output directory: /opt/foremost-1.3/output
Configuration file: /opt/foremost-1.3/foremost.conf
------------------------------------------------------------------
File: /dev/hda
Start: Sat Dec 16 22:15:26 2006
Length: 604 KB (618496 bytes)
Num (bs=512) Size Offset
0: 0.jpg 88 KB 0
Finish: Sat Dec 16 22:15:28 2006
1 FILES EXTRACTED
jpg:= 1
------------------------------------------------------------------
Foremost finished at Sat Dec 16 22:15:28 2006
и каталог ..output/jpg/ с этим файлом...
Ситуацию можно усложнить: дописать в конец диска этот файл тем же
способом, после записи липовых файлов, или записать так архив - в
общем, есть где фантазии развернуться.
Ещё немного поигравшись с программой, можно сказать следующее. Сразу,
без дополнительных танцев, находит foremost графические файлы tif,
jpg, png, bmp, звуковые файлы wav, виндовые exe-шники, все офисные
форматы (мелкоОфиса и ОпенОфиса), архивы rar и zip и многое другое.
Линуксовые архивы типа bzip2 и p7zip "в лоб" программа не берёт, но
это дело не сильно облегчает, так как, задавшись целью, можно и их
выдрать с диска.
Заключение
На простых примерах была показана мощь программы foremost, которая в
умелых руках и при знании простых UNIX-программ типа dd или
recoverdm способна выуживать из носителей информации данные, даже
весьма хитро спрятанные и записанные нестандартным образом.
Аналогичные программы
Такие программы особенно не афишируются, и крайне неохотно раздаются
за просто так. Или надо оставлять свои паспортные данные и доказывать,
что вы работаете в полиции, в суде или в КГБ :-) Но всё-таки кое-что
имеется. Это проприетарные Safeback, Encase, safecopy, dvdisaster и
некоторые другие. Особые параноики полагают, что старый-добрый dd тоже
является программой из этой же серии.
Глубокий анализ данных, Эпизод 2: The Sleuth Kit
Продолжая тему о программах анализа данных, в этом посте пойдёт речь о
семействе утилит судебного анализа (forensic analys) The Sleuth Kit. В
дистрибутив Debian оно пока не входит (в Sarge v3.1r1 во всяком
случае), но это не мешает скачать сырцы с сайта проекта и собрать
самостоятельно.
Установка
Для того, чтобы начать использовать The Sleuth Kit, требуется
распаковать тарбол в любую директорию и просто набрать в ней make. Для
сборки программы нужны библиотеки SSL, которые нужно предварительно
поставить, как и говорилось в файле README. В дистрибутив они входят:
# apt-cache search libssl
libssl-dev - SSL development libraries, header files and documentation
libssl0.9.6 - SSL shared libraries (old version)
libssl0.9.7 - SSL shared libraries
dcmtk - The OFFIS DICOM toolkit command line utilities
libdcmtk0 - The OFFIS DICOM toolkit runtime libraries
libdcmtk0-dev - The OFFIS DICOM toolkit development libraries and headers
Так что это потребует около 7Мб дискового пространства. Если нам его не
жалко, ставим:
# apt-get install libssl0.9.7 libssl-dev
После того, как всё настроится и установится, можно приступать к
сборке:
# make
В результате должно всё собраться, а утилиты появятся в подкаталоге
../bin, который до сборки был пуст. После сборки там появится много
утилит, часть которых будет описываться далее.
Если у вас библиотки ssl не установлены, при компиляции вы получите
ошибку такого вида:
checking for initscr in -lncurses... yes
checking for uncompress in -lz... yes
checking for ssl3_new in -lssl... no
configure: error: OpenSSL developer library 'libssl' not installed;
cannot continue.
make: Entering directory `/home/penta4/temp/1/src/afflib/lib'
make: *** Не заданы цели и не найден make-файл. Останов.
make: Leaving directory `/home/penta4/temp/1/src/afflib/lib'
Error: Missing lib/libafflib.a file
make: *** [no-perl] Ошибка 1
Это значит, что упомянутые выше библиотеки у вас не установлены и вам
их нужно поставить.
Ищем и находим данные
После установки в вашем распоряжении окажется почти три десятка утилит,
способных дать исчерпывающую информацию и том, что и как записано на
носителе. Разумеется, утилиты прекрасно работают с raw-данными,
полученными dd или recoverdm, о которой уже было написано.
Следует отметить, что если программа foremost предназначена скорее для
экспресс-анализа и представляет собой утилиту вида "всё в одном
флаконе", то The Sleuth Kit это набор утилит для более глубокого
исследования данных. Но это лучше показать на примере, в котором
используется версия 2.07.
Пример
Пусть имеется образ флешки в файле 1.img, и на ней есть данные, которые
нужно извлечь без монтирования. Для этого сначала смотрим, какие
структуры данных вообше присутствуют на диске - это делает утилита mmls
- media management lister. Она показывает разметку диски, в том числе
пустые области (unallocated spaces), а так же адреса начала и окончания
партиций.
Поддерживаются следующие типы партиций:
dos (DOS-based partitions [Windows, Linux, etc.])
mac (MAC partitions)
bsd (BSD Disklabels [FreeBSD, OpenBSD, NetBSD])
sun (Sun Volume Table of Contents (Solaris))
gpt (GUID Partition Table (EFI))
Так, применяем mmls для того, чтобы узнать, какое расположение и тип
партиций:
$ mmls 1.img
DOS Partition Table
Offset Sector: 0
Units are in 512-byte sectors
Slot Start End Length Description
00: ----- 0000000000 0000000000 0000000001 Primary Table (#0)
01: ----- 0000000001 0000000031 0000000031 Unallocated
02: 00:00 0000000032 0000031359 0000031328 DOS FAT12 (0x01)
03: ----- 0000031360 0000031487 0000000128 Unallocated
Всё верно, досовская файловая система на флешке (выделение полужирным -
моё). Теперь известно, откуда она начинается и где заканчивается - эта
информация нужна для работы других утилит.
Отлично, теперь мы знаем тип файловой системы и где она располагается.
Посмотрим, как много данных на ней есть и что мы может оттуда выдрать -
в этом деле нам поможет другая утилита, fsstat. Вызываем её, сообщая
сведения, полученные от mmls:
penta4@penta4rce:~/temp$ fsstat -f fat -o 0000000032 1.img
FILE SYSTEM INFORMATION
--------------------------------------------
File System Type: FAT12
OEM Name: +/J8LIHC
Volume ID: 0x913
Volume Label (Boot Sector): SANVOL
Volume Label (Root Directory):
File System Type Label: FAT12
Sectors before file system: 32
File System Layout (in sectors)
Total Range: 0 - 31327
Отлично, теперь мы знаем, сколько файлов записано и где они
расположены. Самое время посмотреть на структуру каталогов и файлов,
начиная с корневого каталога. Для этого воспользуемся утилитой fls,
которая показывает не только записанные, но и удалённые файлы.
Посмотрим, что есть в корневом каталоге:
Чудесно, знаем не только имена файлов, но и их смещения, которые нам
потребуются, чтобы прочесть файлы. Звёздочка означает, что файл удалён:
но его можно попробовать восстановить, если после удаления не
проводилось интенсивного перезаписывания файлов.
Если файлов много, или они в каталогах, и требуется найти смещение
файла, имя которого известно, следует воспользоваться утилитой ifind.
$ ifind -a -n cdpocket.pdf -f fat -i raw -o 0000000032 1.img
8
Результатом является смещение файла, которое требуется для его
извлечения.
Всё, в наших руках вся информация о файлах - осталось их извлечь.
Посмотрим, например, на файл cdpocket.pdf, для извлечения которого
используем утилиту icat:
В текущем каталоге после выполнения этой команды появляется файл
cdpocket.pdf - читается и просматривается соответствующей программой.
Заключение
Комплект утилит The Sleuth Kit даёт пользователям *nix-систем огромные
возможности по восстановлению повреждённых или скрытых данных, и в
приведённом выше примере освещается лишь некоторые программы. Больше
информации о судебном анализе данных можно найти в прекрасных мануалах,
идущих с утилитами, и на сайте авторов.
677 Прочтений • [Восстановление спрятанных или потерянных данных (disk repair fs forensic flash)] [08.05.2012] [Комментариев: 0]