
Gotovo svatko od nas koristi usluge online trgovina, što znači da prije ili kasnije riskiramo da postanemo žrtve JavaScript sniffera — posebnog koda koji zlonamjernici ugrađuju na web stranicu za krađu podataka o bankovnim karticama, adresama, korisničkim imenima i lozinkama.
Gotovo 400.000 korisnika web stranice i mobilne aplikacije kompanije British Airways već je pretrpjelo štetu od sniffera, kao i posjetitelji britanske web stranice sportskog giganta FILA i američkog distributera karata Ticketmaster. PayPal, Chase Paymenttech, USAePay, Moneris — ove i mnoge druge platne sustave su zarazili.
Analitičar Threat Intelligence Group-IB Viktor Okorokov objašnjava kako se snifferi integriraju u kod stranice i kradu platne informacije, kao i koje CRM-ove napadaju.

„Skrivena prijetnja“
Dugo su vremena JS snifferi ostali izvan fokusiranja analitičara antivirusnog softvera, a banke i platni sustavi nisu ih smatrali ozbiljnom prijetnjom. I to potpuno bez razloga. Stručnjaci Group-IB 2440 zaraženih online trgovina, čiji posjetitelji — ukupno oko 1,5 milijuna ljudi dnevno — bili su izloženi riziku od kompromitacije. Među žrtvama su ne samo korisnici, već i online trgovine, platni sustavi i banke koje su izdale kompromitirane kartice.
Group-IB je provedeno prvo istraživanje darknet tržišta sniffera, njihove infrastrukture i načina monetizacije, koja donosi milijune dolara njihovim tvorcima. Identificirali smo 38 obitelji sniffera, od kojih je samo 12 prethodno bilo poznato istraživačima.
Detaljno ćemo se osvrnuti na četiri obitelji sniffera koje su proučavane tijekom istraživanja.
Obitelj ReactGet
Snimci obitelji ReactGet koriste se za krađu podataka bankovnih kartica na web stranicama online trgovina. Snimak može raditi s velikim brojem različitih platnih sustava koji se koriste na stranici: jedna vrijednost parametra odgovara jednom platnom sustavu, a posebne otkrivene verzije snimka mogu se koristiti za krađu pristupnih podataka, kao i za krađu podataka bankovnih kartica iz obrazaca za plaćanje odjednom za nekoliko platnih sustava, takozvani univerzalni snimak. Utvrđeno je da u nekim slučajevima napadači provode phishing napade na administratore online trgovina s ciljem dobivanja pristupa administrativnoj ploči stranice.
Kampanja s primjenom ovog obiteljskog snimka započela je u svibnju 2017. godine, a napadnute su web stranice u vlasništvu CMS i platformi Magento, Bigcommerce, Shopify.
Kako se ReactGet integrira u kod online trgovine
Osim 'klasične' integracije skripte putem linka, operatori snimaca obitelji ReactGet koriste posebnu tehniku: pomoću JavaScript koda provjeravaju odgovara li trenutna adresa na kojoj se korisnik nalazi određenim kriterijima. Zloćudni kod će se pokrenuti samo ako se u trenutnoj URL adresi nalazi podizraz checkout ili onestepcheckout, onepage/, out/onepag, checkout/one, ckout/one. Tako se kod snimka izvršava upravo u trenutku kada korisnik pređe na plaćanje i unese informacije o plaćanju u obrazac na stranici.

Ovaj snimak koristi nestandardnu tehniku. Plaćeni i osobni podaci žrtve skupljaju se zajedno, kodiraju pomoću base64, a zatim se dobiveni niz koristi kao parametar za slanje zahtjeva na stranicu zlonamjernika. Najčešće put do vrata oponaša JavaScript datoteku, na primjer resp.js, data.js i tako dalje, ali se također koriste linkovi na datoteke slika, GIF i JPG. Osobitost je da snimak stvara objekt slike veličine 1 na 1 piksel i koristi prethodno dobiveni link kao parametar. src slike. To jest za korisnike takav zahtjev u prometu će se prikazati kao zahtjev za običnom slikom. Slična tehnika korištena je u snifferima obitelji ImageID. Osim toga, tehnika korištenja slike veličine 1 na 1 piksel koristi se u mnogim legitimnim skriptama online analitike, što također može zavarati korisnika.

