MrRobot с ресурса CyberDefenders. Мы научимся извлекать основные артефакты из образов оперативной памяти Windows и восстановим процесс атаки.
Сценарий в задании такой: сотрудник компании сообщил, что ему пришло электронное письмо с обновлением безопасности, он запустил вложение и после этого компьютер начал вести себя странно. Группа реагирования на инциденты получила дампы оперативной памяти с подозрительных машин. Наша задача — исследовать их, найти то самое письмо, выявить загруженные вредоносные программы и методы бокового перемещения по сети.
По результатам решения кейса необходимо ответить на ряд вопросов, но я покажу сам процесс решения и не буду озвучивать ответы. Ты можешь повторить все самостоятельно, чтобы лучше разобраться и закрепить материал.
Итак, загрузим файл архива с артефактами и приступим к их исследованию. Используемые утилиты
Volatility Framework 2.6.1 — инструмент, реализованный на Python версии 2 и предназначенный для извлечения артефактов из образцов энергозависимой памяти.
Bulk extractor — инструмент для извлечения структурированной информации, к примеру адресов электронной почты, URL, доменов.
YARA Editor — программа для тестирования и создания правил YARA.
Используемые плагины Volatility2 для извлечения данных
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 — плагин для поиска скрытого или внедренного в память процессов кода.
Распаковываем архив с заданием и получаем три файла, которые содержат образы памяти скомпрометированных хостов: Target1, Target2 и POS. Файлы имеют расширение .vmss , то есть представляют собой моментальные снимки виртуальной машины VMware. Если Volatility не может извлечь артефакты из этих файлов, можно воспользоваться плагином raw2dmp , который преобразует дамп памяти приостановленной виртуальной машины VMware в формат, пригодный для анализа. Также можно воспользоваться инструментом vmss2core.
Исследование образов оперативной памяти можно разделить на два этапа: восстановление действий пользователя и поиск признаков вредоносной активности. На первом этапе необходимо проанализировать запущенные процессы, открытые документы, восстановить историю браузера. Эта информация поможет определить время компрометации системы, а также выяснить, какие действия пользователя привели к инциденту. А проанализировав активность злоумышленника, нужно найти использованные вредоносные модули, способ их закрепления в системе, а также обнаружить методы бокового перемещения по сети организации. Исследование хоста Target1
Получим первичную информацию об исследуемой машине, выясним профиль операционной системы, сетевой адрес и имя хоста.
python2 vol.py -fc69-Grrcon2015/target1/Target1-1dd8701f.vmss --profile=Win7SP1x86_23418 imageinfo`
Информация о профиле операционной системыВ ключе реестра SYSTEMControlSet001ControlComputerNameComputerName содержится информация об имени компьютера.
Имя компьютераИмя компьютера — FRONT-DESK-PC .
Получим сетевой адрес хоста: в ключе реестра SYSTEMControlSet001ServicesTcpipParametersInterfaces содержатся идентификаторы сетевых адаптеров, в одном из которых хранится информация о сети.
IP-адрес хостаПрофиль скомпрометированной машины Win7SP1x86_23418 , IP-адрес — 10.1.1.20 , имя хоста — FRONT-DESK-PC .
Начнем восстанавливать действия пользователя в системе. Первым делом получим информацию о запущенных процессах и сохраним ее в файл для удобства анализа.
python2 vol.py -fc69-Grrcon2015/target1/Target1-1dd8701f.vmss --profile=Win7SP1x86_23418 pstree >pstree.txt
Дерево запущенных процессовМы видим запущенный процесс OUTLOOK.EXE с идентификатором 3196 , в адресном пространстве которого содержится информация об электронных сообщениях и открытых файлах. Получим переписку авторизованного в Outlook пользователя. Для этого выгрузим все файлы данного процесса и проанализируем их: в дескрипторе открытого процесса с идентификатором 3196 найдем все объекты FILE .
python2 vol.py -fc69-Grrcon2015/target1/Target1-1dd8701f.vmss --profile=Win7SP1x86_23418 handles -p3196 -tFILE >handles_3196.txt
Открытые файлы процесса OUTLOOK.exeМы обнаружили файл с расширением .ost , который содержит кешированные (сохраненные в памяти системы) сообщения электронного почтового ящика пользователя. Попробуем восстановить этот файл, используя плагин dumpfiles , но сначала нам необходимо узнать физический адрес данного файла в памяти. Запустим плагин filescan , найдем интересующий нас файл и получим его физический адрес.
python2 vol.py -fc69-Grrcon2015/target1/Target1-1dd8701f.vmss --profile=Win7SP1x86_23418 handles -p3196 -tFILE >filescan.txt
Физический адрес файла outlook2.ostАдрес файла outlook2.ost — 0x000000003ecec2b0 . Теперь можно восстановить сам файл. В параметре -Q плагина dumpfiles указываем адрес файла, который нужно выгрузить.
python2 vol.py -fc69-Grrcon2015/target1/Target1-1dd8701f.vmss --profile=Win7SP1x86_23418 dumpfiles -Q0x000000003ecec2b0 -Ddumpfiles/
Я попробовал восстановить все файлы контейнера outlook, но они оказались пустыми. Воспользуемся другим методом выгрузки сообщений. Для этого получим дамп адресного пространства процесса OUTLOOK.EXE с помощью плагина memdump.
python2 vol.py -fc69-Grrcon2015/target1/Target1-1dd8701f.vmss --profile=Win7SP1x86_23418 memdump -p3196 -D ./
Мы получили дамп адресного пространства, попробуем в нем найти сообщения. Откроем полученный файл в шестнадцатеричном редакторе и найдем строку From , а также Content-Type . Обнаруженный заголовок письмаСодержимое электронного письмаПроанализируем его заголовок: нас интересуют поля Subject , From и Received .
info
Как анализировать заголовки электронных писем, рассказывается в одной из наших статей.
Письмо пришло от пользователя th3wh1t3r0s3@gmail.com и имело тему Обновите ваш VPN клиент . Поле Received характеризует адрес отправителя, а также показывает, через какие узлы сообщение прошло.
Находим первое поле Received и узнаем, что сообщение отправлено с IP-адреса 10.114.2.82 . Как видно из содержимого, там присутствует ссылка http://180.76[.]254[.]120/AnyConnectInstaller.exe для загрузки файла AnyConnectInstaller.exe .
Перейти обратно к новости
|