
Skoraj vsak od nas uporablja storitve spletnih trgovin, kar pomeni, da bomo prej ali slej tvegali, da postanemo žrtev JavaScript snifferjev — posebne kode, ki jo zlonamerni uporabniki vstavijo na spletno stran za krajo podatkov o bančnih karticah, naslovih, ali uporabniških imenih in geslih.
Že skoraj 400.000 uporabnikov spletne strani in mobilne aplikacije letalske družbe British Airways je utrpelo škodo zaradi snifferjev, prav tako obiskovalci britanske strani športnega velikana FILA in ameriškega distributerja vstopnic Ticketmaster. PayPal, Chase Paymenttech, USAePay, Moneris — te in mnoge druge plačilne sisteme so napadli.
Analitik skupine Threat Intelligence Group-IB Viktor Okorokov razlaga, kako snifferji vstopajo v kodo spletne strani in kradejo plačilne informacije, ter na katere CRM sisteme nastavljajo napade.

»Skrita grožnja«
Tako se je zgodilo, da so JS snifferji dolgo časa ostali zunaj vidnega polja protivirusnih analitikov, banke in plačilni sistemi pa jih niso videli kot resno grožnjo. In povsem neutemeljeno. Strokovnjaki Group-IB 2440 okuženih spletnih trgovin, katerih obiskovalci — skupaj približno 1,5 milijona na dan — so bili izpostavljeni tveganju kompromitacije. Med tistimi, ki so utrpeli škodo, niso samo uporabniki, temveč tudi spletne trgovine, plačilni sistemi in banke, ki so izdale kompromitirane kartice.
Group-IB je postalo prva raziskava o darknet trgu snifferjev, njihovi infrastrukturi in načinih monetizacije, ki njihovim ustvarjalcem prinaša milijone dolarjev. Ugotovili smo 38 družin snifferjev, od katerih je le 12 prej poznalo raziskovalcem.
Podrobneje se bomo osredotočili na štiri družine snifferjev, ki smo jih preučevali med raziskavo.
Družina ReactGet
Snimferji družine ReactGet se uporabljajo za krajo podatkov kreditnih kartic na spletnih straneh spletnih trgovin. Snimfer lahko deluje z veliko različnimi plačilnimi sistemi, ki se uporabljajo na strani: en vrednost parametra ustreza enemu plačilnemu sistemu, dodatne odkrite različice snimferja pa se lahko uporabljajo za krajo prijavnih podatkov, kot tudi za krajo podatkov kreditnih kartic iz plačilnih obrazcev takoj več plačilnih sistemov, kot tako imenovani univerzalni snimfer. Ugotovljeno je bilo, da v nekaterih primerih napadalci izvajajo phishing napade na skrbnike spletnih trgovin z namenom pridobitve dostopa do administratorskega vmesnika spletne strani.
Kampanja z uporabo te družine snimferjev se je začela maja 2017, napadeni so bili spletni strani pod upravljanjem CMS in platform Magento, Bigcommerce, Shopify.
Kako ReactGet vstopa v kodo spletne trgovine
Poleg 'klasičnega' vstavitve skripta prek povezave, operaterji snimferjev družine ReactGet uporabljajo posebno tehniko: s pomočjo JavaScript kode preverjajo, ali trenutni naslov, na katerem se nahaja uporabnik, ustreza določenim kriterijem. Zlonamerna koda se bo izvedla le, če trenutni URL vsebuje podniz checkout ili onestepcheckout, onepage/, out/onepag, checkout/one, ckout/one. Tako bo koda snimferja izvedena ravno v trenutku, ko bo uporabnik prešel na plačilo in vnesel plačilne podatke v obrazec na spletni strani.

