Главная

Friday, 15 April 2022

Про Sleuth Kit.

Всем привет. 

The Sleuth Kit (TSK) - это набор цифровых криминалистических инструментов с открытым исходным кодом, разработанная Brian Carrier и Wieste Venema. TSK может читать и анализировать различные типы файловых систем, такие как FAT, NTFS и EXT. The Sleuth Kit  анализирует каждую область жесткого диска и извлекает криминалистически важную информацию для исследователя. Обычно каждый шаг предоставляет информацию к следующему при исследовании.

Сегодня мы рассмотрим некоторые инструменты The Sleuth Kit. Мы будем использовать образ жесткого диска с установленной Windows 7. Образ был получен с помощью FTK Imager lite из виртуальной машины Windows 7 размером 15 ГБ и одним разделом NTFS.

Как мы увидим, назначение инструментов TSK легко понять, поскольку их название состоит из двух частей: 

- первая часть представляет исследуемую область или слой, например mm для управления медиа, fs для файловой системы, i для метаданных и f для уровня имени файла

- вторая часть это команда Linux, отражающая действие инструмента, например, ls для отображения списка и cat для отображения содержимого, например, инструмент mmls.

Для всех команд необходимо указать как минимум имя образа. Бывает полезно знать параметр -f <FS_TYPE> указывает тип файловой системы, такой как ext2, ext3, ntfs, fat, fat12, fat16 и т. д. А параметр -o imgoffset указывает смещение сектора, в котором файловая система запускается в образе.

Типы и форматы файловых систем которые под силу вашей версии ТSK можно узнать набрав команду mmstat -i list и mmstat -t list cоответственно.


Согласно курса «CYBER 502x Computer Forensics» от гуру Yin Pan-а TSK  исследует 5 слоев абстракции файловой системы в подопытном образе:

• Physical layer

• Data layer

• Meta-data layer

• File system layer

• Filename layer


1. Physical layer (media management).

В образе TSK анализирует информацию о структуре всего жесткого диска, MBR или другой основной загрузочной записи, которая является первым сектором жесткого диска. Мы может рассмотреть эту область с помощью TSK, используя различные уититы набора. Информация о каждом разделе находится на жестком диске, и ее можно определить по таблице разделов в конце сектора MBR. Смещение каждого раздела будет использоваться как информация для других инструментов TSK, чтобы указать интересующий раздел. Инструмент mmls используется для получения общей информации:

mmls sampleimage.dd

По результату запуска mmls для образа мы увидим, что существует только один NTFS раздел, начинающийся с сектора (2048). Это нужный для нас раздел, поэтому мы будем использовать начало сектора в качестве смещения с дургими инструментами, когда это необходимо. Это также обеспечивает определение таблицы разделов, которая в нашем случае является обычной DOS. Чтобы отобразить только выделенные тома, мы можно использовать параметр -a:

mmls -а sampleimage.dd

Следующая команда mmcat, которая отображает содержимое раздела, как показано на следующем скриншоте:

mmcat sampleimage.dd 02 | hexdump –Cv | more


На предыдущем рисунке мы использовали mmcat с именем изображения sampleimage.dd и номер целевого раздела, как в выводе mmls 02. Затем мы передали вывод в инструмент hexdump. Вы можете увидеть в начале раздела загрузочную запись тома начинается с подписи раздела NTFS по смещению 0x03 со значением (NTFS) или 0x(4E54465320202020).


2. File system layer.

fsstat: отображает сведения о файловой системе.

Утилита TSK для этого уровня анализирует файловую систему, используемую в  редоставленном разделе, и отображает необходимую информацию. С помощью этого инструмента мы должны задать смещение целевого раздела на основе вывода инструмента mmls, который в нашем случае (2048):

fsstat –о 2028 sampleimage.dd


Мы можем получить расположение MFT в разделе, размер кластера и информацию об атрибутах NTFS, которые могут быть использованы позже.


3. The meta-data layer.

