Četiri JavaScript sniffera koji vas čekaju u online trgovinama

Četiri JavaScript sniffera koji vas čekaju u online trgovinama

Gotovo svi koristimo usluge internetskih trgovina, što znači da prije ili kasnije riskiramo da postanemo žrtva JavaScript sniffera - posebnog koda koji napadači implementiraju na web stranicu kako bi ukrali podatke o bankovnim karticama, adrese, prijave i lozinke korisnika .

Njuškalima je već pogođeno gotovo 400 korisnika web stranice i mobilne aplikacije British Airwaysa, kao i posjetitelji britanske stranice sportskog diva FILA i američkog distributera karata Ticketmaster. PayPal, Chase Paymenttech, USAePay, Moneris - ovi i mnogi drugi sustavi plaćanja bili su zaraženi.

Analitičar Threat Intelligence Group-IB Viktor Okorokov govori o tome kako se njuškali infiltriraju u kôd web stranice i kradu podatke o plaćanju, kao i koje CRM-ove napadaju.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama

"Skrivena prijetnja"

Tako se dogodilo da su dugo vremena JS snifferi ostali izvan vidokruga antivirusnih analitičara, a banke i platni sustavi nisu ih vidjeli kao ozbiljnu prijetnju. I potpuno uzalud. Group-IB stručnjaci analizirani 2440 zaraženih online trgovina, čiji su posjetitelji - ukupno oko 1,5 milijuna ljudi dnevno - bili izloženi riziku od kompromitacije. Među žrtvama nisu samo korisnici, već i internetske trgovine, platni sustavi i banke koje su izdale kompromitirane kartice.

Prijavi Group-IB je postala prva studija tržišta darkneta za sniffere, njihovu infrastrukturu i metode monetizacije, što njihovim kreatorima donosi milijune dolara. Identificirali smo 38 obitelji njuškala, od kojih je samo 12 bilo ranije poznato istraživačima.

Zadržimo se detaljno na četiri obitelji njuškala proučavanih tijekom studije.

ReactGet Family

Njuškali iz obitelji ReactGet koriste se za krađu podataka o bankovnim karticama na stranicama za online kupnju. Njuškalo može raditi s velikim brojem različitih sustava plaćanja koji se koriste na stranici: jedna vrijednost parametra odgovara jednom sustavu plaćanja, a pojedinačne otkrivene verzije sniffera mogu se koristiti za krađu vjerodajnica, kao i za krađu podataka o bankovnim karticama iz plaćanja oblici nekoliko sustava plaćanja odjednom, poput tzv. univerzalnog njuškala. Utvrđeno je da u nekim slučajevima napadači provode phishing napade na administratore internetske trgovine kako bi dobili pristup administrativnoj ploči stranice.

Kampanja koja koristi ovu obitelj njuškala započela je u svibnju 2017.; napadnute su stranice koje pokreću CMS i platforme Magento, Bigcommerce i Shopify.

Kako je ReactGet implementiran u kod online trgovine

Osim “klasične” implementacije skripte putem linka, operateri ReactGet obitelji njuškala koriste posebnu tehniku: pomoću JavaScript koda provjeravaju zadovoljava li trenutna adresa na kojoj se korisnik nalazi određene kriterije. Zlonamjerni kod će se izvršiti samo ako je podniz prisutan u trenutnom URL-u provjera ili naplata u jednom koraku, jedna stranica/, van/onepag, odjava/jedan, ckout/jedan. Dakle, sniffer kod će se izvršiti točno u trenutku kada korisnik nastavi s plaćanjem kupnje i unese podatke o plaćanju u obrazac na web mjestu.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama
Ovo njuškalo koristi nestandardnu ​​tehniku. Plaćanje žrtve i osobni podaci prikupljaju se zajedno i kodiraju pomoću base64, a zatim se dobiveni niz koristi kao parametar za slanje zahtjeva web stranici napadača. Najčešće, put do vrata oponaša JavaScript datoteku, na primjer odn.js, data.js i tako dalje, ali se također koriste poveznice na slikovne datoteke, GIF и JPG. Posebnost je u tome što njuškalo stvara slikovni objekt dimenzija 1 x 1 piksel i koristi prethodno primljenu vezu kao parametar src Slike. Odnosno, za korisnika će takav zahtjev u prometu izgledati kao zahtjev za običnu sliku. Slična tehnika korištena je u ImageID obitelji njuškala. Dodatno, tehnika korištenja slike 1 x 1 piksel koristi se u mnogim legitimnim online analitičkim skriptama, što također može dovesti korisnika u zabludu.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama

Analiza verzija

Analiza aktivnih domena koje koriste ReactGet operatori sniffera otkrila je mnoge različite verzije ove obitelji sniffera. Verzije se razlikuju po prisutnosti ili odsutnosti zamagljivanja, a osim toga, svaki je sniffer dizajniran za određeni sustav plaćanja koji obrađuje plaćanja bankovnim karticama za internetske trgovine. Razvrstavši vrijednost parametra koji odgovara broju verzije, stručnjaci Group-IB-a dobili su potpuni popis dostupnih varijacija sniffera, a prema nazivima polja obrasca koje svaki sniffer traži u kodu stranice identificirali su sustave plaćanja na koje je njuškalo usmjereno.

Popis njuškala i njihovih odgovarajućih sustava plaćanja

