Plurox: модульный бэкдор

В феврале этого года в поле нашего зрения попал любопытный бэкдор. Анализ показал, что зловред обладает довольно неприятными возможностями: может распространяться по локальной сети с помощью эксплойта, предоставлять злоумышленнику доступ к атакованной сети, устанавливать на машины жертв майнеры и другое вредоносное программное обеспечение. Более того, бэкдор оказался модульным, а значит, его функциональность можно при необходимости расширить с помощью плагинов. По итогам анализа зловред получил имя Backdoor.Win32.Plurox.

Характеристики

Plurox написан на С, для сборки используется Mingw GCC, а судя по наличию отладочных строк, обнаруженный зловред еще находился на этапе тестирования.

Отладочные строки в обнаруженных нами образцах

Для общения с командным сервером бэкдор использует TCP-протокол; загрузка плагинов и непосредственно коммуникация происходит по двум разным портам, которые зашиты в теле Plurox; адреса C&С-серверов также прописаны в коде бота. Наблюдая за деятельностью зловреда, мы обнаружили две «подсети»: в одной из них командный центр отдает Plurox только майнеры (модули auto_proc, auto_cuda, auto_gpu_nvidia), а в другой кроме них (auto_opencl_amd, auto_miner) еще и несколько плагинов, о которых пойдет речь ниже.

В семействе Plurox практически не применяется шифрование — лишь несколько ключей размером 4 байта для обычного xor. Пакет обращения к командному серверу выглядит так:

В буфере находится строка, побитово сложенная по модулю 2, с ключом в начале пакета. В ответе от командного центра содержится команда, которую необходимо выполнить, и данные для ее исполнения, зашифрованные с помощью xor. При загрузке плагина бот сам выбирает необходимую битность и запрашивает не просто auto_proc, а auto_proc64. В ответ приходит пакет с зашифрованным плагином – обычным MZ-PE.

Поддерживаемые команды

Всего обнаруженная нами версия Plurox поддерживает семь команд:

  • загрузка и запуск файлов с помощью функции WinAPI CreateProcess;
  • обновление бота;
  • удаление и остановка (удаление собственного сервиса, удаление из автозагрузки, удаление файлов, удаление артефактов из реестра);
  • загрузка и запуск плагина;
  • остановка плагина;
  • обновление плагина (остановка процесса и удаление файла старой версии, загрузка и запуск новой);
  • остановка и удаление плагина.

Плагины

За время наблюдения мы смогли обнаружить несколько плагинов Plurox и изучили их все.

Плагины-майнеры

Зловред может установить на компьютер-жертву один из криптовалютных майнеров, наиболее подходящий под конкретную конфигурацию системы. Бот отправляет пакет с конфигурацией системы на командный сервер, а в ответ получает информацию, какой плагин необходимо загрузить. Всего мы насчитали восемь майнинговых модулей, об особенностях которых нетрудно догадаться по их именам:

  • auto_proc
  • auto_cuda
  • auto_miner
  • auto_opencl_amd
  • auto_gpu_intel
  • auto_gpu_nvidia
  • auto_gpu_cuda
  • auto_gpu_amd

UPnP-плагин

Модуль получает от C&C подсеть с маской /24, перебирает все IP-адреса из нее и с помощью протокола UPnP пытается пробросить порты 135 (MS-RPC) и 445 (SMB) для подбираемого IP-адреса на роутере. В случае успеха сообщает результат командному центру, ждет 300 секунд (5 минут), а затем удаляет проброшенные порты. Мы предполагаем, что данный плагин предназначен для атак на локальную сеть: в течение пяти минут атакующий сможет перебрать все имеющиеся эксплойты для сервисов, работающих на данных портах. Если администратор заметит атаку на хост, то увидит, что она идет напрямую от роутера, а не с локальной машины. В случае успеха злоумышленники закрепятся в сети.

Плагин по описанию очень похож на EternalSilence, однако в отличие от него пробрасывает порт 135, а не 139. Результат работы EternalSilence из статьи Akamai:

{"NewProtocol": "TCP", "NewInternalPort": "445", "NewInternalClient": "192.168.10.165",

"NewPortMappingDescription": "galleta silenciosa", "NewExternalPort": "47622"}

А это шаблон плагина Plurox:

<NewProtocol>TCP</NewProtocol>
<NewInternalPort>%d</NewInternalPort>
<NewInternalClient>%s</NewInternalClient>
<NewEnabled>1</NewEnabled>
<NewPortMappingDescription>galleta silenciosa</NewPortMappingDescription>

В обоих примерах выделена совпадающая строка — описание проброса порта.

SMB-плагин

Этот модуль отвечает за распространение зловреда по сети с помощью эксплойта EternalBlue. Он идентичен модулю wormDll32 от Trojan.Win32.Trickster, однако в коде отсутствуют отладочные строки, а полезная нагрузка в эксплойте загружается с помощью сокетов.

Слева — инжектируемый код SMB-плагина Plurox, справа — инжектируемый код WormDll

Слева — NetServerEnum SMB-плагина Plurox, справа —Trickster WormDll NetServerEnum

Можно увидеть, что у данных сэмплов похож не только инжектируемый код, но и код обычных процедур. На основе этого мы можем предположить, что изученные образцы были собраны из одних исходников (строчек с комментариями, которые есть в плагине Trickster, нет в плагине Plurox), а значит, авторы Plurox могут быть связаны с авторами Trickster.

Защитные решения «Лаборатории Касперского» детектируют бота и его плагины с вердиктами Backdoor.Win32.Plurox и HEUR:Trojan.Win32.Generic.

IoC

C&C-серверы

  • 178.21[.]11.90
  • 185.146[.]157.143
  • 37.140[.]199.65
  • 194.58[.]92.63
  • obuhov2k[.]beget[.]tech
  • webdynamicname[.]com
  • 37.46[.]131.250
  • 188.93[.]210.42

MD5

  • Main body
  • 59523DD8F5CE128B68EA44ED2EDD5FCA
  • C4A74D79030336A0C3CF60DE2CFAE9E9
  • CECFD6BCFDD56B5CC1C129740EA2C524
  • BE591AA0E48E496B781004D0E833E261
  • Trickster Worm module
  • f233dd609821c896a4cb342cf0afe7b2
  • auto_proc32
  • 2e55ae88c67b1d871049af022cc22aac
  • auto_proc64
  • b2d76d715a81862db84f216112fb6930
  • auto_opencl_amd32
  • a24fd434ffc7d3157272189753118fbf
  • auto_opencl_amd64
  • 117f978f07a658bce0b5751617e9d465
  • auto_miner32
  • 768857d6792ee7be1e1c5b60636501e5
  • auto_miner64
  • e8aed94c43c8c6f8218e0f2e9b57f083
  • upnp32
  • 8cf5c72217c1bb48902da2c83c9ccd4e
  • upnp64
  • b2824d2007c5a1077856ae6d8192f523
  • smb32
  • 6915dd5186c65891503f90e91d8716c6
  • smb64
  • cd68adc0fbd78117521b7995570333b2

Публикации на схожие темы

Всего комментариев: 1
  1. Михаил

    Очень интересная статья, именно такие хочется видеть чаще!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *