6 мая 2023
BlackEnergy
(WriteUp)
Этот Writeup для задания BlackEnergy by cyberdefenders.com.
В рамках задания нам предлагается ответить на 8 вопросов, при расследовании инцидента в дампе оперативной памяти. В роли злоумышленников выступает APT группировка BlackEnergy с вредоносным ПО.

Сценарий:
A multinational corporation has been hit by a cyber attack that has led to the theft of sensitive data. The attack was carried out using a variant of the BlackEnergy v2 malware that has never been seen before. The company's security team has acquired a memory dump of the infected machine, and they want you to analyze the dump to understand the attack scope and impact.
Итак, расследование будем выполнять в ОС SIFT by SANS. Загрузим дамп памяти, разархивируем и укажем расположение в переменной окружения.

export VOLATILITY_LOCATION=/home/sansforensics/Desktop/BlackEnergy/CYBERDEF-567078-20230213-171333.raw
Следующим шагом, найдем профиль и ответим на первый вопрос
Which volatility profile would be best for this machine?

vol.py imageinfo
Поиск профиля ядра.
Передадим найденный профиль в переменную окружения:

export VOLAILITY_PROFILE=WinXPSP2x86
Выведем список процессов и ответим на следующий вопрос How many processes were running when the image was acquired?

vol.py pslist
Плагин выводит 25 запущенных процессов, однако 6 из них завершились до снятия дампа памяти, - ответ на вопрос 19.
Список процессов в оперативной памяти.
Здесь же мы видим ответ на следующий вопрос What is the process ID of cmd.exe?
PID cmd.exe = 1940.
Также мы видим процесс с названием rootkit.exe (ответ на вопрос What is the name of the most suspicious process?)
Действительно подозрительный процесс…
Чтобы ответить на следующий вопрос (Which process shows the highest likelihood of code injection?) посмотрим на процессы, в которые инъекция была совершена:

vol.py malfind
Сразу сдампим её:

vol.py malfind -p 880 -D .
Чтобы ответить на последний 8 вопрос (на скриншоте выше видно ответ на 8 вопрос What is the base address of the injected dll? Address:0x980000).

Коль мы уже сдампили сам код, который был внедрён в процесс, посмотрим на содержимое:


strings process.0x89aab590.0x980000.dmp
Среди WinAPI функций также видно связь с файлом (драйвером) по пути (ответ на 6 вопрос
There is an odd file referenced in the recent process. Provide the full path of that file?)

C:\WINDOWS\system32\drivers\str.sys

Когда я увидел связь с драйвером во внедрённом коде, сразу пришло в голову просканировать таблицу SSDT исключив системные легитимные драйвера ntoskrnl.exe & win32k.exe:

vol.py ssdt | egrep -v '(ntoskrnl|win32k)'
Обратите внимание, что драйвер 0002DC86 использует функции Native API. (часто ВПО используют подобные функции)
Чтобы ответить на оставшийся 7 вопрос (What is the name of the injected dll file loaded from the recent process?), найдём библиотеки, которые были загружены в нарушенном порядке и исключим из названия файлы с расширением кроме dll:


vol.py ldrmodules | egrep False |egrep '(dll$)' 
Вот такая несложная задачка, с 8-ю простыми вопросами. Хорошего дня и успешных расследований =)
Made on
Tilda