Ta snimfer uporablja nestandardno tehniko. Plačilni in osebni podatki žrtve se zbirajo skupaj, kodirani s pomočjo base64, nato pa se pridobljena vrstica uporablja kot parameter za pošiljanje zahteve na spletno stran napadalcev. Najpogosteje pot do gajta posnema JavaScript datoteko, na primer resp.js, data.js in tako naprej, vendar se uporabljajo tudi povezave na slikovne datoteke, GIF in JPG. Značilnost je, da snimfer ustvari slikovni objekt velikosti 1 na 1 piksel in uporabi prej pridobljeno povezavo kot parameter src slike. To pomeni, da bo takšen poziv za uporabnika v prometu izgledal kot zahteva navadne slike. Podobna tehnika je bila uporabljena v sniffers družine ImageID. Poleg tega se tehnika z uporabo slike velikosti 1 na 1 piksel uporablja v mnogih legitimnih skriptih za spletno analitiko, kar lahko uporabnika še dodatno zmede.

Analiza različic
Analiza aktivnih domen, ki jih uporabljajo operaterji sniffers ReactGet, je omogočila odkritje številnih različnih različic teh sniffers. Različice se razlikujejo po prisotnosti ali odsotnosti obfuzacije, poleg tega pa je vsak sniffer namenjen določenemu plačilnemu sistemu, ki obdeluje plačila s kreditnimi karticami za spletne trgovine. S preizkušanjem vrednosti parametra, ki ustreza številu različice, so strokovnjaki iz Group-IB dobili celoten seznam razpoložljivih variacij snifferjev, po imenu polj oblik, ki jih vsak sniffer išče v kodi strani, pa so določili plačilne sisteme, na katere je sniffer usmerjen.
Seznam snifferjev in povezanih plačilnih sistemov
| URL snifferja | Plačilni sistem |
|---|---|
| Authorize.Net | |
| Cardsave | |
| Authorize.Net | |
| Authorize.Net | |
| eWAY Rapid | |
| Authorize.Net | |
| Adyen | |
| USAePay | |
| Authorize.Net | |
| USAePay | |
| Authorize.Net | |
| Moneris | |
| USAePay | |
| PayPal | |
| Sage Pay | |
| Verisign | |
| PayPal | |
| Stripe | |
| Realex | |
| PayPal | |
| LinkPoint | |
| PayPal | |
| PayPal | |
| DataCash | |
| PayPal | |
| Authorize.Net | |
| Authorize.Net | |
| Authorize.Net | |
| Authorize.Net | |
| Verisign | |
| Authorize.Net | |
| Moneris | |
| Sage Pay | |
| USAePay | |
| Authorize.Net | |
| Authorize.Net | |
| ANZ eGate | |
| Authorize.Net | |
| Moneris | |
| Sage Pay | |
| Sage Pay | |
| Chase Paymentech | |
| Authorize.Net | |
| Adyen | |
| PsiGate | |
| CyberSource | |
| ANZ eGate | |
| Realex | |
| USAePay | |
| Authorize.Net | |
| Authorize.Net | |
| ANZ eGate | |
| PayPal | |
| PayPal | |
| Realex | |
| Sage Pay | |
| PayPal | |
| Verisign | |
| Authorize.Net | |
| Verisign | |
| Authorize.Net | |
| ANZ eGate | |
| PayPal | |
| CyberSource | |
| Authorize.Net | |
| Sage Pay | |
| Realex | |
| CyberSource | |
| PayPal | |
| PayPal | |
| PayPal | |
| Verisign | |
| eWAY Rapid | |
| Sage Pay | |
| Sage Pay | |
| Verisign | |
| Authorize.Net | |
| Authorize.Net | |
| First Data Global Gateway | |
| Authorize.Net | |
| Authorize.Net | |
| Moneris | |
| Authorize.Net | |
| PayPal | |
| Verisign | |
| USAePay | |
| USAePay | |
| Authorize.Net | |
| Verisign | |
| PayPal | |
| Authorize.Net | |
| Stripe | |
| Authorize.Net | |
| eWAY Rapid | |
| Sage Pay | |
| Authorize.Net | |
| Braintree | |
| Braintree | |
| PayPal | |
| Sage Pay | |
| Sage Pay | |
| Authorize.Net | |
| PayPal | |
| Authorize.Net | |
| Verisign | |
| PayPal | |
| Authorize.Net | |
| Stripe | |
| Authorize.Net | |
| eWAY Rapid | |
| Sage Pay | |
| Authorize.Net | |
| Braintree | |
| PayPal | |
| Sage Pay | |
| Sage Pay | |
| Authorize.Net | |
| PayPal | |
| Authorize.Net | |
| Verisign | |
| Authorize.Net | |
| Authorize.Net | |
| Authorize.Net | |
| Authorize.Net | |
| Sage Pay | |
| Sage Pay | |
| Westpac PayWay | |
| PayFort | |
| PayPal | |
| Authorize.Net | |
| Stripe | |
| First Data Global Gateway | |
| PsiGate | |
| Authorize.Net | |
| Authorize.Net | |
| Moneris | |
| Authorize.Net | |
| Sage Pay | |
| Verisign | |
| Moneris | |
| PayPal | |
| LinkPoint | |
| Westpac PayWay | |
| Authorize.Net | |
| Moneris | |
| PayPal | |
| Adyen | |
| PayPal | |
| Authorize.Net | |
| USAePay | |
| EBizCharge | |
| Authorize.Net | |
| Verisign | |
| Verisign | |
| Authorize.Net | |
| PayPal | |
| Moneris | |
| Authorize.Net | |
| PayPal | |
| PayPal | |
| Westpac PayWay | |
| Authorize.Net | |
| Authorize.Net | |
| Sage Pay | |
| Verisign | |
| Authorize.Net | |
| PayPal | |
| PayFort | |
| CyberSource | |
| PayPal Payflow Pro | |
| Authorize.Net | |
| Authorize.Net | |
| Verisign | |
| Authorize.Net | |
| Authorize.Net | |
| Sage Pay | |
| Authorize.Net | |
| Stripe | |
| Authorize.Net | |
| Authorize.Net | |
| Verisign | |
| PayPal | |
| Authorize.Net | |
| Authorize.Net | |
| Sage Pay | |
| Authorize.Net | |
| Authorize.Net | |
| PayPal | |
| Flint | |
| PayPal | |
| Sage Pay | |
| Verisign | |
| Authorize.Net | |
| Authorize.Net | |
| Stripe | |
| Fat Zebra | |
| Sage Pay | |
| Authorize.Net | |
| First Data Global Gateway | |
| Authorize.Net | |
| eWAY Rapid | |
| Adyen | |
| PayPal | |
| QuickBooks Merchant Services | |
| Verisign | |
| Sage Pay | |
| Verisign | |
| Authorize.Net | |
| Authorize.Net | |
| Sage Pay | |
| Authorize.Net | |
| eWAY Rapid | |
| Authorize.Net | |
| ANZ eGate | |
| PayPal | |
| CyberSource | |
| Authorize.Net | |
| Sage Pay | |
| Realex | |
| CyberSource | |
| PayPal | |
| PayPal | |
| PayPal | |
| Verisign | |
| eWAY Rapid | |
| Sage Pay | |
| Sage Pay | |
| Verisign | |
| Authorize.Net | |
| Authorize.Net | |
| First Data Global Gateway | |
| Authorize.Net | |
| Authorize.Net | |
| Moneris | |
| Authorize.Net | |
| PayPal |
Sniffer gesel
Ena od prednosti JavaScript snifferjev, ki delujejo na klijentovi strani spletne strani, je njihova vsestranskost: vdelana zlonamerna koda na strani lahko ukrade podatke katerega koli tipa, bodisi plačilne podatke bodisi uporabniško ime in geslo računa. Strokovnjaki iz Group-IB so odkrili vzorec snifferja, ki pripada družini ReactGet, namenjenemu kraji elektronskih naslovov in gesel uporabnikov spletne strani.

