The Sleuth Kit

The Sleuth Kit

Копаясь в своих архивах, наткнулся на пакет утилит The Sleuth Kit - семейство утилит судебного анализа (forensic analys), о которм совсем забыл. А главное, что это пакет sleuthkit имеется в репах ArchLinux (пакет содержит около 30 утилит, список утилит можно посмотреть командой pacman -Ql sleuthkit | grep bin ).
Сейчас, конечно, имеется куча всевозможных утилит для восстановления удаленных файлов, особенно в винде — кстати, имеются и неплохие, позволяют восстанавливать файлы даже после процедуры быстрого форматирования. Имеются и мощные комбайны, типа R-Studio и дисковых редакторов.
В linux хорошо работают Scalpel и Foremost (имеется в наших репах). Правда, некоторые жалуются, что эти утилиты ищут не все файлы — но я с этим не согласен ..... просто для того, чтобы эти утилиты искали то что нужно, их на это нужно натравить, т.е. указать им сигнатуру файлов (спецы занимающиеся восстановлением файлов на комерческой основе, такие базы сигнатур собирают годами ..... и, кстати, файл успешно можно восстановить разными утилитами, но вот читаться/открываться он не обязательно будет ..... вот тут и не обойтись без знаний сигнатуры и реперных байтов).
И на этом фоне значительного количества софта решил ознакомить форумчан с этим мало кому известным пакетом утилит. Повторюсь, цель чисто ознакомительная и не ставит своей целью обучение ….. применение данного пакета требует внимательного осознанного его изучения. И восстановление файлов это только часть, на что способен данный пакет - назначение ясно из названия - семейство утилит судебного анализа.
Прошу сильно не пинать.....
Для ознакомления взял имеющийся образ загрузочной флешки ~/usb.img , что советую и Вам (применение на реалных устройствах только после понимания что делается ....). Образ обычно снимают утилитой dd или ее улучшенными вариантами dd_rescue, dc3dd (пропатченный dd).

