Это вторая статья из цикла «BlueTeam Trainings». CyberDefenders является учебно‑тренировочной платформой, которая предоставляет возможность на практике проверять уже имеющиеся навыки и приобретать новые в области информационной безопасности.
Для прохождения этого задания достаточно иметь ПО Volatility(Wiki) и иметь базовое представление о том, как выглядит интерфейс этой программы. Скачать архив с дампом памяти можно тут. Приступим к работе!
Volatility Framework
Volatility Framework — это набор инструментов с открытым исходным Python кодом(GitHub). Фреймворк предназначен для извлечения цифровых артефактов из дампов оперативной памяти. Использовать volatility будем на ОС Windows, для этого воспользуемся Volatility 2.6 Windows Standalone Executable (x64).
BlackEnergy
После скачивания архива приступим к его анализу! По непонятным причинам на платформе задание относится к категории «Medium», при этом ответить необходимо всего на 8 несложных вопросов.
Вопрос 1. Which volatility profile would be best for this machine?
Сам вопрос дает подсказку какое именно ПО необходимо использовать, чтобы определить профиль ОС, который наиболее подходит для анализа дампа памяти. Воспользуемся командой:
volatility.exe ‑f “D:\CYBERDEF.raw” imageinfo
‑f — позволяет указать путь к файлу, который необходимо исследовать с помощью volatility;
imageinfo — позволяет определить наиболее подходящий профиль ОС, с которого был снят дамп оперативной памяти.
Ответ WinXPSP2×86
Вопрос 2. How many processes were running when the image was acquired?
Необходимо узнать количество процессов, запущенных на момент снятия дампа с системы. Для решения этой задачи поможет аргумет pslsit.
Считаем количество процессов - ответ 19.
Вопрос 3. What is the process ID of cmd.exe?
Простейший вопрос, на который можно ответить с использованием предыдущего скриншота, так как третий столбец демонстрирует PID процесса cmd.exe. Ответ — 1960.
Вопрос 4. What is the name of the most suspicious process?
Довольно простое задание для экватора, так как мы снова можем ответить на него с помощью скриншота со списком процессов. Согласно определению из самого достоверного источника(Википедии) руткит — набор программных средств, обеспечивающих: маскировку объектов; управление; сбор данных. rootkit.exe подходит в качестве ответа!
Вопрос 5. Which process shows the highest likelihood of code injection?
Из списка процессов необходимо выбрать наиболее подходящий для внедрения кода. svchost.exe явялется основным процессом для загрузки служб ОС Windows, которые хранятся в DLL. Все службы, список которых можно посмотреть в services.msc, запускаюстя с помощью svchost.exe. Это один из неплохих вариантов для внедрения злоумышленником вредоносного исполняемого кода. Ответ — svchost.exe.
Вопрос 6. There is an odd file referenced in the recent process. Provide the full path of that file.
Для ответа на этот вопрос необходимо узнать путь к файлу, на который ссылается процесс svchost.exe. Для этого мы определяем, что анализируем процесс с PID 880. Для отображения открытых хендлов используем плагин handles и укажем тип — файлы. Команда будет выглядеть следующим образом:
volatility.exe -f "D:\CYBERDEF.raw" --profile=WinXPSP2x86 -p 880 handles -t file
По формату, в котором необходимо ввести ответ понимаем, что нам нужен файл из диска "C", который имеет три символа в названии и три в расширении. Под такое "регулярное выражение" подходит ответ C:\WINDOWS\system32\drivers\str.sys.
Вопрос 7. What is the name of the injected dll file loaded from the recent process?
DLL Injection — это техника, которая позволяет злоумышленнику внедрить DLL в процесс жертвы из памяти, а не с диска. Плагин ldrmodules позволяет отобразить перекрестные ссылки DLL с файлами, которые находятся в памяти. Воспользуемся командой:
volatility.exe -f "D:\CYBERDEF.raw" --profile=WinXPSP2x86 -p 880 ldrmodules
Распространенной практикой среди разработчиков вредоносных программ является попытка скрыть деятельность вредоносной программы, именно этот принцип и позволит определить нам зараженную библиотеку. Одним из методов является попытка скрыть DLL‑файлы, связанные с вредоносным кодом. Этого можно добиться путем отвязки подозрительной DLL от ProcessEnvironmentBlock (PEB). Таким образом можно обеспечить сокрытие вредоносной деятельности, но все еще остаются следы существования DLL, содержащиеся в VirtualAddressDescriptor (VAD). VAD — это механизм, идентифицирующий базовый адрес и полный путь DLL‑файла. Плагин ldrmodules сравнивает список процессов и определяет, находятся ли они в PEB. Анализ столбцов InLoad, InInit, InMem позволяют выявить «странную» библиотеку‑ответ msxml3r.dll.
Вопрос 8. What is the base address of the injected dll?
Для ответа на последний вопрос необходимо определить базовый адресс зараженной библиотеки. Для этого воспользуемся плагином malfind. malfind помогает найти скрытый или внедренный код/DLL в памяти пользовательского режима с помощью VAD. Цель malfind — найти DLL, которые не видят стандартные методы/инструменты, это можно проверить используя плагин dlllist, при использовании которого мы не встретим зараженную DLL. Для ответа на вопрос воспользуемся командой:
volatility.exe -f "D:\CYBERDEF.raw" --profile=WinXPSP2x86 malfind -p 880
Ответ — 0x980000.
Завершился второй разбор из серии BlueTeam Trainings, надеюсь данная статья была полезна широкому кругу лиц!