Исследователи ESET проанализировали деятельность Webworm в 2025 году — это связанная с Китаем APT-группа, которая изначально нацеливалась на организации в Азии, но недавно перенесла свое внимание на Европу. Хотя это наш первый публичный пост в блоге об этой группе, мы наблюдаем за деятельностью Webworm с тех пор, как Symantec впервые сообщила об этом злоумышленнике в 2022 году. На протяжении многих лет мы наблюдали, как этот злоумышленник постоянно меняет свои тактики, методы и процедуры (TTP).

Webworm связан с другими APT-группами, связанными с Китаем, такими как SixLittleMonkeys и FishMonger. В прошлом он использовал известные семейства вредоносных программ, такие как McRat (также известный как 9002 RAT) и Trochilus, хотя в последние годы он начал переходить как к существующим, так и к настраиваемым прокси-инструментам, которые являются более скрытными, чем полноценные бэкдоры. В 2025 году Webworm также добавила в свой набор инструментов два новых бэкдора: EchoCreep, который использует Discord для связи с командно-контрольным сервером, и GraphWorm, который использует Microsoft Graph API для той же цели. Группа также известна тем, что размещает свое вредоносное ПО и инструменты в репозиториях GitHub, обеспечивая возможность прямой загрузки вредоносного ПО на компьютер жертвы.

Ключевые моменты статьи:
  • С момента своего обнаружения в 2022 году APT-группа Webworm активно обновляет свой набор инструментов и целевые объекты.
  • В 2025 году группа начала использовать бэкдоры, которые используют Discord и Microsoft Graph API для связи с командно-контрольным сервером.
  • Исследователи ESET расшифровали более 400 сообщений Discord и файл истории команд bash, обнаруженный на сервере оператора, с командами разведки, использованными против более чем 50 уникальных целей.
  • Помимо бэкдоров, Webworm использует множество существующих и настраиваемых прокси-инструментов.
  • Группа использует GitHub для размещения своего вредоносного ПО.

Мы приписываем кампанию 2025 года Webworm на основании информации, которую мы обнаружили после расшифровки сообщений Discord, используемых бэкдором EchoCreep для связи с командно-контрольным сервером. Эта информация привела нас к репозиторию GitHub злоумышленников, который содержал размещенные артефакты, такие как приложение SoftEther VPN. Внутри конфигурационного файла SoftEther мы обнаружили IP-адрес, совпадающий с известным IP-адресом Webworm.

Жертвы, пострадавшие от Webworm из стран, упомянутых далее в этом посте, были должным образом уведомлены. Кроме того, выявленные нами сервисы, такие как репозиторий GitHub и корзина S3, были закрыты.

Эволюция подхода

В 2022 году одной из основных характеристик Webworm было использование устоявшихся бэкдоров и троянов удаленного доступа (RAT), таких как McRat и Trochilus. Как описано в блоге Symantec, изначально группа нацеливалась в основном на страны Азии.

В 2024 году мы заметили, что группа начала отходить от традиционных бэкдоров в пользу легитимных или полулегитимных инструментов, таких как SOCKS-прокси (SoftEther VPN) и другие сетевые решения. Хотя они помогают Webworm уклоняться от обнаружения, в них отсутствует полный набор команд, обычно доступных в бэкдорах, поэтому операторам приходится полагаться на интерпретаторы команд, такие как cmd.exe или powershell.exe.

В то же время мы также заметили, что группа начала сокращать свою деятельность в Азии и переносить акцент на европейские страны. Эта тенденция продолжилась в 2025 году: наблюдаемые нами атаки были направлены на правительственные организации в Бельгии, Италии, Сербии и Польше. Одновременно с этим Webworm также совершила набег на Южную Африку, взломав местный университет.

В этих последних кампаниях Webworm, похоже, полностью отказалась от Trochilus и McRat, продолжая при этом расширять свой набор инструментов. Среди новых инструментов выделяются два новых бэкдора: EchoCreep на базе Discord и GraphWorm на базе Microsoft Graph. Хотя группа продолжала использовать существующие прокси-решения, в частности написанные на Go iox (инструмент для перенаправления портов и интранет-прокси) и frp (быстрый обратный прокси), она также добавила собственные прокси-решения WormFrp, ChainWorm, SmuxProxy и WormSocket.

Эти пользовательские прокси-инструменты не только способны шифровать коммуникации, но и поддерживают цепочки через несколько хостов как внутри сети, так и за ее пределами. Мы полагаем, что операторы используют эти инструменты в сочетании с SoftEther VPN, чтобы лучше заметать следы и повысить скрытность своей деятельности. Все прокси-серверы и VPN-сервисы Webworm представляют собой облачные серверы, входящие в сетевую инфраструктуру, контролируемую Vultr и IT7 Networks. Судя по количеству прокси-инструментов и их сложности, Webworm, возможно, создает гораздо более обширную скрытую сеть, обманывая жертв и заставляя их запускать свои прокси-серверы.

Связь C&C через Discord и Microsoft Graph API

В 2025 году Webworm начал злоупотреблять Discord и Microsoft Graph API для C&C-связи. При анализе бэкдора EchoCreep нам удалось обнаружить более 400 сообщений Discord. Мы также нашли четыре уникальных канала, каждый из которых соответствовал отдельной жертве. EchoCreep использует Discord для загрузки файлов, отправки отчетов о работе и получения команд. Сетевая связь бэкдора проходит через API Discord с помощью специально сформированных HTTP-запросов.

В случае с GraphWorm, который использует Microsoft Graph API для связи с командным центром, мы обнаружили, что он использует исключительно конечные точки OneDrive, в частности для получения новых заданий и загрузки информации о жертвах. Для каждой конкретной жертвы создается отдельный каталог OneDrive. Поскольку экземпляр OneDrive, используемый GraphWorm, работает в облаке, бэкдор может использовать конечную точку Microsoft Graph API /createUploadSession для загрузки больших файлов, разбитых на части.

Контейнер Amazon S3

В ходе нашего расследования кампаний 2025 года мы обнаружили, что Webworm начал использовать свое собственное прокси-решение WormFrp для извлечения конфигураций из скомпрометированного корзины Amazon S3, расположенной по адресу wamanharipethe.s3.ap-south-1.‌amazonaws[.]com. Корзина Amazon S3 — это решение для публичного облачного хранения, доступное в Amazon Web Services, где S3 означает «простая служба хранения». Мы полагаем, что скомпрометированный бакет является общедоступной — или даже, возможно, неправильно настроенной — версией whpjewellers.s3.amazonaws[.]com.

Наш первоначальный анализ файлов, хранящихся в этом бакете, выявил несколько снимков состояния хостов виртуальных машин, один из которых содержал текущую конфигурацию и активное состояние машины, принадлежащей государственному учреждению в Италии. Это может означать, что злоумышленники смогли успешно проникнуть в среду, отвечающую за управление виртуальными машинами жертвы. Однако в равной степени возможно, что они получили доступ лишь к одному хосту, на котором хранились эти снимки. В любом случае, очевидно, что через этот S3-бакет Webworm может выводить данные, в то время как ничего не подозревающая жертва оплачивает счет за услугу.

В конце октября 2025 года злоумышленники загрузили в корзину S3 еще один файл — исполняемый файл с именем SharpSecretsdump. Этот инструмент, как указано в его документации, имитирует работу печально известного скрипта secretsdump.py из Impacket для сбора учетных данных с зараженного хоста Windows, на котором он развернут. Мы предполагаем, что операторы Webworm загрузили этот инструмент в корзину S3 для использования против своих жертв.

В период с декабря 2025 года по январь 2026 года операторы загрузили в сервис 20 новых файлов, два из которых были похищены из государственного учреждения в Испании. Первый из этих двух файлов, XML-файл, содержит сохраненные конфигурации виртуальных хостов, используемых mRemoteNG, менеджером удаленных подключений с открытым исходным кодом. Второй файл представляет собой диаграмму Microsoft Visio, подробно описывающую инфраструктуру, лежащую в основе домена, используемого этим государственным учреждением.

Репозиторий GitHub

При изучении инфраструктуры C&C EchoCreep в Discord нам удалось извлечь уникальные идентификаторы Discord, относящиеся к пользователям, каналам и гильдиям. К сожалению, из-за ограниченного доступа к токену бота не было API-вызовов, которые можно было бы использовать для перебора информации о владельцах сервера или самом боте.

Однако сообщения Discord раскрыли репозиторий GitHub https://github[.]com/anjsdgasdf/WordPress, который выступает в качестве файлового хранилища для других инструментов и вредоносного ПО, используемых Webworm (один из таких инструментов использовал взломанный корзину Amazon S3, упомянутую выше). Являясь прямым форком легитимного репозитория WordPress, он мог скрываться у всех на виду. На рисунке 1 показан обзор этого репозитория с файлами, размещенными в каталоге wp-admin.

Figure 1. Forked WordPress repository
Рисунок 1. Форк репозитория WordPress

Проникновение

Несмотря на то, что нам не удалось найти точку входа, которую Webworm использует для взлома своих жертв, мы обнаружили, что группа использует утилиты с открытым исходным кодом для сбора файлов и каталогов с веб-серверов жертв и поиска уязвимостей в них.

Мы обнаружили это после того, как заметили, что компьютер жертвы обменивался данными с прокси-сервером, размещенным по адресу 64.176.85[.]158. Проверка IP-адреса показала, что ранее на этом сервере по порту 80 размещался открытый каталог, содержавший упомянутые утилиты с открытым исходным кодом. На рисунке 2 представлен обзор этого открытого каталога.

Figure 2. Open directory listing
Рисунок 2. Открытый список каталогов

Ключевыми каталогами, имеющими отношение к нашему блогу, являются nuclei/, .dirsearch/ и файл истории .bash. Как видно на рисунке 3, операторы Webworm смогли провести перебор каталогов и файлов на веб-серверах с помощью dirsearch — утилиты для сканирования веб-путей, способной фильтровать определенные коды статуса, — и nuclei — сканера уязвимостей с открытым исходным кодом, чтобы выявить любые возможные уязвимости в конкретных целях.

Figure 3. History of nuclei and dirsearch
Рисунок 3. История nuclei и dirsearch

Результаты запуска dirsearch были сохранены в каталоге .dirsearch, что показало, что инструмент был запущен против 56 целей из различных стран, таких как Испания, Венгрия, Бельгия, Нигерия, Чехия и Сербия.

В каталоге nuclei мы обнаружили скрипт LegalHackers с именем _1.sh. Это эксплойт для подтверждения концепции уязвимости CVE-2017-7692, позволяющий выполнять удаленный код после аутентификации в веб-почтовом клиенте SquirrelMail. Просмотрев каталог .bash_history, мы обнаружили, что скрипт с похожим именем был запущен против сербской учетной записи веб-почты. Это позволяет предположить, что группа получила учетные данные сербской жертвы и, возможно, использовала эту уязвимость для первоначального доступа.

Набор инструментов

В этом блоге мы подробно рассмотрим новые дополнения к арсеналу Webworm. Сначала — два собственных бэкдора: EchoCreep и GraphWorm. Затем — собственные прокси-решения, которые группа развернула в своих кампаниях 2025 года: WormFrp, ChainWorm, SmuxProxy и WormSocket.

EchoCreep

EchoCreep — это новый бэкдор, написанный на Go, который использует Discord в качестве C&C-сервера; сообщения начали поступать уже21 марта 2024 года. Он способен выполнять команды, приведенные в таблице 1.

Таблица 1. Команды EchoCreep

Команда Аргументы Описание
upload Путь к файлу Загружает файл в качестве вложения в Discord по указанному пути в файловой системе.
Скачать Источник (URL) и место назначения (путь) Загружает файл с указанного URL-адреса в место назначения по пути в файловой системе.
shell Строка Выполняет строку в оболочке cmd.exe.
sleep Целое число (секунды) Задерживает выполнение на указанное количество секунд, прежде чем отправить отчет об успешном выполнении на сервер Discord.

Хотя нам не удалось подтвердить, как бэкдор проник на компьютер жертвы, похоже, что постоянное присутствие было обеспечено только после взлома с помощью команд C&C.

Вся сетевая коммуникация EchoCreep проходит через конечные точки API Discord с использованием специально сформированных HTTP-запросов. Для анализа команд бэкдор сначала должен декодировать их с помощью base64, а затем расшифровать с помощью AES-CBC-128. На рисунке 4 показан пример команды и ответа после их расшифровки.