Prekrivanje s snifferjem ImageID
Med analizo ene od okuženih trgovin je bilo ugotovljeno, da je bila njena spletna stran okužena dvakrat: poleg zlonamerne kode snifferja družine ReactGet je bila odkrita tudi koda snifferja družine ImageID. To prekrivanje bi lahko kazalo na to, da operaterji, ki stojijo za uporabo obeh snifferjev, uporabljajo podobne tehnike za vpeljavo zlonamerne kode.

Univerzalni sniffer
При анализе одного из доменных имен, связанных с инфраструктурой снифферов ReactGet, было установлено, что тот же пользователь зарегистрировал три других доменных имени. Эти три домена имитировали настоящие сайты и ранее использовались для размещения снифферов. При анализе кода трех легитимных сайтов был обнаружен неизвестный сниффер, а дальнейший анализ показал, что это усовершенствованная версия сниффера 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 проекта для автоматизации обфускации кода снифферов.
![]()
Drugi od pronađenih alata služi za generisanje koda koji je odgovoran za učitavanje glavnog sniffera. Ovaj alat generiše JavaScript kod koji proverava da li se korisnik nalazi na stranici za plaćanje, tražeći u trenutnoj adresi korisnika niz checkout, korpa i tako dalje, i ako je rezultat pozitivan, kod učitava glavni sniffer s servera napadača. Kako bi sakrili malicioznu aktivnost, svi stringovi, uključujući testne stringove za identifikaciju stranice za plaćanje, kao i link na sniffer, su kodirani pomoću base64.

