В данной статье рассмотрим молодого представителя класса загрузчиков ВПО – MirrorBlast. Первый образец попал мне в руки в конце сентября. Отличительной особенностью данного ВПО является наличие версий, в создании которых злоумышленники применили самобытный набор инструментов. ВПО MirrorBlast на текущий момент представлено в виде двух реализаций: Rebol-сценарий (контекстно-зависимый объектный язык программирования, созданный специально для распределённых вычислений в Web) и сборка на KiXtart (полусвободный проприетарный сценарный язык для Windows). Представленный набор технологий выделяет данное ВПО на фоне хорошо известных загрузчиков. Не менее интересна цепочка заражения MirrorBlast.
![Рисунок 1 – Цепочка заражения Рисунок 1 – Цепочка заражения](https://habrastorage.org/getpro/habr/upload_files/0db/0a5/860/0db0a58609da603fb6c1b08d47b0a29d.png)
Обнаруженные образцы загрузчика MirrorBlast распространялись злоумышленниками в рамках классических массовых вредоносных рассылок:
![Рисунок 2 – Вредоносное письмо Рисунок 2 – Вредоносное письмо](https://habrastorage.org/getpro/habr/upload_files/c10/485/899/c104858994ed191153d30795ae356e32.png)
Все обнаруженные письма в качестве вложений содержали XLS-документ со встроенным макросом:
-
XLS (вариант Rebol): 7fc2fed914bdc1d7f49bd36d6196fffe818156bd05f48c73ad68021f7723cd4b
-
XLS (вариант KiXtart): d6c487b1fb3d31851921b343f3d131f7cb4c0469a60484037a6fa8cfbdc29dea
![Рисунок 3 – XLS-вложение Рисунок 3 – XLS-вложение](https://habrastorage.org/getpro/habr/upload_files/cbc/364/297/cbc3642979f57f49386f83d3029d32c0.png)
Выполнение встроенных сценариев осуществлялось при открытии пользователем вредоносного документа. Для противодействия детектированию вложенный JS-сценарий хранится в перевёрнутом виде:
![Рисунок 4 – Вложенный сценарий Рисунок 4 – Вложенный сценарий](https://habrastorage.org/getpro/habr/upload_files/9c8/540/4fa/9c85404fa7fadb60d82c6f258d64cfa0.png)
Ниже представлен деобфусцированный код сценария:
![Рисунок 5 – Деобфусцированный сценарий Рисунок 5 – Деобфусцированный сценарий](https://habrastorage.org/getpro/habr/upload_files/509/283/422/509283422e7b52621e4d10dc9f803315.png)
При запуске сценария осуществляется загрузка MSI-файла с управляющего сервера и его запуск с использованием техники LOLbin («Living off the land») с помощью легитимной утилиты MSIEXEC.
-
MSI (вариант Rebol): 61f1b9c62af8cabeb930ac0046adf6844be88896bfb3a5bd659a0d061c559791
-
MSI (вариант KiXtart): 83e4c90dc8bc1c53a4000bef83a355c4e36d2a1ba4a5d0982bc5b9b350278f1f
На момент анализа MSI-файлы имели низкий процент детектирования антивирусными решениями:
![Рисунок 6 – Вердикт VirusTotal Рисунок 6 – Вердикт VirusTotal](https://habrastorage.org/getpro/habr/upload_files/c8c/20f/0c1/c8c20f0c1a8c4f379d6216d3dcae6754.png)
MSI-установщик содержит вредоносный сценарий и подписанный исполняемый файл интерпретатора для выполнения сценария:
Rebol-сценарий: 2de2bb951191a895f0bab7a6e65daecdb5164886ac592901fe3cd8646c4a6f5c
![Рисунок 7 – MSI-установщик Rebol Рисунок 7 – MSI-установщик Rebol](https://habrastorage.org/getpro/habr/upload_files/c4f/4f6/a3b/c4f4f6a3b9309cd8c79fe98633a65303.png)
KiXtart-сценарий: d0d415dbe02e893fb1b2d6112c0f38d8ce65ab3268c896bfc64ba06096d4d09a
![Рисунок 8 – MSI-установщик KiXtart Рисунок 8 – MSI-установщик KiXtart](https://habrastorage.org/getpro/habr/upload_files/8ca/a5a/7ec/8caa5a7ec34cde54cb84fc57aa761e24.png)
При выполнении MSI-установщика осуществлялся запуск вредоносного сценария с помощью соответствующего интерпретатора. При выполнении может осуществляться закрепление в системе через добавление ключа раздел реестра Run (в некоторых обнаруженных образцах данный функционал отсутствовал). Ниже представлен пример запуска Rebol-версии ВПО MirrorBlast:
![Рисунок 9 – Запуск сценария MirrorBlast Рисунок 9 – Запуск сценария MirrorBlast](https://habrastorage.org/getpro/habr/upload_files/8f7/a29/fa9/8f7a29fa9c4d55ba85325a5b9125ccb6.png)
Rebol-версия сценария
Сценарий закодирован с помощью base64:
![Рисунок 10 – Закодированный Rebol-сценарий Рисунок 10 – Закодированный Rebol-сценарий](https://habrastorage.org/getpro/habr/upload_files/b84/1a3/2fd/b841a32fdd96d0d9ebedcf5e9ad711dd.png)
Декодированный сценарий выглядит следующим образом:
![Рисунок 11 – Декодированный Rebol-сценарий Рисунок 11 – Декодированный Rebol-сценарий](https://habrastorage.org/getpro/habr/upload_files/e48/dad/b29/e48dadb2994bc429d012b5d70219eaa8.png)
Функционал сценария можно разделить на 2 основных блока:
-
Сбор информации о заражённой системе (версия ОС, имя компьютера, имя пользователя, архитектура процессора). К собранной информации добавляется версия ВПО (в рассматриваемом образце версия – 1.0.0).
-
Общение с управляющим сервером и запуск дополнительной полезной нагрузки.
Получение дополнительной полезной нагрузки осуществляется с помощью закодированного PowerShell-сценария. Ниже представлен декодированный код данного сценария:
![Рисунок 12 – Вложенный PowerShell-сценарий Рисунок 12 – Вложенный PowerShell-сценарий](https://habrastorage.org/getpro/habr/upload_files/e1f/204/459/e1f204459783a7b86e9a4572f8cb923f.png)
К сожалению, получить полезную нагрузку archive.zip во время анализа не удалось.
Общение с сервером C2:
Первый запрос отправляется на сервер для регистрации устройства:
![Рисунок 13 – Регистрация заражённого устройства на сервере С2 Рисунок 13 – Регистрация заражённого устройства на сервере С2](https://habrastorage.org/getpro/habr/upload_files/298/ffd/543/298ffd54377365404e6792e07a3d3855.png)
В ответе от сервера возвращается уникальный идентификатор хоста, который генерируется на сервере на основе ранее собранных системных данных:
![Рисунок 14 – Передаваемые на сервер данные Рисунок 14 – Передаваемые на сервер данные](https://habrastorage.org/getpro/habr/upload_files/b87/5fc/297/b875fc297f94b49b879810e5f76dff6a.png)
Все запросы к серверу отправляются в бесконечном цикле с передачей сгенерированного идентификатора, закодированного в base64 в качестве GET-параметра. Идентификатор сохраняется на зараженном устройстве в следующей директории:
![Рисунок 15 – Файл с уникальным идентификатором устройства Рисунок 15 – Файл с уникальным идентификатором устройства](https://habrastorage.org/getpro/habr/upload_files/c81/786/88c/c8178688c67fc443610a699535c47abe.png)
После регистрации устройства отправляется запрос, в ответе на который сервер C2 возвращает список активных управляющих серверов:
![Рисунок 16 – Получение списка доступных серверов C2 Рисунок 16 – Получение списка доступных серверов C2](https://habrastorage.org/getpro/habr/upload_files/008/bb8/070/008bb807049d1ac722ef7170cf08f244.png)
Следующий запрос отправляется с целью получения кода команды для выполнения полезной нагрузки на хосте:
![Рисунок 17 – Получение команды сервера Рисунок 17 – Получение команды сервера](https://habrastorage.org/getpro/habr/upload_files/813/003/af2/813003af223e03bf513eeabf530fa69e.png)
В случае получения значения «3» будет выполнен PowerShell-сценарий, загружающий полезную нагрузку. На момент проведения анализа сервер C2 возвращал значения «0» и «-1».
Путь |
Назначение |
http://c2_address/p/r?x=base64<system_info> |
Регистрация устройства |
http://c2_address/p/m?x=base64<UUID> |
Получение cписка адресов доступных C2 |
http://c2_address/p/p?x=base64<UUID> |
Получение команды на скачивание и дополнительной полезной нагрузки |
http://c2_address/p/d?x=base64<UUID> |
Скачивание полезной нагрузки |
KiXtart-версия сценария
Файл KiXtart имеет зашифрованную и сжатую структуру и не содержит код сценария в открытом виде:
![Рисунок 18 – KiXtart-сценарий Рисунок 18 – KiXtart-сценарий](https://habrastorage.org/getpro/habr/upload_files/4e3/f8d/37f/4e3f8d37f22b3f9cb2ddf8ee9875d087.png)
Для восстановления исходного кода сценария можно воспользоваться следующим общедоступным инструментом: Kixtart-Detokenizer.
Основные отличия KiXtart-версии ВПО MirrorBlast от версии, реализованной на языке Rebol, заключаются в изменении набора системных данных, собираемых ВПО для регистрации на сервере C2, а также упрощении самого механизма взаимодействия с сервером.
![Рисунок 19 – Расшифрованный KiXtart-сценарий Рисунок 19 – Расшифрованный KiXtart-сценарий](https://habrastorage.org/getpro/habr/upload_files/7c3/5e3/e25/7c35e3e2563b1394c290202ac625942f.png)
В отличие от версии, реализованной на языке Rebol, данный сценарий собирает и отправляет информацию о запущенных процессах. Данный вариант MirrorBlast не содержит параметра с указанием версии ВПО. Отправка данных осуществляется в закодированном виде:
![Рисунок 20 – Отправка данных о системе на C2 Рисунок 20 – Отправка данных о системе на C2](https://habrastorage.org/getpro/habr/upload_files/3b1/64a/3ff/3b164a3ff5cf7eb1f83842975e43ccd2.png)
Ниже представлены декодированные данные:
![Рисунок 21 – Декодированные данные Рисунок 21 – Декодированные данные](https://habrastorage.org/getpro/habr/upload_files/95b/0dd/37b/95b0dd37bd098262fdee6863ba24f5f3.png)
Интересное совпадение
В процессе анализа ВПО было решено собрать более подробную информацию о домене С2. Ниже представлена Whois-запись домена:
![Рисунок 22 – Whois-запись домена C2 Рисунок 22 – Whois-запись домена C2](https://habrastorage.org/getpro/habr/upload_files/4c7/a9e/c73/4c7a9ec7356ae7385e2d2fe3f93dd48d.png)
Электронный адрес ctouma2@gmail.com, использованный для регистрации домена, ранее уже был использован во вредоносной кампании группировки TA505 для регистрации другого домена в зоне «.su».
Вместо заключения
После заражения устройства ВПО используется злоумышленниками в качестве «маяка». MirrorBlast отправляет запросы на управляющий сервер, пока не будет получена команда на сохранение и запуск дополнительной полезной нагрузки. Получить дополнительную полезную нагрузку с управляющего сервера в процессе анализа образца, к сожалению, не удалось. Однако использование нестандартных языков программирования для разработки ВПО может указывать на принадлежность MirrorBlast продвинутой группе злоумышленников, на что косвенно указывает и пересечение в сетевой инфраструктуре с одной из вредоносных кампаний группировки TA505.
MITRE ATT&CK Matrix
Tactic |
Technique |
Technique Name |
Initial Access |
T1566.001 |
Phishing: Spearphishing Attachment |
Execution |
T1204.002 |
User Execution: Malicious File |
T1059.001 |
Command and Scripting Interpreter: PowerShell |
|
T1059.003 |
Command and Scripting Interpreter: Windows Command Shell |
|
T1059.005 |
Command and Scripting Interpreter: Visual Basic |
|
– |
Command and Scripting Interpreter: KiXtart |
|
– |
Command and Scripting Interpreter: Rebol |
|
Persistence |
T1547.001 |
Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder |
Defense Evasion |
T1112 |
Modify Registry |
T1218.007 |
Signed Binary Proxy Execution: Msiexec |
|
Discovery |
T1012 |
Query Registry |
T1082 |
System Information Discovery |
|
T1424 |
Process Discovery |
|
T1033 |
System Owner/User Discovery |
|
Command and Control |
T1132.001 |
Data Encoding: Standard Encoding |
T1071.001 |
Application Layer Protocol: Web Protocols |
ссылка на оригинал статьи https://habr.com/ru/articles/585096/
Добавить комментарий