Содержание статьи
По сценарию сотрудник компании сообщил, что получил подозрительное электронное письмо с файлом документа и после этого компьютер начал вести себя странно. Группа реагирования на инциденты сделала несколько дампов памяти с подозрительных машин. Наша задача — расследовать инцидент и разобраться, что произошло.
info
По результатам решения кейса необходимо ответить на ряд вопросов, однако я покажу лишь сам процесс решения. Повторив прохождение, ты сможешь сам дать ответы для закрепления материала.
Загрузим архив с артефактами и приступим к их исследованию.
Используемые утилиты
- Volatility Framework 2.6.1 — инструмент, реализованный на Python 2. Предназначен для извлечения артефактов из образцов энергозависимой памяти.
- Bulk extractor — инструмент для извлечения структурированной информации, к примеру адресов электронной почты, URL, доменов.
- YARA Editor — программа для тестирования и создания правил YARA.
- OST Extractor — инструмент для восстановления OST-контейнеров в EML.
- Scdbg — программа для анализа shell-кода.
Используемые для извлечения данных плагины Volatility 2
- Imageinfo — плагин для определения операционной системы, пакета обновлений и аппаратной архитектуры исследуемого образа.
- Pstree — просмотр списка процессов в виде дерева.
- Handles — просмотр открытых дескрипторов к файлам, разделам реестра, мьютексам, именованным каналам, событиям в процессах. Также можно отобразить дескрипторы для конкретного процесса, задав фильтр по типу объекта.
-
Consoles — плагин для поиска команд, которые злоумышленники ввели через
cmd.
. Основное преимущество этого плагина в том, что он не только печатает команды, введенные злоумышленниками, но и собирает весь экранный буфер (ввод и вывод).exe - Memdump — извлечение всех резидентных страниц памяти в процессе.
-
Filescan — плагин для поиска объектов
FILE_OBJECT
в памяти с помощью сканирования тегов пула. Этот плагин найдет все открытые файлы. - Dumpfiles — извлечение кешированных файлов из образа памяти.
- Netscan — поиск сетевых артефактов в 32- и 64-разрядных дампах памяти. Этот плагин находит конечные точки TCP и UDP, а также ищет локальные и удаленные IP-адреса.
- Printkey — поиск значений в указанном разделе реестра Windows.
- Userassist — получение информации из ключа реестра UserAssist.
- Mftparser — сканирует записи главной таблицы файлов (MFT) в памяти и выводит информацию о временных метках файлов.
- Autoruns — подключаемый плагин для поиска точек сохранения исполняемых файлов в системе. Для подключения плагина нужно добавить его в каталог plugins инструмента Volatility.
- Malfind — плагин для поиска скрытого или внедренного в память процессов кода.
- Editbox — плагин для извлечения текста из элементов управления Windows Edit.
Исследование хоста ecorpoffice
Прежде чем искать вирусную активность, давай получим первичную информацию о системе, имя компьютера, сетевой адрес и версию операционной системы.
python2.
Версия ОС — Win7SP1x64
. Мы будем ее указывать при поиске других артефактов в качестве профиля в Volatility.
Получим имя компьютера, для этого проверим следующий ключ реестра:
SYSTEM\ControlSet001\Control\ComputerName\ComputerName
python2 vol.py -f ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem \
--profile=Win7SP1x64 printkey -K "ControlSet001\Control\ComputerName\ComputerName"
Имя компьютера: WIN-191HVE3KTLO
.
Выясним сетевой адрес. Для этого проверим ключ, в котором содержатся идентификаторы сетевых адаптеров. Здесь же можно найти и информацию о сети.
python2 vol.py -f ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem \
--profile=Win7SP1x86_23418 printkey \
-K "ControlSet002\Services\Tcpip\Parameters\Interfaces\{360E0CDC-9C78-4D3B-A0Af-69CC45DE6D70}"
IP-адрес исследуемой машины — 10.1.1.122.
Проанализируем запущенные процессы в системе, их список выгрузим в файл pstree.
.
python2.7 vol.py -f "ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem" \
--profile=Win7SP1x64 pstree > ecorpoffice/pstree.txt
Мы обнаружили процесс OUTLOOK.
, идентификатор процесса — 2692. По сценарию нам известно, что инцидент произошел после того, как пользователь запустил вложение в письме. Восстановим все сообщения пользователя и найдем вредоносное. Для этого ищем в процессе все объекты FILE
.
python2.7 vol.py -f "ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem" \
--profile=Win7SP1x64 handles -p 2692 -t FILE > ecorpoffice/FILE_OUTLOOK
В результате анализа объектов FILE обнаружено имя почтового ящика пользователя:
\Device\HarddiskVolume1\Users\phillip.price\AppData\Local\Microsoft\Outlook\phillip.price@e-corp.biz.pst
Попробуем выгрузить этот контейнер из памяти процесса. Найдем физический адрес файла, используя плагин filescan.
python2.7 vol.py -f "ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem" \
--profile=Win7SP1x64 filescan > ecorpoffice/filescan`
Выгружаем найденный файл, даем ему расширение .ost и загружаем в утилиту OST Extractor.
python2.7 vol.py -f "ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem" \
--profile=Win7SP1x64 dumpfiles -Q 0x000000007d4d9450 -u -D ecorpoffice/
Не забываем про аргумент -u
, который позволяет выгрузить большее количество данных.
Получаем файл file.
. Тоже меняем ему разрешение на .ost и загружаем в OST Extractor.
После конвертирования OST в указанной папке появится сообщение пользователя в формате EML. Переходим в папку сообщений и смотрим его.
Письмо отправлено с почтового ящика karenmiles@t-online.
. В аттаче — документ bank_statement_088452.
. IP-адрес почтового сервера — 31.
. Письмо поступило 4 октября 2016 года в 12:02:04 (UTC).
Чтобы извлечь вложение, можно воспользоваться блокнотом, для этого декодируем аттач из Base64 и сохраняем файл с расширением .doc. Либо можешь открыть EML с помощью почтового клиента (того же Outlook).
info
Исследовать вредоносные файлы необходимо в изолированной среде. Как создать лабораторию для анализа вредоносов, подробно рассказано в статье «Код под надзором. Создаем виртуальную лабораторию для анализа малвари».
Итак, берем файл bank_statement_088452.
и начинаем изучать. Его MD5:
c2dbf24a0dc7276a71dd0824647535c9
Проверим наличие макроса в полученном вложении с помощью утилиты olevba.
olevba bank_statement_088452.doc
Макрос сильно обфусцирован, и по‑быстрому его проанализировать не получится, поэтому откроем документ в Microsoft Word и начнем отлаживать скрипт на Visual Basic.
Перейдем в «Вид → Макросы» и нажмем кнопку «Отладить». Находим следующий участок кода.
В функции xvkBjM
выполняется запуск содержимого в переменной UsoJar
. Найдем место в коде, где формируется эта переменная, поставим точку останова и запустим скрипт.
После выполнения этого участка кода в переменной UsoJar
появится команда на PowerShell, которая декодирует данные и исполняет их.
Преобразуем данные из Base64 и посмотрим содержимое.
Как видим, скрипт на PowerShell находит и запускает исполняемые файлы вот из этой папки:
C:\Users\<user>\AppData\Local\Temp
Перед тем как запускать вредоносный документ, начнем записывать сетевой трафик, для этого запустим в виртуальной машине Wireshark.
Как видим, до запуска скрипта на PowerShell происходит загрузка полезной нагрузки с IP-адреса 54.
.
Вредоносный скрипт на VBA загружает полезную нагрузку со следующего адреса:
http://54.174.131.235/files/tv_x64.exe
Нагрузка будет сохранена в файл
C:\Users\<user>\AppData\Local\Temp\SkypeC2AutoUpdate.exe
Затем этот файл запускается.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»