{"guild": "lol", "channel_id": 1220298277849796651, "channel": "fire", "content": "shell whoami", "time": "2025-04-14T08:35:41.751000+00:00", "author_id": 1219910976007045171, "author": "jonson889912"}

Рисунок 4. Команда EchoCreep и ответ

Из всех 433 сообщений Discord, которые мы расшифровали, не было ясно, кто именно пострадал, поскольку они не являются клиентами ESET. Однако нам удалось по крайней мере определить количество жертв, скомпрометированных EchoCreep, на основе названий каналов. Мы обнаружили, что эти названия представляли собой либо IP-адрес жертвы, либо комбинацию IP-адреса и имени хоста компьютера жертвы. Обнаружив четыре уникальных канала, использующих эту конвенцию именования, мы полагаем, что жертв четыре.

При первом запуске EchoCreep не пытается создать новый канал, а отправляет сообщение «Up Success» в уже существующий канал (см. рис. 5 и рис. 6). Это указывает на то, что каналы были созданы до запуска бэкдора, что позволяет предположить, что операторы либо знали цели, либо похитили необходимую информацию после первоначального доступа.

Figure 5. EchoCreep Discord Up Success message
Рисунок 5. EchoCreep Discord Вверх Успех сообщение
Figure 6. EchoCreep backdoor Up Success message
Рисунок 6. Бэкдор EchoCreep Вверх Успех сообщение

Самые ранние сообщения, отправленные с21 марта 2024 года по31 марта 2025 года, по-видимому, были тестовыми командами операторов. На рисунке 7 видно, что злоумышленники оставили там некоторую информацию о своих локальных IP-конфигурациях.

Ethernet-адаптер Ethernet0: Суффикс DNS для конкретного соединения . : lan Локальный IPv6-адрес . . . . . : fe80::2111:d79b:b1ba:1f4a%10 IPv4-адрес. . . . . . . . . . . : 192.168.8.174 Маска подсети . . . . . . . . . . . : 255.255.255.0 Шлюз по умолчанию . . . . . . . . : 192.168.8.1

Рисунок 7. Вывод команды ipconfig в Windows

Многие из других ранних сообщений содержали бессмысленные значения, возможно, использовавшиеся в качестве теста для проверки правильности связи, как показано на рисунке 8.

Figure 8. Junk commands
Рисунок 8. Нежелательные команды

Вскоре после этого мы начали наблюдать операции загрузки, подобные тем, что показаны на рисунке 9, свидетельствующие о разработке расширенных команд.

Figure 9. frp download
Рисунок 9. Загрузка frp

Кроме того, на рисунке 10 мы видим тестовые действия, которые, возможно, были ранними адаптациями механизма персистентности, который Webworm позже использовал бы против жертв. Интересно также то, что он выполняет команду run вместо команды shell, которая использовалась в конечном итоге, что подтверждает наше заключение о том, что это были ранние тесты.

Figure 10. Test VBScript
Рисунок 10. Тестовый VBScript

Первое фактическое взлома произошло9 апреля 2025 года, когда в журналах, связанных с новым именем канала, появились новые сообщения «Up Success». Вскоре после первоначального взлома злоумышленник использовал команды оболочки для запуска curl с целью загрузки файлов.

GraphWorm

GraphWorm — еще один новый бэкдор, используемый Webworm. Он запускается каждый раз, когда жертва входит в систему. GraphWorm использует Microsoft Graph API для связи с командно-контрольным сервером, что свидетельствует о наличии у Webworm новой инфраструктуры для взлома жертв, хранящей информацию в арендаторе Microsoft Graph. Судя по тому, что мы видели, бэкдор использует исключительно OneDrive для получения команд и отправки данных жертвы. Данные, участвующие в этой связи, сначала шифруются по стандарту AES-256-CBC с помощью вызовов библиотеки OpenSSL EVP, а затем кодируются в base64. GraphWorm также позволяет настраивать параметры прокси, тем самым туннелируя любой трафик через указанный прокси-сервер.

При первом запуске бэкдор создает уникальный идентификатор жертвы путем объединения IP-адреса сетевого адаптера, идентификатора процессора и серийного номера физического устройства с использованием инфраструктуры WMI.

