Скрытая рекламная кампания на WordPress: как несколько строк кода компрометируют тысячи посетителей

information security

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

Описание

Расследование показало, что источником заражения стало вредоносное изменение в файле functions.php активной темы. Внедренный PHP-код тихо загружал внешний JavaScript с контролируемых злоумышленниками доменов и внедрял его в фронтенд сайта. Этот механизм работал практически незаметно для владельцев ресурсов.

Первым признаком проблемы стала подозиртельная строка JavaScript, обнаруженная при просмотре исходного кода страницы. Начав копать глубже, специалисты установили, что этот JavaScript-файл загружался как минимум на 17 сайтах на момент расследования. Быстрая проверка в VirusTotal подтвердила опасения - домен был внесен в черный список 17 вендорами средств безопасности.

После тщательного сканирования файлов сайта был обнаружен внешне безобидный блок кода в нижней части файла functions.php темы. Эта небольшая, на первый взгляд безвредная функция оказалась точкой входа для всей вредоносной рекламной кампании.

вредоносное изменение в теме

Анализ вредоносного кода показал, что внедренная функция ti_custom_javascript() выполнялась при каждой загрузке страницы через wp_head. Она устанавливала соединение с удаленным URL, при этом первоначальный PHP-код служил лишь ключом, а реальная угроза заключалась в содержимом, которое он загружал.

Вредоносный код устанавливал POST-соединение с командным сервером (Command and Control, C&C) по адресу hxxps://brazilc[.]com/ads[.]com, а затем использовал echo для вывода ответа непосредственно в раздел <head> HTML-документа. При ручном запросе к удаленной конечной точке специалисты получили полезную нагрузку, которая выполняла двустороннюю атаку.

Первым компонентом был скрипт с porsasystem[.]com/6m9x[.]js, служивший основным механизмом для редиректов и всплывающих окон, о которых сообщал клиент. Этот домен функционировал как распределитель трафика, загружая дополнительные вредоносные скрипты, отвечающие за такие действия, как принудительные перенаправления.

Вторым компонентом оказался объемный JavaScript, создававший скрытый iframe размером 1×1 пиксель. Внутри этого iframe внедрялся код, имитирующий легитимное действие Cloudflare (cdn-cgi/challenge-platform/scripts/jsd/main.js). Эта техника уклонения от безопасности используется злоумышленниками для обхода средств защиты или безопасного выполнения кода.

Атрибуты data-cfasync='false' и async использовались для избежания вмешательства Cloudflare Rocket Loader и асинхронной загрузки скрипта, чтобы не блокировать отрисовку страницы. Особую опасность представляет то, что посетители сайта получают внедренный контент, который может содержать вредоносное ПО, загружаемое без ведома пользователя, такое как фальшивая верификация Cloudflare.

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

Индикаторы компрометации

Domains

  • brazilc.com
  • porsasystem.com
Комментарии: 0