1. Для начала узнаем какая структура данных присутствует на флешке (ее образе).
Для этого используется утилита mmls. С ее помощью можно узнать разметку флешки, включая пустые области (unallocated spaces), адреса начала и окончания таблицы разделов, а также узнать какая структуры данных вообще присутствуют на флешке
Примечание: эта утилита выводит таблицу разделов и показывает, какие сектора не используются. Таким образом, в отличие от fdisk, можно увидеть "спрятанные" данные.
В дальнейшем выводы, где много данных, будут приводится в укороченном виде.
# mmls ~/usb.img
DOS Partition Table
Offset Sector: 0
Units are in 512-byte sectors
Slot Start End Length Description
000: Meta 0000000000 0000000000 0000000001 Primary Table (#0)
001: ------- 0000000000 0000000062 0000000063 Unallocated
002: 000:000 0000000063 0002019999 0002019937 NTFS / exFAT (0x07)

Все наглядно и информации немного больше, чем показывает fdisk.
Для дальнейшей работы нужна будет информация, выделенная жирным шрифтом

2. Информацию о данных (метаданные, данные файловой системе идр.) можно узнать используя утилиту fsstat. Эту информацию приводить не буду - она нам в дальнейшем не понадобится.
# fsstat -f ntfs -o 0000000063 ~/usb.img

3. Чтобы посмотреть структуру каталогов и файлов (начиная с корневого каталога) используется утилита fls, которая показывает не только записанные, но и удалённые файлы. Посмотрим, что есть в корневом каталоге:
# fls -f ntfs -o 0000000063 ~/usb.img
r/r 4-128-4: $AttrDef
…..........
r/r 7-128-1: $Boot
d/d 11-144-4: $Extend
…........
d/d 77-144-5: syslinux
d/d 85-144-1: utils
d/d 256: $OrphanFiles

Удаленные файлы и каталоги помечаются знаком *.
Первая буква показывает, что это за файл: r-egular, d-irectory, l-ink, s-ocket или не определен (?).
Имеются расширенные опции вывода информации
-r - рекурсивный обход каталогов
-d - только удаленные файлы
- D - удаленные каталоги
- l (long) - подробный вывод информации

Например, посмотрим с рекурсивным заходом в каталоги
# fls -f ntfs -r -o 0000000063 ~/usb.img
…......................
+ r/r 74-128-1: ipxe.lkn
+ r/r 75-128-1: memtest
+ r/r 76-128-1: vmlinuz
r/r 97-128-1: MENU.LST
….......................
Если файлов слишком много, а нам нужен конкретный файл и мы знаем его имя, то можно воспользоваться утилитой ifind (для примера взял MENU.LST, указанный выше жирным шрифтом)
# ifind -a -n MENU.LST -f ntfs -i raw -o 0000000063 usb.img
97
Получили ''смещение файла''/''инод'' (97), знание которого позволит нам прочитать файл.

4. Попробуем извлечь, указанный выше файл, но сначала посмотрим его (разумеется это подходит только для текстовых файлов)
# icat -f ntfs -i raw -o 0000000063 ~/usb.img 97
Привожу часть файла (убеждаемся, что это то, что мы искали.....)
…............................
title 7. Super_grub2_disk_hybrid_2.00s1-beta1
map --mem --heads=0 --sectors-per-track=0 /ISO/super_grub2_disk.ISO (hd32)
map --hook
root (hd32)
chainloader (hd32)

title 8. Restart PC
reboot

title 9. ShutDown PC
halt
….............................
Для записи в указанное место выполняем
# icat -f ntfs -i raw -o 0000000063 ~/usb.img 97 > ~/menu.lst

5. Если нужна расширенная информация о файле, с которым мы манипулируем, то для этого имеется утилита istat , например, выясним все о файле MENU.LST
# istat -f ntfs -i raw -o 0000000063 ~/usb.img 97
MFT Entry Header Values:
Entry: 97 Sequence: 1
$LogFile Sequence Number: 2135755
Allocated File
Links: 1
$STANDARD_INFORMATION Attribute Values:
Flags: Archive
Owner ID: 0
Security ID: 262 ()
Created: 2015-04-22 16:37:53.733850400 (MSK)
File Modified: 2014-05-13 11:20:17.658776700 (MSK)
MFT Modified: 2014-05-13 11:20:17.658776700 (MSK)
Accessed: 2015-04-22 16:37:53.733850400 (MSK)
$FILE_NAME Attribute Values:
Flags: Archive
Name: MENU.LST
Parent MFT Entry: 5 Sequence: 5
Allocated Size: 4096 Actual Size: 0
Created: 2015-04-22 16:37:53.733850400 (MSK)
File Modified: 2015-04-22 16:37:53.733850400 (MSK)
MFT Modified: 2015-04-22 16:37:53.733850400 (MSK)
Accessed: 2015-04-22 16:37:53.733850400 (MSK)
Attributes:
Type: $STANDARD_INFORMATION (16-0) Name: N/A Resident size: 72
Type: $FILE_NAME (48-2) Name: N/A Resident size: 82
Type: $DATA (128-1) Name: N/A Non-Resident size: 1475 init_size: 1475
80395
…............................................
На этом ознакомление можно и закончить.......
Такие же операции можно проводить и с удаленными файлами, если они обнаружены, но их восстановление зависит от многих факторов. Иногда, например, фото извлекается, но оно потом не просматривается — но это уже другая история, зачастую стоит изменить несколько реперных байтов и фото восстановлено.
А главное всего было использовано около 5 утилит, а их в этом пакете около 30, это к тому, что возможностей очень много......., например, blkcat позволяет посмотреть данные в конкретном блоке; blkls позволит просмотреть содержимое блоков диска в удобочитаемом виде (правда для поиска нужной инфы придется задействовать утилиту strings и разумеется необходимо сделать вывод в файл) ….и.т.д. и.т.п.... но, к сожаление, описание всех утилит в инете найти не возможно, придется идти на сайт sleuthkit и читать там и Wiki и DOC и во всем разбираться самим, если есть желание.........
Ошибки не исчезают с опытом - они просто умнеют
Хорошая статья, спасибо.
Пригодиться. Спасибо автору. )
I learn Linux...)))
 
Зарегистрироваться или войдите чтобы оставить сообщение.