Уникальный идентификатор используется в процессе переименования или создания новой папки OneDrive в рамках арендатора. Каждая папка является уникальной для конкретного взлома и содержит определенные подпапки для каждого жертвы. Три подпапки /files, /result и /job используются для хранения файлов, результатов команд, выполненных на компьютере жертвы, и заданий, поставленных операторами в очередь на выполнение, соответственно.

После успешного создания папки бэкдор собирает информацию о компьютере жертвы, в результате чего получается объект JSON, показанный на рисунке 11.

{ "Host Name": "<computer_name>", "IP Address": "<ip>", "MAC Address": "<mac>", "Operating System": "<os>", "Privilege": "<Admin|Regular User>", "Time Zone": "<UTC-XXXX>", "User Name": "<username>", "Workgroup": "<workgroup", "publicKey": "<key>" }

Рисунок 11. Структура конфигурации

Команды, которые GraphWorm получает через OneDrive, описаны в таблице 2 в порядке обнаружения.

Таблица 2. Команды GraphWorm

Команда Аргументы Описание
keyExchange Строка <adminPublicKey> Это значение устанавливается в памяти, и, к сожалению, его назначение нелегко определить. Оно может использоваться для установки открытого ключа внутри приложения с целью получения обратного доступа к оболочке.
sessionKey String <sessionKey> String <keyId> Еще один набор значений, установленных в памяти, и не ясно, как они используются. Предполагается, что это закрытый ключ RSA и ключ AES, которые обновляются в памяти и используются для криптографических функций.
kill Н/Д Останавливает выполнение бэкдора.
shell Н/Д Запускает новый экземпляр cmd.exe.
exec Путь к файлу Запускает новый процесс с помощью CreateProcessW.
upload Строка <onedrive_path> Строка <agent_path> Загружает файл на основе пути OneDrive и агента. Предполагается, что <onedrive_path> — это полный путь, как он отображается в OneDrive, что приводит к формату /me/drive/root:/<onedrive_path>, а <agent_path> — это полный путь к файлу, как он отображается на диске.
sleep Целое Обновляет продолжительность ожидания.
poll Целое Обновляет продолжительность ожидания по неизвестной причине. Возможно, потому что разработка команд еще продолжается.
rest Целое Переход в режим ожидания на определенный промежуток времени.
upgrade Текст JSON Текст JSON содержит настройки конфигурации для обновления полей в памяти, после чего эти изменения записываются в файл config.dat на диске.
скачать Строка <onedrive_path> Строка <file_path> Загружает файл из указанного <file_path> в нужный путь в OneDrive. Предполагается, что <onedrive_path> имеет формат /me/drive/root:/<uniqueid>/<filename>/:content.
heartbeat Целое число <min> Целое число <max> Используется для создания случайного периода задержки между минимальным и максимальным временем ожидания обновления файла alive.txt.

В ходе нашего исследования мы заметили, что по завершении выполнения команды оболочки результаты записывались в файл beacon_shell_output.txt и сохранялись во временном каталоге. Для загрузки этих больших выводов команд оболочки операторы, скорее всего, использовали конечную точку Microsoft Graph API /createUploadSession, поскольку бэкдор работает с облачным экземпляром OneDrive.

WormFrp

WormFrp — это инструмент прокси-туннелирования, вдохновленный существующей утилитой fast reverse proxy (frp), которую также использует Webworm. Злоумышленники расширили frp за счет пользовательских функций, чтобы инструмент мог получать свои конфигурационные значения из скомпрометированного корзины Amazon S3 wamanharipethe.s3.ap-south-1.amazonaws[.]com.

Скомпрометированный S3-бакет содержит несколько файлов с расширением .txt, зашифрованных по стандарту AES в режиме ECB. Каждый экземпляр WormFrp имеет жестко запрограммированный уникальный ключ AES и извлекает уникальный файл из S3-бакета. Конфигурационный файл обновляется во время выполнения WormFrp, чтобы отправить информацию обратно оператору и определить, откуда подключается туннель.

Для запуска WormFrp требуется аргумент командной строки. После получения конфигурации из корзины S3 WormFrp пытается войти на сервер frp, открывая обратный прокси и прокси TCP SOCKS5. Судя по наблюдаемым образцам, имя пользователя и пароль всегда генерируются случайным образом.