Phishing napadi
Tokom analize mrežne infrastrukture napadača utvrđeno je da često za pristup administratorskoj panelu ciljnog online prodavca zločinačka grupa koristi phishing. Napadači registruju domen koji je vizuelno sličan domenu prodavnice, a zatim postavljaju lažni obrazac za prijavu administratorske panele Magento. U slučaju uspeha, napadači dobijaju pristup u CMS Magento administrativni panel, što im omogućava da uređuju komponente sajta i implementiraju sniffer za krađu podataka o kreditnim karticama.

Infrastruktura
| Domen | Datum otkrića/pojave |
|---|---|
| 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 Family
Ova porodica sniffera se koristi za krađu kartica klijenata online prodavnica. Najpre registrovano domensko ime koje je koristila grupa bilo je u aprilu 2016. godine, što može ukazivati na početak aktivnosti grupe sredinom 2016. godine.
U trenutnoj kampanji grupa koristi domenska imena koja imituju stvarne servise, poput Google Analytics i jQuery, maskirajući aktivnost sniffera legitimnim skriptama i sličnim legitimnim domenima. Meta su bili sajtovi koji koriste CMS Magento.
Kako se G-Analytics implementira u kod online prodavnice
Posebna značilnost ove porodice je korišćenje različitih metoda krađe platnih informacija korisnika. Osim klasičnog umetanja JavaScript koda u klijentski deo sajta, zločinačka grupa je takođe koristila tehniku umetanja koda u serverski deo sajta, naročito PHP skripte koje obrađuju podatke koje korisnik unosi. Ova tehnika je opasna jer otežava otkrivanje malicioznog koda od strane vanjskih istražitelja. Stručnjaci Group-IB su otkrili verziju sniffer-a ugrađenog u PHP kod sajta, koji koristi kao gateway domen dittm.org.

Takođe je otkrivena ranoj verziji sniffer-a, koja koristi isti domen za prikupljanje ukradenih podataka dittm.org, ali ova verzija je već namenjena za instalaciju na klijentskoj strani online prodavnice.

