Расшифровка скиммера Цезаря

Man

Professional
Messages
2,963
Reaction score
486
Points
83
За последние несколько недель мы наблюдали интересную новую вариацию атаки по скиммингу кредитных карт « gtag » с удивительно высоким числом обнаружений на данный момент. На момент написания этой статьи мы наблюдали около 80 обнаружений в общей сложности только за первые две недели.

SiteCheck обнаруживает вредоносное ПО для скиммеров кредитных картSiteCheck обнаруживает вредоносное ПО на веб-сайте для заражения скиммерами кредитных карт.

Наша исследовательская группа и аналитики обнаружили эту метко названную инфекцию «Caesar Cipher Skimmer» на нескольких платформах CMS, включая WordPress, Magento и OpenCart. Хотя не редкость увидеть вредоносное ПО из одной CMS, переработанное и использованное на другой (например, мы идентифицировали вредоносное ПО MageCart, которое возникло на Magento и позже использовалось в средах WordPress / WooCommerce), довольно интересно увидеть, как этот новый скиммер был развернут на всех этих различных платформах одновременно.

В этой статье мы рассмотрим некоторые особенности этой атаки методом кардинга, как она работает и, как всегда, как защитить ваш сайт электронной коммерции от заражения.

Содержание:
  • Внедрение вредоносного ПО в WooCommerce
  • Последние инъекции gtag скиммера
  • Шифр Цезаря Unicode
  • Другие платформы и местоположения CMS

Внедрение вредоносного ПО в WooCommerce​

К нам обратился новый клиент с постоянной проблемой кражи кредитной карты на странице оформления заказа WooCommerce.

Все началось, когда их антивирусная программа на компьютере выдала сигнал тревоги при доступе к их кассе. При просмотре файлов WooCommerce они обнаружили очень подозрительный код, размещенный в их скрипте form-checkout.php.

Вот фрагмент одного из вариантов этой вредоносной программы, который мы обнаружили:

На странице оформления заказа обнаружена вредоносная программа WooCommerce

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

Code:
./path/to/woocommerce/checkout/form-checkout.php

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

Последние инъекции gtag скиммера​

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

Поддельный Google Analytics


Мы видим, что он одновременно притворяется и Google Analytics , и Google Tag Manager. Внимательные читатели нашего блога могли заметить перепутанные, запутанные строки в верхней части файла (большой красный флаг), а также использование String.fromCharCode, который является фаворитом среди некоторых злоумышленников из-за его способности запутывать их код.

Но возникает вопрос, как нам это осмыслить и превратить в текст, понятный человеку? Вредоносная программа на самом деле использует несколько довольно интересных методов, чтобы скрыть свою полезную нагрузку. Предпринимаются следующие шаги:
  • Разбивает строку на отдельные символы:
Code:
tags.split('')
  • Изменяет порядок символов на обратный:
Code:
reverse()
  • Вычитает 3 из кода символа каждого значения символа Unicode и преобразует эти измененные коды символов обратно в символы:
Code:
(tags, pk = 3)
.map(c => String.fromCharCode(c.charCodeAt(0) - pk))
  • Объединяет символы обратно в строку:
Code:
.join('')

Итак, как это выглядит на практике? Давайте рассмотрим.

Шифр Цезаря Unicode​

Вот оригинальные запутанные строки:

Code:
'var jbp = ['315@uhyBsk', 's1vvf2rlgx', 'd2vnfroe2v', 'hgxofql0sz', '2prf1ksp|q', 'nfdeohhwv2', '2=vswwk'];

После объединения массива строк и разбиения их на отдельные символы он выглядит следующим образом:

Code:
'3', '1', '5', '@', 'u', 'h', 'y', 'B', 's', 'k', 's', '1', 'v', 'v', 'f', '2', 'r', 'l', 'g', 'x', 'd', '2', 'v', 'n', 'f', 'r', 'o', 'e', '2', 'v', 'h', 'g', 'x', 'o', 'f', 'q', 'l', '0', 's', 'z', '2', 'p', 'r', 'f', '1', 'k', 's', 'p', '|', 'q', 'n', 'f', 'd', 'e', 'o', 'h', 'h', 'w', 'v', '2', '2', '=', 'v', 's', 'w', 'w', 'k'

После этого последовательность меняется на обратную:

Code:
'k', 'w', 'w', 's', 'v', '=', '2', '2', 'v', 'w', 'h', 'h', 'o', 'e', 'd', 'f', 'n', 'q', '|', 'p', 's', 'k', '1', 'f', 'r', 'p', '2', 'z', 's', '0', 'l', 'q', 'f', 'o', 'x', 'g', 'h', 'v', '2', 'e', 'o', 'r', 'f', 'n', 'v', '2', 'd', 'x', 'g', 'l', 'r', '2', 'f', 'v', 'v', '1', 's', 'k', 's', 'B', 'y', 'h', 'u', '@', '5', '1', '3'

