В феврале этого года в поле нашего зрения попал любопытный бэкдор. Анализ показал, что зловред обладает довольно неприятными возможностями: может распространяться по локальной сети с помощью эксплойта, предоставлять злоумышленнику доступ к атакованной сети, устанавливать на машины жертв майнеры и другое вредоносное программное обеспечение. Более того, бэкдор оказался модульным, а значит, его функциональность можно при необходимости расширить с помощью плагинов. По итогам анализа зловред получил имя 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:
<NewInternalPort>%d</NewInternalPort>
<NewInternalClient>%s</NewInternalClient>
<NewEnabled>1</NewEnabled>
<NewPortMappingDescription>galleta silenciosa</NewPortMappingDescription>
В обоих примерах выделена совпадающая строка — описание проброса порта.
SMB-плагин
Этот модуль отвечает за распространение зловреда по сети с помощью эксплойта EternalBlue. Он идентичен модулю wormDll32 от Trojan.Win32.Trickster, однако в коде отсутствуют отладочные строки, а полезная нагрузка в эксплойте загружается с помощью сокетов.
Можно увидеть, что у данных сэмплов похож не только инжектируемый код, но и код обычных процедур. На основе этого мы можем предположить, что изученные образцы были собраны из одних исходников (строчек с комментариями, которые есть в плагине 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
Plurox: модульный бэкдор
Михаил
Очень интересная статья, именно такие хочется видеть чаще!