Man
Professional
- Messages
- 2,963
- Reaction score
- 486
- Points
- 83
За последние несколько недель мы наблюдали интересную новую вариацию атаки по скиммингу кредитных карт « gtag » с удивительно высоким числом обнаружений на данный момент. На момент написания этой статьи мы наблюдали около 80 обнаружений в общей сложности только за первые две недели.
SiteCheck обнаруживает вредоносное ПО на веб-сайте для заражения скиммерами кредитных карт.
Наша исследовательская группа и аналитики обнаружили эту метко названную инфекцию «Caesar Cipher Skimmer» на нескольких платформах CMS, включая WordPress, Magento и OpenCart. Хотя не редкость увидеть вредоносное ПО из одной CMS, переработанное и использованное на другой (например, мы идентифицировали вредоносное ПО MageCart, которое возникло на Magento и позже использовалось в средах WordPress / WooCommerce), довольно интересно увидеть, как этот новый скиммер был развернут на всех этих различных платформах одновременно.
В этой статье мы рассмотрим некоторые особенности этой атаки методом кардинга, как она работает и, как всегда, как защитить ваш сайт электронной коммерции от заражения.
Содержание:
Все началось, когда их антивирусная программа на компьютере выдала сигнал тревоги при доступе к их кассе. При просмотре файлов WooCommerce они обнаружили очень подозрительный код, размещенный в их скрипте form-checkout.php.
Вот фрагмент одного из вариантов этой вредоносной программы, который мы обнаружили:
Стоит отметить, что этот же файл был наиболее частой целью вредоносного ПО для электронной коммерции в течение прошлого года, что мы идентифицировали в нашем недавно опубликованном отчете об угрозах за 2023 год:
Хотя в этом случае вредоносное ПО отличается, файл тот же самый. Поскольку этот скрипт играет важную роль в процессе оформления заказа для плагина WooCommerce, внедрение в него вредоносного ПО является эффективным способом для злоумышленников украсть данные кредитной карты.
Мы видим, что он одновременно притворяется и Google Analytics , и Google Tag Manager. Внимательные читатели нашего блога могли заметить перепутанные, запутанные строки в верхней части файла (большой красный флаг), а также использование String.fromCharCode, который является фаворитом среди некоторых злоумышленников из-за его способности запутывать их код.
Но возникает вопрос, как нам это осмыслить и превратить в текст, понятный человеку? Вредоносная программа на самом деле использует несколько довольно интересных методов, чтобы скрыть свою полезную нагрузку. Предпринимаются следующие шаги:
Итак, как это выглядит на практике? Давайте рассмотрим.
После объединения массива строк и разбиения их на отдельные символы он выглядит следующим образом:
После этого последовательность меняется на обратную:
На этом этапе процесса деобфускации важно понимать, что такое значения unicode. Каждая буква, цифра и любой другой печатный символ на компьютере имеет соответствующее числовое значение. Всего существует 149 848 символов unicode, которые охватывают все письменные языки и специальные символы.
Вот тут-то и вступает в игру «шифр Цезаря». Этот метод кодирования является одним из самых простых, широко известных и старейших методов шифрования в мире, восходящим к — вы угадали — Древнему Риму.
Источник изображения: Википедия – Шифр Цезаря
Этот метод шифрования до сих пор находит практическое применение в шифре подстановки ROT13, который используется в PHP- функции str_rot13.
Чтобы скрыть свою полезную нагрузку, вредоносная программа вычитает значение каждого символа Unicode на три. Таким образом, по сути, она использует шифр Цезаря для значений Unicode, а не просто для букв.
Так, например, если мы вычтем из первой буквы «k» три, то получим «h»:
Следующая «w» переводится как «t»:
Вы, вероятно, понимаете, к чему это идет. В конце концов мы встречаемся с доменом полезной нагрузки:
В тексте выше https был заменен на hxxps, чтобы избежать случайных кликов.
Домен предположительно был взломан, но мы также наблюдали довольно много вариаций этого кода, которые ведут к явно поддельным сайтам (и некоторым другим взломанным сайтам):
Домены с намеренными ошибками в написании (например, «google») были зарегистрированы в этом году в течение последних нескольких месяцев, предположительно, их заменили, когда они стали объектом слишком пристального внимания со стороны антивирусных программ и поставщиков услуг безопасности.
Эти скрипты загружают еще один слой запутанного JavaScript-скиммера, который создает WebSocket, подключается к удаленному серверу и ждет, пока он отправит еще один слой скиммера.
Код на снимке экрана выше создает WebSocket для этого URL: wss://cdn.iconstaff[.]top/common.
Другие URL-адреса включают:
Скрипт отправляет URL текущих веб-страниц, что позволяет злоумышленникам отправлять индивидуальные ответы для каждого зараженного сайта. Некоторые версии скрипта второго уровня даже проверяют, загружен ли он вошедшим в систему пользователем WordPress, и изменяют ответ для него.
В более старых версиях этого скрипта второго уровня есть комментарии, указывающие на то, что его разработчики говорят по-русски.
На сайтах Magento они, похоже, используют свою старую любимую таблицу базы данных core_config_data . JavaScript для скимминга кредитных карт встречается там часто, потому что это таблица базы данных, в которой хранится пользовательский код, вставленный в панель администратора Magento.
Что касается OpenCart, у нас пока не было клиентов, столкнувшихся с подобной инфекцией, использующих OpenCart, поэтому мы не совсем уверены, в какой части бэкэнда она находится, но мы обновим этот пост, если сможем это определить.
Источник

