Содержание статьи
В этой статье мы проведем расследование подобного инцидента на примере лабораторной работы BlackEnergy с ресурса CyberDefenders. Мы научимся извлекать основные артефакты из образа оперативной памяти Windows и восстановим процесс атаки.
Согласно сценарию, крупная корпорация подверглась кибератаке, которая привела к краже конфиденциальных данных. Атака была проведена с использованием ранее не встречавшейся разновидности вредоноса BlackEnergy v2. Группа реагирования на инциденты сделала дамп памяти скомпрометированного компьютера для дальнейшего изучения. Наша задача — провести расследование и разобраться, что все‑таки произошло.
По результатам решения кейса необходимо ответить на ряд вопросов, но я покажу только само решение. Ты сможешь повторить весь процесс самостоятельно, чтобы лучше разобраться и закрепить материал.
Для начала загрузим файл архива с артефактами и приступим к его исследованию.
Для анализа памяти воспользуемся утилитой Volatility Framework 2.6.1 — этот инструмент написан на Python версии 2 и предназначен для извлечения артефактов из образцов энергозависимой памяти.
Используемые плагины Volatility2 для извлечения данных
- Imageinfo — плагин для определения операционной системы, пакета обновлений и аппаратной архитектуры исследуемого образа.
- Pstree — плагин для просмотра списка процессов в виде дерева.
- Handles — плагин для просмотра открытых дескрипторов к файлам, разделам реестра, мьютексам, именованным каналам, событиям в процессах. Также можно отобразить дексрипторы для конкретного процесса или отфильтровав их по конкретному типу объекта.
-
Consoles — плагин для поиска команд, которые злоумышленники ввели в
cmd.
. Основным преимуществом этого плагина является то, что он не только выводит команды, введенные злоумышленниками, но и собирает весь экранный буфер (ввод и вывод).exe - Memdump — плагин для извлечения всех резидентных страниц памяти в процессе.
-
Filescan — плагин для поиска объектов
FILE_OBJECT
в памяти с помощью сканирования тегов пула. Данный плагин найдет все открытые файлы. - Dumpfiles — плагин для извлечения кешированных файлов из образа памяти.
- Printkey — плагин для поиска значений в указанном разделе реестра Windows.
- Userassist — плагин для получения информации из ключа реестра UserAssist.
- Mftparser — этот плагин сканирует записи главной таблицы файлов (MFT) в памяти и выводит информацию о временных метках файлов.
- Malfind — плагин для поиска скрытого или внедренного в память процессов кода.
- Timeliner — плагин для создания временной шкалы событий операционной системы из различных артефактов памяти.
- Ldrmodules — плагин для поиска несвязанных библиотек.
Исследование образа памяти
Прежде чем анализировать артефакты в оперативной памяти, получим профиль операционной системы, а также первичную информацию о компьютере. Для этого используется следующая команда:
python2.7 vol.py -f CYBERDEF-567078-20230213-171333.raw imageinfo
Профиль для Volatility2
исследуемой машины — WinXPSP2x86
. Получим первичную информацию о системе, имя компьютера и сетевой адрес. Для этого воспользуемся плагином Printkey, с помощью которого выведем данные из ключей реестра.
python2.7 vol.py -f c79-BE/CYBERDEF-567078-20230213-171333.raw --profile=WinXPSP2x86 printkey -K 'ControlSet001\Control\ComputerName\ActiveComputerName'
Имя компьютера исследуемой системы — CYBERDEF-567078
. Получим сетевой адрес, для этого необходимо определить идентификаторы сетевых интерфейсов.
python2.7 vol.py -f /mnt/c/Users/DonNod/Downloads/c79-BE/CYBERDEF-567078-20230213-171333.raw --profile=WinXPSP2x86 printkey -K 'ControlSet001\Services\Tcpip\Parameters\Interfaces'
Теперь проверим каждый сетевой интерфейс и получим сетевые настройки машины.
python2.7 vol.py -f c79-BE/CYBERDEF-567078-20230213-171333.raw --profile=WinXPSP2x86 printkey -K 'ControlSet001\Services\Tcpip\Parameters\Interfaces\{B35F0A5F-EBC3-4B5D-800D-7C1B64B30F14}'
Сетевой адрес исследуемой машины 192.
выдан динамически DHCP-сервером 192.
.
Приступим к поиску вредоносной активности. Начнем с анализа процессов, для этого воспользуемся плагинами pstree и pslist. Вывод работы плагинов сохраним в файлы для удобства дальнейшего исследования.
python2.7 vol.py -f c79-BE/CYBERDEF-567078-20230213-171333.raw --profile=WinXPSP2x86 pslist > pslist.txt
Анализируя вывод плагина pslist, можно заметить, что на момент снятия образа памяти в системе работало 19 процессов. В столбце Exit
указано время завершения процессов, 6 процессов завершили свою работу.
Проанализируем процессы с помощью плагина pstree.
python2.7 vol.py -f c79-BE/CYBERDEF-567078-20230213-171333.raw --profile=WinXPSP2x86 pstree > pstree.txt
Анализируя дерево процессов, можно заметить процесс с интересным именем rootkit.
(идентификатор 964
), а также процесс cmd.
(идентификатор 1960
), который является дочерним.
Теперь следует получить дамп данных процессов и поискать в них интересные строки, для этого можно воспользоваться плагином memdump. В нашем случае поиск не дает результатов. Попробуем выгрузить исполняемый файл вредоносной программы из кеша.
Получим список файлов в памяти, для этого воспользуемся плагином filescan, сохраним вывод в файл filescan.
для дальнейшего поиска файлов.
python2.7 vol.py -f c79-BE/CYBERDEF-567078-20230213-171333.raw --profile=WinXPSP2x86 filescan > c79-BE/filescan.txt
Поиск исполняемого файла rootkit.
в списке файлов не дал результатов. Попробуем построить временную шкалу событий операционной системы и восстановим действия пользователя. Для этого воспользуемся плагином timeliner, вывод работы плагина сохраним в файл timeline.
.
python2.7 vol.py -fc79-BE/CYBERDEF-567078-20230213-171333.raw --profile=WinXPSP2x86 timeliner > c79-BE/timeline.txt
Для удобства анализа загрузим файл событий в Excel. Откроем программу MS Office Excel, перейдем на вкладку «Данные → Из текстового файла» и выберем файл timeline.
. Далее отсортируем данные по дате и приступим к анализу.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»