URL njuškala Sustav plaćanja
reactjsapi.com/react.js Authorize.Net
ajaxstatic.com/api.js?v=2.1.1 Spremi karticu
ajaxstatic.com/api.js?v=2.1.2 Authorize.Net
ajaxstatic.com/api.js?v=2.1.3 Authorize.Net
ajaxstatic.com/api.js?v=2.1.4 eWAY Rapid
ajaxstatic.com/api.js?v=2.1.5 Authorize.Net
ajaxstatic.com/api.js?v=2.1.6 Adyen
ajaxstatic.com/api.js?v=2.1.7 USAePay
ajaxstatic.com/api.js?v=2.1.9 Authorize.Net
apitstatus.com/api.js?v=2.1.1 USAePay
apitstatus.com/api.js?v=2.1.2 Authorize.Net
apitstatus.com/api.js?v=2.1.3 Moneris
apitstatus.com/api.js?v=2.1.5 USAePay
apitstatus.com/api.js?v=2.1.6 PayPal
apitstatus.com/api.js?v=2.1.7 Sage Pay
apitstatus.com/api.js?v=2.1.8 Verisign
apitstatus.com/api.js?v=2.1.9 PayPal
apitstatus.com/api.js?v=2.3.0 Pruga
apitstatus.com/api.js?v=3.0.2 Realex
apitstatus.com/api.js?v=3.0.3 PayPal
apitstatus.com/api.js?v=3.0.4 LinkPoint
apitstatus.com/api.js?v=3.0.5 PayPal
apitstatus.com/api.js?v=3.0.7 PayPal
apitstatus.com/api.js?v=3.0.8 DataCash
apitstatus.com/api.js?v=3.0.9 PayPal
asianfoodgracer.com/footer.js Authorize.Net
billgetstatus.com/api.js?v=1.2 Authorize.Net
billgetstatus.com/api.js?v=1.3 Authorize.Net
billgetstatus.com/api.js?v=1.4 Authorize.Net
billgetstatus.com/api.js?v=1.5 Verisign
billgetstatus.com/api.js?v=1.6 Authorize.Net
billgetstatus.com/api.js?v=1.7 Moneris
billgetstatus.com/api.js?v=1.8 Sage Pay
billgetstatus.com/api.js?v=2.0 USAePay
billgetstatus.com/react.js Authorize.Net
cloudodesc.com/gtm.js?v=1.2 Authorize.Net
cloudodesc.com/gtm.js?v=1.3 ANZ eGate
cloudodesc.com/gtm.js?v=2.3 Authorize.Net
cloudodesc.com/gtm.js?v=2.4 Moneris
cloudodesc.com/gtm.js?v=2.6 Sage Pay
cloudodesc.com/gtm.js?v=2.7 Sage Pay
cloudodesc.com/gtm.js?v=2.8 Chase Paymentech
cloudodesc.com/gtm.js?v=2.9 Authorize.Net
cloudodesc.com/gtm.js?v=2.91 Adyen
cloudodesc.com/gtm.js?v=2.92 PsiGate
cloudodesc.com/gtm.js?v=2.93 Cyber ​​izvor
cloudodesc.com/gtm.js?v=2.95 ANZ eGate
cloudodesc.com/gtm.js?v=2.97 Realex
geisseie.com/gs.js USAePay
gtmproc.com/age.js Authorize.Net
gtmproc.com/gtm.js?v=1.2 Authorize.Net
gtmproc.com/gtm.js?v=1.3 ANZ eGate
gtmproc.com/gtm.js?v=1.5 PayPal
gtmproc.com/gtm.js?v=1.6 PayPal
gtmproc.com/gtm.js?v=1.7 Realex
livecheckpay.com/api.js?v=2.0 Sage Pay
livecheckpay.com/api.js?v=2.1 PayPal
livecheckpay.com/api.js?v=2.2 Verisign
livecheckpay.com/api.js?v=2.3 Authorize.Net
livecheckpay.com/api.js?v=2.4 Verisign
livecheckpay.com/react.js Authorize.Net
livegetpay.com/pay.js?v=2.1.2 ANZ eGate
livegetpay.com/pay.js?v=2.1.3 PayPal
livegetpay.com/pay.js?v=2.1.5 Cyber ​​izvor
livegetpay.com/pay.js?v=2.1.7 Authorize.Net
livegetpay.com/pay.js?v=2.1.8 Sage Pay
livegetpay.com/pay.js?v=2.1.9 Realex
livegetpay.com/pay.js?v=2.2.0 Cyber ​​izvor
livegetpay.com/pay.js?v=2.2.1 PayPal
livegetpay.com/pay.js?v=2.2.2 PayPal
livegetpay.com/pay.js?v=2.2.3 PayPal
livegetpay.com/pay.js?v=2.2.4 Verisign
livegetpay.com/pay.js?v=2.2.5 eWAY Rapid
livegetpay.com/pay.js?v=2.2.7 Sage Pay
livegetpay.com/pay.js?v=2.2.8 Sage Pay
livegetpay.com/pay.js?v=2.2.9 Verisign
livegetpay.com/pay.js?v=2.3.0 Authorize.Net
livegetpay.com/pay.js?v=2.3.1 Authorize.Net
livegetpay.com/pay.js?v=2.3.2 First Data Global Gateway
livegetpay.com/pay.js?v=2.3.3 Authorize.Net
livegetpay.com/pay.js?v=2.3.4 Authorize.Net
livegetpay.com/pay.js?v=2.3.5 Moneris
livegetpay.com/pay.js?v=2.3.6 Authorize.Net
livegetpay.com/pay.js?v=2.3.8 PayPal
livegetpay.com/pay.js?v=2.4.0 Verisign
maxstatics.com/site.js USAePay
mediapack.info/track.js?d=funlove.com USAePay
mediapack.info/track.js?d=qbedding.com Authorize.Net
mediapack.info/track.js?d=vseyewear.com Verisign
mxcounter.com/c.js?v=1.2 PayPal
mxcounter.com/c.js?v=1.3 Authorize.Net
mxcounter.com/c.js?v=1.4 Pruga
mxcounter.com/c.js?v=1.6 Authorize.Net
mxcounter.com/c.js?v=1.7 eWAY Rapid
mxcounter.com/c.js?v=1.8 Sage Pay
mxcounter.com/c.js?v=2.0 Authorize.Net
mxcounter.com/c.js?v=2.1 Braintree
mxcounter.com/c.js?v=2.10 Braintree
mxcounter.com/c.js?v=2.2 PayPal
mxcounter.com/c.js?v=2.3 Sage Pay
mxcounter.com/c.js?v=2.31 Sage Pay
mxcounter.com/c.js?v=2.32 Authorize.Net
mxcounter.com/c.js?v=2.33 PayPal
mxcounter.com/c.js?v=2.34 Authorize.Net
mxcounter.com/c.js?v=2.35 Verisign
mxcounter.com/click.js?v=1.2 PayPal
mxcounter.com/click.js?v=1.3 Authorize.Net
mxcounter.com/click.js?v=1.4 Pruga
mxcounter.com/click.js?v=1.6 Authorize.Net
mxcounter.com/click.js?v=1.7 eWAY Rapid
mxcounter.com/click.js?v=1.8 Sage Pay
mxcounter.com/click.js?v=2.0 Authorize.Net
mxcounter.com/click.js?v=2.1 Braintree
mxcounter.com/click.js?v=2.2 PayPal
mxcounter.com/click.js?v=2.3 Sage Pay
mxcounter.com/click.js?v=2.31 Sage Pay
mxcounter.com/click.js?v=2.32 Authorize.Net
mxcounter.com/click.js?v=2.33 PayPal
mxcounter.com/click.js?v=2.34 Authorize.Net
mxcounter.com/click.js?v=2.35 Verisign
mxcounter.com/cnt.js Authorize.Net
mxcounter.com/j.js Authorize.Net
newrelicnet.com/api.js?v=1.2 Authorize.Net
newrelicnet.com/api.js?v=1.4 Authorize.Net
newrelicnet.com/api.js?v=1.8 Sage Pay
newrelicnet.com/api.js?v=4.5 Sage Pay
newrelicnet.com/api.js?v=4.6 Westpac PayWay
nr-public.com/api.js?v=2.0 PayFort
nr-public.com/api.js?v=2.1 PayPal
nr-public.com/api.js?v=2.2 Authorize.Net
nr-public.com/api.js?v=2.3 Pruga
nr-public.com/api.js?v=2.4 First Data Global Gateway
nr-public.com/api.js?v=2.5 PsiGate
nr-public.com/api.js?v=2.6 Authorize.Net
nr-public.com/api.js?v=2.7 Authorize.Net
nr-public.com/api.js?v=2.8 Moneris
nr-public.com/api.js?v=2.9 Authorize.Net
nr-public.com/api.js?v=3.1 Sage Pay
nr-public.com/api.js?v=3.2 Verisign
nr-public.com/api.js?v=3.3 Moneris
nr-public.com/api.js?v=3.5 PayPal
nr-public.com/api.js?v=3.6 LinkPoint
nr-public.com/api.js?v=3.7 Westpac PayWay
nr-public.com/api.js?v=3.8 Authorize.Net
nr-public.com/api.js?v=4.0 Moneris
nr-public.com/api.js?v=4.0.2 PayPal
nr-public.com/api.js?v=4.0.3 Adyen
nr-public.com/api.js?v=4.0.4 PayPal
nr-public.com/api.js?v=4.0.5 Authorize.Net
nr-public.com/api.js?v=4.0.6 USAePay
nr-public.com/api.js?v=4.0.7 EBizCharge
nr-public.com/api.js?v=4.0.8 Authorize.Net
nr-public.com/api.js?v=4.0.9 Verisign
nr-public.com/api.js?v=4.1.2 Verisign
ordercheckpays.com/api.js?v=2.11 Authorize.Net
ordercheckpays.com/api.js?v=2.12 PayPal
ordercheckpays.com/api.js?v=2.13 Moneris
ordercheckpays.com/api.js?v=2.14 Authorize.Net
ordercheckpays.com/api.js?v=2.15 PayPal
ordercheckpays.com/api.js?v=2.16 PayPal
ordercheckpays.com/api.js?v=2.17 Westpac PayWay
ordercheckpays.com/api.js?v=2.18 Authorize.Net
ordercheckpays.com/api.js?v=2.19 Authorize.Net
ordercheckpays.com/api.js?v=2.21 Sage Pay
ordercheckpays.com/api.js?v=2.22 Verisign
ordercheckpays.com/api.js?v=2.23 Authorize.Net
ordercheckpays.com/api.js?v=2.24 PayPal
ordercheckpays.com/api.js?v=2.25 PayFort
ordercheckpays.com/api.js?v=2.29 Cyber ​​izvor
ordercheckpays.com/api.js?v=2.4 PayPal Payflow Pro
ordercheckpays.com/api.js?v=2.7 Authorize.Net
ordercheckpays.com/api.js?v=2.8 Authorize.Net
ordercheckpays.com/api.js?v=2.9 Verisign
ordercheckpays.com/api.js?v=3.1 Authorize.Net
ordercheckpays.com/api.js?v=3.2 Authorize.Net
ordercheckpays.com/api.js?v=3.3 Sage Pay
ordercheckpays.com/api.js?v=3.4 Authorize.Net
ordercheckpays.com/api.js?v=3.5 Pruga
ordercheckpays.com/api.js?v=3.6 Authorize.Net
ordercheckpays.com/api.js?v=3.7 Authorize.Net
ordercheckpays.com/api.js?v=3.8 Verisign
ordercheckpays.com/api.js?v=3.9 PayPal
ordercheckpays.com/api.js?v=4.0 Authorize.Net
ordercheckpays.com/api.js?v=4.1 Authorize.Net
ordercheckpays.com/api.js?v=4.2 Sage Pay
ordercheckpays.com/api.js?v=4.3 Authorize.Net
reactjsapi.com/api.js?v=0.1.0 Authorize.Net
reactjsapi.com/api.js?v=0.1.1 PayPal
reactjsapi.com/api.js?v=4.1.2 Kremen
reactjsapi.com/api.js?v=4.1.4 PayPal
reactjsapi.com/api.js?v=4.1.5 Sage Pay
reactjsapi.com/api.js?v=4.1.51 Verisign
reactjsapi.com/api.js?v=4.1.6 Authorize.Net
reactjsapi.com/api.js?v=4.1.7 Authorize.Net
reactjsapi.com/api.js?v=4.1.8 Pruga
reactjsapi.com/api.js?v=4.1.9 Debela zebra
reactjsapi.com/api.js?v=4.2.0 Sage Pay
reactjsapi.com/api.js?v=4.2.1 Authorize.Net
reactjsapi.com/api.js?v=4.2.2 First Data Global Gateway
reactjsapi.com/api.js?v=4.2.3 Authorize.Net
reactjsapi.com/api.js?v=4.2.4 eWAY Rapid
reactjsapi.com/api.js?v=4.2.5 Adyen
reactjsapi.com/api.js?v=4.2.7 PayPal
reactjsapi.com/api.js?v=4.2.8 Trgovinske usluge QuickBooks
reactjsapi.com/api.js?v=4.2.9 Verisign
reactjsapi.com/api.js?v=4.2.91 Sage Pay
reactjsapi.com/api.js?v=4.2.92 Verisign
reactjsapi.com/api.js?v=4.2.94 Authorize.Net
reactjsapi.com/api.js?v=4.3.97 Authorize.Net
reactjsapi.com/api.js?v=4.5 Sage Pay
reactjsapi.com/react.js Authorize.Net
sydneysalonsupplies.com/gtm.js eWAY Rapid
tagsmediaget.com/react.js Authorize.Net
tagstracking.com/tag.js?v=2.1.2 ANZ eGate
tagstracking.com/tag.js?v=2.1.3 PayPal
tagstracking.com/tag.js?v=2.1.5 Cyber ​​izvor
tagstracking.com/tag.js?v=2.1.7 Authorize.Net
tagstracking.com/tag.js?v=2.1.8 Sage Pay
tagstracking.com/tag.js?v=2.1.9 Realex
tagstracking.com/tag.js?v=2.2.0 Cyber ​​izvor
tagstracking.com/tag.js?v=2.2.1 PayPal
tagstracking.com/tag.js?v=2.2.2 PayPal
tagstracking.com/tag.js?v=2.2.3 PayPal
tagstracking.com/tag.js?v=2.2.4 Verisign
tagstracking.com/tag.js?v=2.2.5 eWAY Rapid
tagstracking.com/tag.js?v=2.2.7 Sage Pay
tagstracking.com/tag.js?v=2.2.8 Sage Pay
tagstracking.com/tag.js?v=2.2.9 Verisign
tagstracking.com/tag.js?v=2.3.0 Authorize.Net
tagstracking.com/tag.js?v=2.3.1 Authorize.Net
tagstracking.com/tag.js?v=2.3.2 First Data Global Gateway
tagstracking.com/tag.js?v=2.3.3 Authorize.Net
tagstracking.com/tag.js?v=2.3.4 Authorize.Net
tagstracking.com/tag.js?v=2.3.5 Moneris
tagstracking.com/tag.js?v=2.3.6 Authorize.Net
tagstracking.com/tag.js?v=2.3.8 PayPal

