Уроки форензики. Расследуем киберинцидент MrRobot
the Matrix
Сценарий в задании такой: сотрудник компании сообщил, что ему пришло электронное письмо с обновлением безопасности, он запустил вложение и после этого компьютер начал вести себя странно. Группа реагирования на инциденты получила дампы оперативной памяти с подозрительных машин. Наша задача — исследовать их, найти то самое письмо, выявить загруженные вредоносные программы и методы бокового перемещения по сети.
По результатам решения кейса необходимо ответить на ряд вопросов, но я покажу сам процесс решения и не буду озвучивать ответы. Ты можешь повторить все самостоятельно, чтобы лучше разобраться и закрепить материал.
Итак, загрузим файл архива с артефактами и приступим к их исследованию.
Распаковываем архив с заданием и получаем три файла, которые содержат образы памяти скомпрометированных хостов: Target1, Target2 и POS. Файлы имеют расширение .vmss, то есть представляют собой моментальные снимки виртуальной машины VMware. Если Volatility не может извлечь артефакты из этих файлов, можно воспользоваться плагином raw2dmp, который преобразует дамп памяти приостановленной виртуальной машины VMware в формат, пригодный для анализа. Также можно воспользоваться инструментом vmss2core.
Исследование образов оперативной памяти можно разделить на два этапа: восстановление действий пользователя и поиск признаков вредоносной активности. На первом этапе необходимо проанализировать запущенные процессы, открытые документы, восстановить историю браузера. Эта информация поможет определить время компрометации системы, а также выяснить, какие действия пользователя привели к инциденту. А проанализировав активность злоумышленника, нужно найти использованные вредоносные модули, способ их закрепления в системе, а также обнаружить методы бокового перемещения по сети организации.
Получим первичную информацию об исследуемой машине, выясним профиль операционной системы, сетевой адрес и имя хоста.

В ключе реестра SYSTEM\ControlSet001\Control\ComputerName\ComputerName содержится информация об имени компьютера.

Имя компьютера — FRONT-DESK-PC.
Получим сетевой адрес хоста: в ключе реестра SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces содержатся идентификаторы сетевых адаптеров, в одном из которых хранится информация о сети.

Профиль скомпрометированной машины Win7SP1x86_23418, IP-адрес — 10.1.1.20, имя хоста — FRONT-DESK-PC.
Начнем восстанавливать действия пользователя в системе. Первым делом получим информацию о запущенных процессах и сохраним ее в файл для удобства анализа.

Мы видим запущенный процесс OUTLOOK.EXE с идентификатором 3196, в адресном пространстве которого содержится информация об электронных сообщениях и открытых файлах. Получим переписку авторизованного в Outlook пользователя. Для этого выгрузим все файлы данного процесса и проанализируем их: в дескрипторе открытого процесса с идентификатором 3196 найдем все объекты FILE.

Мы обнаружили файл с расширением .ost, который содержит кешированные (сохраненные в памяти системы) сообщения электронного почтового ящика пользователя. Попробуем восстановить этот файл, используя плагин dumpfiles, но сначала нам необходимо узнать физический адрес данного файла в памяти. Запустим плагин filescan, найдем интересующий нас файл и получим его физический адрес.

Адрес файла outlook2.ost — 0x000000003ecec2b0. Теперь можно восстановить сам файл. В параметре -Q плагина dumpfiles указываем адрес файла, который нужно выгрузить.
Я попробовал восстановить все файлы контейнера outlook, но они оказались пустыми. Воспользуемся другим методом выгрузки сообщений. Для этого получим дамп адресного пространства процесса OUTLOOK.EXE с помощью плагина memdump.
Мы получили дамп адресного пространства, попробуем в нем найти сообщения. Откроем полученный файл в шестнадцатеричном редакторе и найдем строку From, а также Content-Type.


Проанализируем его заголовок: нас интересуют поля Subject, From и Received.
Как анализировать заголовки электронных писем, рассказывается в одной из наших статей.
Письмо пришло от пользователя th3wt3r0s3@gmail.com и имело тему Обновите ваш VPN клиент. Поле Received характеризует адрес отправителя, а также показывает, через какие узлы сообщение прошло.
Находим первое поле Received и узнаем, что сообщение отправлено с IP-адреса 10.114.2.82. Как видно из содержимого, там присутствует ссылка http://180.76[.]254[.]120/AnyConnectInstaller.exe для загрузки файла AnyConnectInstaller.exe.
Выгрузим этот файл из образа памяти.

Мы получили файл file.None.0x85d1c6c0.img. Возьмем MD5-сумму и проверим на VirusTotal, чтобы выяснить первичную информацию о файле.
Затем проверим полученный модуль с помощью YARA-правил.