Analiza verzija
Analiza aktivnih domena koje koriste operatori sniffera ReactGet omogućila je otkrivanje mnogih različitih verzija sniffera ove obitelji. Verzije se razlikuju po prisutnosti ili odsutnosti obfuskacije, a osim toga, svaki sniffer je namijenjen određenom platnom sustavu koji obrađuje plaćanja kreditnim karticama za online trgovine. Istraživanjem vrijednosti parametra koji odgovara broju verzije, stručnjaci Group-IB dobili su potpuni popis dostupnih varijacija sniffera, a prema nazivima polja obrazaca koje svaki sniffer traži u kodu stranice, odredili su platne sustave na koje je sniffer usmjeren.
Popis sniffera i odgovarajućih im platnih sustava
| URL sniffera | Platni sustav |
|---|---|
| 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 lozinki
Jedna od prednosti JavaScript sniffera koji rade na klijentskoj strani stranice je svestranost: zaraženi zlonamjerni kod sposoban je ukrasti podatke bilo koje vrste, bilo da se radi o podacima o plaćanju ili prijavnim podacima korisničkog računa. Stručnjaci Group-IB otkrili su uzorak sniffera iz obitelji ReactGet, namijenjenog krađi adresa e-pošte i lozinki korisnika stranice.

Preklapanje sa snifferom ImageID
Tijekom analize jednog od zaraženih trgovina utvrđeno je da je njegova stranica zaražena dva puta: osim zlonamjernog koda sniffera obitelji ReactGet, otkriven je i kod sniffera obitelji ImageID. Ovo preklapanje može biti dokaz da operateri koji stoje iza korištenja oba sniffera primjenjuju slične tehnike za umetanje zlonamjernog koda.

Univerzalni sniffer
Tijekom analize jednog od domena povezanih s infrastrukturom sniffera ReactGet, utvrđeno je da je isti korisnik registrirao tri druge domene. Ove tri domene imitirali su domene stvarno postojećih stranica i ranije su korištene za hostanje sniffera. Analizom koda tri legitimne stranice otkriven je nepoznati sniffer, a daljnja analiza pokazala je da je to unaprijeđena verzija sniffera ReactGet. Sve ranije praćene verzije sniffera ove obitelji bile su usmjerene na neku jednu platnu sustav, što znači da je za svaki platni sustav bila potrebna posebna verzija sniffera. Međutim, u ovom slučaju otkrivena je univerzalna verzija sniffera sposobna za krađu informacija iz obrazaca povezanih s 15 različitih platnih sustava i modula ecommerce stranica za provođenje online plaćanja.
Dakle, na početku rada sniffer je pretraživao osnovna polja obrasca koja sadrže osobne informacije žrtve: puno ime, fizička adresa, broj telefona.

Zatim je sniffer pretraživao putem više od 15 različitih prefiksa, koji odgovaraju različitim platnim sustavima i modulima za online plaćanja.

Nakon toga, osobni podaci žrtve i platne informacije su prikupljeni i poslani na kontroliranu stranicu napadača: u ovom konkretnom slučaju otkrivene su dvije verzije univerzalnog sniffera ReactGet, locirane na dvije različite hakirane stranice. Međutim, obje verzije slale su ukradene podatke na istu hakiranu stranicu. zoobashop.com.