Njuškalo zaporke

Jedna od prednosti JavaScript sniffera koji rade na klijentskoj strani web stranice je njihova svestranost: zlonamjerni kod ugrađen na web stranicu može ukrasti bilo koju vrstu podataka, bilo da se radi o podacima o plaćanju ili prijavi i lozinci korisničkog računa. Stručnjaci Group-IB otkrili su uzorak njuškala iz obitelji ReactGet, dizajniranog za krađu adresa e-pošte i lozinki korisnika web mjesta.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama

Raskrižje s ImageID snifferom

Tijekom analize jedne od zaraženih trgovina otkriveno je da je njezino mjesto zaraženo dva puta: osim zlonamjernog koda sniffera obitelji ReactGet, detektiran je i kod sniffera obitelji ImageID. Ovo preklapanje moglo bi biti dokaz da operateri koji stoje iza oba njuškala koriste slične tehnike za ubacivanje zlonamjernog koda.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama

Univerzalno njuškalo

Analiza jednog od naziva domena povezanih s infrastrukturom sniffera ReactGet otkrila je da je isti korisnik registrirao još tri naziva domena. Ove tri domene oponašale su domene stvarnih web stranica i prethodno su se koristile za hostiranje njuškala. Prilikom analize koda triju legitimnih stranica detektiran je nepoznati sniffer, a daljnja analiza je pokazala da se radi o poboljšanoj verziji ReactGet sniffera. Sve do sada praćene verzije ove obitelji sniffera bile su usmjerene na jedan sustav plaćanja, odnosno svaki je sustav plaćanja zahtijevao posebnu verziju sniffera. Međutim, u ovom slučaju otkrivena je univerzalna verzija njuškala koja je sposobna ukrasti podatke iz obrazaca koji se odnose na 15 različitih sustava plaćanja i modula e-commerce stranica za online plaćanje.