Полученный вредоносный модуль относится к семейству XTREME RAT. Анализируем дальше. Теперь нам нужно получить список исполняемых файлов, запущенных пользователем. Для этого необходимо проанализировать информацию из ключа rassist ветки реестра NTUSER.DAT. Для этого воспользуемся плагином rassist.

Как видно из рисунка, в 11:31:27 09.10.2015 UTC пользователь запустил загруженный в почтовый клиент файл AnyConnectInstaller.exe. После запуска вредоноса злоумышленник получил доступ к компьютеру.
Найдем методы закрепления на скомпрометированной машине. Для этого воспользуемся плагином autoruns.

Чтобы закрепиться и обеспечить работу после перезагрузки компьютера, запускают исполняемый файл AnyConnectInstaller.exe, для этого в ключе реестра SOFTWARE\Microsoft\Windows\CurrentVersion\Run было добавлено значение MrRobot. Проведем небольшой анализ файла, для чего загрузим его в IDA Pro.

Вредоносный файл использует знакомые нам функции WinAPI CreateProcessA, GetThreadContext, WriteProcessMemory. Применяется техника ProcessHollowing для загрузки кода в созданный процесс. Поведенческий анализ из информации на VirusTotal показывает, что вредонос создает процесс с названием IEXPLORE.EXE.

Найдем этот процесс в дереве процессов.

Вредоносный файл создал процесс iexplore.exe с идентификатором 2996, далее методом ProcessHollowing загрузил исполняемый код в этот процесс. Для анализа дальнейших действий злоумышленника выгрузим дамп процесса с идентификатором 2996.
Найдем уникальное значение вредоноса в системе (Mutex). В Windows есть объект ядра Mutant, который позволяет программам синхронизироваться между собой. Вредоносные файлы часто используют именованный мьютекс для того, чтобы предотвратить повторный запуск в системе.

Чтобы предотвратить повторный запуск, вредоносный модуль создал мьютекс fsociety0.dat. Теперь получим NTLM-хеш пользователя Administrator, для чего воспользуемся плагином hashdump.

Восстановим дальнейшие действия злоумышленника. Для этого воспользуемся плагином consoles.

Злоумышленник загрузил три основные утилиты в каталог C:\Windows\Temp: wce.exe — редактор учетных данных Windows, nbtscan.exe — программа для сканирования локальной сети на наличие Windows-машин, getlsasrvaddre.exe позволяет получить список сессий залогиненных пользователей Windows и извлечь LM/NT-хеши.
С помощью утилиты wce.exe злоумышленник получил пароль flagadmin@1234 пользователя Administrator.

Далее злоумышленник залогинился в системе от имени администратора и запустил командную оболочку.

Найдем дату создания утилиты nbtscan.exe. Для этого проанализируем MFT-таблицу с использованием плагина mftparser.

Дата создания утилиты: 2015-10-09 10:45:12 UTC. Теперь посмотрим на содержимое каталога C:\Windows\Temp. Там среди прочего обнаруживается файл nbs.txt.

Получим его содержимое, воспользовавшись утилитой dumpfiles: адрес файла в памяти 0x000000003fdb7808.

Итак, мы выяснили, что IP-адрес первой машины — 10.1.1.2. Проанализируем сетевую активность хоста, для этого воспользуемся плагином netscan.

Вредоносный процесс iexplore.exe с идентификатором 2996 взаимодействует с управляющим сервером по адресу 180.76.254.120:22. Далее злоумышленники подключились к хосту 10.1.1.21 по протоколу RDP. Чтобы управлять скомпрометированной машиной, атакующие установили на нее TeamViewer.exe.
На данном этапе мы проанализировали оперативную память хоста Target1, нашли точку входа в сеть организации. Используя фишинговое сообщение, содержащее заголовок письма Udate your VPN Client, злоумышленник th3wt3r0s3@gmail.com отправил вредоносную ссылку. Пользователь машины target1 загрузил исполняемый файл AnyConnectInstaller.exe, после запуска которого атакующий установил контроль над компьютером. Затем он загрузил дополнительные утилиты и повысил привилегии в системе. Наконец, злоумышленник подключился к хосту 10.1.1.21 по протоколу RDP, используя пароль flagadmin@1234 пользователя Administrator.
Получим первичную информацию об исследуемом образе.



Профиль операционной системы — Win7SP1x86_23418, IP-адрес хоста — 10.1.1.21, имя компьютера — GIDEON-PC. Теперь восстановим последовательность действий злоумышленника на скомпрометированном компьютере. Для начала получим информацию из консоли.

Злоумышленник загрузил утилиту wce.exe и получил пароли пользователей в системе. Посмотрим, что хранится в файле w.tmp. Для этого выгрузим его так же, как выгружали для хоста Target1.
Адрес файла w.tmp в исследуемом образе — 0x000000003fcf2798.