Наша исследовательская группа и аналитики обнаружили эту метко названную инфекцию «Caesar Cipher Skimmer» на нескольких платформах CMS, включая WordPress, Magento и OpenCart. Хотя не редкость увидеть вредоносное ПО из одной CMS, переработанное и использованное на другой (например, мы идентифицировали вредоносное ПО MageCart, которое возникло на Magento и позже использовалось в средах WordPress / WooCommerce), довольно интересно увидеть, как этот новый скиммер был развернут на всех этих различных платформах одновременно.
В этой статье мы рассмотрим некоторые особенности этой атаки методом кардинга, как она работает и, как всегда, как защитить ваш сайт электронной коммерции от заражения.
Содержание:
- Внедрение вредоносного ПО в WooCommerce
- Последние инъекции gtag скиммера
- Шифр Цезаря Unicode
- Другие платформы и местоположения CMS
Внедрение вредоносного ПО в WooCommerce
К нам обратился новый клиент с постоянной проблемой кражи кредитной карты на странице оформления заказа WooCommerce.Все началось, когда их антивирусная программа на компьютере выдала сигнал тревоги при доступе к их кассе. При просмотре файлов WooCommerce они обнаружили очень подозрительный код, размещенный в их скрипте form-checkout.php.
Вот фрагмент одного из вариантов этой вредоносной программы, который мы обнаружили:

Стоит отметить, что этот же файл был наиболее частой целью вредоносного ПО для электронной коммерции в течение прошлого года, что мы идентифицировали в нашем недавно опубликованном отчете об угрозах за 2023 год:
Code:
./path/to/woocommerce/checkout/form-checkout.php
Хотя в этом случае вредоносное ПО отличается, файл тот же самый. Поскольку этот скрипт играет важную роль в процессе оформления заказа для плагина WooCommerce, внедрение в него вредоносного ПО является эффективным способом для злоумышленников украсть данные кредитной карты.
Последние инъекции gtag скиммера
За последние несколько месяцев инъекции были изменены таким образом, чтобы они выглядели менее подозрительно, чем длинный запутанный скрипт.
Мы видим, что он одновременно притворяется и 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»:

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

Вы, вероятно, понимаете, к чему это идет. В конце концов мы встречаемся с доменом полезной нагрузки:
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, поэтому мы не совсем уверены, в какой части бэкэнда она находится, но мы обновим этот пост, если сможем это определить.
Источник