Analiza prefiksa koje je sniffer koristio za pretraživanje polja koja sadrže platne informacije žrtve omogućila je određivanje da je ovaj uzorak sniffera bio usmjeren na sljedeće platne sustave:
- Authorize.Net
- Verisign
- First Data
- USAePay
- Stripe
- PayPal
- ANZ eGate
- Braintree
- DataCash (MasterCard)
- Realex Payments
- PsiGate
- Heartland Payment Systems
Koji alati se koriste za krađu platnih informacija
Prvi alat otkriven tijekom analize infrastrukture napadača služi za obfuskaciju zlonamjernih skripti, odgovornih za krađu bankovnih kartica. Na jednom od hostova napadača pronađen je bash skript koji koristi CLI projekta za automatizaciju obfuskacije koda sniffera.
![]()
Drugi otkriveni alat namijenjen je generiranju koda koji je odgovoran za učitavanje glavnog sniffera. Ovaj alat generira JavaScript kod koji provjerava nalazi li se korisnik na stranici za uplatu, tražeći u trenutnoj adresi korisnika nizove checkout, kolica i tako dalje, a ako je rezultat pozitivan, kod učitava glavni sniffer s poslužitelja napadača. Da bi se sakrila zloćudna aktivnost, svi nizovi, uključujući testne nizove za određivanje stranice za plaćanje, kao i link na sniffer, kodirani su pomoću base64.

Phishing napadi
Tijekom analize mrežne infrastrukture napadača ustanovljeno je da često za pristup administrativnoj ploči ciljanog online dućana, kriminalna grupa koristi phishing. Napadači registriraju domenu koja vizualno nalikuje domeni trgovine, a zatim na njoj postavljaju lažni obrazac za prijavu na administrativnu ploču Magento. U slučaju uspjeha, napadači će dobiti pristup administrativnoj ploči CMS Magento, što im omogućava uređivanje komponenti web stranice i ugradnju sniffera za krađu podataka kreditnih kartica.

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 |
Obitelj G-Analytics
Ova obitelj sniffera koristi se za krađu kartica kupaca online trgovina. Prvo registrirano ime domene koje je grupa koristila bilo je u travnju 2016. godine, što može ukazivati na početak aktivnosti grupe sredinom 2016. godine.
U trenutnoj kampanji grupa koristi imena domena koja imitiraju stvarne usluge, poput Google Analyticsa i jQuery-a, prikrivajući aktivnost sniffera legitimnim skriptama i imenima domena sličnim legitimnima. Napadi su se dogodili na web stranicama koje rade pod upravom CMS Magento.
Kako se G-Analytics ugrađuje u kod online trgovine
Odlikovna značajka ove obitelji je korištenje različitih metoda krađe korisničkih platnih informacija. Osim klasične metode umetanja JavaScript koda u klijentski dio web stranice, kriminalna grupa također je koristila tehniku umetanja koda u serveršku stranu web stranice, konkretno PHP skripte koje obrađuju unesene korisničke podatke. Ova tehnika je opasna jer otežava otkrivanje zlonamjernog koda od strane vanjskih istražitelja. Stručnjaci iz Group-IB-a otkrili su verziju sniffera umetnutog u PHP kod web stranice, koja koristi kao ulaznu točku domenu dittm.org.

Također je otkrivena ranija verzija sniffera koja koristi istu domenu za prikupljanje ukradenih podataka dittm.org, no ova verzija je namijenjena već za postavljanje na klijentskoj strani online trgovine.

Kasnije je grupa promijenila svoju taktiku i počela posvećivati više pažnje skrivanju zlonamjerne aktivnosti i maskiranju.
Početkom 2017. godine grupa je počela koristiti domenu jquery-js.com, koja se maskira kao CDN za jQuery: prilikom odlaska na stranicu zlonamjernika korisnika preusmjerava na legitimnu web stranicu jquery.com.
A sredinom 2018. godine grupa je preuzela domensko ime g-analytics.com i počela maskirati aktivnost sniffera pod legitimnu uslugu Google Analytics.