Dakle, na početku rada, njuškalo je tražilo osnovna polja obrasca koja sadrže osobne podatke žrtve: puno ime, fizičku adresu, broj telefona.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama
Njuškalo je zatim pretražilo više od 15 različitih prefiksa koji odgovaraju različitim sustavima plaćanja i modulima plaćanja na mreži.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama
Zatim su žrtvini osobni podaci i informacije o plaćanju zajedno prikupljeni i poslani na stranicu koju kontrolira napadač: u ovom konkretnom slučaju otkrivene su dvije verzije univerzalnog ReactGet sniffera, smještene na dvije različite hakirane stranice. Međutim, obje su verzije slale ukradene podatke na istu hakiranu stranicu zoobashop.com.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama
Analiza prefiksa koje je njuškalo koristilo za traženje polja koja sadrže podatke o plaćanju žrtve omogućila nam je da utvrdimo da je ovaj uzorak njuškala bio usmjeren na sljedeće sustave plaćanja:

  • Authorize.Net
  • Verisign
  • Prvi podaci
  • USAePay
  • Pruga
  • PayPal
  • ANZ eGate
  • Braintree
  • DataCash (MasterCard)
  • Realex plaćanja
  • PsiGate
  • Heartland sustavi plaćanja

Koji se alati koriste za krađu podataka o plaćanju?