На этом этапе процесса деобфускации важно понимать, что такое значения unicode. Каждая буква, цифра и любой другой печатный символ на компьютере имеет соответствующее числовое значение. Всего существует 149 848 символов unicode, которые охватывают все письменные языки и специальные символы.

Вот тут-то и вступает в игру «шифр Цезаря». Этот метод кодирования является одним из самых простых, широко известных и старейших методов шифрования в мире, восходящим к — вы угадали — Древнему Риму.

Пример шифра Цезаря

Источник изображения: Википедия – Шифр Цезаря

Этот метод шифрования до сих пор находит практическое применение в шифре подстановки ROT13, который используется в PHP- функции str_rot13.

Чтобы скрыть свою полезную нагрузку, вредоносная программа вычитает значение каждого символа Unicode на три. Таким образом, по сути, она использует шифр Цезаря для значений Unicode, а не просто для букв.

Так, например, если мы вычтем из первой буквы «k» три, то получим «h»:

Пример шифра Цезаря 1


Следующая «w» переводится как «t»:

Пример шифра Цезаря 2


Вы, вероятно, понимаете, к чему это идет. В конце концов мы встречаемся с доменом полезной нагрузки:

Code:
hxxps://steelbacknymph[.]com/wp-includes/blocks/audio/css.php?ver=2.0

В тексте выше https был заменен на hxxps, чтобы избежать случайных кликов.

Домен предположительно был взломан, но мы также наблюдали довольно много вариаций этого кода, которые ведут к явно поддельным сайтам (и некоторым другим взломанным сайтам):

Code:
hxxps://cdn.gooogletagmanager[.]com/style.css?ver=1.95
hxxps://cdn.googleetagmanager[.]com/style.css?ver=1.2.102.1
hxxps://cdn.googletagmanager4[.]com/style.css?v=1.0.0
hxxps://backendsports[.]xyz/4ra/01/css.php?ver=2.0
hxxps://patilcomputers[.]com/wp-content/themes/shopic-child/css.php?ver=2.0
hxxps://ilegkenya[.]org/acs/css.php?ver=2.0
hxxps://brightaems[.]com/wp-content/themes/educator-education/css/css.php?ver=2.0
hxxps://thepioneerbank[.]com/wp-content/themes/twentytwentytwo/css.php?ver=2.0
hxxps://flyfishinguide[.]co.nz/css/css.php?ver=2.0
hxxps://shop.care.pistoia[.]it/wp-content/languages/css.php?ver=2.0

Домены с намеренными ошибками в написании (например, «google») были зарегистрированы в этом году в течение последних нескольких месяцев, предположительно, их заменили, когда они стали объектом слишком пристального внимания со стороны антивирусных программ и поставщиков услуг безопасности.

Эти скрипты загружают еще один слой запутанного JavaScript-скиммера, который создает WebSocket, подключается к удаленному серверу и ждет, пока он отправит еще один слой скиммера.

Слой веб-сокета скиммера кредитных карт


Код на снимке экрана выше создает WebSocket для этого URL: wss://cdn.iconstaff[.]top/common.

Другие URL-адреса включают:
  • wss://ws.gooogletagmanager[.]com/ws,
  • wss://ws.googletagmanager4[.]com/ws
  • wss://shoponlinemelike[.]shop/common
  • wss://iconstaff[.]top/common

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

В более старых версиях этого скрипта второго уровня есть комментарии, указывающие на то, что его разработчики говорят по-русски.

Комментарии к коду раскрывают русскоязычных разработчиков


Code:
Функция, которая активирует ваш скрипт
…
Проверка, был ли скрипт уже активирован
…
Установка флага активации скрипта
(Установка флага активации скрипта)
…
Функция проверки текущего блока и активации скрипта
…
Запуск проверки с интервалом
…
Проверка сети 500 мс

Другие платформы и местоположения CMS​

Как упоминалось ранее, вредоносное ПО было обнаружено на WordPress, Magento и Opencart. В дополнение к файлу form-checkout.php в WooCommerce, мы также видели, как злоумышленники (неправильно) использовали плагин Insert Headers and Footers WPCode для вставки вредоносного ПО в базу данных веб-сайта. Этот плагин в последнее время пользуется большой популярностью у злоумышленников. Недавно мы писали о том, что этот плагин злоумышленники использовали для вставки серверных перенаправлений в код веб-сайта.

На сайтах Magento они, похоже, используют свою старую любимую таблицу базы данных core_config_data . JavaScript для скимминга кредитных карт встречается там часто, потому что это таблица базы данных, в которой хранится пользовательский код, вставленный в панель администратора Magento.

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

Источник
 
Top