Analiza verzija
Analizom domena koje se koriste za pohranu koda sniffera otkriveno je da se na web stranici nalazi velik broj verzija koje se razlikuju po prisutnosti obfuskacije, kao i po prisutnosti ili odsutnosti nedostižnog koda, dodanog u datoteku za zavaravanje i skrivanje zlonamjernog koda.
Ukupno je na web stranici jquery-js.com otkriveno šest verzija sniffera. Ukradeni podaci koje ovi snifferi šalju na adresu koja se nalazi na istoj web stranici kao 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
Kasnija domena g-analytics.com, koju grupa koristi u napadima od sredine 2018. godine, služi kao skladište za veći broj sniffera. Ukupno je otkriveno 16 različitih verzija sniffera. U ovom slučaju, ulazna točka za slanje ukradenih podataka bila je maskirana kao poveznica 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
Kriminalna grupa monetizira ukradene podatke prodajući kartice putem specijalizirane podzemne trgovine koja pruža usluge karderima. Analiza domena koje koriste napadači omogućila je određivanje da google-analytics.cm je registriran od istog korisnika koji je registrirao domenu cardz.vc. Domen cardz.vc odnosi se na trgovinu koja prodaje ukradene bankovne kartice Cardsurfs (Flysurfs), koja je stekla popularnost još u vrijeme aktivnosti podzemne trgovačke platforme AlphaBay kao trgovina koja prodaje bankovne kartice ukradene putem sniffera.

Analizirajući domen analytic.is, smješten na istom serveru kao i domene korištene od strane sniffera za prikupljanje ukradenih podataka, stručnjaci Group-IB su otkrili datoteku koja sadrži logove Cookie-stealera, koja je očito kasnije napuštena od strane programera. Jedna od stavki u logu sadržavala je domenu iozoz.com, koja je ranije korištena u jednom od sniffera aktivnih 2016. godine. Pretpostavlja se da je ovu domenu ranije koristio napadač za prikupljanje ukradenih kartica putem sniffera. Ova domena je registrirana na email adresu kts241@gmail.com, koja je također korištena za registraciju domena cardz.su i cardz.vc, koja se odnosi na trgovinu karticama Cardsurfs.
Na temelju dobivenih podataka, može se pretpostaviti da obitelj sniffera G-Analytics i podzemna trgovina za prodaju bankovnih kartica Cardsurfs upravljaju istim ljudima, a trgovina se koristi za prodaju bankovnih kartica ukradenih putem sniffera.
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 |
Obitelj Illum
Illum je obitelj sniffera koja se koristi za napade na online trgovine koje rade pod CMS Magento. Osim uvođenja zloćudnog koda, operateri ovog sniffera koriste i implementaciju potpunih lažnih obrazaca za plaćanje koji šalju podatke na kontrole zločinaca.
Prilikom analize mrežne infrastrukture koju koriste operateri ovog sniffera, zabilježen je velik broj zloćudnih skripti, eksploita, lažnih obrazaca plaćanja, kao i zbirka primjera zloćudnih sniffera konkurencije. Na temelju informacija o datumima pojave domena koje koristi grupa, može se pretpostaviti da je početak kampanje krajem 2016. godine.
Kako Illum prodiru u kod online trgovine
Prve otkrivene verzije sniffera ugrađene su direktno u kod kompromitirane stranice. Ukradeni podaci slali su se na adresu cdn.illum[.]pw/records.php, dok je gejt bio kodiran pomoću base64.

Kasnije je otkrivena upakovana verzija sniffera koja koristi drugačiji ulaz — records.nstatistics[.]com/records.php.

Prema Willem de Groot, sličan host korišten je u snifferu koji je implementiran na , koja pripada njemačkoj političkoj stranci CSU.
Analiza web stranice napadača
Stručnjaci Group-IB otkrili su i analizirali stranicu koju je koristila ova kriminalna grupa za pohranu alata i prikupljanje ukradenih informacija.

Među alatima otkrivenim na serveru napadača, pronađeni su skripti i eksploati za eskalaciju privilegija u OS Linux: na primjer, Linux Privilege Escalation Check Script, koju je razvio Mike Czumak, kao i eksploat za CVE-2009-1185.
Za napade na online prodavnice, napadači su koristili dva eksploita: koji je sposoban ubrizgati zloćudni kod u core_config_data korištenjem eksploatacije CVE-2016-4010, eksploatira ranjivost tipa RCE u pluginovima za CMS Magento, omogućujući izvršavanje proizvoljnog koda na ranjivom web serveru.