Каждый экземпляр WormFrp подключается к серверу frp через публичный IP-адрес. После настройки обратного прокси с компьютера жертвы может наблюдаться дополнительная сетевая активность.

ChainWorm

ChainWorm — еще один настраиваемый прокси-инструмент, используемый операторами Webworm. Похоже, что основная функция ChainWorm заключается в содействии расширению сетевой инфраструктуры прокси Webworm путем открытия порта на компьютере, на котором он развернут. Webworm может использовать этот инструмент для цепочки прокси, где специально сформированные данные отправляются через порт, соединяющийся с другой удаленной системой, перенаправляя трафик к следующему пункту назначения на неопределенное количество прыжков.

Как правило, порт, открываемый на зараженном хосте, жестко запрограммирован в инструменте. Затем на этом порту открываются TCP-соединения для приема любых передач, которые приведут к дополнительным исходящим соединениям либо с прямым IP-адресом, либо с именем хоста вместе с его портом.

Используя комбинацию имени хоста и порта, устанавливается соединение со следующим звеном в цепочке. После установления соединений между источником и пунктом назначения любые проходящие данные теперь перенаправляются к следующему вышестоящему узлу в цепочке. Если в какой-либо момент возникает исключение, источник получает уведомление в виде последовательности байтов 0x05 01 00 01 00 00 00 00 00 00 перед попыткой повторного подключения.

SmuxProxy

SmuxProxy — это утилита, основанная на iox, инструменте для перенаправления портов и интранет-прокси. В дополнение к существующим функциям iox, SmuxProxy содержит небольшие настройки, позволяющие использовать жестко запрограммированный IP-адрес и порт сервера, что упрощает операторам запуск и выполнение. Он также может генерировать случайный ключ и вектор инициализации для зашифрованной связи.

WormSocket

Последним из новых настраиваемых прокси Webworm является WormSocket — инструмент, использующий настроенные серверы, работающие под управлением socket.io, для установления прокси для веб-запросов. WormSocket позволяет создавать высоко настраиваемую и масштабируемую прокси-сеть, обеспечивая взаимодействие с конкретными узлами в любой момент времени.

Его настройка основана как на жестко запрограммированных значениях, так и на аргументах командной строки. WormSocket принимает опциональный аргумент командной строки —proxy, за которым следует URI, содержащий базовую аутентификацию, используемый в качестве конфигурации для создания объекта WebProxy. Затем прокси используется поверх соединения с веб-сокетом. Настройки для этого веб-сокета жестко запрограммированы в WormSocket.

После запуска WormSocket сначала подключается к настроенному IP-адресу и порту, пытаясь установить соединение с использованием схем ws, wss, http и https. После успешного установления соединения запускается асинхронная задача для приема и отправки новых сообщений. Существует четыре возможных типа сообщений, подробно описанных в таблице 3.

Тип Класс сообщения Значения Описание
1 InitiateForwarderClientReq Строка <ForwardedClientId> Использует поле IpAddress для выполнения DNS-поиска с целью получения адреса хоста возможного пропущенного домена, результат которого используется для создания нового TCP-клиента с указанным портом. Как только клиент устанавливает соединение, он сохраняется в словаре пар ForwardedClientId и TcpClient.
Кроме того, создается новый объект сообщения InitiateForwarderClientRep с той же информацией, что и для создания TCP-клиента, и отправляется вместе с сообщениями, прочитанными через клиент и сохраненными в ConcurrentQueue для последующего использования.
String <IpAddress>
Integer <Port>
2 InitiateForwarderClientRep String <ForwarderClientId> ForwarderClientId используется для поиска в словаре клиентов уже настроенного TCP-клиента, созданного InitiateForwarderClientReq ; все остальные значения, по-видимому, не используются. После извлечения TCP-клиента новые сообщения считываются и сохраняются в ConcurrentQueue для последующего использования.
String <BindAddress>
Целое число <BindPort>
Integer <AddressType>
Целое число <Reason>
3 Сообщение отправки данных Строка <ForwarderClientId> Отправляет данные с кодировкой base64 на TCP-клиент, связанный с ForwarderClientId.
Массив байтов <Data>
4 CheckInMessage Строка <MessengerId> Присваивает MessengerId внутреннему
MessengerId, который, по-видимому, ни для чего не используется.

