Wordfence выявила вредоносный плагин для WordPress, управляемый через блокчейн Ethereum

Wordfence выявила вредоносный плагин для WordPress, управляемый через блокчейн Ethereum

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

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

По данным Wordfence, почти каждый элемент программы направлен на то, чтобы избежать обнаружения или пережить попытку удаления. Строки с именами служебных функций, названиями настроек и адресами хранения файлов зашифрованы собственным методом подстановки. Вместо известных приёмов, которые легко заметить при разборе, авторы применили простой шифр замены символов: нужное значение собирается заново только в момент использования. Часть запросов к базе данных скрыта шестнадцатеричными кодами, и среда исполнения подставляет их в текст уже во время работы. Дополнительно программа убирает себя из нескольких разделов административной панели, включая список обязательных плагинов, уведомления об обновлениях и экран состояния сайта.

Закрепление в системе построено на нескольких независимых механизмах. Сначала программа проверяет, не создала ли она уже учётную запись администратора. Если подходящая запись нашлась, она меняет её пароль и пользуется прежним именем пользователя, поэтому общее число учётных записей не растёт. Если записи нет, программа собирает новое имя из короткого набора приставок и случайного набора символов, после чего создаёт полноценного администратора со случайным паролем. Логин и пароль сохраняются во внутренних записях самой программы, чтобы она могла вернуться к ним позже.

Отдельная задача - сделать этого администратора незаметным. Программа вмешивается в запрос, который WordPress выполняет перед выводом списка пользователей, и исключает из результата свою учётную запись. Тот же приём применяется к программному интерфейсу, через который внешние приложения получают данные сайта. Счётчики ролей при этом уменьшаются на единицу, чтобы итоговые числа совпадали с урезанным списком. Администратор видит ровную картину и не замечает лишней учётной записи. Увидеть её можно только при прямом просмотре базы данных.

Пароли собираются при каждом входе. Программа подключается к проверке подлинности пользователя и получает пароль в открытом виде ещё до того, как тот будет преобразован для хранения. Обрабатываются только учётные записи с правами администратора, а собранные значения сохраняются в незашифрованном виде в базе. Самовосстановление работает по расписанию: примерно раз в час программа проверяет собственный файл и, если тот пропал или стал слишком коротким, записывает сохранённую копию заново. Восстановленному файлу ставится старая дата изменения и режим "только чтение". Через отдельный механизм программа возвращает себя в перечень активных расширений, обходя штатную процедуру подключения.

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

Главная особенность этого образца - способ связи с управляющим сервером. Адрес сервера не прописан в коде. Вместо этого программа обращается к смарт-контракту в сети Ethereum через публичные узлы доступа и получает оттуда ключ шифрования и перечень действующих серверов. Блокировать такой канал сложно: единого адреса не существует, а данные доступны через множество независимых точек. Если серверы отключат, злоумышленник обновит контракт, и программа при следующем запуске получит новый список. Обмен данными идёт в зашифрованном виде: на сервер уходит отчёт о состоянии сайта, обратно приходят команды.

Собранный отчёт содержит домен, перечень активных расширений, логины и пароли администраторов, данные заказов интернет-магазина на WooCommerce и учётные данные платёжных сервисов, включая Stripe, Braintree, Authorize.Net и облачные сервисы Amazon. Программа отдельно просматривает файлы конфигурации сайта, окружения и репозитория в поиске ключей оплаты. Получив доступ, злоумышленник может распоряжаться деньгами клиентов и выгружать персональные данные покупателей.

Ответ сервера управляет четырьмя действиями. Первое заменяет саму программу новой версией. Второе удаляет сторонние расширения, попавшие под заданные правила. Третье вырезает заданные фрагменты кода из файлов работающих расширений. Четвёртое добавляет на страницы сайта сторонний сценарий, который выполняется в браузере каждого посетителя. Все четыре набора правил приходят по управляющему каналу, поэтому их можно изменить в любой момент.

Сигнатура для обнаружения этого образца вышла 23 июня 2026 года после внутренней проверки. Клиенты платных тарифов получили защиту сразу, пользователи бесплатной версии - спустя стандартные 30 дней. Владельцам сайтов стоит просмотреть каталог обязательных плагинов и удалить незнакомые компоненты. Проверка базы данных помогает найти лишние учётные записи с правами администратора, которые не отображаются в панели управления. После очистки нужно сменить пароли всех администраторов, ключи платёжных сервисов и облачных сервисов, а также проверить сайты на том же сервере.

Комментарии: 0