Takođe, tokom analize servera otkriveni su razni uzorci sniffera i lažnih obrazaca plaćanja koje napadači koriste za prikupljanje platnih informacija sa hakiranih web stranica. Kao što se može primijetiti iz popisa u nastavku, neki skripti su izrađivani individualno za svaku hakiranu stranicu, dok su se za određene CMS i platne gatewaye koristila univerzalna rješenja. Na primer, skripti segapay_standart.js i segapay_onpage.js su namijenjeni za ubrizgavanje na stranice koje koriste platni gateway Sage Pay.
Lista skripti za različite platne gatewaye
| Skripta | Platni gateway |
|---|---|
| [.]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= |
Poslužitelj paymentnow[.]tk, korišten kao ulaz u skriptu payment_forminsite.js, otkriven je kao subjectAltName u nekoliko certifikata vezanih uz uslugu CloudFlare. Osim toga, na hostu je bio skript evil.js. Na osnovu imena skripta, mogao je biti korišten u okviru eksploatacije CVE-2016-4010, zahvaljujući kojoj je moguće ubrizgati zloćudni kod u footer stranice pod upravom CMS Magento. Kao ulaz, ovaj skript je upotrebio host request.requestnet[.]tk, koji koristi isti certifikat kao i host paymentnow[.]tk.
Lažni obrasci plaćanja
U nastavku je prikazan primer obrasca za unos podataka o kartici. Ovaj obrazac korišten je za ubrizgavanje na stranicu online prodavnice i krađu podataka o karticama.

Na sljedećem crtežu je primjer lažne PayPal obrasca za plaćanje koji su zlonamjerni korisnici koristili za infiltraciju na web stranice s ovom metodom plaćanja.

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 |
Obitelj CoffeMokko
Obitelj sniffera CoffeMokko, namijenjena krađi bankovnih kartica korisnika internetskih trgovina, koristi se najmanje od svibnja 2017. godine. Pretpostavlja se da operatore ovog obiteljskog sniffera čini kriminalna skupina Group 1, opisana od strane stručnjaka RiskIQ 2016. godine. Napadi su se dogodili na web stranicama koje koriste CMS kao što su Magento, OpenCart, WordPress, osCommerce, Shopify.
Kako se CoffeMokko infiltrira u kod internetske trgovine
Operateri ove obitelji kreiraju jedinstvene sniffer-e za svaku infekciju: datoteka sniffera nalazi se u direktoriju src ili js na serveru zlonamjernih korisnika. Infiltracija u kod web stranice provodi se putem izravne veze na sniffer.

U kodu sniffera čvrsto su kodirana imena polja obrasca s kojih je potrebno ukrasti podatke. Također, sniffer provjerava je li korisnik na stranici za plaćanje uspoređujući popis ključnih riječi s trenutnom adresom korisnika.

Neke otkrivene verzije sniffera osigurane su i sadržavale su šifriranu string koja je čuvala glavni niz resursa: u njemu su bila imena polja obrazaca za različite metode plaćanja, kao i adresa gateway-a na koju je potrebno slati ukradene podatke.

Ukradeni podaci o plaćanju slali su se skripti na serveru zlonamjernih korisnika putem /savePayment/index.php или /tr/index.php. Pretpostavlja se da ova skripta služi za slanje podataka s gateway-a na glavni server koji konsolidira podatke sa svih sniffera. Kako bi se prikrili prijenosni podaci, svi informacija o plaćanju žrtve se šifrira pomoću base64, a zatim se vrši nekoliko zamjena znakova:
- znak «e» zamjenjuje se sa «:»
- znak «w» zamjenjuje se sa «+»
- znak «o» zamjenjuje se sa «%»
- znak «d» zamjenjuje se sa «#»
- znak «a» zamjenjuje se sa «-»
- znak «7» zamjenjuje se sa «^»
- znak «h» zamjenjuje se sa «_»
- znak «T» zamjenjuje se sa «@»
- znak «0» zamjenjuje se sa «/»
- znak «Y» zamjenjuje se sa «*»
Kao rezultat zamjena znakova, šifrirani podaci s pomoću base64 ne mogu se dešifrirati bez izvođenja obrnutih transformacija.
Ovako izgleda fragment koda sniffera koji nije bio podvrgnut obfuskaciji:

