Write-up: расследуем бэкап VMware с volatility3
Всем привет! Сегодня мы с вами будем проходить задание CTF по расследованию (forensic - компьютерная криминалистика) резервной копии виртуальной машины VMWare.
Вводные данные
И так, всё что мы имеем - это некий файл формата .vmem
Если погуглить инфу что это за файл, то найдем что это резервная копия VMware машины:
Ну и тут уже встаёт вопрос - как этот файл открыть и изучить? Логично в голову приходит желание скачать VMware Workstation, но спешу вас расстроить - из этого ничего не выйдет. Да и если получится импортировать бэкап (если что backup - это резервная копия, мало ли кто не знал сочувствую вам) и запустить виртуальную машину, то мы нарушим тот временной промежуток в который была сделана резервная копия, ведь машина продолжит работать дальше и если там был например какой-то вирус шифровальщик, то он просто зашифрует нам машину.
Из этого следует, что стоит погуглить чем можно открыть данный файл:
Ну и здесь нам выпадают видео и статьи по решению данных проблем. Программа называется volatility3.
Переходим по ссылке выше и копируем ссылку на репозиторий:
Если у вас не установлен на системе git, то можете установить его, либо просто скачать архивом данный репозиторий и распаковать у себя в удобном месте.
Далее приступим к работе с данным инструментом.
Установка Volatility3
Что нам нужно установить перед этим:
- Git (опционально) - скачать можно здесь.
- Python - скачать последнюю версию здесь.
- 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
Далее запускаем программу командой:
Для Unix аналогично по необходимости добавляем троечку:
Документация официальная здесь.
Расследуем инцидент (ну в смысле флаг дайте мне йоу)
Окей, установили, открыли, теперь разбираемся что тут происходит.
Для начала кто хочет повторить всё со мной скачайте файл бэкапа для расследования - скачать тут.
Как я писал в своем посте ранее (кто не читал вот ссылочка) у нас есть модули, поделенные на три раздела по системам:
Ну соответственно формат команды в нашем случае примерно такой:
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
Теперь открываем наш файлик после выполнения команды (даже если выдало ошибку как у меня) любым удобным редактором, хоть блокнотом:
Здесь видим 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
То эта команда выкачает все файлы из бэкапа.
Оно нам надо? Оно нам не надо. Вводим команду и получаем такой вот файл:
Теперь ищем его в папке с нашей утилитой
Отлично, откроем его с помощью того же блокнота:
Как видим кодировка не позволяет нам прочитать что тут написано.
Идем на сайт https://2cyr.com/decode/ вставляем туда нашу абракадабру и нажимаем на ок:
После этого у нас появляется окно с возможностью выбрать адекватную кодировку. Смотрим на то, что более похоже на читаемый текст.
Находим что-то более читаемое в этих списках. Тыкаем на это и жмем на ок.
Окей, мы получили что-то, но ещё не то что надо. Пробуем следующие варианты из списка.
И в конечном итоге натыкаемся на вариант без всяких Ав ^ и прочих странных символов:
Вариант второй - ибо зачем вариант первый.
Качаем Notepad++ и открываем через него наш файл:
P.S. лично у меня в России этот блокнот провайдер заблокировал так как в нём спрятался самый опасный террорист в мире, так что кто тоже в беде можете скачать последнюю версию с моего канала.
Теперь нам остается только убрать все пробелы.
Для этого я написал простой скрипт на python который это сделает за вас. Просто скопируйте содержимое файла и вставьте в окно ввода программы:
Скачать скрипт можно здесь. Запуск командой:
Итоги
Компьютерная криминалистика - интересное занятие, требующее усидчивости, хороших навыков в автоматизации анализа собираемой информации, в том числе с помощью написания собственных скриптов.
Попробуйте повторить данные действия дома чтобы поближе проникнуться в мир форензики.