С февраля 2021 года группировка GrelosGTM проводит кампанию против интернет-магазинов на платформе Magento (система управления сайтом и торговым каталогом). Под удар попали как минимум семь площадок в Бельгии, Италии, Великобритании и США. На четырёх из них вредоносный код продолжал работать в момент публикации отчёта. Речь идёт о розничных сайтах, которые принимают оплату картой напрямую, без перевода покупателя на сторонний платёжный шлюз. Цель атак - данные банковских карт. Человек заполняет привычную форму и не догадывается, что реквизиты уходят третьим лицам.
Описание
Активность группировки прослеживается с января 2020 года. Уже тогда проявились две характерные черты. Злоумышленники строили многоступенчатые вредоносные сценарии на языке JavaScript. Для хранения кода они брали файлы без расширения или с расширением, которое обычно не несёт исполняемых инструкций. Ничего подозрительного в таком наборе не было, поэтому защитные средства долго не реагировали. Первые образцы относятся к январю 2020 года, а структура кода почти не менялась от атаки к атаке. Чужой код месяцами оставался незамеченным: владельцы магазинов редко проверяют содержимое подключённых сервисов.
Поначалу группировка регистрировала домены, повторяющие названия сервисов веб-аналитики - Google Analytics и Google Tag Manager. Адреса выглядели правдоподобно. Домен-двойник отличался от настоящего одним-двумя символами, поэтому простая проверка по названию ничего не давала. Подключение внешних счётчиков - обычная практика для торговых сайтов, так что ни владельцы магазинов, ни покупатели подмены не замечали.
В апреле 2021 года подход изменился. Вместо доменов-двойников злоумышленники стали злоупотреблять штатной функциональностью Google Tag Manager. {По данным Group-IB}, сервис позволяет владельцу сайта добавить на страницы короткий фрагмент кода, а остальные сценарии подгружаются с серверов Google. Магазинам такая схема удобна, зато она же открывает готовый канал доставки постороннего кода на площадку.
Каждый счётчик в этом сервисе описывается отдельным идентификатором. Злоумышленники создают собственный и встраивают его в исходный код чужого сайта. Дальше события развиваются по цепочке. Контейнер обращается к подконтрольному домену и получает промежуточный сценарий. Тот следит за переходом покупателя на страницу оформления заказа. Промежуточный слой отвечает и за то, чтобы платёжные данные не ушли в банк раньше подмены формы. Сценарий срабатывает только на нужной странице, поэтому на остальных разделах сайта он бездействует. Как только человек оказывается в зоне оплаты, с удалённого узла загружается основной модуль.
Основная нагрузка - вредоносный сценарий-перехватчик, или скиммер (код, считывающий данные карты прямо на странице оплаты). Авторы намеренно запутали его, чтобы обмануть антивирусные решения и системы проверки содержимого. Сценарий подменяет платёжную форму: покупатель видит привычные поля, а введённые символы перехватываются. Отправка идёт по постоянному двустороннему каналу связи с сервером злоумышленников. Такой обмен отследить труднее, чем разовые сетевые запросы. Собранные карты уходят на тот же узел под видом безобидного изображения.
О заражении сообщили владельцам всех пострадавших площадок. Уведомления рассылала служба реагирования на компьютерные инциденты CERT-GIB, работающая в структуре Group-IB. Для торговых компаний последствия утечки не ограничиваются репутацией. Банки-эквайеры проводят проверки, платёжные системы требуют отчётности, покупатели предъявляют претензии. Прямые потери складываются из штрафов, расходов на аудит и падения продаж после огласки. Покупателям, которые заметили списание, приходится оспаривать операции и перевыпускать карту.
Обнаружить скиммер на странице оплаты непросто. Код загружается с легитимного сервиса, который владелец сайта подключил добровольно. Внешне страница не меняется, а данные покупателя исчезают уже после ввода. Группировка возвращается к одним и тем же площадкам, поскольку Magento популярна среди средних и крупных магазинов, а её расширения нередко обновляют с задержкой. Постоянная смена адресов тоже затрудняет блокировку. Похожие схемы повторяются с перерывами: злоумышленники прекращают атаки, а затем возвращаются с обновлённым кодом.
Владельцам интернет-магазинов стоит провести ревизию контейнеров Google Tag Manager и убедиться, что посторонних идентификаторов там нет. Помогает регулярное обновление платформы и всех расширений, ограничение доступа к административной панели, двухфакторная аутентификация для сотрудников. Отдельного внимания требуют сторонние модули оплаты и отзывов: их обновляют так же, как и саму платформу. Полезно время от времени проходить путь покупателя самостоятельно - от выбора товара до оплаты - и сравнивать страницу с эталонной версией. Посторонние вставки в исходном коде ищут вручную или автоматическими средствами контроля целостности файлов.
Доверие к известному домену не заменяет контроля над тем, что именно он отдаёт браузеру покупателя. Пока владельцы магазинов не начнут проверять каждый подключённый сценарий, перехват платёжных данных останется для таких групп малозатратным занятием. Магазинам на Magento стоит считать свои контейнеры и расширения частью периметра безопасности, а не второстепенной настройкой.