Prvi alat, otkriven tijekom analize infrastrukture napadača, koristi se za maskiranje zlonamjernih skripti odgovornih za krađu bankovnih kartica. Bash skripta koja koristi CLI projekta otkrivena je na jednom od napadačevih hostova javascript-obfuscator za automatiziranje maskiranja sniffer koda.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama
Drugi otkriveni alat dizajniran je za generiranje koda odgovornog za učitavanje glavnog njuškala. Ovaj alat generira JavaScript kod koji provjerava je li korisnik na stranici za plaćanje pretražujući nizove na korisnikovoj trenutnoj adresi provjera, kolica i tako dalje, a ako je rezultat pozitivan, tada kod učitava glavni sniffer s poslužitelja napadača. Kako bi se sakrila zlonamjerna aktivnost, sve linije, uključujući probne linije za određivanje stranice za plaćanje, kao i poveznica na njuškalo, kodirane su pomoću base64.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama

Phishing napadi

Analizom mrežne infrastrukture napadača utvrđeno je da kriminalna skupina često koristi phishing kako bi došla do administrativne ploče ciljne internetske trgovine. Napadači registriraju domenu koja je vizualno slična domeni trgovine, a zatim na nju postavljaju lažni obrazac za prijavu na Magento administrativni panel. Ako uspiju, napadači će dobiti pristup administrativnoj ploči Magento CMS-a, što im daje mogućnost uređivanja komponenti web stranice i implementacije njuškala za krađu podataka kreditnih kartica.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama
Infrastruktura

Naziv domene Datum otkrića/pojavljivanja
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
www.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 njuškala koristi se za krađu korisničkih kartica iz internetskih trgovina. Prvo ime domene koje je koristila grupa registrirano je u travnju 2016. godine, što može značiti da je grupa započela s radom sredinom 2016. godine.

U trenutnoj kampanji grupa koristi nazive domena koji oponašaju usluge iz stvarnog života, kao što su Google Analytics i jQuery, prikrivajući aktivnost njuškala legitimnim skriptama i imenima domena sličnim legitimnim. Napadnute su stranice koje pokreću Magento CMS.

Kako se G-Analytics implementira u kod online trgovine

Posebnost ove obitelji je korištenje različitih metoda za krađu podataka o plaćanju korisnika. Osim klasičnog ubacivanja JavaScript koda u klijentsku stranu stranice, kriminalna skupina koristila je i tehnike ubacivanja koda u serversku stranu stranice, odnosno PHP skripte koje obrađuju podatke koje unese korisnik. Ova tehnika je opasna jer istraživačima trećih strana otežava otkrivanje zlonamjernog koda. Stručnjaci Group-IB-a otkrili su verziju sniffera ugrađenog u PHP kod stranice, koristeći domenu kao vrata dittm.org.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama
Također je otkrivena rana verzija sniffera koja koristi istu domenu za prikupljanje ukradenih podataka dittm.org, ali ova je verzija namijenjena za instalaciju na strani klijenta online trgovine.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama
Grupa je kasnije promijenila svoju taktiku i počela se više fokusirati na skrivanje zlonamjernih aktivnosti i kamuflažu.

Početkom 2017. grupa je počela koristiti domenu jquery-js.com, maskiran kao CDN za jQuery: kada ode na stranicu napadača, korisnik se preusmjerava na legitimnu stranicu jquery.com.

A sredinom 2018. grupa je usvojila naziv domene g-analytics.com i počeo maskirati aktivnosti njuškala kao legitimnu uslugu Google Analytics.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama
Četiri JavaScript sniffera koji vas čekaju u online trgovinama

Analiza verzija

Tijekom analize domena koje se koriste za pohranjivanje sniffer koda, otkriveno je da stranica sadrži veliki broj verzija koje se razlikuju po prisutnosti zamagljivanja, kao i po prisutnosti ili odsutnosti nedostupnog koda dodanog datoteci kako bi se odvratila pozornost i sakriti zlonamjerni kod.