ils: отображает сведения о содержимом inode.

istat: отображает информацию об определенном индексном узле

icat: отображает содержимое дисковых блоков, выделенных данному инода

ifind: определить соответствующий индексный дескриптор данного блока адрес

Уровень метаданных (или inode) анализирует и описывает информацию или запись метаданных файла, как описано в файловой системе. Кроме того, выходные данные этого инструмента можно использовать с другими инструменты для определенного файла в образе. Символ i в командах этого слоя означает индексный дескриптор – уникальный номер файла в файловой системе EXT.

Команда ils используется для вывода списка номеров нодов удаленных файлов в образе до тех пор, пока задано перечисление всей информации об индексах для всех файлов в образе. Все результаты являются информацией о файле, включая индекс файла, временные метки (MACB) в формате Unix и размер файла. Мы можем использовать ils с опцией -m для создания совместимого вывода для утилиты mactime на случай, если нам понадобится создать временную шкалу активности. Кроме того, использование --m позволит нам также прочитать имена файлов, как показано ниже.

ils –m –o 2048 sampleimage.dd


Результат показывает только удаленные файлы, так как мы можем заметить такой статус всех файлов в полученном результате.

Утилита istat.

Isstat используется для анализа MFT или записи inode по ее уникальному номеру метаданных и просмотра информации в предоставленной записи. Полученная информация представляет собой только метаданные, поэтому мы можем найти метки времени, атрибуты файлов и т. д., но не сами данные, даже если данные будут достаточно малыми, чтобы соответствовать длине 1024 КБ одной записи MFT, которая называется резидентной.

Отображение данных содержимого файла можно определить другим инструментом в TSK, который будет показан ниже. Каждый файл в файловой системе NTFS имеет такую запись, даже сама MFT. На следующем рисунке мы перечислим информацию о первой записи с числом 0, т.е. самой $MFT:

istat –o 2048 sampleimage.dd 0 | more


Утилита icat.

Icat используется для просмотра содержимого определенного блока данных. Он использует номер инода в качестве ссылки для просмотра блоков данных, связанных с этим файлом. В ходе расследования мы просмотрим содержимое файла $MFT с индексным узлом 0:

icat –o 2048 sampleimage.dd 0 | hexdump –Cv | more


В некоторых случаях восстановление удаленных файлов будет полезно для всего процесса. Мы можем использовать инструмент icat для копирования содержимого любого удаленного файла в другой файл в ПК исследователя для дальнейшего анализа. Для файла $MFT есть несколько других инструментов, которые могут анализировать файл MFT по отдельности и перечислить содержимое файловой системы в виде дерева:

iscat –o 2048 sampleimage.dd 0 > mft

Утилита ifind.

Во время анализа, если исследователь, например, провел поиск по слову и получил совпадение в одном из блоков данных в разделе, ему далее нужно связать этот блок данных с запись в файловой системе, и ifind — это то, что ему нужно. В отличие от предыдущих инструментов, ifind может принять номер блока данных или имя файла в качестве входных данных и сопоставть этот ввод с эквивалентной записью в файловой системе для сбора другой информации об этом файле. В нашем случае попробуем найти hiberfile.sys.

Для поиска по имени нам нужно использовать параметр --n:

ifind –o 2048 sampleimage.dd –n hiberfile.sys

Результат показывает, что номер инода, связанный с файлом с именем hiberfil.sys, равен 563. Повторное использование istat для просмотра информации, относящейся к этому файлу, покажет информацию об этом файле:

istat –o 2048 sampleimage.dd 563 | more


Файл hiberfil.sys - это копия памяти, сохраняемая на жестком диске, когда пользователь выбирает опцию гибернации машины в случае анализа системы. Этот файл может приносят большую пользу следователю, поскольку он предоставляет им моментальный снимок память во время последнего использования гибернации, которая может быть предоставлена из метки времени нужного файла. Как мы видим, этот файл найден, и его можно извлечь из образа как мы это сделали ранее с файлом $MFT, а затем использовали в анализе памяти.

