Анализ дампа памяти и файла подкачки.
Выполнил работу: Бершауэр В.В. Группа БИТ-191.
Дисциплина: Инструментальное обеспечение компьютерно-технической экспертизы.
**Ход работы:**
## Часть 1. Анализ дампа памяти и файла подкачки реальной машины.
Для снятия дампа памяти вместе с файлом подкачки была выбрана утилита FTK Imager.
FTK Imager – это бесплатный инструмент, выпущенный компанией «AccessData». Используется для создания файлов образов дисков и их монтирования, устройств хранения, позволяет выполнять анализ структуры диска, восстанавливать данные, находить потерянные файлы или искать данные путем сканирования образа диска.
Для снятия дампа памяти и файла подкачки необходимо перейти в меню "File", далее нажать кнопку "Capture Memory":

Далее программа предложит выбрать путь, по которому будет создан дамп памяти. Выбрав опцию «Include pagefile», вместе с дампом памяти будет создан файл подкачки:

После нажатия кнопки «Capture Memory» начнется создание дампа и по завершению процесса появится уведомление о успешном снятии дампа:

**Основными утилитами для анализа будут являться Volatility Framework, утилита Strings и bulk_extractor. Вспомогательной - WinHex (шестнадцатиричный редактор).**
1. Volatility Framework — это полностью открытая коллекция инструментов, реализованная на Python, для извлечения цифровых артефактов из образцов энергозависимой памяти. Volatility рабо-тает на любой операционной системе, поддержи-вающей Python.
При помощи Volatility возможно проанализировать дамп оперативной памяти, используя плагины. Плагин – это скрипт, написанный на языке Python, позволя-ющий найти ту или иную информацию в файле. Файл подкачки инструмент исследовать не может. Это связано с тем, что файл подкачки представляет собой непрерывные блоки данных, без какой-либо структуры.
В Volatility 3 достаточно указать путь до директории дампа оперативной памяти, не учитывая профиль. Вместо них используются таблицы символов, они генерируются автоматически при каждом использо-вании плагина, если таковое необходимо. Для её работы необходимо установить Python версии 3.7.0, определенные библиотеки Python, для поддержки Volatility 3, и наличие самого исходного кода Vola-tility 3.
Для анализа дампа оперативной памяти в Volatility, на операционной системе Windows, сначала необходимо перейти в директорию с исходным кодом Volatility, скаченного с github. Далее воспользоваться следующим синтаксисом: «py -3.7 vol.py -f [путь до директории, в которой находится исследуемый дамп оперативной памяти] [наименование плагина, с учетом того, с какой операционной системы дамп оперативной памяти был изъят]».
С помощью ключа -f передается путь до файла.
Py означает запуск python.exe, [-3.7] – версию Python, если в системе их установлено несколько, vol.py – скрипт Volatility.
2. Strings – это утилита, применяемая для поиска печатаемых строк в двоичных файлах. Она выводит последовательности печатаемых символов, обнару-женных в заданном файле.
Программа является автономной, не требует установки и запускается с помощью исполняемого файла. Утилита корректно работает только на 64-х разрядной системе.
Для анализа файлов подкачки, на операционной системе Windows, используя инструмент Strings, необходимо перейти в директорию с исполняемым файлом, скаченным с официального сайта Microsoft . Далее воспользоваться следующим синтаксисом:
«strings64.exe [путь до файла подкачки] | findstr /i [регулярное выражение или набор символов]». «findstr» выполняет поиск шаб-лонов текста в файлах, ключ /i – игнорирует регистр символов при поиске строки.
3. bulk_extractor — это программа, написанная на языке C++, которая сканирует образ диска, файл или каталог с файлами и извлекает полезную информацию без разбора файловой системы или структур файловой системы. Результаты сохраняются в файлах функций, которые можно легко проверить, проанализировать или обработать с помощью автоматизированных инструментов. bulk_extractor также создает гистограммы найденных функций, поскольку более распространенные функции, как правило, более важны.
Программа предустановлена в дистрибутиве Kali Linux.
4. WinHex – это полнофункциональный шестнадцатеричный редактор, который позволяет увидеть информацию, которую некоторые программы скрывают или не позволяют просмотреть.
Утилита содержит редактор дисков, браузер директорий для FAT12, FAT16, FAT32 и NTFS, RAM редактор, позволяющий редактировать виртуальную память процессоров, интерпретатор данных, который распознает двадцать разнообразных типов данных, а еще есть возможность редактирования структур данных при помощи шаблонов.
**Анализ дампа и файла подкачки с помощью утилит на OS Windows.**
Версия операционной системы, с которой были извлечен файл подкачки и дамп оперативной памяти – Windows 10 Pro, 64-x разрядная, сборка 19041.2965, объём ОЗУ – 8 гигабайт. Размер файла подкачки - 4 гигабайта.
Плагин windows.info отображает некоторые общие сведения о системе, включая номер сборки и системное время, корневой каталог системы:
Используемая команда: py vol.py -f D:\mempage\memdump.mem windows.info.

Ещё одним вариантом определения номера сборки является плагин windows.verinfo. Он отображает информацию о версии из заголовков PE файлов (PE — формат исполняемых файлов, объектного кода и динамических библиотек (DLL), используемый в 32- и 64-разрядных версиях операционной системы Microsoft Windows). Но не все файлы содержат корректную часть номера сборки.
Используемая команда: py vol.py -f D:\mempage\memdump.mem windows.verinfo.