Ukupno na web mjestu jquery-js.com Identificirano je šest verzija njuškala. Ovi njuškali šalju ukradene podatke na adresu koja se nalazi na istoj web stranici kao i njuškalo: 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

Kasnije domena g-analytics.com, koju grupa koristi u napadima od sredine 2018., služi kao spremište za više njuškala. Ukupno je otkriveno 16 različitih verzija njuškala. U ovom slučaju, vrata za slanje ukradenih podataka bila su prerušena u poveznicu na format slike 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 skupina monetizira ukradene podatke prodajom kartica putem posebno stvorene podzemne trgovine koja pruža usluge kartičarima. Analiza domena koje su koristili napadači omogućila nam je to utvrditi google-analytics.cm registrirao je isti korisnik kao i domenu cardz.vc. Domena cardz.vc odnosi se na trgovinu za prodaju ukradenih bankovnih kartica Cardsurfs (Flysurfs), koja je stekla popularnost još u danima djelovanja podzemne trgovačke platforme AlphaBay kao trgovina za prodaju bankovnih kartica ukradenih pomoću sniffera.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama
Analizirajući domenu analitički.jest, koji se nalazi na istom poslužitelju kao i domene koje koriste njuškali za prikupljanje ukradenih podataka, stručnjaci Group-IB-a otkrili su datoteku koja je sadržavala zapisnike kradljivaca kolačića, za koju se čini da je programer kasnije napustio. Jedan od unosa u dnevniku sadržavao je domenu iozoz.com, koji je prethodno korišten u jednom od njuškala aktivnih 2016. godine. Pretpostavlja se da je ovu domenu ranije koristio napadač za prikupljanje kartica ukradenih pomoću njuškala. Ova je domena registrirana na adresu e-pošte [e-pošta zaštićena], koja je također služila za registraciju domena cardz.su и cardz.vc, vezano uz carding trgovinu Cardsurfs.

Na temelju dobivenih podataka može se pretpostaviti da G-Analytics obitelji sniffera i podzemnom trgovinom bankovnih kartica Cardsurfs upravljaju isti ljudi, a trgovina se koristi za prodaju bankovnih kartica ukradenih pomoću sniffera.

Infrastruktura

Naziv domene Datum otkrića/pojavljivanja
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
analitički.to 04.12.2018
google-analytics.to 06.12.2018
google-analytics.cm 28.12.2018
analitički.jest 28.12.2018
googlc-analytics.cm 17.01.2019

Obitelj Illum

Illum je obitelj njuškala koja se koristi za napad na internetske trgovine koje pokreću Magento CMS. Osim uvođenja zlonamjernog koda, operateri ovog njuškala također koriste uvođenje potpunih lažnih obrazaca za plaćanje koji šalju podatke na vrata koja kontroliraju napadači.

Prilikom analize mrežne infrastrukture koju koriste operateri ovog sniffera, uočen je velik broj zlonamjernih skripti, exploita, lažnih obrazaca za plaćanje, kao i zbirka primjera s zlonamjernim snifferima od konkurencije. Na temelju informacija o datumima pojavljivanja naziva domena koje grupa koristi, može se pretpostaviti da je kampanja započela krajem 2016. godine.

Kako se Illum implementira u kod online trgovine

Prve otkrivene verzije njuškala bile su ugrađene izravno u kod kompromitirane stranice. Ukradeni podaci poslani su na cdn.illum[.]pw/records.php, vrata su kodirana pomoću base64.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama
Kasnije je otkrivena pakirana verzija njuškala koja koristi drugačija vrata - records.nstatistics[.]com/records.php.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama
Prema izvješće Willem de Groot, isti host korišten je u snifferu koji je implementiran na web mjesto trgovine, u vlasništvu njemačke političke stranke CSU.

Analiza web stranice napadača

Specijalisti Group-IB-a otkrili su i analizirali web stranicu koju ova kriminalna skupina koristi za pohranu alata i prikupljanje ukradenih podataka.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama
Među alatima pronađenim na poslužitelju napadača bile su skripte i exploit za povećanje privilegija u Linux OS-u: na primjer, Linux Privilege Escalation Check Script koji je razvio Mike Czumak, kao i exploit za CVE-2009-1185.

Napadači su koristili dva exploita za izravni napad na online trgovine: первый sposoban za ubacivanje zlonamjernog koda core_config_data iskorištavanjem CVE-2016-4010, drugi iskorištava RCE ranjivost u dodacima za CMS Magento, dopuštajući izvršenje proizvoljnog koda na ranjivom web poslužitelju.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama
Također, tijekom analize servera otkriveni su različiti uzorci sniffera i lažnih obrazaca za plaćanje koje napadači koriste za prikupljanje podataka o plaćanju s hakiranih stranica. Kao što možete vidjeti na donjem popisu, neke skripte su izrađene pojedinačno za svaku hakiranu stranicu, dok je univerzalno rješenje korišteno za određene CMS i pristupnike plaćanja. Na primjer, skripte segapay_standart.js и segapay_onpage.js dizajniran za implementaciju na stranicama koje koriste pristupnik za plaćanje Sage Pay.

Popis skripti za različite pristupnike plaćanja