Если нам нужно использовать инструмент ifind с номером блока данных, нам нужно использовать –d опцию. Мы получим еще один уникальный идентификатор, описывающий расположение файла в образе. Этот уникальный идентификатор будет позже. В этом примере мы использовали идентификатор блока данных 3269280, который является одним из блоков данных файла hiberfil.sys:

ifind –o 2048 sampleimage.dd –d 3269280


4. The filename layer.

• fls: список файлов и подкаталогов в каталоге вместе с их индексными дескрипторами.

• ffind: определить соответствующий файл, дать индексный дескриптор.

На этом уровне работают инструменты для составления списка файловой структуры образа жесткого диска. Каждому файлу будет присвоен уникальный идентификатор, который можно использовать с другими инструментами для более тщательного исследования файла.

Чтобы вывести список файлов в разделе, нам нужно только указать инструменту величину смещения:

fls –o 2048 sampleimage.dd


На предыдущем рисунке мы видим удаленный файл hiberfil.sys с адресом метаданных 57745 и выделенным адресом метаданных 563. Если нам нужно просмотреть другой каталог (например, каталог пользователей), мы можем предоставьте инструменту уникальный идентификатор каталога пользователей (457-144-5):

fls –o 2048 sampleimage.dd 457-144-5


Здесь мы просматриваем содержимое образа без монтирования раздела в файловой системае для работающей ОС. Инструмент ffind используется только для сопоставления адреса метаданных с именем файла, либо связанным с ним файл был удален или размещен:

ffind –o 2048 sampleimage.dd 563


5. Data layer.

• blkcat: отображает содержимое заданного блока диска.

• blkls: отображает содержимое удаленных блоков диска в необработанном образе.

• blkstat: выводит статистику, связанную с определенными блоками диска.

Утилита blkcat.

В этом слое хранится фактическое содержимое файла. Метаданные файла должны указывать на расположение содержимого файла в этой области так же как мы обсуждали ранее с инструментом ifind. Это используется для отображения содержимого определенного блока данных в образе. Допустим, нам нужно отображение первого блока данных файла ntdll.dll в каталоге Windows. Во-первых, мы можем найдите адрес метаданных для этого файла с помощью инструмента ils и grep с ntdll.dll так:

Ils –e –m –o 2048 sampleimage.dd | grep –I nrdll.dll | more


Судя по результатам, один из файлов ntdll.dll имеет адрес метаданных 25833. Второй шаг заключается в использовании инструмента istat, чтобы найти выделенный блок данных для этого файла, используя адрес метаданных:

istat –o 2048 sampleimage.dd 25833 | more


Результат показывает, что первый адрес данных файла имеет номер 1118226. Теперь нужно использовать инструмент blkcat для просмотра содержимого этого блока данных. Мы будем использовать опцию --h для просмотра содержимого в шестнадцатеричном виде:

blkcat –ho 2048 sampleimage.dd 1118226 | more


Утилита blkls.

По умолчанию этот инструмент отображает нераспределенные кластеры в файле изображения для дальнейшего использования в таком анализе как вырезание файлов и восстановление. Если бы мы использовали этот инструмент с параметром -e, он соберет все блоки одной файловой системы, что полезно, если нам нужно извлечь один раздел из большого образа с несколькими разделами. Здесь нам нужно только собрать все нераспределенное пространство в образе и направить вывод в файл с именем unallocated.blkls на экран. Полученный файл будет иметь тот же размер свободного места в разделе: 

blkls –o 2048 sampleimage.dd > unallocated.blkls

Для этой публикации были использованы материалы книги "Practical Windows Forensics"
Ayman Shaaban, Konstantin Sapronov, 2016 Packt Publishing и раздел форензики портала Spy-soft.net.

Успехов.
Слава Украине!

No comments:

Post a Comment

А что вы думаете по этому поводу?