Kasnije je grupa promenila svoju taktiku i počela da se više fokusira na skrivanje maliciozne aktivnosti i maskiranje.
Početkom 2017. godine grupa je počela da koristi domen jquery-js.com, koji se maskira kao CDN za jQuery: kada korisnik pređe na sajt napadača, preusmerava ga na legitiman sajt jquery.com.
A sredinom 2018. godine grupa je usvojila domen g-analytics.com i počela da maskira aktivnosti sniffer-a kao legitiman servis Google Analytics.


Analiza različic
Tokom analize domena koji se koriste za skladištenje koda sniffer-a, utvrđeno je da na sajtu postoji veliki broj verzija koje se razlikuju po prisutnosti obfuskacije, kao i po prisustvu ili odsustvu nedostupnog koda koji je dodat u fajl radi odvlačenja pažnje i sakrivanja malicioznog koda.
Svega na sajtu jquery-js.com je otkriveno šest verzija sniffer-a. Ukradeni podaci se šalju na adresu koja se nalazi na istom sajtu gde je i sam sniffer: 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
Kasniji domen g-analytics.com, koji grupa koristi u napadima od sredine 2018. godine, služi kao skladište za veći broj sniffer-a. Svega je otkriveno 16 različitih verzija sniffer-a. U ovom slučaju, gateway za slanje ukradenih podataka je maskiran kao link na sliku formata 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
Monetizacija ukradenih podataka
Zločinačka grupa monetizuje ukradene podatke prodajom kartica putem specijalno kreirane podzemne prodavnice koja nudi usluge karderima. Analiza domena koje koriste napadači omogućila je određivanje da google-analytics.cm был зарегистрирован тем же пользователем, что и домен cardz.vc. Домен cardz.vc относится к магазину по продаже украденных банковских карт Cardsurfs (Flysurfs), который обрел популярность еще во времена активности подпольной торговой площадки AlphaBay как магазин по продаже банковских карт, украденных при помощи сниффера.

Анализируя домен analytic.is, расположенный на том же сервере, что и домены, используемые снифферами для сбора украденных данных, специалисты Group-IB обнаружили файл, содержащий логи Cookie-стиллера, который, похоже, позднее был заброшен разработчиком. Одна из записей в логе содержала домен iozoz.com, который ранее был использован в одном из снифферов, активных в 2016 году. Предположительно, этот домен ранее использовался злоумышленником для сбора украденных при помощи сниффера карт. Этот домен был зарегистрирован на email-адрес kts241@gmail.com, который также был использован для регистрации доменов cardz.su in cardz.vc, относящихся к кардинговому магазину Cardsurfs.
Исходя из полученных даннных, можно сделать предположение, что семейство снифферов G-Analytics и подпольный магазин по продаже банковских карт Cardsurfs управляются одними и теми же людьми, а магазин используется для реализации банковских карт, украденных при помощи сниффера.
Infrastruktura
| Domen | Datum otkrića/pojave |
|---|---|
| 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.

Kasneje je bila odkrita pakirana različica snifferja, ki uporablja drugo vrata — records.nstatistics[.]com/records.php.

Po Willem de Groot, enak gostitelj je bil uporabljen v snifferju, ki je bil nameščen na , ki pripada nemški politični stranki CSU.
Analiza spletne strani kriminalcev
Strokovnjaki Group-IB so odkrili in analizirali spletno stran, ki jo uporablja ta kriminalna skupina za shranjevanje orodij in zbiranje ukradene informacije.

Med orodji, odkritimi na strežniku kriminalcev, so bili najdeni skripti in eksploit za povečanje privilegijev v operacijskem sistemu Linux: na primer, skript za preverjanje povečanja privilegijev Linux, ki ga je razvil Mike Czumak, kot tudi eksploit za CVE-2009-1185.
Natančno za napade na spletne trgovine so kriminalci uporabljali dva eksploit: zmožen je vstaviti zlonamerno kodo v core_config_data s pomočjo izkoriščanja CVE-2016-4010, izkorišča ranljivost tipa RCE v vtičnikih za CMS Magento, kar omogoča izvajanje poljubne kode na ranljivem spletni strežniku.