Skripta Pristupnik plaćanja
sr.illum[.]pw/mjs_special/visiondirect.co.uk.js //request.payrightnow[.]cf/checkpayment.php
sr.illum[.]pw/mjs_special/topdierenshop.nl.js //request.payrightnow[.]cf/alldata.php
sr.illum[.]pw/mjs_special/tiendalenovo.es.js //request.payrightnow[.]cf/alldata.php
sr.illum[.]pw/mjs_special/pro-bolt.com.js //request.payrightnow[.]cf/alldata.php
sr.illum[.]pw/mjs_special/plae.co.js //request.payrightnow[.]cf/alldata.php
sr.illum[.]pw/mjs_special/ottolenghi.co.uk.js //request.payrightnow[.]cf/alldata.php
sr.illum[.]pw/mjs_special/oldtimecandy.com.js //request.payrightnow[.]cf/checkpayment.php
sr.illum[.]pw/mjs_special/mylook.ee.js //cdn.illum[.]pw/records.php
sr.illum[.]pw/mjs_special/luluandsky.com.js //request.payrightnow[.]cf/checkpayment.php
sr.illum[.]pw/mjs_special/julep.com.js //cdn.illum[.]pw/records.php
sr.illum[.]pw/mjs_special/gymcompany.es.js //request.payrightnow[.]cf/alldata.php
sr.illum[.]pw/mjs_special/grotekadoshop.nl.js //request.payrightnow[.]cf/alldata.php
sr.illum[.]pw/mjs_special/fushi.co.uk.js //request.payrightnow[.]cf/checkpayment.php
sr.illum[.]pw/mjs_special/fareastflora.com.js //request.payrightnow[.]cf/checkpayment.php
sr.illum[.]pw/mjs_special/compuindia.com.js //request.payrightnow[.]cf/alldata.php
sr.illum[.]pw/mjs/segapay_standart.js //cdn.illum[.]pw/records.php
sr.illum[.]pw/mjs/segapay_onpage.js //cdn.illum[.]pw/records.php
sr.illum[.]pw/mjs/replace_standart.js //request.payrightnow[.]cf/checkpayment.php
sr.illum[.]pw/mjs/all_inputs.js //cdn.illum[.]pw/records.php
sr.illum[.]pw/mjs/add_inputs_standart.js //request.payrightnow[.]cf/checkpayment.php
sr.illum[.]pw/magento/payment_standart.js //cdn.illum[.]pw/records.php
sr.illum[.]pw/magento/payment_redirect.js //payrightnow[.]cf/?payment=
sr.illum[.]pw/magento/payment_redcrypt.js //payrightnow[.]cf/?payment=
sr.illum[.]pw/magento/payment_forminsite.js //paymentnow[.]tk/?payment=

domaćin plaćanje sada[.]tk, koji se koristi kao vrata u scenariju site_forminsite.js, otkriven je kao predmetAltName u nekoliko certifikata vezanih uz uslugu CloudFlare. Osim toga, host je sadržavao skriptu zlo.js. Sudeći prema nazivu skripte, mogla bi se koristiti u sklopu eksploatacije CVE-2016-4010, zahvaljujući kojoj je moguće ubaciti maliciozni kod u podnožje stranice koja pokreće CMS Magento. Domaćin je koristio ovu skriptu kao vrata zahtjev.requestnet[.]tkkoristeći isti certifikat kao host plaćanje sada[.]tk.

Lažni obrasci za plaćanje

Na slici ispod prikazan je primjer obrasca za unos podataka kartice. Ovaj obrazac korišten je za infiltraciju u internetsku trgovinu i krađu podataka o kartici.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama
Sljedeća slika prikazuje primjer lažnog PayPal obrasca za plaćanje koji su napadači koristili za infiltraciju na stranice s ovom metodom plaćanja.
Četiri JavaScript sniffera koji vas čekaju u online trgovinama
Infrastruktura

Naziv domene Datum otkrića/pojavljivanja
cdn.illum.pw 27/11/2016
records.nstatistics.com 06/09/2018
request.payrightnow.cf 25/05/2018
plaćanje sada.tk 16/07/2017
pay-line.tk 01/03/2018
paypal.cf 04/09/2017
requestnet.tk 28/06/2017

Obitelj CoffeeMokko

Obitelj njuškala CoffeMokko, dizajnirana za krađu bankovnih kartica korisnika online trgovine, u upotrebi je najmanje od svibnja 2017. godine. Pretpostavlja se da su operateri ove obitelji njuškala kriminalna skupina Grupa 1, koju su opisali stručnjaci RiskIQ-a 2016. godine. Stranice koje pokreću CMS kao što su Magento, OpenCart, WordPress, osCommerce i Shopify bile su napadnute.

Kako se CoffeMokko implementira u kod online trgovine

Operatori ove obitelji stvaraju jedinstvene sniffere za svaku infekciju: datoteka sniffera nalazi se u direktoriju src ili js na poslužitelju napadača. Uključivanje u kod stranice provodi se putem izravne veze na sniffer.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama
Kod sniffera tvrdi kod imena polja obrasca iz kojih se podaci trebaju ukrasti. Njuškalo također provjerava je li korisnik na stranici za plaćanje provjerom popisa ključnih riječi s trenutnom adresom korisnika.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama
Neke otkrivene verzije njuškala bile su zamagljene i sadržavale su šifrirani niz u kojem je bio pohranjen glavni niz resursa: sadržavao je nazive polja obrazaca za različite sustave plaćanja, kao i adresu ulaza na koju bi se trebali poslati ukradeni podaci.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama
Ukradeni podaci o plaćanju usput su poslani skripti na poslužitelju napadača /savePayment/index.php ili /tr/index.php. Pretpostavlja se da se ova skripta koristi za slanje podataka s vrata na glavni poslužitelj, koji objedinjuje podatke svih njuškala. Kako bi se sakrili preneseni podaci, svi podaci o plaćanju žrtve šifrirani su korištenjem base64, a zatim dolazi do nekoliko zamjena znakova:

  • znak "e" zamjenjuje se sa ":"
  • simbol "w" zamjenjuje se sa "+"
  • znak "o" zamjenjuje se sa "%"
  • znak "d" zamjenjuje se sa "#"
  • znak "a" zamjenjuje se sa "-"
  • simbol "7" zamjenjuje se sa "^"
  • znak "h" zamjenjuje se sa "_"
  • simbol "T" zamjenjuje se sa "@"
  • znak "0" zamjenjuje se sa "/"
  • znak "Y" zamjenjuje se sa "*"