Мы определили пароль пользователя gideon — t76fRJhs.
Далее атакующий примонтировал системный диск контроллера домена \\10.1.1.2\c$, используя пароль пользователя Administrator. Скопировал программу архиватора rar.exe и создал на примонтированном диске папку crownjewels.
После этого злоумышленник заархивировал все файлы с расширением .txt на диске и задал пароль от архива 123qwe!@#. Архив получил имя crownjewlez.rar. Так как на исследуемом хосте архив не хранится и он открывался только из командной строки, то информацию о сжатых файлах можно поискать в памяти процесса. Получим дамп процесса и найдем в нем все файлы с расширением .txt.

Сдампим адресное пространство процесса с идентификатором 3048.
Выведем строки в полученном файле, но помним, что они в 16-битной кодировке.

Проанализируем Tasks Shedulers. Найдем файлы tasks и выгрузим их.

Адрес файла At1 — 0x000000003fc399b8.

С помощью планировщика задач злоумышленник запустил скрипт 1.bat. Выгрузим его, адрес файла в памяти — 0x000000003f427e50.

Скрипт 1.bat запускает утилиту wce.exe.
Мы проанализировали образ операционной системы на компьютере Target2, восстановили действия злоумышленника. После компрометации системы выгрузили файлы с расширением .txt на контроллере домена 10.1.1.2, сохранили в запароленный архив, а также получили пароль пользователя gideon.
Получим первичную информацию об исследуемой системе.



Профиль исследуемого образа — Windows7SP1x86_23418, IP-адрес хоста — 10.1.1.10, имя компьютера — POS-01-PC.
Получим информацию обо всех запущенных процессах и сетевой активности.

Находим процесс iexplore.exe с идентификатором 3208. Запустим плагин malfind для поиска внедренного в адресное пространство процессов кода.

Из рисунка выше видно, что в процессе iexplore.exe с идентификатором 3208 обнаружена область памяти с защитой на запись, чтение и выполнение, а также виден заголовок MZ (magic byte исполняемого файла). Мы на верном пути. Попробуем выгрузить этот код с помощью плагина malfind и найдем первичную информацию о вредоносе.
Выясним MD5-хеш полученного файла: 491e1a4b51a09d234c9356822cf521a7 — и найдем его на VirusTotal.
Данный модуль относится к семейству вредоносов Dexter.
Найдем сетевое взаимодействие с управляющим сервером.

Вредоносный процесс установил соединение с управляющим сервером, имеющим IP-адрес 54.84.237.92, по порту 80.
Давай получим дамп адресного пространства процесса с идентификатором 3208 и вытащим все URL-адреса, для чего будем использовать утилиту bulk_extractor.
Мы получили файл 3208.dmp. Запустим утилиту bulk_extractor.
В каталоге bulk_ex хранится вся извлеченная структурированная информация, полученная из файла 3208.dmp. В файле url_histograms содержатся все домены, а также число обращений к ним.

Модуль загружался с адреса http://54.84.237.92/allsafe_update.exe, оригинальное имя файла — allsafe_update.exe. Также для поиска URL в файле 3208.dmp можно воспользоваться регулярным выражением /(https?:\/\/)?([\w\.-]+)([\/\w \.-]*)/ и плагином yarascan.
Попробуем найти все файлы с расширением .exe в адресном пространстве дампа процесса.
Откроем файл в hex-редакторе и попробуем найти все названия файлов с расширением .exe.

Специфичное имя исполняемого файла для Allsafecybersec — allsafe_protector.exe. Мы исследовали образ оперативной памяти хоста POS, обнаружили вредоносный процесс с идентификатором 3208, выявили сетевую активность с управляющим сервером 54.84.237.92. Загруженный модуль относится к семейству вредоносных программ Dexter.
Итак, мы восстановили действия злоумышленников, проанализировав образы системной памяти Windows. С помощью фишингового сообщения, содержащего ссылку на обновления VPN-клиента, пользователь хоста загрузил вредоносный файл и запустил его. На машину установился вредонос семейства XtremeRAT, с его помощью злоумышленники управляли скомпрометированной машиной.
Далее атакующие получили пароль пользователя front-desk и Administrator. Для закрепления в системе использовалась ветка реестра SOFTWARE\Microsoft\Windows\CurrentVersion\Run. Компрометация системы произошла 11:31:27 09.10.2015 UTC. С помощью учетной записи Administrator злоумышленник получил доступ к хостам GIDEON-PC и POS-01-PC. На компьютере GIDEON-PC атакующий примонтировал системный диск контроллера домена 10.1.1.2\$c и выгрузил три файла с расширением .txt. Далее атакующий получил доступ к компьютеру POS-01-PC и загрузил на него малварь семейства Dexter.
Источник
Наши проекты:
- Кибер новости: the Matrix
- Хакинг: /me Hacker
- Кодинг: Minor Code