Глубокий анализ данных, Эпизод 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[1]: Entering directory `/home/penta4/temp/1/src/afflib/lib'
make[1]: *** Не заданы цели и не найден make-файл. Останов.
make[1]: 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
* Reserved: 0 - 0
** Boot Sector: 0
* FAT 0: 1 - 12
* FAT 1: 13 - 24
* Data Area: 25 - 31327
** Root Directory: 25 - 56
** Cluster Area: 57 - 31320
** 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-систем огромные возможности по восстановлению повреждённых или скрытых данных, и в приведённом выше примере освещается лишь некоторые программы. Больше информации о судебном анализе данных можно найти в прекрасных мануалах, идущих с утилитами, и на сайте авторов.

6 комментариев: |высказаться!| RSS-лента дискуссии.|
Анонимный комментирует...

В Debian Etch уже есть в официальных репозиториях (Version: 2.06-3).

virens комментирует...

2 Anonymous
В Debian Etch уже есть в официальных репозиториях (Version: 2.06-3).
Значит, на ноутбуке по крайней мере я на Этч переходить буду точно. Спасибо за информацию!

Анонимный комментирует...

А чего make? В дебиане же это не есть камельфо! checkinstall рулит!

Ramaloke комментирует...

[quote]
А чего make? В дебиане же это не есть камельфо! checkinstall рулит!
[/quote]

checkinstall устанавливает в систему через deb, вместо make install но не как не вместо make

virens комментирует...

Если честно, не вижу проблемы просто скомпилировать программу и сунуть её в /opt, который для этого, собственно, и существует.

Анонимный комментирует...

Кстати сказать.. Где-то полгода назад имевшиеся у меня тулзы (fatback, sleuth kit, что-то еще подобного типа) напрочь не хотели находить удаленные файлы с русскими именами.. Они просто их не видели. Приходилось опять же использовать magicrescue и foremost. Кто-нибудь еще с таким сталкивался? Или это только мне так везло?

--
Jay

Отправить комментарий

Подписаться на RSS-ленту комментариев к этому посту.