РУССКИЙ
РУССКИЙ
ENGLISH
09.04.2019

Знакомство со снифферами:
семейство ReactGet

Виктор Окороков
Аналитик Threat Intelligence GROUP-IB
Практически каждый из нас пользуется услугами онлайн-магазинов, а значит рано или поздно рискует стать жертвой JavaScript-снифферов — специального кода, который злоумышленники внедряют на сайт для кражи данных банковских карт, адресов, логинов и паролей пользователей. Долгое время JS-снифферы оставались вне поля зрения антивирусных аналитиков, а банки и платежные системы не видели в них серьезной угрозы. И совершенно напрасно. Почти 400 000 жертв JS-сниффера, заразившего сайт и мобильное приложение авиакомпании British Airways, компрометация платежных данных американского дистрибутора билетов Ticketmaster и недавний инцидент с британским сайтом спортивного гиганта FILA свидетельствуют о необходимости изменить отношение к этой угрозе.

В первом аналитическом отчете, посвященном исследованию JavaScript-снифферов, эксперты Group-IB проанализировали 2440 зараженных онлайн-магазинов, посетители которых – суммарно около 1,5 миллионов человек в день – подвергались риску компрометации. Среди пострадавших оказываются не только пользователи, но и онлайн-магазины, платежные системы и банки, выпустившие скомпрометированные карты. Отчет Group-IB стал первым исследованием даркнет-рынка снифферов, их инфраструктуры и способов монетизации, приносящей их создателям миллионы долларов. Этим постом мы открываем цикл статей, посвященный анализу различных семейств снифферов.
Встречайте: ReactGet
ReactGet, на мой взгляд, одно из интереснейших семейств снифферов, используемых для кражи данных банковских карт на сайтах онлайн-магазинов. Сниффер может работать с большим количеством разных платежных систем, использующихся на сайте: одно значение параметра соответствует одной платежной системе, а отдельные обнаруженные версии сниффера могут использоваться для кражи учетных данных, а также для кражи данных банковских карт из платежных форм сразу нескольких платежных систем, как т.н. универсальный сниффер. Было установлено, что в некоторых случаях атакующие проводят фишинговые атаки на администраторов онлайн-магазинов с целью получения доступа в административную панель сайта.

Кампания с применением этого семейства снифферов началась в мае 2017 года, атаке подверглись сайты под управлением CMS и платформ Magento, Bigcommerce, Shopify.
Описание
Анализ зараженных сайтов позволил изучить способы включения вредоносного кода в код онлайн-магазинов. Кроме "классического" внедрения скрипта по ссылке, операторы снифферов семейства ReactGet используют особую технику: при помощи JavaScript-кода проверяется, соответствует ли текущий адрес, на котором находится пользователь, определенным критериям. Вредоносный код будет запущен только в том случае, если в текущем URL-адресе присутствует подстрока checkout или т. п. Таким образом, код сниффера исполнится именно в тот момент, когда пользователь перейдет к оплате покупок и введет платежную информацию в форму на сайте.
Этот сниффер использует нестандартную технику. Платежные и персональные данные жертвы собираются вместе, кодируются при помощи base64, а затем полученная строка используется как параметр для отправки запроса на сайт злоумышленников: чаще всего путь до гейта имитирует JavaScript-файл, к примеру resp.js, data.js и т. д., но также используются ссылки на файлы изображений, GIF и JPG. Особенность в том, что сниффер создает объект изображения размером 1 на 1 пиксель и использует полученную ранее ссылку как параметр src изображения. То есть для пользователя такой запрос в трафике будет выглядеть как запрос обычной картинки. Похожая техника была использована в снифферах семейства ImageID. К тому же техника с использованием изображения размером 1 на 1 пиксель применяется во многих легитимных скриптах онлайн-аналитики, что также может ввести пользователя в заблуждение.
Анализ версий
Анализ активных доменов, используемых операторами данного семейства снифферов, позволил обнаружить много разных версий снифферов семейства ReactGet, каждая из них отличалась наличием или отсутствием обфускации, а кроме того, каждый сниффер предназначен для определенной платежной системы, обрабатывающей платежи по банковским картам для онлайн-магазинов. Перебрав значение параметра, соответствующего номеру версии, специалисты Group-IB получили полный список доступных вариаций снифферов, а по названиям полей форм, которые каждый сниффер ищет в коде страницы, определили платежные системы, на которые нацелен сниффер. см Приложение 1.
Сниффер паролей
Одним из преимуществ JavaScript-снифферов, работающих на клиентской стороне сайта, является универсальность: внедренный на сайт вредоносный код способен похитить данные любого типа, будь то платежные данные или логин и пароль от пользовательского аккаунта. Специалисты Group-IB обнаружили образец сниффера, относящегося к семейству ReactGet, предназначенный для кражи адресов электронной почты и паролей пользователей сайта.
Пересечение со сниффером ImageID
В ходе анализа одного из зараженных магазинов было установлено, что этот сайт подвергся заражению дважды: помимо вредоносного кода сниффера семейства ReactGet, был обнаружен код сниффера семейства ImageID. Данное пересечение может быть свидетельством того, что операторы, стоящие за использованием обоих снифферов, применяют схожие техники для внедрения вредоносного кода.