Prav tako so med analizo strežnika odkrili različne vzorce snifferjev in lažnih plačilnih obrazcev, ki jih kriminalci uporabljajo za zbiranje plačilnih informacij s hekerskih spletnih strani. Kot je razvidno iz spodnjega seznama, so bili nekateri skripti ustvarjeni posebej za vsako hekersko spletno stran, medtem ko je bilo za nekatere CMS in plačilne prehode uporabljeno univerzalno rešitev. Na primer, skripti segapay_standart.js in segapay_onpage.js so namenjeni vstavitvi na spletne strani, ki uporabljajo plačilni prehod Sage Pay.
Seznam skriptov za različne plačilne prehode
| Skript | Plačilni prehod |
|---|---|
| [.]pw/mjs_special/visiondirect.co.uk.js | //request.payrightnow[.]cf/checkpayment.php |
| [.]pw/mjs_special/topdierenshop.nl.js | //request.payrightnow[.]cf/alldata.php |
| [.]pw/mjs_special/tiendalenovo.es.js | //request.payrightnow[.]cf/alldata.php |
| [.]pw/mjs_special/pro-bolt.com.js | //request.payrightnow[.]cf/alldata.php |
| [.]pw/mjs_special/plae.co.js | //request.payrightnow[.]cf/alldata.php |
| [.]pw/mjs_special/ottolenghi.co.uk.js | //request.payrightnow[.]cf/alldata.php |
| [.]pw/mjs_special/oldtimecandy.com.js | //request.payrightnow[.]cf/checkpayment.php |
| [.]pw/mjs_special/mylook.ee.js | //cdn.illum[.]pw/records.php |
| [.]pw/mjs_special/luluandsky.com.js | //request.payrightnow[.]cf/checkpayment.php |
| [.]pw/mjs_special/julep.com.js | //cdn.illum[.]pw/records.php |
| [.]pw/mjs_special/gymcompany.es.js | //request.payrightnow[.]cf/alldata.php |
| [.]pw/mjs_special/grotekadoshop.nl.js | //request.payrightnow[.]cf/alldata.php |
| [.]pw/mjs_special/fushi.co.uk.js | //request.payrightnow[.]cf/checkpayment.php |
| [.]pw/mjs_special/fareastflora.com.js | //request.payrightnow[.]cf/checkpayment.php |
| [.]pw/mjs_special/compuindia.com.js | //request.payrightnow[.]cf/alldata.php |
| [.]pw/mjs/segapay_standart.js | //cdn.illum[.]pw/records.php |
| [.]pw/mjs/segapay_onpage.js | //cdn.illum[.]pw/records.php |
| [.]pw/mjs/replace_standart.js | //request.payrightnow[.]cf/checkpayment.php |
| [.]pw/mjs/all_inputs.js | //cdn.illum[.]pw/records.php |
| [.]pw/mjs/add_inputs_standart.js | //request.payrightnow[.]cf/checkpayment.php |
| [.]pw/magento/payment_standart.js | //cdn.illum[.]pw/records.php |
| [.]pw/magento/payment_redirect.js | //payrightnow[.]cf/?payment= |
| [.]pw/magento/payment_redcrypt.js | //payrightnow[.]cf/?payment= |
| [.]pw/magento/payment_forminsite.js | //paymentnow[.]tk/?payment= |
Strežnik paymentnow[.]tk, uporabljen kot vrata v skriptu payment_forminsite.js, je bil odkrit kot subjectAltName v več certifikatih, povezanih s storitvijo CloudFlare. Poleg tega je na gostitelju bil skript evil.js. Glede na ime skripte je bil lahko uporabljen v okviru izkoriščanja CVE-2016-4010, s katerim je mogoče vstaviti zlonamerno kodo v nogo spletne strani, upravljane s CMS Magento. Kot vrata je ta skript uporabil gostitelj request.requestnet[.]tk, ki uporablja isti certifikat kot gostitelj paymentnow[.]tk.
Lažni plačilni obrazci
Spodaj na sliki je prikazan primer obrazca za vnos podatkov s kartice. Ta obrazec je bil uporabljen za vstavljanje na spletno stran spletne trgovine in krajo podatkov s kartice.