В памяти содержаться кусты реестра Windows. Volatility сканирует дамп и ищет найденные разделы реестра. Плагин windows.registry.printkey.Printkey с указанием ключа через параметр –key позволяет вывести значения конкретного раздела реестра:

Следующий плагин – envars. Он отображает переменные среды процесса, которые хранятся в его памяти. Из вывода плагина можно получить информацию о процессоре и имени пользователя. Чтобы найти локального пользователя, можно, например, выполнить поиск по значению «OneDrive»:

Чтобы извлечь информацию о процессоре, необходимо выполнить поиск по значению «PROCESSOR»:

Имя компьютера:

Домашняя папка пользователя:

Volatility может предоставить информацию о запущенных процессах. Плагин «pslist» просматривает двусвязный список, на который указывает PsActiveProcessHead:

Offset(V) – показывает смещение, ImageFileName – имя процесса, PID – идентификатор процесса, PPID – идентификатор родительского процесса, Threads – количество потоков, Handles – количество дескрипторов.
Помимо процессов, Volatility способна отображать загруженные dll файлы, а также их пути. Для этого применяется плагин «dlllist». Он проходит по двусвязному списку _LDR_DATA_TABLE_ENTRY структур, на который указывает PEB (InLoadOrderModuleList). С помощью этого плагина, можно найти вредоносные dll библиотеки, с последующей выгрузкой и анализом на специализированных ресурсах:

Возможно отобразить dll файлы для определенного процесса, необходимо использовать ключ --pid.

Для просмотра списка драйверов ядра, загруженных в систему, используется плагин «modules». Это проходит по двусвязному списку структур LDR_DATA_TABLE_ENTRY, на которые указывает PsLoadedModuleList.

Плагин cmdline перечисляет аргументы командной строки процесса:

Для сканирования сетевой активности в Volatility используется плагин «netscan». Он находит конечные точки TCP, конечные точки UDP, различает IPv4 и IPv6, печатает локальный и удаленный IP-адрес (если применимо), локальный и удаленный порт (если применимо), время, когда сокет был связан или, когда соединение было установлено, и текущее состояние (для соединений TCP):

Используя утилиту strings и регулярные выражения, соответствующие запросу, можно найти в файле подкачки:
Список всех путей:

Утилита strings, может искать какие-либо URL – адреса. Она сканирует весь файл на совпадение заданным ему форматом, в данном случае «http». Необходимо учитывать, что операционная система Windows хранит множество адресов электронной почты и URL – адресов, являющихся системными, то есть они могут не относиться к активности пользователя.

Используя регулярное выражение «^.*@.*\.ru» либо «^.*@.*\.com» можно найти адреса электронной почты:

**Анализа дампа и файла подкачки с помощью утилит на OS Linux.**
Для начала нужно обновить pip:

Скачаем исходный код Volatility3 с github:

Далее установить необходимые зависимости из текстового файла в исходном коде Volatility3:

Вывод плагина windows.info:

Все плагины работают точно так же, как и на windows поскольку volatility написана на python и может работать везде, где можно установить интерпретатор python 3.7. На Linux для анализа можно использовать Bulk Extractor.
-j = 6 - количество потоков. Через ключ -o указывается папка, в которую будут записываться результаты сканирования:

Все данные, полученные в результате сканирования, распределены по текстовым документам, которые представляют из себя отчёт:

Была найдена почта в отчетном файле email:

Ip адреса (было выведено первые 10 найденных ip адресов):

Сетевые домены:

Найденные номера телефонов:

Найденные url адреса:

В дистрибутивах Linux утилита Strings также предустановлена. Анализ файла подкачки с помощью неё именно на Linux намного удобнее, нежели на Windows.
Список всех путей в файле подкачки:
Регулярное выражение: 

Поиск переменных среды:
Регулярное выражение: 

Результат неудовлетворителен. Вероятно, что это из-за компресии файла подкачки. Для решения этой проблемы необходимо воспользоваться программой для декомпрессии.
Поиск URL-адресов:
Регулярное выражение:

Поиск адресов электронной почты:
Регулярное выражение: 

## Часть 2. Анализ дампа памяти и файла подкачки виртуальной машины.
Дамп оперативной памяти и файл подкачки были сняты при помощи FTK Imager на виртуальной машине с операционной системой Win10:

Перенеся дамп и файл подкачки на основную машину, воспользуемся Volatility 3 для анализа. Первым делом, плагин windows.info:

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


Номера сборок совпадают.
Также проверим Ip адрес:


Также совпадают.
В списке процессов видны процессы виртуальной машины:


Используя плагин envars и ключевое слово "COMPUTERNAME" найдём имя компьютера:

Файл подкачки оказался пустым:

## Часть 3. Снятие дампа памяти при работающей виртуальной машине.
Дамп памяти был снят при помощи FTK Imager с одной работающей виртуальной машиной.
Воспользуемя плагином windows.pslist для поиска процессов:

Были найдены процессы,связанные с виртульной машиной. Экспорт дампа одного из процессов VirtualBoxVM.exe и анализ его при помощи того же bulk_extractor дал некорректные результаты.