Универсальный сниффер
В ходе анализа одного из доменных имен, относящихся к инфраструктуре снифферов этого семейства, было установлено, что тот же пользователь зарегистрировал три других доменных имени. Эти три домена имитировали домены реально существующих сайтов и ранее использовались для размещения снифферов. При анализе кода трех легитимных сайтов был обнаружен неизвестный сниффер, а дальнейший анализ показал, что это усовершенствованная версия сниффера ReactGet. Все ранее отслеженные версии снифферов этого семейства были нацелены только на одну определенную для этой версии сниффера платежную систему, однако в данном случае была обнаружена универсальная версия сниффера, способная похищать информацию из форм, относящихся к 15 разным платежным системам и модулям ecommerce-сайтов для проведения онлайн-платежей.

Итак, в начале работы сниффер осуществлял поиск базовых полей формы, содержащих персональную информацию жертвы: полное имя, физический адрес, номер телефона.
Затем сниффер осуществлял поиск более чем по 15 разным префиксам, соответствующим разным платежным системам и модулям для онлайн-платежей.
Далее персональные данные жертвы и платежная информация собирались воедино и отправлялись на подконтрольный злоумышленнику сайт: в этом конкретном случае было обнаружено две версии универсального сниффера ReactGet, расположенные на двух разных взломанных сайтах. Однако обе версии отправляли украденные данные на один и тот же взломанный сайт zoobashop.com.
Анализ префиксов, используемых сниффером для поиска полей, содержащих платежную информацию жертвы, позволил определить, на какие именно платежные системы нацелен этот образец сниффера.

  • Authorize.Net
  • Verisign
  • First Data
  • USAePay
  • Stripe
  • PayPal
  • ANZ eGate
  • Braintree
  • DataCash (MasterCard)
  • Realex Payments
  • PsiGate
  • Heartland Payment Systems
Инструментарий
В ходе анализа инфраструктуры атакующих были обнаружены инструменты, используемые преступной группой в рамках их активности. Первый обнаруженный инструмент служит для обфускации вредоносных скриптов, отвечающих за кражу банковских карт. На одном из хостов атакующих был обнаружен bash-скрипт, использующий CLI проекта javascript-obfuscator (https://github.com/javascript-obfuscator/javascrip...) для автоматизации обфускации кода снифферов.
Второй обнаруженный инструмент предназначен для генерации кода, отвечающего за подгрузку основного сниффера. Данный инструмент генерирует JavaScript-код, который проверяет, находится ли пользователь на странице оплаты, путем поиска в текущем адресе пользователя строк checkout, cart и так далее, и если результат положительный, то код подгружает основной сниффер с сервера злоумышленников. Для сокрытия вредоносной активности все строки, включая тестовые строки для определения платежной страницы, а также ссылку на сниффер, закодированы при помощи base64.
Фишинговые атаки
В ходе анализа сетевой инфраструктуры атакующих было установлено, что зачастую для получения доступа в административную панель целевого онлайн-магазина преступная группа использует фишинг. Атакующие регистрируют домен, визуально похожий на домен магазина, а затем разворачивают на нем поддельную форму входа административной панели Magento. В случае успеха атакующие получат доступ в административную панель CMS Magento, что дает им возможность редактировать компоненты сайта и внедрить сниффер для кражи данных кредитных карт.

Инфраструктура
Приложение 1.
Преступление без наказания: анализ семейств js-снифферов
Атаки снифферов на онлайн-магазины продолжают расти, а в цепочку пострадавших оказываются вовлечены различные аудитории — зараженный магазин, его клиенты, платежная система, банки-эмитенты скомпрометированных карт. Эксперты Group-IB проанализировали известные типы снифферов, выявили их инфраструктуру и обнаружили 38 различных семейств (ранее было известно 12 групп).