Практично кожен з нас користується послугами онлайн-магазинів, а отже, рано чи пізно ризикує стати жертвою JavaScript-сніферів - спеціального коду, який зловмисники впроваджують на сайт для крадіжки даних банківських карток, адрес, логінів та паролів користувачів.
Від сніферів вже постраждали майже 400 000 користувачів сайту та мобільного додатку авіакомпанії British Airways, а також відвідувачі британського сайту спортивного гіганта FILA та американського дистриб'ютора квитків Ticketmaster. PayPal, Chase Paymenttech, USAePay, Moneris — ці та багато інших платіжних систем було заражено.
Аналітик Threat Intelligence Group-IB Віктор Окороков розповідає про те, як сніфери впроваджуються в код сайту та крадуть платіжну інформацію, а також про те, які CRM вони атакують.
"Прихована загроза"
Так вийшло, що довгий час JS-сніфери залишалися поза увагою антивірусних аналітиків, а банки та платіжні системи не бачили в них серйозної загрози. І даремно. Експерти Group-IB
Зупинимося докладно на чотирьох сімействах сніфферів, вивчених у ході дослідження.
Сімейство ReactGet
Сніфери сімейства ReactGet застосовуються для крадіжки даних банківських карток на сайтах онлайн-магазинів. Сніффер може працювати з великою кількістю різних платіжних систем, що використовуються на сайті: одне значення параметра відповідає одній платіжній системі, а окремі виявлені версії сніфера можуть використовуватися для крадіжки облікових даних, а також для крадіжки даних банківських карток з платіжних форм відразу кількох платіжних систем, як так званий універсальний сніффер. У деяких випадках атакуючі проводять фішингові атаки на адміністраторів онлайн-магазинів з метою отримання доступу до адміністративної панелі сайту.
Кампанія із застосуванням цього сімейства сніферів розпочалася у травні 2017 року, атаку зазнали сайти під управлінням CMS та платформ Magento, Bigcommerce, Shopify.
Як ReactGet впроваджується у код онлайн-магазину
Окрім «класичного» впровадження скрипту за посиланням, оператори сніферів сімейства ReactGet використовують особливу техніку: за допомогою JavaScript-коду перевіряється, чи відповідає поточна адреса, на якій знаходиться користувач, певним критеріям. Шкідливий код буде запущено лише в тому випадку, якщо в поточній URL-адресі є підрядок контроль або onestepcheckout, onepage/, out/onepag, checkout/one, ckout/one. Таким чином, код сніфера виповниться саме в той момент, коли користувач перейде до оплати покупок та введе платіжну інформацію у форму на сайті.
Цей сніффер використовує нестандартну техніку. Платіжні та персональні дані жертви збираються разом, кодуються за допомогою base64, а потім отриманий рядок використовується як параметр для надсилання запиту на сайт зловмисників. Найчастіше шлях до гейту імітує JavaScript-файл, наприклад resp.js, data.js і так далі, але також використовуються посилання на файли зображень, GIF и JPG. Особливість у тому, що сніффер створює об'єкт зображення розміром 1 на 1 піксель і використовує отримане посилання як параметр SRC зображення. Тобто для користувача такий запит у трафіку виглядатиме як запит звичайної картинки. Схожа техніка була використана у сніфферах сімейства ImageID. Крім того, техніка з використанням зображення розміром 1 на 1 піксель застосовується в багатьох легітимних скриптах онлайн-аналітики, що також може ввести в оману користувача.
Аналіз версій
Аналіз активних доменів, які використовуються операторами сніферів ReactGet, дозволив виявити багато різних версій сніферів цього сімейства. Версії відрізняються наявністю або відсутністю обфускації, а також кожен сніффер призначений для певної платіжної системи, що обробляє платежі за банківськими картками для онлайн-магазинів. Перебравши значення параметра, що відповідає номеру версії, фахівці Group-IB отримали повний список доступних варіацій сніферів, а за назвами полів форм, які кожен сніффер шукає в коді сторінки, визначили платіжні системи, на які націлений сніффер.
Список сніферів та відповідних їм платіжних систем
URL сніфера | Платіжна система |
---|---|
|
Authorize.Net |
Cardsave | |
|
Authorize.Net |
Authorize.Net | |
|
eWAY Rapid |
Authorize.Net | |
Адієн | |
|
USAePay |
Authorize.Net | |
USAePay | |
|
Authorize.Net |
Монеріс | |
USAePay | |
PayPal | |
Шавлія Оплата | |
Verisign | |
PayPal | |
Смуга | |
|
Realex |
PayPal | |
LinkPoint | |
PayPal | |
PayPal | |
DataCash | |
|
PayPal |
|
Authorize.Net |
|
Authorize.Net |
Authorize.Net | |
Authorize.Net | |
|
Verisign |
|
Authorize.Net |
Монеріс | |
|
Шавлія Оплата |
|
USAePay |
|
Authorize.Net |
|
Authorize.Net |
|
ANZ eGate |
|
Authorize.Net |
|
Монеріс |
|
Шавлія Оплата |
Шавлія Оплата | |
|
Чейз Пейментек |
|
Authorize.Net |
|
Адієн |
PsiGate | |
Cyber Source | |
ANZ eGate | |
Realex | |
|
USAePay |
|
Authorize.Net |
|
Authorize.Net |
|
ANZ eGate |
|
PayPal |
|
PayPal |
Realex | |
|
Шавлія Оплата |
|
PayPal |
|
Verisign |
Authorize.Net | |
|
Verisign |
Authorize.Net | |
|
ANZ eGate |
PayPal | |
Cyber Source | |
|
Authorize.Net |
|
Шавлія Оплата |
Realex | |
|
Cyber Source |
PayPal | |
PayPal | |
|
PayPal |
|
Verisign |
|
eWAY Rapid |
|
Шавлія Оплата |
Шавлія Оплата | |
|
Verisign |
Authorize.Net | |
Authorize.Net | |
|
First Data Global Gateway |
Authorize.Net | |
Authorize.Net | |
Монеріс | |
|
Authorize.Net |
|
PayPal |
|
Verisign |
|
USAePay |
USAePay | |
Authorize.Net | |
Verisign | |
PayPal | |
|
Authorize.Net |
Смуга | |
|
Authorize.Net |
eWAY Rapid | |
|
Шавлія Оплата |
Authorize.Net | |
|
Braintree |
|
Braintree |
|
PayPal |
|
Шавлія Оплата |
|
Шавлія Оплата |
|
Authorize.Net |
|
PayPal |
|
Authorize.Net |
Verisign | |
|
PayPal |
|
Authorize.Net |
|
Смуга |
|
Authorize.Net |
eWAY Rapid | |
Шавлія Оплата | |
|
Authorize.Net |
Braintree | |
|
PayPal |
|
Шавлія Оплата |
Шавлія Оплата | |
|
Authorize.Net |
PayPal | |
Authorize.Net | |
|
Verisign |
|
Authorize.Net |
|
Authorize.Net |
|
Authorize.Net |
|
Authorize.Net |
|
Шавлія Оплата |
Шавлія Оплата | |
|
Westpac PayWay |
|
PayFort |
|
PayPal |
|
Authorize.Net |
|
Смуга |
|
First Data Global Gateway |
|
PsiGate |
Authorize.Net | |
Authorize.Net | |
|
Монеріс |
|
Authorize.Net |
Шавлія Оплата | |
|
Verisign |
Монеріс | |
PayPal | |
|
LinkPoint |
|
Westpac PayWay |
Authorize.Net | |
|
Монеріс |
|
PayPal |
Адієн | |
PayPal | |
Authorize.Net | |
USAePay | |
EBizCharge | |
|
Authorize.Net |
|
Verisign |
Verisign | |
Authorize.Net | |
|
PayPal |
|
Монеріс |
Authorize.Net | |
|
PayPal |
PayPal | |
Westpac PayWay | |
Authorize.Net | |
|
Authorize.Net |
Шавлія Оплата | |
|
Verisign |
|
Authorize.Net |
|
PayPal |
|
PayFort |
Cyber Source | |
PayPal Payflow Pro | |
|
Authorize.Net |
|
Authorize.Net |
Verisign | |
|
Authorize.Net |
|
Authorize.Net |
Шавлія Оплата | |
Authorize.Net | |
|
Смуга |
|
Authorize.Net |
Authorize.Net | |
Verisign | |
|
PayPal |
Authorize.Net | |
|
Authorize.Net |
Шавлія Оплата | |
|
Authorize.Net |
|
Authorize.Net |
|
PayPal |
|
Кремень |
|
PayPal |
Шавлія Оплата | |
Verisign | |
|
Authorize.Net |
|
Authorize.Net |
|
Смуга |
|
Товста зебра |
Шавлія Оплата | |
|
Authorize.Net |
First Data Global Gateway | |
|
Authorize.Net |
|
eWAY Rapid |
Адієн | |
|
PayPal |
Послуги продавців QuickBooks | |
Verisign | |
|
Шавлія Оплата |
Verisign | |
|
Authorize.Net |
|
Authorize.Net |
Шавлія Оплата | |
|
Authorize.Net |
|
eWAY Rapid |
Authorize.Net | |
|
ANZ eGate |
|
PayPal |
Cyber Source | |
|
Authorize.Net |
Шавлія Оплата | |
|
Realex |
Cyber Source | |
|
PayPal |
|
PayPal |
|
PayPal |
|
Verisign |
eWAY Rapid | |
|
Шавлія Оплата |
|
Шавлія Оплата |
|
Verisign |
Authorize.Net | |
|
Authorize.Net |
|
First Data Global Gateway |
Authorize.Net | |
Authorize.Net | |
|
Монеріс |
|
Authorize.Net |
|
PayPal |
Сніффер паролів
Однією з переваг JavaScript-сніферів, що працюють на клієнтській стороні сайту, є універсальність: впроваджений на сайт шкідливий код здатний викрасти дані будь-якого типу, будь то платіжні дані або логін і пароль від облікового запису користувача. Фахівці Group-IB виявили зразок сніффера, що відноситься до сімейства ReactGet, призначений для крадіжки адрес електронної пошти та паролів користувачів сайту.
Перетин зі сніффером ImageID
Під час аналізу одного із заражених магазинів було встановлено, що його сайт зазнав зараження двічі: крім шкідливого коду сніффера сімейства ReactGet, було виявлено код сніффера сімейства ImageID. Дане перетин може бути свідченням того, що оператори, що стоять за використанням обох сніфферів, використовують подібні техніки для застосування шкідливого коду.
Універсальний сніффер
У ході аналізу одного з доменних імен, які стосуються інфраструктури сніферів ReactGet, було встановлено, що той самий користувач зареєстрував три інші доменні імені. Ці три домени імітували домени реально існуючих сайтів і раніше використовувалися для розміщення сніфферів. При аналізі коду трьох легітимних сайтів виявили невідомий сніффер, а подальший аналіз показав, що це вдосконалена версія сніфера ReactGet. Усі раніше відстежені версії сніферів цього сімейства були націлені на якусь одну платіжну систему, тобто для кожної платіжної системи була потрібна спеціальна версія сніффера. Однак у цьому випадку було виявлено універсальну версію сніфера, здатну викрадати інформацію з форм, що належать до 15 різних платіжних систем і модулів ecommerce-сайтів для проведення онлайн-платежів.
Отже, на початку роботи сніфер здійснював пошук базових полів форми, що містять персональну інформацію жертви: повне ім'я, фізичну адресу, номер телефону.
Потім сніффер здійснював пошук більш ніж за 15 різними префіксами, що відповідають різним платіжним системам та модулям для онлайн-платежів.
Далі персональні дані жертви та платіжна інформація збиралися воєдино і відправлялися на підконтрольний зловмиснику сайт: у цьому конкретному випадку було виявлено дві версії універсального сніфера ReactGet, розташовані на двох різних зламаних сайтах. Проте обидві версії відправляли вкрадені дані на той самий зламаний сайт zoobashop.com.
Аналіз префіксів, які використовували сніффер для пошуку полів, що містять платіжну інформацію жертви, дозволив визначити, що цей зразок сніфера був націлений на такі платіжні системи:
- Authorize.Net
- Verisign
- First Data
- USAePay
- Смуга
- PayPal
- ANZ eGate
- Braintree
- DataCash (MasterCard)
- Realex Payments
- PsiGate
- Heartland Платіжні системи
Які інструменти використовуються для крадіжки платіжної інформації
Перший інструмент, виявлений під час аналізу інфраструктури атакуючих, служить для обфускації шкідливих скриптів, які відповідають за крадіжку банківських карток. На одному з хостів атакуючих було виявлено bash-скрипт, який використовує CLI проекту
Другий виявлений інструмент призначений для генерації коду, який відповідає за підвантаження основного сніфера. Даний інструмент генерує JavaScript-код, який перевіряє, чи користувач на сторінці оплати, шляхом пошуку в поточній адресі користувача рядків контроль, cart і так далі, і якщо результат позитивний, код підвантажує основний сніффер з сервера зловмисників. Для приховання шкідливої активності всі рядки, включаючи тестові рядки для визначення платіжної сторінки, а також посилання на сніффер, закодовані за допомогою base64.
Фішингові атаки
В ході аналізу мережної інфраструктури атакуючих було встановлено, що найчастіше для отримання доступу до адміністративної панелі цільового онлайн-магазину злочинна група використовує фішинг. Атакуючі реєструють домен, що візуально схожий на домен магазину, а потім розгортають на ньому підроблену форму входу адміністративної панелі Magento. У разі успіху атакуючі отримають доступ до адміністративної панелі CMS Magento, що дає їм можливість редагувати компоненти сайту та впровадити сніффер для крадіжки даних кредитних карток.
Інфраструктура
домен | Дата виявлення/появи |
---|---|
mediapack.info | 04.05.2017 |
adsgetapi.com | 15.06.2017 |
simcounter.com | 14.08.2017 |
mageanalytics.com | 22.12.2017 |
maxstatics.com | 16.01.2018 |
reactjsapi.com | 19.01.2018 |
mxcounter.com | 02.02.2018 |
apitstatus.com | 01.03.2018 |
orderracker.com | 20.04.2018 |
tagstracking.com | 25.06.2018 |
adsapigate.com | 12.07.2018 |
trust-tracker.com | 15.07.2018 |
fbstatspartner.com | 02.10.2018 |
billgetstatus.com | 12.10.2018 |
aldenmlilhouse.com | 20.10.2018 |
balletbeautlful.com | 20.10.2018 |
bargalnjunkie.com | 20.10.2018 |
payselector.com | 21.10.2018 |
tagsmediaget.com | 02.11.2018 |
hs-payments.com | 16.11.2018 |
ordercheckpays.com | 19.11.2018 |
geisseie.com | 24.11.2018 |
gtmproc.com | 29.11.2018 |
livegetpay.com | 18.12.2018 |
sydneysalonsupplies.com | 18.12.2018 |
newrelicnet.com | 19.12.2018 |
nr-public.com | 03.01.2019 |
cloudodesc.com | 04.01.2019 |
ajaxstatic.com | 11.01.2019 |
livecheckpay.com | 21.01.2019 |
asianfoodgracer.com | 25.01.2019 |
Сімейство G-Analytics
Це сімейство сніферів використовується для крадіжки карток клієнтів онлайн-магазинів. Найперше доменне ім'я, яке використовується групою, було зареєстроване у квітні 2016 року, що може свідчити про початок активності групи в середині 2016 року.
У поточній кампанії група використовує доменні імена, що імітують реально існуючі сервіси, такі як Google Analytics та jQuery, маскуючи активність сніферів легітимними скриптами та схожими на легітимні доменні імена. Атаку зазнали сайти, що працюють під керуванням CMS Magento.
Як G-Analytics впроваджується у код онлайн-магазину
Відмінна риса цього сімейства - використання різних способів викрадення платіжної інформації користувача. Крім класичного впровадження JavaScript-коду в клієнтську частину сайту, злочинна група також застосовувала техніку впровадження коду в серверну частину сайту, а саме PHP-скрипти, які обробляють введені користувачем дані. Ця техніка небезпечна тим, що ускладнює виявлення шкідливого коду сторонніми дослідниками. Фахівцями Group-IB була виявлена версія сніффера, впровадженого в PHP-код сайту, яка використовує як гейт домен dittm.org.
Також була виявлена рання версія сніффера, який використовує для збору вкрадених даних той самий домен dittm.org, але ця версія призначена для установки на клієнтській стороні онлайн-магазину.
Пізніше група змінила свою тактику і почала приділяти більше уваги приховування шкідливої активності та маскування.
На початку 2017 року група почала використовувати домен jquery-js.com, що маскується під CDN для jQuery: при переході на сайт зловмисників користувача перенаправляє на легітимний сайт jquery.com.
А в середині 2018 року група взяла на озброєння доменне ім'я. g-analytics.com та почала маскувати діяльність сніфера під легітимний сервіс Google Analytics.
Аналіз версій
У ході аналізу доменів, що використовуються для зберігання коду сніферів, було встановлено, що на сайті розміщується велика кількість версій, які відрізняються наявністю обфускації, а також наявністю або відсутністю недосяжного коду, доданого до файлу для відволікання уваги та приховування шкідливого коду.
Всього на сайті jquery-js.com було виявлено шість версій сніфферів. Вкрадені дані ці сніфери відправляють на адресу, розташовану на тому ж сайті, що і сам сніффер: hxxps://jquery-js[.]com/latest/jquery.min.js:
- hxxps://jquery-js[.]com/jquery.min.js
- hxxps://jquery-js[.]com/jquery.2.2.4.min.js
- hxxps://jquery-js[.]com/jquery.1.8.3.min.js
- hxxps://jquery-js[.]com/jquery.1.6.4.min.js
- hxxps://jquery-js[.]com/jquery.1.4.4.min.js
- hxxps://jquery-js[.]com/jquery.1.12.4.min.js
Пізніший домен g-analytics.com, що використовується групою в атаках з середини 2018 року, є сховищем для більшої кількості сніферів. Усього було виявлено 16 різних версій сніффера. У цьому випадку гейт для відправлення вкрадених даних був замаскований під посилання на формат зображення GIF: hxxp://g-analytics[.]com/__utm.gif?v=1&_v=j68&a=98811130&t=pageview&_s=1&sd=24-bit&sr=2560×1440&vp=2145×371&je=0&_u=AACAAEAB~&jid=1841704724&gjid=877686936&cid
= 1283183910.1527732071:
- hxxps://g-analytics[.]com/libs/1.0.1/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.10/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.11/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.12/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.13/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.14/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.15/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.16/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.3/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.4/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.5/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.6/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.7/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.8/analytics.js
- hxxps://g-analytics[.]com/libs/1.0.9/analytics.js
- hxxps://g-analytics[.]com/libs/analytics.js
Монетизація вкрадених даних
Злочинна група монетизує вкрадені дані, продаючи карти через спеціально створений підпільний магазин, який надає послуги кардерам. Аналіз доменів, що використовуються атакуючими, дозволив визначити, що google-analytics.cm був зареєстрований тим самим користувачем, що й домен cardz.vc. Домен cardz.vc відноситься до магазину з продажу вкрадених банківських карток Cardsurfs (Flysurfs), який набув популярності ще за часів активності підпільного торгового майданчика AlphaBay як магазин з продажу банківських карток, вкрадених за допомогою сніффера.
Аналізуючи домен analytic.is, розташований на тому ж сервері, що і домени, які використовуються сніфферами для збору вкрадених даних, фахівці Group-IB виявили файл, що містить логи Cookie-стилера, який, схоже, пізніше був покинутий розробником. Один із записів у лозі містив домен iozoz.com, який раніше був використаний в одному із сніфферів, активних у 2016 році. Імовірно, цей домен раніше використовувався зловмисником для збору вкрадених за допомогою сніффера карт. Цей домен був зареєстрований на email-адресу [захищено електронною поштою], який також був використаний для реєстрації доменів cardz.su и cardz.vc, що належать до кардингового магазину Cardsurfs.
Виходячи з отриманих даних, можна зробити припущення, що сімейство сніферів G-Analytics і підпільний магазин з продажу банківських карток Cardsurfs управляються одними і тими ж людьми, а магазин використовується для реалізації банківських карток, вкрадених за допомогою сніффера.
Інфраструктура
домен | Дата виявлення/появи |
---|---|
iozoz.com | 08.04.2016 |
dittm.org | 10.09.2016 |
jquery-js.com | 02.01.2017 |
g-analytics.com | 31.05.2018 |
google-analytics.is | 21.11.2018 |
analytic.to | 04.12.2018 |
google-analytics.to | 06.12.2018 |
google-analytics.cm | 28.12.2018 |
analytic.is | 28.12.2018 |
googlc-analytics.cm | 17.01.2019 |
Сімейство Illum
Illum - сімейство сніферів, що застосовується для атак на онлайн-магазини, що працюють під керуванням CMS Magento. Крім впровадження шкідливого коду, оператори цього сніффера також використовують запровадження повноцінних підроблених форм оплати, які надсилають дані на підконтрольні зловмисникам гейти.
При аналізі мережної інфраструктури, яку використовують оператори цього сніфера, було відзначено велику кількість шкідливих скриптів, експлойтів, підроблених платіжних форм, а також збірку прикладів із шкідливими сніфферами конкурентів. Виходячи з інформації про дати появи доменних імен, що використовуються групою, можна припустити, що початок кампанії припадає на кінець 2016 року.
Як Illum впроваджується у код онлайн-магазину
Перші виявлені версії сніффера впроваджувалися прямо в код компрометованого сайту. Вкрадені дані надсилалися за адресою cdn.illum[.]pw/records.php, Гейт же був закодований за допомогою base64.
Пізніше було виявлено упаковану версію сніффера, яка використовує інший гейт. records.nstatistics[.]com/records.php.
Згідно з
Аналіз сайту зловмисників
Фахівці Group-IB виявили та проаналізували сайт, який використовується цією злочинною групою для зберігання інструментів та збору вкраденої інформації.
Серед інструментів, виявлених на сервері зловмисників, було знайдено скрипти та експлойти для підвищення привілеїв в ОС Linux: наприклад, Linux Privilege Escalation Check Script, розроблений Майком Чумаком (Mike Czumak), а також експлойт для CVE-2009-1185.
Безпосередньо для атак на онлайн-магазини зловмисники використали два експлойти:
Також в ході аналізу сервера були виявлені різні зразки сніферів та фальшивих платіжних форм, які використовуються зловмисниками для збору платіжної інформації зі зламаних сайтів. Як можна помітити зі списку нижче, деякі скрипти створювалися індивідуально для кожного зламаного сайту, тоді як для певних CMS та платіжних шлюзів використовувалось універсальне рішення. Наприклад, скрипти segapay_standart.js и segapay_onpage.js призначені для впровадження на сайти, які використовують платіжний шлюз Sage Pay.
Список скриптів для різних платіжних шлюзів
Сценарій | платіжний шлюз |
---|---|
|
//request.payrightnow[.]cf/checkpayment.php |
|
//request.payrightnow[.]cf/alldata.php |
|
//request.payrightnow[.]cf/alldata.php |
|
//request.payrightnow[.]cf/alldata.php |
|
//request.payrightnow[.]cf/alldata.php |
|
//request.payrightnow[.]cf/alldata.php |
|
//request.payrightnow[.]cf/checkpayment.php |
|
//cdn.illum[.]pw/records.php |
|
//request.payrightnow[.]cf/checkpayment.php |
|
//cdn.illum[.]pw/records.php |
|
//request.payrightnow[.]cf/alldata.php |
|
//request.payrightnow[.]cf/alldata.php |
//request.payrightnow[.]cf/checkpayment.php | |
|
//request.payrightnow[.]cf/checkpayment.php |
|
//request.payrightnow[.]cf/alldata.php |
|
//cdn.illum[.]pw/records.php |
|
//cdn.illum[.]pw/records.php |
|
//request.payrightnow[.]cf/checkpayment.php |
|
//cdn.illum[.]pw/records.php |
//request.payrightnow[.]cf/checkpayment.php | |
|
//cdn.illum[.]pw/records.php |
//payrightnow[.]cf/?payment= | |
|
//payrightnow[.]cf/?payment= |
|
//paymentnow[.]tk/?payment= |
хост paymentnow[.]tk, що використовується як гейт у скрипті payment_forminsite.js, був виявлений як subjectAltName у кількох сертифікатах, що належать до сервісу CloudFlare. Крім цього, на хості розташовувався скрипт evil.js. Судячи з імені скрипта, він міг бути використаний в рамках експлуатації CVE-2016-4010, завдяки якій можна впровадити шкідливий код у footer сайту під керуванням CMS Magento. Як гейт цей скрипт застосував хост request.requestnet[.]tk, який використовує той же сертифікат, що і хост paymentnow[.]tk.
Підроблені платіжні форми
Нижче на малюнку показано приклад форми для введення даних картки. Ця форма використовувалася для впровадження на сайт онлайн-магазину та крадіжки даних карток.
На наступному малюнку приклад підробленої платіжної форми PayPal, яку використовували зловмисники для впровадження на сайти з цим методом оплати.
Інфраструктура
домен | Дата виявлення/появи |
---|---|
cdn.illum.pw | 27/11/2016 |
records.nstatistics.com | 06/09/2018 |
request.payrightnow.cf | 25/05/2018 |
paymentnow.tk | 16/07/2017 |
payment-line.tk | 01/03/2018 |
paymentpal.cf | 04/09/2017 |
requestnet.tk | 28/06/2017 |
Сімейство CoffeMokko
Сімейство сніферів CoffeMokko, призначених для крадіжки банківських карт користувачів інтернет-магазинів, використовується як мінімум із травня 2017 року. Імовірно, операторами даного сімейства сніферів є злочинна група Group 1, описана фахівцями RiskIQ у 2016 році. Атакам зазнали сайти під керуванням таких CMS, як Magento, OpenCart, WordPress, osCommerce, Shopify.
Як CoffeMokko впроваджується у код онлайн-магазину
Оператори цього сімейства створюють унікальні сніфери для кожного зараження: файл сніфера знаходиться в директорії SRC або js на сервері зловмисників. Впровадження в код сайту здійснюється за прямим посиланням на сніффер.
У коді сніфера жорстко закодовані назви полів форми, з яких необхідно вкрасти дані. Також сніффер перевіряє, чи користувач на сторінці оплати, звіряючи список ключових слів з поточною адресою користувача.
Деякі знайдені версії сніфера були обфусцовані і містили зашифрований рядок, в якому зберігався основний масив ресурсів: саме в ньому були імена полів форм для різних платіжних систем, а також адреса гейту, на яку необхідно надсилати вкрадені дані.
Вкрадена платіжна інформація надсилалася скрипту на сервері зловмисників по дорозі /savePayment/index.php або /tr/index.php. Імовірно, цей скрипт служить для відправлення даних з гейту на основний сервер, що консолідує дані з усіх сніферів. Для приховування даних вся платіжна інформація жертви кодується за допомогою base64, а потім відбувається кілька замін символів:
- символ "e" замінюється на ":"
- символ "w" замінюється на "+"
- символ "o" замінюється на "%"
- символ "d" замінюється на "#"
- символ «a» замінюється на «-»
- символ "7" замінюється на "^"
- символ "h" замінюється на "_"
- символ «T» замінюється на «@»
- символ "0" замінюється на "/"
- символ «Y» замінюється на «*»
В результаті замін символів закодовані за допомогою base64 дані неможливо декодувати, не провівши зворотного перетворення.
Так виглядає фрагмент коду сніффера, що не зазнавав обфускації:
Аналіз інфраструктури
У ранніх кампаніях зловмисники реєстрували доменні імена, схожі на домени легітимних сайтів онлайн-магазинів. Їхній домен міг відрізнятися від легітимного одним символом або іншим TLD. Зареєстровані домени використовувалися для зберігання коду сніфера, посилання на який впроваджувалося в код магазину.
Також ця група використовувала доменні імена, що нагадують назву популярних плагінів для jQuery (slickjs[.]org для сайтів, що використовують плагін slick.js), платіжних шлюзів (sagecdn[.]org для сайтів, які використовують платіжну систему Sage Pay.
Пізніше група почала створювати домени, назва яких мала нічого спільного ні з доменом магазину, ні з тематикою магазину.
Кожному домену відповідав сайт, на якому створювалася директорія / js або / src. У цій директорії зберігалися скрипти сніфферів: по одному сніффер на кожне нове зараження. Сніффер впроваджувався в код сайту за прямим посиланням, але в окремих випадках зловмисники модифікували один із файлів сайту і додавали в нього шкідливий код.
Аналіз коду
Перший алгоритм обфускації
У деяких виявлених зразках сніфферів цього сімейства код був обфусцований і містив зашифровані дані, необхідні для роботи сніфера: зокрема, адреса гейта сніфера, список полів платіжної форми, а в деяких випадках код підробленої форми оплати. У коді всередині функції ресурси були зашифровані за допомогою XOR за ключом, який передавався аргументом цієї функції.
Розшифрувавши рядок відповідним ключем, унікальним для кожного зразка, можна отримати рядок, який містить усі рядки з коду сніфера через символ-розділювач.
Другий алгоритм обфускації
У пізніших зразках сніферів цього сімейства використали інший механізм обфускації: у разі дані були зашифровані з допомогою самописного алгоритму. Рядок, що містить зашифровані дані, необхідні для роботи сніффера, передавався аргументом функції розшифрування.
За допомогою консолі браузера можна розшифрувати зашифровані дані та отримати масив, що містить ресурси сніфера.
Зв'язок із ранніми атаками MageCart
У ході аналізу одного з доменів, що використовуються групою як гейт для збору вкрадених даних, було встановлено, що на цьому домені розгорнуто інфраструктуру для крадіжки кредитних карт, ідентичну тій, яка використовувалася Group 1 — однією з перших груп,
На хості сімейства сніферів CoffeMokko було виявлено два файли:
- mage.js - файл, що містить код сніфера Group 1 з адресою гейту js-cdn.link
- mag.php - PHP-скрипт, який відповідає за збір вкрадених сніффером даних
Вміст файлу mage.js
Також було встановлено, що ранні домени, що використовуються групою, що стоїть за сімейством сніферів CoffeMokko, були зареєстровані 17 травня 2017 року:
- link-js[.]link
- info-js[.]link
- track-js[.]link
- map-js[.]link
- smart-js[.]link
Формат цих доменних імен збігається із доменними іменами Group 1, які були використані в атаках 2016 року.
На основі виявлених фактів можна зробити припущення, що між операторами сніферів CoffeMokko та злочинною групою Group 1 є зв'язок. Імовірно, оператори CoffeMokko могли запозичити у своїх попередників інструменти та програмне забезпечення для крадіжки карт. Проте більш ймовірно, що злочинна група, що стоїть за використанням сніфферів сімейства CoffeMokko, — це ті ж люди, що здійснювали атаки в рамках діяльності Group 1. Після публікації першого звіту про діяльність злочинної групи всі їхні доменні імена були заблоковані, а інструменти докладно вивчені описані. Група була змушена взяти перерву, доопрацювати свої внутрішні інструменти та переписати код сніферів для того, щоб продовжити свої атаки та залишатися непоміченими.
Інфраструктура
домен | Дата виявлення/появи |
---|---|
link-js.link | 17.05.2017 |
info-js.link | 17.05.2017 |
track-js.link | 17.05.2017 |
map-js.link | 17.05.2017 |
smart-js.link | 17.05.2017 |
adorebeauty.org | 03.09.2017 |
security-payment.su | 03.09.2017 |
braincdn.org | 04.09.2017 |
sagecdn.org | 04.09.2017 |
slickjs.org | 04.09.2017 |
oakandfort.org | 10.09.2017 |
citywlnery.org | 15.09.2017 |
dobell.su | 04.10.2017 |
childsplayclothing.org | 31.10.2017 |
jewsondirect.com | 05.11.2017 |
shop-rnib.org | 15.11.2017 |
closetlondon.org | 16.11.2017 |
misshaus.org | 28.11.2017 |
battery-force.org | 01.12.2017 |
kik-vape.org | 01.12.2017 |
greatfurnituretradingco.org | 02.12.2017 |
etradesupply.org | 04.12.2017 |
replacemyremote.org | 04.12.2017 |
all-about-sneakers.org | 05.12.2017 |
mage-checkout.org | 05.12.2017 |
nililotan.org | 07.12.2017 |
lamoodbighats.net | 08.12.2017 |
walletgear.org | 10.12.2017 |
dahlie.org | 12.12.2017 |
davidsfootwear.org | 20.12.2017 |
blackriverimaging.org | 23.12.2017 |
exrpesso.org | 02.01.2018 |
parks.su | 09.01.2018 |
pmtonline.su | 12.01.2018 |
ottocap.org | 15.01.2018 |
christohperward.org | 27.01.2018 |
coffetea.org | 31.01.2018 |
energycoffe.org | 31.01.2018 |
energytea.org | 31.01.2018 |
teacoffe.net | 31.01.2018 |
adaptivecss.org | 01.03.2018 |
coffemokko.com | 01.03.2018 |
londontea.net | 01.03.2018 |
ukcoffe.com | 01.03.2018 |
labbe.biz | 20.03.2018 |
batterynart.com | 03.04.2018 |
btosports.net | 09.04.2018 |
chicksaddlery.net | 16.04.2018 |
paypaypay.org | 11.05.2018 |
ar500arnor.com | 26.05.2018 |
authorizecdn.com | 28.05.2018 |
slickmin.com | 28.05.2018 |
bannerbuzz.info | 03.06.2018 |
kandypens.net | 08.06.2018 |
mylrendyphone.com | 15.06.2018 |
freshchat.info | 01.07.2018 |
3lift.org | 02.07.2018 |
abtasty.net | 02.07.2018 |
mechat.info | 02.07.2018 |
zoplm.com | 02.07.2018 |
zapaljs.com | 02.09.2018 |
foodandcot.com | 15.09.2018 |
freshdepor.com | 15.09.2018 |
swappastore.com | 15.09.2018 |
verywellfitnesse.com | 15.09.2018 |
elegrina.com | 18.11.2018 |
majsurplus.com | 19.11.2018 |
top5value.com | 19.11.2018 |
Джерело: habr.com