Заключение

Webworm — это связанная с Китаем группа APT, действующая, по крайней мере, с 2022 года. Она использует постоянно развивающийся набор инструментов, состоящий в основном из бэкдоров и комбинации прокси-утилит как с открытым исходным кодом, так и собственной разработки. В кампаниях 2025 года, которые мы наблюдали, Webworm начала использовать бэкдоры на базе Discord (EchoCreep) и Microsoft Graph API (GraphWorm). Группа также продолжает размещать файлы в репозиториях GitHub, и мы можем только предположить, что она будет продолжать это делать и в будущем.

В ходе нашего анализа нам посчастливилось восстановить команды, выполненные с сервера, что позволило получить представление о потенциальных методах первоначального доступа группы с использованием сканера уязвимостей с открытым исходным кодом, а также выявить некоторые из ее целей.

Очевидно, что Webworm — очень активная APT-группа, которая будет и дальше искать новые инструменты для взлома своих жертв, будь то с точки зрения первоначального доступа или после взлома.

По любым вопросам, касающимся наших исследований, опубликованных на WeLiveSecurity, обращайтесь к нам по адресу threatintel@eset.com.
ESET Research предлагает частные отчеты по APT-угрозам и информационные ленты. По любым вопросам, касающимся этой услуги, посетите страницу ESET Threat Intelligence.

IoC

Полный список индикаторов компрометации (IoC) и образцов можно найти в нашем репозитории GitHub.

Файлы

SHA-1 Имя файла Обнаружение Описание
CB4E50433336707381429707F59C3CBE8D497D98 SearchApp.exe WinGo/Agent.ZK Бэкдор EchoCreep, использующий Discord для связи с командным центром.
1DF40A4A31B30B62EC33DC6FECC2C4408302ADC7 ssh.exe WinGo/HackTool.Proxy.AE Прокси-инструмент WormFrp.
7DCFE9EE25841DFD58D3D6871BF867FE32141DFB svc.exe MSIL/HackTool.Proxy.H Прокси-инструмент WormHole.
77F1970D620216C5FFF4E14A6CCC13FCCC267217 C2OverOneDrive_v0316.exe Win32/Agent.VWD Бэкдор GraphWorm, использующий Microsoft Graph API для связи с командным центром.
948159A7FC2E688386864BEA59FD40DFFC4B24D6 MessengerClient.exe MSIL/HackTool.Proxy.I WormSocket proxy tool.
A3C077BDF8898E612CCD65BC82E7960834ADB2A9 dsocks.exe WinGo/Riskware.Iox.L SmuxProxy, настраиваемый iox с жестко запрограммированным IP.

Сеть

IP Домен Хостинг-провайдер Впервые обнаружен Подробности
Н/Д wamanharipethe.s3.ap-south-1.amazonaws[.]com Н/Д 14.04.2025 Скомпрометированный S3 для конфигураций frp и экфильтрации данных.
45.77.13[.]67 Н/Д Vultr Holdings, LLC 07.04.2025 Сервер веб-сокетов WormSocket.
64.176.85[.]158 N/A The Constant Company, LLC 28.06.2025 Сервер SmuxProxy.
104.243.23[.]43 N/A IT7 Networks Inc 09.04.2025 Сервер SmuxProxy.
108.61.200[.]151 Н/Д Vultr Holdings, LLC 10.04.2025 Прокси-сервер WormFrp.
144.168.60[.]233 Н/Д IT7 Networks Inc 30.06.2025 IP обратного шелла обнаружен на сервере SmuxProxy.

Техники MITRE ATT&CK

Эта таблица была составлена с использованием версии 19 фреймворка MITRE ATT&CK.