Na naslednjem risanju je primer ponarejenega plačilnega obrazca PayPal, ki so ga zlonamerni uporabniki uporabili za infiltracijo na spletne strani s to metodo plačila.

Infrastruktura
| Domen | Datum otkrića/pojave |
|---|---|
| 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 |
Družina CoffeMokko
Družina snifferjev CoffeMokko, namenjenih kraji bančnih kartic uporabnikov spletnih trgovin, se uporablja vsaj od maja 2017. Domneva se, da so operaterji te družine snifferjev kriminalna skupina Group 1, opisana s strani strokovnjakov RiskIQ leta 2016. Napadi so bili usmerjeni na spletne strani, ki jih upravljajo CMS-ji, kot so Magento, OpenCart, WordPress, osCommerce, Shopify.
Kako se CoffeMokko vgradi v kodo spletne trgovine
Operaterji te družine ustvarjajo edinstvene snifferje za vsako okužbo: datoteka snifferja se nahaja v imeniku src ili js na strežniku zlonamernih uporabnikov. Infiltracija v kodo spletne strani se izvede preko neposredne povezave na sniffer.

V kodi snifferja so trdno zakodirana imena polj obrazca, iz katerih je treba ukrasti podatke. Sniffer prav tako preverja, ali se uporabnik nahaja na strani z obdelavo plačil, tako da primerja seznam ključnih besed z aktualnim naslovom uporabnika.

Nekatere odkritje različice snifferja so bile obfuscirane in so imele šifrirano vrstico, v kateri je bila shranjena glavna tabela virov: prav tam so bila imena polj obrazcev za različne plačilne sisteme, pa tudi naslov vrat, na katerega je treba poslati ukradene podatke.

Ukradena plačilna informacija se je pošiljala skriptu na strežniku zlonamernih uporabnikov preko poti /savePayment/index.php или /tr/index.php. Domneva se, da ta skript služi za pošiljanje podatkov z vrat na glavni strežnik, ki konsolidira podatke iz vseh snifferjev. Za prikrivanje posredovanih podatkov se vsa plačilna informacija žrtve kodira s pomočjo base64, nato pa pride do več zamenjav znakov:
- znak «e» se zamenja z «:»
- znak «w» se zamenja z «+»
- znak «o» se zamenja z «%»
- znak «d» se zamenja z «#»
- znak «a» se zamenja z «-»
- znak «7» se zamenja z «^»
- znak «h» se zamenja z «_»
- znak «T» se zamenja z «@»
- znak «0» se zamenja z «/»
- znak «Y» se zamenja z «*»
Zaradi zamenjav znakov je podatke, kodirane s pomočjo base64 nemogoče dekodirati, ne da bi se izvedlo obratno preoblikovanje.
Tako izgleda del kode snifferja, ki ni bil obfuskiran:

Analiza infrastrukture
V prejšnjih kampanjah so zlonamerni akterji registrirali domena, podobne domenam legitimnih spletnih trgovin. Njihova domena se je lahko razlikovala od legitimne samo po enem znaku ali drugem TLD-ju. Registrirane domene so se uporabljale za shranjevanje kode snifferja, povezava do katere je bila vdelana v kodo trgovine.
Poleg tega je ta skupina uporabljala domene, ki spominjajo na imena priljubljenih vtičnikov za jQuery (slickjs[.]org za spletna mesta, ki uporabljajo vtičnik slick.js), plačilnih prehodov (sagecdn[.]org za spletna mesta, ki uporabljajo plačilni sistem Sage Pay).
Kasneje je skupina začela ustvarjati domene, katerih imena niso imela nič skupnega niti z domeno trgovine niti s tematiko trgovine.

