forensic
November 16, 2024

Write-up: расследуем бэкап VMware с volatility3

Всем привет! Сегодня мы с вами будем проходить задание CTF по расследованию (forensic - компьютерная криминалистика) резервной копии виртуальной машины VMWare.

Приступим.

Вводные данные

И так, всё что мы имеем - это некий файл формата .vmem

Если погуглить инфу что это за файл, то найдем что это резервная копия VMware машины:

Ну и тут уже встаёт вопрос - как этот файл открыть и изучить? Логично в голову приходит желание скачать VMware Workstation, но спешу вас расстроить - из этого ничего не выйдет. Да и если получится импортировать бэкап (если что backup - это резервная копия, мало ли кто не знал сочувствую вам) и запустить виртуальную машину, то мы нарушим тот временной промежуток в который была сделана резервная копия, ведь машина продолжит работать дальше и если там был например какой-то вирус шифровальщик, то он просто зашифрует нам машину.

Из этого следует, что стоит погуглить чем можно открыть данный файл:

Ну и здесь нам выпадают видео и статьи по решению данных проблем. Программа называется volatility3.

Переходим по ссылке выше и копируем ссылку на репозиторий:

Если у вас не установлен на системе git, то можете установить его, либо просто скачать архивом данный репозиторий и распаковать у себя в удобном месте.

Далее приступим к работе с данным инструментом.

Установка Volatility3

Что нам нужно установить перед этим:

  1. Git (опционально) - скачать можно здесь.
  2. Python - скачать последнюю версию здесь.
  3. Volatility3 - скачать с репозитория.

Ну и в общем то всё, установка на любой системе Windows/Unix. Главное чтобы был python с pip.

Теперь заходим в распакованную папку с репозиторием. Лично я скачаю репозиторий с помощью git командой:

git clone https://github.com/volatilityfoundation/volatility3.git

Скачал в ту же папку где и находится наш файл

Открываем терминал в данной папке, идем в папку volatility3 и пишем команду:

pip install -r requirements.txt

У кого Unix система с разными питонами пишут соответственно для третьей версии:

pip3 install -r requirements.txt

Далее запускаем программу командой:

python vol.py -h

Для Unix аналогично по необходимости добавляем троечку:

python3 vol.py -h

На этом установка окончена.

Документация официальная здесь.

Расследуем инцидент (ну в смысле флаг дайте мне йоу)

Окей, установили, открыли, теперь разбираемся что тут происходит.

Для начала кто хочет повторить всё со мной скачайте файл бэкапа для расследования - скачать тут.

Как я писал в своем посте ранее (кто не читал вот ссылочка) у нас есть модули, поделенные на три раздела по системам:

  • windows.название_модуля
  • linux.название_модуля
  • mac.название_модуля

Ну соответственно формат команды в нашем случае примерно такой:

python vol.py -f путь_до_нашей_резервной_копии и далее команда.

Например:

python vol.py -f ../task.vmem windows.info

Здесь я указал относительный путь о котором писал в своих статьях ранее. Кто не читал рекомендую ознакомиться.

Здесь никто вам не мешает указать абсолютный:

python vol.py -f D:\download\love_keys\task.vmem windows.info

Если всё успешно, у вас пойдет процесс разбора копии и чтение его данных:

В данном случае не было информации какая именно система, так что сначала я попробовал пару команд для linux, что ни к чему не привело, затем к windows, и тут уже мне что-то показало:

Модуль windows.info показывает нам общие данные виртуальной windows системы.

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

Для этого запустим следующую команду:

python vol.py -f ../task.vmem windows.filescan > file.txt

Здесь:

  • windows.filescan - вытягивает все файлы из системы
  • > file.txt - перенаправляет весь результат в файл

Теперь открываем наш файлик после выполнения команды (даже если выдало ошибку как у меня) любым удобным редактором, хоть блокнотом:

Здесь видим offset - это адрес памяти в котором хранится содержимое файла, и name - путь до файла с его названием.

Нам интересно следующее - давайте посмотрим какие есть пользователи в этой системе. Для этого выполним поиск по пути \Users\

Видим что у нас есть некий пользователь Oleg. Хорошо, давайте дополним наш путь \Users\Oleg\ и посмотрим что у нашего олега за файлы.

Пролистав некоторое количество строк видим такой вот интересный файл (хотя куда более интересно выглядит файл с базой данных на первом скрине, но да ладно).

Попробуем его выкачать. Для этого нам понадобится наш offset - то есть адрес памяти указанный слева:

Копируем его и вбиваем в следующую команду:

python vol.py -f ../task.vmem windows.dumpfiles --physaddr 0x1e47d5f0

Где:

  • windows.dumpfile - выкачивает из резервной копии наш файл
  • --physaddr offset_файла - указывает на файл который нам надо выкачать.

Если не указать адрес и ввести просто:

python vol.py -f ../task.vmem windows.dumpfiles

То эта команда выкачает все файлы из бэкапа.

Оно нам надо? Оно нам не надо. Вводим команду и получаем такой вот файл:

Теперь ищем его в папке с нашей утилитой

Отлично, откроем его с помощью того же блокнота:

Как видим кодировка не позволяет нам прочитать что тут написано.

У нас есть два варианта:

Вариант 1 (геморройный)

Идем на сайт https://2cyr.com/decode/ вставляем туда нашу абракадабру и нажимаем на ок:

После этого у нас появляется окно с возможностью выбрать адекватную кодировку. Смотрим на то, что более похоже на читаемый текст.

Находим что-то более читаемое в этих списках. Тыкаем на это и жмем на ок.

Окей, мы получили что-то, но ещё не то что надо. Пробуем следующие варианты из списка.

И в конечном итоге натыкаемся на вариант без всяких Ав ^ и прочих странных символов:

Вариант второй - ибо зачем вариант первый.

Качаем Notepad++ и открываем через него наш файл:

P.S. лично у меня в России этот блокнот провайдер заблокировал так как в нём спрятался самый опасный террорист в мире, так что кто тоже в беде можете скачать последнюю версию с моего канала.

Теперь нам остается только убрать все пробелы.

Для этого я написал простой скрипт на python который это сделает за вас. Просто скопируйте содержимое файла и вставьте в окно ввода программы:

Скачать скрипт можно здесь. Запуск командой:

python delnull.py

Итоги

Компьютерная криминалистика - интересное занятие, требующее усидчивости, хороших навыков в автоматизации анализа собираемой информации, в том числе с помощью написания собственных скриптов.

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

Благодарю за прочтение статьи.