# Volatility Framework ## Введение <b>Volatility</b> - это фреймворк с открытым исходным, развивающийся стараниями сообщества. Написан инструмент на python 2.0 и имеет модульную архитектуру, то есть <b>для Volatility есть подключаемые модули (плагины)</b>, которые можно найти в интернете для выполения специфических типов сканирования или сканирования какой-нибудь нестандартной ОС или даже можно написать таковой плагин самостоятельно. Полный список плагинов, которые доступны сразу после установки можно посмотреть с помощью команды `volatility -h` Из-за того, что инструмент написан на python, он является <b>кроссплатформенным</b>, поэтому проблем с запуском на какой-то популярной ОС, на которой есть питон возникнуть не должно. Фреймворк поддерживает огромное количество систем их их профилей (дампов памяти): от популярных Windows, Linux и MacOs до дампов виртуальных машин (как QEMU и VirtualBox). Методы извлечения и изучения дампа выполняются полностью независимо от исследуемой системы, и могут обеспечивать наглядность состояния системы в реальном времени. Платформа предназначена для ознакомления людей с методами и сложностями, связанными с извлечением цифровых артефактов и предоставляет платформу для дальнейшей работы в этой области исследований. --- ## Вопрос-ответ по первым шагам: ### Q: Где найти фреймворк? #### A: https://www.volatilityfoundation.org/releases для стабильной (python 2.0) версии или https://www.volatilityfoundation.org/releases-vol3 для обновлённой версии фреймворка, оснонованной на python 3.0, которая, однако, может работать нестабильно и поддерживает не все плагины. ### Q: Какие конкретно системы поддерживает Volatility? #### A: Windows: * 32-bit Windows XP Service Pack 2 и 3 * 32-bit Windows 2003 Server Service Pack 0, 1, 2 * 32-bit Windows Vista Service Pack 0, 1, 2 * 32-bit Windows 2008 Server Service Pack 1, 2 * 32-bit Windows 7 Service Pack 0, 1 * 32-bit Windows 8, 8.1, и 8.1 Update 1 * 32-bit Windows 10 * 64-bit Windows XP Service Pack 1 и 2 * 64-bit Windows 2003 Server Service Pack 1 и 2 * 64-bit Windows Vista Service Pack 0, 1, 2 * 64-bit Windows 2008 Server Service Pack 1 и 2 * 64-bit Windows 2008 R2 Server Service Pack 0 и 1 * 64-bit Windows 7 Service Pack 0 и 1 * 64-bit Windows 8, 8.1, и 8.1 Update 1 * 64-bit Windows Server 2012 и 2012 R2 * 64-bit Windows 10 * 64-bit Windows Server 2016 #### Linux: * 32-bit Linux 2.6.11 - 5.5 * 64-bit Linux 2.6.11 - 5.5 * OpenSuSE, Ubuntu, Debian, CentOS, Fedora, Mandriva и др. #### Mac OSX: * 32-bit 10.5.x Leopard * 32-bit 10.6.x Snow Leopard * 64-bit 10.6.x Snow Leopard * 32-bit 10.7.x Lion * 64-bit 10.7.x Lion * 64-bit 10.8.x Mountain Lion * 64-bit 10.9.x Mavericks * 64-bit 10.10.x Yosemite * 64-bit 10.11.x El Capitan * 64-bit 10.12.x Sierra * 64-bit 10.13.x High Sierra * 64-bit 10.14.x Mojave * 64-bit 10.15.x Catalina ### Q: Какие форматы дампов поддерживает фреймворк? - Raw linear sample (dd) - Hibernation file (для Windows 7 и предыдущих версий) - Crash dump file - VirtualBox ELF64 core dump - VMware saved state and snapshot files - EWF format (E01) - LiME format - Mach-O file format - QEMU virtual machine dumps - Firewire - HPAK (FDPro) --- ### Важно также понимать, что с помощью самой Volatility нельзя получать образцы памяти (дампы). Данный фреймворк предназначен только для изучения этих файлов. Для получения самих дампов памяти нужно использовать другие программы (также такие дампы создаются Windows автоматически при возникновении критических ошибок и вылета синего экрана смерти). --- ### Опробовать Volatility можно скачав демонстрационный образец памяти по ссылке: https://github.com/volatilityfoundation/volatility/wiki/Memory-Samples --- ## Работа с Volatility ### Получение базовой информации о дампе. - Шаг 1. Скачайте и распакуйте последнюю версию Volatility - Шаг 2. Запустите консоль python в корневой папке Volatility - Шаг 3. Для просмотра всех доступных операций и команд можно ввести `python vol.py -h` или `python vol.py --info` - Шаг 4. Перенесите дамп памяти в папку с Volatility для удобства ввода (в противном случае вам понадобиться вводить путь к файлу дампа при выполнении следующего этапа) - Шаг 5. Для начала работы с дампом памяти введите следующую команду: `python vol.py imageinfo -f <название дампа>'` <b>или</b> `'python vol.py kdbgscan -f <название дампа>` <b>Важно! При выполеннии команды заключать имя файла в скобки не нужно.</b> После выполнения данного шага в консоли должно высветится подобное сообщение ![](https://i.imgur.com/m1ceIrd.png) На скриншоте мы можем увидеть предполагаемые профили систем, с которых был сделан дамп, тип ядра, число процессоров, а также дату и время создания дампа. --- ### Обзор процессов дампа. Volatility также предлагает пользователю полезную функцию просмотра всех деревьев процессов и библиотек, запущенных на момент создания дампа. Изучив эти данные пользователь может определить, какие именно процессы могли стать причиной критической ошибки. Вызвать древо процессов можно двумя командами: `python vol.py -f <имя дампа> --profile=<имя профиля> pstree` #### Результат работы команды: ![](https://i.imgur.com/xtzppGP.png) или `python vol.py -f <путь к файлу дампа> --profile=<имя профиля> pslist` #### Результат работы команды: ![](https://i.imgur.com/34Uayqm.png) --- ### Обзор отдельный деревьев процессов. Volatility также предоставляет встроенный функционал по просмотру каждого отдельного дерева процессов. Сделать этом можно выполнив следующую команду: `python vol.py –f<имя дампа> memdump –p <id дерева(PID)> --dump =<путь к дампу процесса>` #### Результат работы команды: ![](https://i.imgur.com/wIvyzsc.png) --- ### Документацию по фреймворку можно изучить здесь: https://www.aldeid.com/wiki/Volatility