Vsaki domeni je ustrezala spletna stran, na kateri je bila ustvarjena mapa /js ili /src. V tej mapi so bili shranjeni skripti snifferjev: en sniffer za vsako novo okužbo. Sniffer je bil vdelan v kodo spletne strani preko neposredne povezave, vendar so zlonamerni akterji v redkih primerih spremenili eno izmed datotek spletne strani in v njej dodali zlonamerno kodo.
Analiza kode
Prvi algoritem obfuskacije
V nekaterih odkritih vzorcih snifferjev te družine je bil koda obfuskirana in je vsebovala šifrirane podatke, potrebne za delovanje snifferja: zlasti naslov prehoda snifferja, seznam polj plačilne oblike, v nekaterih primerih pa tudi kodo lažne plačilne oblike. V kodi znotraj funkcije so bili viri šifrirani z XOR po ključu, ki je bil posredovan kot argument te iste funkcije.

Če dešifrirate vrstico s pravilnim ključem, edinstvenim za vsak vzorec, lahko dobite vrstico, ki vsebuje vse vrstice iz kode snifferja, ločene z ločilnim znakom.

Drugi algoritem obfuskacije
V poznejših vzorcih snifferjev te družine je bil uporabljen drug mehanizem obfuskacije: v tem primeru so bili podatki šifrirani z uporabo samorazvitega algoritma. Vrstica, ki vsebuje šifrirane podatke, potrebne za delovanje snifferja, je bila posredovana kot argument funkcije za dešifriranje.

S pomočjo konzole brskalnika je mogoče dešifrirati šifrirane podatke in dobiti tabelo, ki vsebuje vire snifferja.

Povezava z zgodnjimi napadi MageCart
Med analizo enega od domen, ki jih skupina uporablja kot vrata za zbiranje ukradenih podatkov, je bilo ugotovljeno, da je na tej domeni nameščena infrastruktura za krajo kreditnih kartic, identična tisti, ki so jo uporabljali Group 1 - ena izmed prvih skupin, s strani strokovnjakov RiskIQ.
Na strežniku družine snifferjev CoffeMokko so bili odkriti dva datoteki:
- mage.js — datoteka, ki vsebuje kodo snifferja Group 1 z naslovom vrat js-cdn.link
- mag.php — PHP skript, ki je odgovoren za zbiranje ukradenih podatkov s strani snifferja
Содержимое файла mage.js 
Prav tako je bilo ugotovljeno, da so bile najranije domene, ki jih je skupina, odgovorna za družino snifferjev CoffeMokko, registrirane 17. maja 2017:
- link-js[.]link
- info-js[.]link
- track-js[.]link
- map-js[.]link
- smart-js[.]link
Format teh domenskih imen se ujema z domenskimi imeni Group 1, ki so bila uporabljena v napadih leta 2016.
Na podlagi odkritega lahko sklepamo, da obstaja povezanost med operaterji snifferjev CoffeMokko in kriminalno skupino Group 1. Predvideva se, da so operaterji CoffeMokko lahko prevzeli orodja in programsko opremo za krajo kartic od svojih predhodnikov. Vendar je bolj verjetno, da so člani, ki stojijo za uporabo snifferjev družine CoffeMokko, iste osebe, ki so izvedle napade v okviru aktivnosti Group 1. Po objavi prvega poročila o dejavnostih kriminalne skupine so bila vsa njihova domenska imena blokirana, orodja pa so bila podrobno preučena in opisana. Skupina je bila prisiljena vzeti odmor, da bi izboljšala svoja notranja orodja in prepisala kodo snifferjev, da bi lahko nadaljevala s svojimi napadi in ostala neopažena.
Infrastruktura
| Domen | Datum otkrića/pojave |
|---|---|
| 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 |
Izvor: habr.com
