Скиммер PrestaShop GTAG Websocket

Man

Professional
Messages
2,965
Reaction score
488
Points
83
В ходе недавнего расследования мы обнаружили еще одного скиммера кредитных карт, который использовал соединение через веб-сокет для кражи данных кредитных карт с зараженного сайта PrestaShop.

Хотя PrestaShop и не является самым популярным решением для электронной коммерции в сфере интернет-магазинов, он по-прежнему входит в десятку самых распространенных платформ электронной коммерции, используемых в Интернете, и на его долю приходится чуть более 1% всех веб-сайтов (всего более 60 000).

Злоумышленники не разбираются в платформах, которые они атакуют. Если веб-сайт идентифицирован как потенциальный источник для кражи и продажи данных кредитных карт на черном рынке, то вы можете быть уверены, что этот веб-сайт станет целью.

В этом случае наш клиент получил предупреждение антивируса при доступе к своему веб-сайту (обычный симптом вредоносного ПО Magecart / кражи карт). В частности, вредоносный домен ниже пытался загрузить:

[/CODE]cd[.]iconstaff[.]top[/CODE]

Не потребовалось много времени, чтобы выяснить причину, изучив исходный код, размещенный в самом низу страницы:

Запутанный JavaScript


Но настоящий вопрос был в следующем: как его туда поместили? Поиск в файлах и базе данных строк типа WebSocket ничего не дал, поэтому это было немного сложнее найти, чем обычно. В этой статье мы рассмотрим веб-сокеты, вредоносное ПО-скиммеры и то, как нам удалось найти источник этой инфекции для кражи карт.

Что такое веб-сокет?​

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

По сути, веб-сокет — это прямое соединение между клиентом и сервером, при котором в обоих направлениях устанавливается непрерывный поток трафика. В отличие от базового http/https-соединения, где есть запрос от клиента, за которым следует ответ от сервера, трафик веб-сокета непрерывен и идет в обоих направлениях одновременно:

Соединение WebSocket


Это полезно для таких сервисов, как финансы и онлайн-игры, которые требуют большого объема обмена данными в реальном времени между клиентами и серверами, где устаревшего неуклюжего HTTP-соединения будет недостаточно.

Атакующие также используют веб-сокеты для обфускации. Анализ трафика веб-сокетов сложнее, чем обычного трафика HTTP/HTTPS, и не все инструменты анализа вообще его поддерживают. Для анализа такого трафика требуются специальные инструменты и знания. Они также подходят для кражи данных кредитных карт с зараженных страниц оформления заказа, как мы увидим здесь.

Расследование​

Как я уже упоминал ранее, поиск строк того, что мы видели в view-source, ничего не дал. Многие скиммеры кредитных карт можно легко найти в зараженной базе данных, просто выполнив поиск по таким вещам, как <script или другим частям инъекции простого текста.

Строки в кодировке Base64 также часто используются злоумышленниками, но даже запрос PHNjcmlw (<scrip в формате base64) оставил нас с пустыми руками. Сделав еще один шаг, думая, что полезная нагрузка была обращена с помощью strrev, поиск wlmcjNHP (та же строка, но в обратном порядке) также ничего не дал.

Итак, мы вернулись к основам. Вредоносное ПО для скимминга кредитных карт нельзя внедрить в любое место на сайте в случайные файлы, его нужно загрузить на странице оформления заказа. По этой причине скиммеры часто внедряются в основные файлы CMS, файлы тем, определенные области базы данных или — в случае сайтов WooCommerce WordPress — вредоносные плагины.

В этом случае проверка файлов темы и расширений дала веб-оболочку:

Webshell найден в файлах темы


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

Давайте кратко рассмотрим основные этапы работы сайта PrestaShop и начнем с самого начала.

1. index.php​

Первый файл, который загружается на любом веб-сайте на основе PHP, — это основной файл index.php в каталоге docroot:

Code:
./index.php

Различные платформы CMS имеют различные файлы индекса, подходящие для загрузки остальной части основной платформы CMS, и обычно они довольно простые. В случае PrestaShop файл очень прост и загружает файл config.inc.php из соответствующего каталога:

Индексный файл PrestaShop


2. config.inc.php​

Далее у нас есть файл config.inc.php, расположенный в подкаталоге config.

Code:
./config/config.inc.php

Этот файл намного сложнее предыдущего и включает правила конфигурации, такие как максимально допустимый размер файла, который может быть загружен на веб-сайт. Он также включает/требует другие файлы из среды:

Файл конфигурации PrestaShop


Так почему бы нам не заглянуть внутрь файла autoload.php?

3. autoload.php​

Конечно же, в самом низу этого файла оказался наш скиммер:

Code:
./config/autoload.php

автозагрузка содержимого файла


Обратите внимание на номер версии Prestashop. Согласно архиву релизов , версия 1.7.4.2 была выпущена еще в 2018 году. Распространенная глупость владельцев веб-сайтов — «застревать» в старых версиях своей платформы CMS, часто из-за сильно настроенной кодовой базы, которая может быть несовместима с новыми версиями их CMS или даже просто PHP. Неудивительно, что многие из этих веб-сайтов в конечном итоге сталкиваются с проблемами безопасности: одна из самых важных задач администратора веб-сайта — поддержание кодовой базы в актуальном состоянии. Просмотр списка CVE для Prestashop раскрывает богатую и легендарную историю критических уязвимостей безопасности, поэтому воспримите это как урок, чтобы поддерживать свой веб-сайт в актуальном состоянии!

Анализ вредоносного ПО​

А теперь самое интересное: давайте разберем эту вредоносную программу и посмотрим, как она работает!

Давайте начнем с удаления шестнадцатеричного кодирования, чтобы получить более читаемый пример для анализа:

Образец анализа вредоносного ПО


Здесь мы видим код JavaScript, который внедряется и выполняется в браузере жертвы во время процесса оформления заказа.

Мы видим, что здесь используется fromCharCode для обфускации этой строки:

Code:
93,89,89,16,5,5,73,78,4,67,73,69,68,89,94,75,76,76,4,94,69,90,5,71,21,89,69,95,88,73,79,23

Это популярный метод обфускации, особенно любимый злоумышленниками, такими как Balada.

Однако использование обычного деобфускатера на этом просто выводит мусор. Так в чем же тут подвох?

Если вы внимательно посмотрите на конец этой строки на снимке экрана, вы увидите число 42. На самом деле это скрытое значение XOR. XOR — это легкий, простой метод запутывания, который по сути просто сдвигает значения строки. Когда мы применяем значение XOR 42 к приведенной выше строке, мы получаем следующее:

Code:
119, 115, 115, 58, 47, 47, 99, 100, 46, 105, 99, 111, 110, 115, 116, 97, 102, 102, 46, 116, 111, 112, 47, 109, 63, 115, 111, 117, 114, 99, 101, 61

Который, когда мы пропускаем через старый добрый деобфускатор fromCharCode дядюшки Джима, мы получаем полезную нагрузку нашего веб-сокета:

Code:
wss://cd[.]iconstaff[.]top/m?source=

Источник
 
Top