Глубокий анализ данных, Эпизод 1: foremost
Есть ситуации: ваша флешка начинает помирать, диск плохо читается и на
нём важные данные, или вы пришли к какому-нибудь недругу и
подозреваете, что у него на винчестере есть данные, которые вам нужны,
а он их показывать не хочет. В общем, вопрос: как выдрать файлы из
труднодоступных носителей?
Решение: имеется класс программ «судебного анализа данных» (forensic
analisys), позволяющих без шума и пыли (и ректальной имплантации
горячих паяльников) выудить данные, даже если они хитро записаны.
Лирическое отступление
Всё началось с того, что ко мне пришёл один пользователь виндовс, и,
гордо размахивая флешкой, сказал, что у него есть вордовский файл с
паролями, но на этой флешке его никто никогда не отыщет. Мне стало
интересно, и я, отвлекая его внимание запущенным на ноутбуке Kororaa с
XGL, по-тихому перегнал всю гиговую флешку к себе с помощью dd… На
следующий день он очень удивился, увидев в своём почтовом ящике все
свои пароли. Ниже рассказывается, как мне это удалось сделать,
используя Дебиан и программы, имеющиеся в нём.
Что есть для этого в Дебиан?
Чего только не найдёшь в Дебиановском репозитории! Например, очень и
очень интересная программа foremost. Она позволяет искать файлы на
сменных носителях / внутри образов дисков по hex-данным, характерным
заголовкам и окончаниям. В Sarge версия довольно старая, но с
сайта можно скачать тарболл и скомпилировать его. После чего
foremost можно запустить и прочитать мануал, который, надо сказать,
весьма примечателен:
Выделенные курсивом строки, надеюсь, в переводе не нуждаются?
Как это работает?
Программа прочёсывает файлы на предмет совпадения заранее определённых
hex-кодов, соответствующих наиболее распространённым форматам файлов.
После чего экстрагирует их из диска / образа и складывает в каталог,
вместе с подробным отчётом о том, чего, сколько и откуда было выдрано.
Мануал к программе написан очень подробный, с возможностью добавлять
свои форматы, о которых программа не знает. Заголовки и окончания
декодируются перед использованием из шестнадцатеричного формата:
А вот и пример того, как выглядят для foremost файлы:
Так что если есть желание и необходимость, можно добавить информацию
для поиска шифрованный файлов и прочих наводящих на размышления
данных.
Foremost в действии
Отлично, программа собрана и установлена, с требуемого носителя содран
образ при помощи dd, теперь осталось поискать там файлы.
Попробуем поискать файлы, замаскированные под другой формат.
Берём флешку, втыкаем и не монтируем — пробуем выдрать оттуда файлы
типа doc, один из которых переименован в jpg (наивный юноша…):
После чего идём в подкаталог ../output и наблюдаем радостную картину —
файлик обнаружился. А вот и отчёт программы:
Имя не сохранено, но содержимое в порядке. Нагретый паяльник и утюг
можно отложить в сторону. :-)
Другой пример. Пусть хакер Нео хочет скрытно передать товарищу Морфею
диск с изображением кодов к Матрице (фотографией голой Тринити). Для
этого можно схитрить: приказывать писать программе cdrecord не
iso-образ, а просто файл:
На другом конце Морфей делает
Но вот всех застукал агент Смит, приволок в отделение и ласково
спрашивает, что на болванке. Хакер Нео с ясными глазами говорит почти
правду — ничего, болванка пустая (ясное дело, что «в лоб» такая
болванка не читается). Агент Смит знает Линукс и поэтому он набирает в
консоли:
И выуживает из диска крамольные данные: в подкаталоге ..output/
появляется файл audit.txt следующего содержания:
и каталог ..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. В дистрибутив они входят:
Так что это потребует около 7Мб дискового пространства. Если нам его не
жалко, ставим:
После того, как всё настроится и установится, можно приступать к
сборке:
В результате должно всё собраться, а утилиты появятся в подкаталоге
../bin, который до сборки был пуст. После сборки там появится много
утилит, часть которых будет описываться далее.
Если у вас библиотки ssl не установлены, при компиляции вы получите
ошибку такого вида:
Это значит, что упомянутые выше библиотеки у вас не установлены и вам
их нужно поставить.
Ищем и находим данные
После установки в вашем распоряжении окажется почти три десятка утилит,
способных дать исчерпывающую информацию и том, что и как записано на
носителе. Разумеется, утилиты прекрасно работают с raw-данными,
полученными dd или recoverdm, о которой уже было написано.
Следует отметить, что если программа foremost предназначена скорее для
экспресс-анализа и представляет собой утилиту вида «всё в одном
флаконе», то The Sleuth Kit это набор утилит для более глубокого
исследования данных. Но это лучше показать на примере, в котором
используется версия 2.07.
Пример
Пусть имеется образ флешки в файле 1.img, и на ней есть данные, которые
нужно извлечь без монтирования. Для этого сначала смотрим, какие
структуры данных вообше присутствуют на диске — это делает утилита mmls
— media management lister. Она показывает разметку диски, в том числе
пустые области (unallocated spaces), а так же адреса начала и окончания
партиций.
Поддерживаются следующие типы партиций:
Так, применяем mmls для того, чтобы узнать, какое расположение и тип
партиций:
Всё верно, досовская файловая система на флешке (выделение полужирным —
моё). Теперь известно, откуда она начинается и где заканчивается — эта
информация нужна для работы других утилит.
Отлично, теперь мы знаем тип файловой системы и где она располагается.
Посмотрим, как много данных на ней есть и что мы может оттуда выдрать —
в этом деле нам поможет другая утилита, fsstat. Вызываем её, сообщая
сведения, полученные от mmls:
# Non-clustered: 31321 — 31327 METADATA INFORMATION ——————————————— Range: 2 — 500226 Root Directory: 2 CONTENT INFORMATION ——————————————— Sector Size: 512 Cluster Size: 4096 Total Cluster Range: 2 — 3909 FAT CONTENTS (in sectors) ——————————————— 57-64 (8) -> EOF 65-80 (16) -> EOF 81-88 (8) -> EOF 89-96 (8) -> EOF 97-408 (312) -> EOF 409-688 (280) -> EOF 689-696 (8) -> EOF 697-1000 (304) -> EOF Отлично, теперь мы знаем, сколько файлов записано и где они расположены. Самое время посмотреть на структуру каталогов и файлов, начиная с корневого каталога. Для этого воспользуемся утилитой fls, которая показывает не только записанные, но и удалённые файлы. Посмотрим, что есть в корневом каталоге: $ fls -f fat -o 0000000032 1.img d/d 3: DCIM d/d 4: SCENE r/r * 6: raw1.bz2 r/r 8: cdpocket.pdf r/r 10: raw1 Чудесно, знаем не только имена файлов, но и их смещения, которые нам потребуются, чтобы прочесть файлы. Звёздочка означает, что файл удалён: но его можно попробовать восстановить, если после удаления не проводилось интенсивного перезаписывания файлов. Если файлов много, или они в каталогах, и требуется найти смещение файла, имя которого известно, следует воспользоваться утилитой ifind. $ ifind -a -n cdpocket.pdf -f fat -i raw -o 0000000032 1.img 8 Результатом является смещение файла, которое требуется для его извлечения. Всё, в наших руках вся информация о файлах — осталось их извлечь. Посмотрим, например, на файл cdpocket.pdf, для извлечения которого используем утилиту icat: $ icat -f fat -i raw -o 0000000032 1.img 8 > cdpocket.pdf В текущем каталоге после выполнения этой команды появляется файл cdpocket.pdf — читается и просматривается соответствующей программой. Заключение Комплект утилит The Sleuth Kit даёт пользователям *nix-систем огромные возможности по восстановлению повреждённых или скрытых данных, и в приведённом выше примере освещается лишь некоторые программы. Больше информации о судебном анализе данных можно найти в прекрасных мануалах, идущих с утилитами, и на сайте авторов.