Kao rezultat zamjene znakova kodiranih pomoću base64 Podaci se ne mogu dekodirati bez izvođenja obrnute konverzije.

Ovako izgleda fragment sniffer koda koji nije maskiran:

Četiri JavaScript sniffera koji vas čekaju u online trgovinama

Analiza infrastrukture

U ranim kampanjama napadači su registrirali nazive domena slične onima na legitimnim web-lokacijama za online kupnju. Njihova domena se od legitimne može razlikovati po jednom simbolu ili drugom TLD-u. Registrirane domene korištene su za pohranjivanje sniffer koda, poveznica na koju je bila ugrađena u kod trgovine.

Ova je grupa također koristila imena domena koja podsjećaju na popularne jQuery dodatke (slickjs[.]org za stranice koje koriste dodatak gladak.js), pristupnici plaćanja (sagecdn[.]org za stranice koje koriste sustav plaćanja Sage Pay).

Kasnije je grupa počela stvarati domene čija imena nisu imala nikakve veze s domenom trgovine ili temom trgovine.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama
Svaka domena odgovarala je stranici na kojoj je kreiran imenik /js ili /src. Skripte za njuškanje pohranjene su u ovom direktoriju: jedno njuškanje za svaku novu infekciju. Njuškalo je bilo ugrađeno u kôd web stranice putem izravne veze, ali u rijetkim slučajevima napadači su modificirali jednu od datoteka web stranice i dodali joj zlonamjerni kod.

Analiza koda

Prvi algoritam maskiranja

U nekim otkrivenim uzorcima sniffera iz ove obitelji kod je bio zamagljen i sadržavao je šifrirane podatke potrebne za rad sniffera: posebno adresu sniffer gatea, popis polja obrasca za plaćanje, au nekim slučajevima i šifru lažnog obrazac za plaćanje. U kodu unutar funkcije resursi su šifrirani pomoću XOR ključem koji je proslijeđen kao argument istoj funkciji.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama
Dekriptiranjem niza s odgovarajućim ključem, jedinstvenim za svaki uzorak, možete dobiti niz koji sadrži sve nizove iz koda sniffera odvojene znakom za razdvajanje.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama

Drugi algoritam maskiranja

U kasnijim uzorcima sniffera iz ove obitelji korišten je drugačiji mehanizam zamagljivanja: u ovom slučaju podaci su šifrirani pomoću algoritma koji su sami napisali. Niz koji sadrži šifrirane podatke potrebne za rad njuškala proslijeđen je kao argument funkciji dešifriranja.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama
Pomoću konzole preglednika možete dešifrirati šifrirane podatke i dobiti niz koji sadrži resurse sniffera.

Četiri JavaScript sniffera koji vas čekaju u online trgovinama

Veza s ranim MageCart napadima

Tijekom analize jedne od domena koju je grupa koristila kao gateway za prikupljanje ukradenih podataka, otkriveno je da se na ovoj domeni nalazi infrastruktura za krađu kreditnih kartica, identična onoj koju je koristila Grupa 1, jedna od prvih grupa, otkrio od strane RiskIQ stručnjaka.

Dvije datoteke pronađene su na hostu obitelji njuškala CoffeMokko:

  • mage.js — datoteka koja sadrži sniffer kod grupe 1 s adresom vrata js-cdn.link
  • mag.php — PHP skripta odgovorna za prikupljanje podataka koje je ukrao njuškalo

Sadržaj datoteke mage.js Četiri JavaScript sniffera koji vas čekaju u online trgovinama
Također je utvrđeno da su najranije domene koje je koristila grupa koja stoji iza obitelji njuškala CoffeMokko registrirane 17. svibnja 2017.:

  • veza-js[.]veza
  • info-js[.]link
  • track-js[.]veza
  • map-js[.]veza
  • smart-js[.]veza

Format ovih naziva domena odgovara nazivima domena Grupe 1 koji su korišteni u napadima 2016.

Na temelju otkrivenih činjenica može se pretpostaviti da postoji povezanost između operatera CoffeMokko njuškala i kriminalne skupine Grupa 1. Pretpostavlja se da su operateri CoffeMokko mogli posuditi alate i softver od svojih prethodnika za krađu kartica. Međutim, vjerojatnije je da su kriminalna skupina koja stoji iza korištenja obitelji njuškala CoffeMokko isti ljudi koji su izvršili napade Grupe 1. Nakon objave prvog izvješća o aktivnostima kriminalne skupine, sva imena njihovih domena su blokiran, a alati su detaljno proučeni i opisani. Grupa je bila prisiljena uzeti stanku, poboljšati svoje interne alate i prepisati kod za sniffer kako bi nastavila s napadima i ostala neotkrivena.

Infrastruktura

Naziv domene Datum otkrića/pojavljivanja
veza-js.veza 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
childrensplayclothing.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
lamoodbighat.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
parkovi.su 09.01.2018
pmtonline.su 12.01.2018
otocap.org 15.01.2018
christohperward.org 27.01.2018
kava.org 31.01.2018
energycoffe.org 31.01.2018
energetski čaj.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
baterijart.com 03.04.2018
btosports.net 09.04.2018
piletina.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: www.habr.com

Dodajte komentar