[ << ALL_FEED ]

Mount Point — pt.1

Ещё в группе «Общее»

Mount Point — pt.1 🙂

Любое расследование — это анализ артефактов операционной системы. А чтобы их получить, зачастую приходится работать с образами виртуальных машин, типа VMDK, VDI, qcow и других.

В большинстве случаев монтирование, а потом и исследование подобных данных не представляет сложностей. Но если образ по каким-то причинам не обрабатывается популярными утилитами (FTK Imager, Arsenal Image Mounter), имеет особенности конфигурации или если вам необходимо провести какие-либо специфические процедуры, монтирование образа в виртуальную среду может оказаться непростым.

В этом и нескольких будущих постах мы дадим небольшие гайды по разрешению типовых ситуаций. Stay connected!

Case 1. Монтирование отдельных разделов из образа (все действия легко осуществимы в любом стандартном дистрибутиве ОС Linux и подсистеме WSL, если каких-то пакетов на системе нет, они без проблем устанавливаются стандартными средствами).

🐾 Шаг 1. Преобразуем имеющийся образ в формат RAW. Это наиболее универсальный формат, не содержащий никаких дополнительных данных, не имеющий сжатий и максимально поддерживаемый любыми утилитами. Образ может представлять собой один файл или несколько (например, если разные каталоги Linux разнесены на несколько виртуальных дисков). Рекомендуем использовать утилиту qemu-img:

qemu-img convert -f #Исходный формат -O #Целевой формат #Файл-источник #Файл-получатель
Code language: plaintext (plaintext)


Это наиболее универсальный способ, поддерживающий большинство форматов виртуальных дисков (VMDK, VDI, qcow и другие), а также позволяющий собрать образ из нескольких файлов. Кроме того, можно использовать вендорские утилиты, входящие в стандартные дистрибутивы, например:

VirtualBox: VBoxManage.exe internalcommands converttoraw

VMware: vmware-vdiskmanager -r ./source-image.vmdk -t 2 ./destination-image.raw
Code language: YAML (yaml)


🐾 Шаг 2. Изучаем параметры полученного образа:

fdisk -l ./#путь к файлу
Code language: plaintext (plaintext)


И видим подобную запись:

Sector size (logical/physical): 512 bytes / 512 bytes
    
./vm-disk-0.raw1 : start=        2048, size=   207618048, type=83
./vm-disk-0.raw2 : start=   207620096, size=     2095104, type=82
Code language: plaintext (plaintext)


По идентификатору раздела (их можно посмотреть здесь) определяем нужный (в примере — Type 83 Linux Partition) и считаем параметры смещения и размер диска:

512 (размер сектора) × 2048 (номер первого сектора) = 1 048 576 (смещение в байтах)

512 (размер сектора) × 207 618 048 (количество секторов) = 106 300 440 576 (размер раздела в байтах)

🐾 Шаг 3. Монтируем:

mount -o ro,loop,offset=1048576,sizelimit=106300440576 source /mountpoint
Code language: plaintext (plaintext)


💡 Полезные заметки:

1. Для команды mount используйте опцию ro (read-only), чтобы случайно ничего не изменить в исследуемом образе.

2. При работе с образами Windows используйте опцию show_sys_files для отображения скрытых системных файлов ($MFT, $LogFile, $J и т. п.) и streams_interface=windows — для поддержки работы с альтернативными потоками.

Все! В каталоге точки монтирования видим содержимое интересующего нас раздела.

В следующем посте рассмотрим монтирование LVM-дисков и поделимся полезным скриптом. Stay tuned!

#tip #dfir
@ptescalator

Ещё от oUth0R

Ещё от oUth0R

Ещё в группе «Общее»