Тактика ID Название Описание
Разведка T1595.002 Активное сканирование: сканирование уязвимостей Webworm использовал сканер уязвимостей с открытым исходным кодом Nuclei против целей.
T1595.003 Активное сканирование: сканирование по списку слов Webworm использовал dirsearch, который использует словари, для сканирования веб-каталогов на целях.
Разработка ресурсов T1588.006 Получение возможностей: уязвимости Webworm использовал общедоступный код эксплойта для удаленного выполнения кода после аутентификации.
T1583.004 Приобретение инфраструктуры: сервер Серверы для WormFrp, SmuxProxy и WormSocket размещены на облачных сервисах, работающих в ASN Vultr и IT7 Network.
T1583.003 Инфраструктура: виртуальный частный сервер Webworm использует серверы SoftEther VPN, которые, как было замечено, размещены на облачных сервисах Vultr.
T1584.006 Инфраструктура для взлома: веб-сервисы Было замечено, что Webworm взламывает корзины S3, а также использует такие инструменты, как nuclei, для поиска точек опоры.
T1608.002 Возможности подготовки: инструмент для загрузки Webworm размещал инструменты в своем репозитории GitHub для прямой загрузки на скомпрометированные системы.
Выполнение T1059.003 Интерпретатор команд и скриптов: командная оболочка Windows EchoCreep и GraphWorm используют командную строку Windows для выполнения команд оператора.
T1053.005 Запланированная задача/работа: Запланированная задача EchoCreep запускается в рамках специально созданной запланированной задачи MicrosoftSSHUpdate.
Сохранение T1547.001 Автозапуск при загрузке или входе в систему: ключи запуска реестра / папка «Автозагрузка» GraphWorm сохраняет свою активность путем внесения изменений в ключи автозапуска реестра.
Ослабление защиты T1070.004 Удаление индикатора: удаление файла GraphWorm удаляет созданный файл-маячок после успешной отправки данных.
T1112 Изменение реестра GraphWorm вносит изменения в ключи автозапуска реестра для обеспечения постоянного присутствия.
T1027.013 Зашифрованные или закодированные файлы или информация: зашифрованный/закодированный файл GraphWorm и EchoCreep используют методы шифрования и кодирования для обфускации данных.
T1550.001 Использование альтернативных средств аутентификации: токен доступа к приложению GraphWorm и EchoCreep используют ключи API для связи с инфраструктурой C&C.
T1078.004 Действительные учетные записи: учетные записи облачных сервисов GraphWorm использует действительную учетную запись облачного сервиса для доступа к API Microsoft Graph.
T1070.006 Удаление индикатора: Timestomp EchoCreep содержит измененный атрибут временной метки.
Боковое перемещение T1021.007 Удаленные службы: облачные службы Webworm использует взломанный S3-бакет в качестве промежуточной зоны хранения файлов.
Сбор T1005 Данные из локальной системы Как EchoCreep, так и GraphWorm могут собирать данные из локальной системы.
T1074.001 Подготовка данных: локальная подготовка данных GraphWorm промежуточно сохраняет файл маяка локально перед загрузкой на C&C.
T1074.002 Подготовка данных: удаленная подготовка данных GraphWorm промежуточно сохраняет файлы и задачи в OneDrive через Microsoft Graph API.
Управление и контроль T1071.001 Протокол прикладного уровня: веб-протоколы EchoCreep, GraphWorm и WormSocket используют HTTP и протокол WebSocket.
T1132.001 Кодирование данных: стандартное кодирование EchoCreep, GraphWorm и WormSocket используют кодировку base64.
T1573.002 Зашифрованный канал: асимметричная криптография EchoCreep, GraphWorm, WormSocket и WormFrp в той или иной степени используют AES.
T1090.003 Прокси: многоузловой прокси WormSocket и ChainWorm создают несколько прокси-узлов.
T1090.002 Прокси: внешний прокси WormFrp, ChainWorm, WormSocket, SmuxProxy и GraphWorm способны подключаться к внешним прокси-серверам.
T1090.001 Прокси: внутренний прокси ChainWorm и WormSocket могут создавать внутренние прокси.
T1102.002 Веб-сервис: двунаправленная связь EchoCreep и GraphWorm используют Discord и Microsoft Graph API для инфраструктуры C&C.
Экфильтрация T1041 Экфильтрация через канал C2 EchoCreep и GraphWorm выносят данные в свои соответствующие инфраструктуры C&C.
T1567.002 Экфильтрация через веб-сервис: экфильтрация в облачное хранилище GraphWorm выводит данные в OneDrive через Microsoft Graph API.

Читать полный анализ на WeLiveSecurity →