Analiza infrastrukture
U ranijim kampanjama, napadači su registrirali domene slične domenama legitimnih online prodavnica. Njihov domen mogao je razlikovati od legitimnog za samo jedan znak ili drugi TLD. Registrirani domene su korišteni za skladištenje koda sniffera, čija je veza bila umetnuta u kod prodavnice.
Također, ova je grupa koristila domene koji podsjećaju na nazive popularnih jQuery plugina (slickjs[.]org za sajtove koji koriste plugin slick.js), platnih prolaza (sagecdn[.]org za sajtove koji koriste platni sistem Sage Pay).
Kasnije je grupa počela kreirati domene cija imena nisu imala nikakve veze ni s domenom prodavnice ni s tematikom prodavnice.

Svakom domenu odgovarao je sajt u kojem je kreirana direktorija /js ili /src. U ovoj direktoriji su se nalazili skripti sniffera: po jedan sniffer za svaku novu infekciju. Sniffer je bio umetnut u kod sajta putem direktne veze, ali su u rijetkim slučajevima napadači modifikovali jedan od fajlova sajta i dodavali mu zloćudni kod.
Analiza koda
Prvi algoritam obfuskacije
U nekim otkrivenim uzorcima sniffera ove porodice, kod je bio obfuskiran i sadržavao je enkriptovane podatke neophodne za rad sniffera: konkretno, adresu ulaza sniffera, listu polja platnog obrasca, a u nekim slučajevima — kod lažnog platnog obrasca. U kodu unutar funkcije, resursi su bili enkriptovani pomoću XOR uz ključ koji je bio proslijeđen kao argument te iste funkcije.

Dekriptujući niz odgovarajućim ključem, jedinstvenim za svaki uzorak, može se dobiti niz koji sadrži sve stringove iz koda sniffera odvojene separatorom.

Drugi algoritam obfuskacije
U novijim uzorcima sniffera ove porodice korišten je drugi mehanizam obfuskacije: u ovom slučaju, podaci su bili enkriptovani pomoću vlastitog algoritma. Niz koji sadrži enkriptovane podatke neophodne za rad sniffera bio je proslijeđen kao argument funkciji dekripcije.

Pomoću konzole pretraživača može se dekriptovati enkriptovane podatke i dobiti niz koji sadrži resurse sniffera.

Veza s ranijim napadima MageCart
Tijekom analize jednog od domena koje je grupa koristila kao ulaz za prikupljanje ukradenih podataka, utvrđeno je da je na toj domeni postavljena infrastruktura za krađu kreditnih kartica, identična onoj koja je korištena od strane Grupa 1 — jedne od prvih grupa, stručnjacima RiskIQ.
Na hostu obitelji sniffera CoffeMokko pronađena su dva datoteke:
- mage.js — datoteka koja sadrži kod sniffera Grupa 1 s adresom ulaza js-cdn.link
- mag.php — PHP skripta zadužena za prikupljanje ukradenih podataka od strane sniffera
Содержимое файла mage.js 
Također je utvrđeno da su najranije domene koje je koristila grupa odgovorna za obitelj sniffera CoffeMokko registrirane 17. svibnja 2017. godine:
- link-js[.]link
- info-js[.]link
- track-js[.]link
- map-js[.]link
- smart-js[.]link
Format ovih domena podudara se s domenama Grupa 1 koje su korištene u napadima 2016. godine.
Na temelju prikupljenih činjenica može se pretpostaviti da postoji povezanost između operatera sniffera CoffeMokko i kriminalne grupe Grupa 1. Pretpostavlja se da su operateri CoffeMokko mogli posuditi alate i softver za krađu kartica od svojih prethodnika. Ipak, vjerojatnije je da je kriminalna grupa koja stoji iza korištenja sniffera obitelji CoffeMokko ista ona koja je provodila napade u okviru aktivnosti Grupa 1. Nakon objave prvog izvještaja o radu kriminalne grupe, sve njihove domene su blokirane, a alati su detaljno proučeni i opisani. Grupa je bila prisiljena uzeti pauzu, doraditi svoje interne alate i prepisati kod sniffera kako bi nastavila svoje napade i ostala neprimijeć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
