Patru sniffer-uri JavaScript care vă așteaptă în magazinele online

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online

Aproape toți folosim serviciile magazinelor online, ceea ce înseamnă că mai devreme sau mai târziu riscăm să devenim victima sniffer-urilor JavaScript - cod special pe care atacatorii îl implementează pe un site web pentru a fura datele cardurilor bancare, adresele, autentificarea și parolele utilizatorilor. .

Aproape 400 de utilizatori ai site-ului și aplicației mobile British Airways au fost deja afectați de sniffer, precum și vizitatori ai site-ului britanic al gigantului sportiv FILA și al distribuitorului american de bilete Ticketmaster. PayPal, Chase Paymenttech, USAePay, Moneris - acestea și multe alte sisteme de plată au fost infectate.

Analistul Threat Intelligence Group-IB Viktor Okorokov vorbește despre modul în care sniffer-ii se infiltrează în codul site-ului web și fură informații de plată, precum și despre ce CRM-uri atacă.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online

„Amenințare ascunsă”

S-a întâmplat că pentru o lungă perioadă de timp sniffer-ii JS au rămas fericiți de analiștii antivirus, iar băncile și sistemele de plată nu le-au văzut ca pe o amenințare serioasă. Și complet în zadar. Experți din grupul IB analizat 2440 de magazine online infectate, ai căror vizitatori - un total de aproximativ 1,5 milioane de oameni pe zi - erau expuși riscului de compromis. Printre victime nu se numără doar utilizatorii, ci și magazinele online, sistemele de plată și băncile care au emis carduri compromise.

raport Group-IB a devenit primul studiu al pieței darknet pentru sniffer, infrastructura și metodele de monetizare, ceea ce aduce creatorilor lor milioane de dolari. Am identificat 38 de familii de sniffer, dintre care doar 12 erau cunoscute anterior cercetătorilor.

Să ne oprim în detaliu asupra celor patru familii de sniffer studiate în timpul studiului.

ReactGet Family

Sniffer-urile din familia ReactGet sunt folosite pentru a fura datele cardurilor bancare de pe site-urile de cumpărături online. Sniffer-ul poate funcționa cu un număr mare de sisteme de plată diferite utilizate pe site: o valoare a parametrului corespunde unui sistem de plată, iar versiunile individuale detectate ale sniffer-ului pot fi folosite pentru a fura acreditările, precum și pentru a fura datele cardului bancar din plată. forme ale mai multor sisteme de plată simultan, cum ar fi așa-numitul sniffer universal. S-a constatat că, în unele cazuri, atacatorii efectuează atacuri de tip phishing asupra administratorilor magazinelor online pentru a obține acces la panoul administrativ al site-ului.

O campanie care folosește această familie de sniffer a început în mai 2017; site-urile care rulează CMS și platformele Magento, Bigcommerce și Shopify au fost atacate.

Cum este implementat ReactGet în codul unui magazin online

Pe lângă implementarea „clasică” a unui script prin intermediul unui link, operatorii familiei de sniffer ReactGet folosesc o tehnică specială: folosind codul JavaScript, verifică dacă adresa curentă la care se află utilizatorul îndeplinește anumite criterii. Codul rău intenționat va fi executat numai dacă subșirul este prezent în adresa URL curentă verificare sau checkout într-un pas, o pagina/, out/onepag, casă/una, ckout/unul. Astfel, codul sniffer va fi executat exact în momentul în care utilizatorul procedează la plata achizițiilor și introduce informațiile de plată în formularul de pe site.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online
Acest sniffer folosește o tehnică non-standard. Plata victimei și datele personale sunt colectate împreună și codificate folosind base64, iar apoi șirul rezultat este folosit ca parametru pentru a trimite o solicitare către site-ul web al atacatorilor. Cel mai adesea, calea către poartă imită un fișier JavaScript, de exemplu resp.js, date.js și așa mai departe, dar sunt folosite și link-uri către fișiere imagine, GIF и JPG. Particularitatea este că sniffer-ul creează un obiect imagine care măsoară 1 cu 1 pixel și folosește linkul primit anterior ca parametru src Imagini. Adică, pentru utilizator, o astfel de solicitare în trafic va arăta ca o solicitare pentru o imagine obișnuită. O tehnică similară a fost folosită în familia ImageID de sniffer. În plus, tehnica utilizării unei imagini de 1 cu 1 pixel este utilizată în multe scripturi de analiză online legitime, care pot, de asemenea, induce în eroare utilizatorul.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online

Analiza versiunii

Analiza domeniilor active utilizate de operatorii de sniffer ReactGet a relevat multe versiuni diferite ale acestei familii de sniffer. Versiunile diferă prin prezența sau absența ofucării și, în plus, fiecare sniffer este conceput pentru un sistem de plată specific care procesează plățile cu cardul bancar pentru magazinele online. După ce au sortat valoarea parametrului corespunzător numărului versiunii, specialiștii Group-IB au primit o listă completă a variantelor de sniffer disponibile, iar după numele câmpurilor de formular pe care fiecare sniffer le caută în codul paginii, au identificat sistemele de plată. spre care este îndreptat snifferul.

Lista de sniffer și sistemele lor de plată corespunzătoare

Adresa URL a snifferului Sistem de plata
reactjsapi.com/react.js Authorize.Net
ajaxstatic.com/api.js?v=2.1.1 Cardsave
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 SagePay
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 Stripe
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 SagePay
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 SagePay
cloudodesc.com/gtm.js?v=2.7 SagePay
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 Sursa cibernetică
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 SagePay
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 Sursa cibernetică
livegetpay.com/pay.js?v=2.1.7 Authorize.Net
livegetpay.com/pay.js?v=2.1.8 SagePay
livegetpay.com/pay.js?v=2.1.9 Realex
livegetpay.com/pay.js?v=2.2.0 Sursa cibernetică
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 SagePay
livegetpay.com/pay.js?v=2.2.8 SagePay
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 Primul Gateway global de date
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 Stripe
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 SagePay
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 SagePay
mxcounter.com/c.js?v=2.31 SagePay
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 Stripe
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 SagePay
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 SagePay
mxcounter.com/click.js?v=2.31 SagePay
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 SagePay
newrelicnet.com/api.js?v=4.5 SagePay
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 Stripe
nr-public.com/api.js?v=2.4 Primul Gateway global de date
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 SagePay
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 SagePay
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 Sursa cibernetică
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 SagePay
ordercheckpays.com/api.js?v=3.4 Authorize.Net
ordercheckpays.com/api.js?v=3.5 Stripe
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 SagePay
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 Silex
reactjsapi.com/api.js?v=4.1.4 PayPal
reactjsapi.com/api.js?v=4.1.5 SagePay
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 Stripe
reactjsapi.com/api.js?v=4.1.9 Zebră grasă
reactjsapi.com/api.js?v=4.2.0 SagePay
reactjsapi.com/api.js?v=4.2.1 Authorize.Net
reactjsapi.com/api.js?v=4.2.2 Primul Gateway global de date
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 Servicii comerciale QuickBooks
reactjsapi.com/api.js?v=4.2.9 Verisign
reactjsapi.com/api.js?v=4.2.91 SagePay
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 SagePay
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 Sursa cibernetică
tagstracking.com/tag.js?v=2.1.7 Authorize.Net
tagstracking.com/tag.js?v=2.1.8 SagePay
tagstracking.com/tag.js?v=2.1.9 Realex
tagstracking.com/tag.js?v=2.2.0 Sursa cibernetică
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 SagePay
tagstracking.com/tag.js?v=2.2.8 SagePay
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 Primul Gateway global de date
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

Sniffer de parolă

Unul dintre avantajele sniffer-urilor JavaScript care lucrează pe partea client a unui site web este versatilitatea lor: codul rău intenționat încorporat pe un site web poate fura orice tip de date, fie că este vorba de date de plată sau de autentificare și parola unui cont de utilizator. Specialiștii Group-IB au descoperit un eșantion de sniffer aparținând familiei ReactGet, conceput pentru a fura adresele de e-mail și parolele utilizatorilor site-ului.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online

Intersecție cu sniffer ImageID

În timpul analizei unuia dintre magazinele infectate, s-a constatat că site-ul său a fost infectat de două ori: pe lângă codul rău intenționat al sniffer-ului familiei ReactGet, a fost detectat codul sniffer-ului familiei ImageID. Această suprapunere ar putea fi o dovadă că operatorii din spatele ambelor sniffer folosesc tehnici similare pentru a injecta cod rău intenționat.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online

Mirositoare universală

O analiză a unuia dintre numele de domenii asociate infrastructurii sniffer ReactGet a arătat că același utilizator a înregistrat alte trei nume de domenii. Aceste trei domenii au imitat domeniile site-urilor web din viața reală și au fost folosite anterior pentru a găzdui sniffer-uri. La analizarea codului a trei site-uri legitime, a fost detectat un sniffer necunoscut, iar analizele ulterioare au arătat că este o versiune îmbunătățită a sniffer-ului ReactGet. Toate versiunile monitorizate anterior ale acestei familii de sniffer aveau ca scop un singur sistem de plată, adică fiecare sistem de plată necesita o versiune specială a sniffer-ului. Cu toate acestea, în acest caz, a fost descoperită o versiune universală a sniffer-ului care este capabilă să fure informații din formulare legate de 15 sisteme de plată diferite și module ale site-urilor de comerț electronic pentru efectuarea plăților online.

Așadar, la începutul lucrării, snifferul a căutat câmpuri de bază de formular care conțineau informațiile personale ale victimei: numele complet, adresa fizică, numărul de telefon.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online
Snifferul a căutat apoi peste 15 prefixe diferite corespunzătoare diferitelor sisteme de plată și module de plată online.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online
În continuare, datele personale ale victimei și informațiile de plată au fost colectate împreună și trimise către un site controlat de atacator: în acest caz particular, au fost descoperite două versiuni ale sniffer-ului universal ReactGet, situate pe două site-uri piratate diferite. Cu toate acestea, ambele versiuni au trimis date furate pe același site piratat zoobashop.com.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online
Analiza prefixelor pe care sniffer-ul le-a folosit pentru a căuta câmpurile care conțin informațiile de plată ale victimei ne-a permis să stabilim că acest eșantion de sniffer era destinat următoarelor sisteme de plată:

  • Authorize.Net
  • Verisign
  • Primele date
  • USAePay
  • Stripe
  • PayPal
  • ANZ eGate
  • Braintree
  • DataCash (MasterCard)
  • Plăți Realex
  • PsiGate
  • Sisteme de plată Heartland

Ce instrumente sunt folosite pentru a fura informații de plată?

Primul instrument, descoperit în timpul analizei infrastructurii atacatorilor, este folosit pentru a ofusca scripturile rău intenționate responsabile de furtul cardurilor bancare. Un script bash care folosește CLI-ul proiectului a fost descoperit pe una dintre gazdele atacatorului javascript-obfuscator pentru a automatiza ofuscarea codului sniffer.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online
Al doilea instrument descoperit este conceput pentru a genera cod responsabil pentru încărcarea sniffer-ului principal. Acest instrument generează cod JavaScript care verifică dacă utilizatorul se află pe pagina de plată căutând șiruri de caractere în adresa curentă a utilizatorului verificare, coş și așa mai departe, iar dacă rezultatul este pozitiv, atunci codul încarcă sniffer-ul principal de pe serverul atacatorilor. Pentru a ascunde activitatea rău intenționată, toate liniile, inclusiv liniile de testare pentru determinarea paginii de plată, precum și un link către sniffer, sunt codificate folosind base64.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online

Atacurile de phishing

O analiză a infrastructurii de rețea a atacatorilor a relevat că grupul infracțional folosește adesea phishing pentru a obține acces la panoul administrativ al magazinului online țintă. Atacatorii înregistrează un domeniu care este vizual similar cu domeniul unui magazin și apoi implementează un formular de conectare fals al panoului de administrare Magento pe acesta. Dacă au succes, atacatorii vor avea acces la panoul administrativ al CMS Magento, care le oferă posibilitatea de a edita componentele site-ului web și de a implementa un sniffer pentru a fura datele cărților de credit.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online
Infrastructură

Numele de domeniu Data descoperirii/apariției
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

Familia G-Analytics

Această familie de sniffer este folosită pentru a fura cardurile clienților din magazinele online. Primul nume de domeniu folosit de grup a fost înregistrat în aprilie 2016, ceea ce poate indica faptul că grupul și-a început activitatea la jumătatea anului 2016.

În campania actuală, grupul folosește nume de domenii care imită servicii din viața reală, precum Google Analytics și jQuery, mascând activitatea sniffer-urilor cu scripturi legitime și nume de domenii similare cu cele legitime. Site-urile care rulează CMS Magento au fost atacate.

Cum este implementat G-Analytics în codul unui magazin online

O caracteristică distinctivă a acestei familii este utilizarea diferitelor metode pentru a fura informațiile de plată ale utilizatorilor. Pe lângă injectarea clasică de cod JavaScript în partea client a site-ului, grupul criminal a folosit și tehnici de injectare a codului în partea de server a site-ului, și anume scripturi PHP care procesează datele introduse de utilizator. Această tehnică este periculoasă, deoarece face dificilă detectarea codului rău intenționat de către cercetători terți. Specialiștii Group-IB au descoperit o versiune a unui sniffer încorporat în codul PHP al site-ului, folosind un domeniu ca poartă dittm.org.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online
A fost descoperită și o versiune timpurie a unui sniffer care folosește același domeniu pentru a colecta date furate dittm.org, dar această versiune este destinată instalării pe partea client a unui magazin online.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online
Grupul și-a schimbat ulterior tactica și a început să se concentreze mai mult pe ascunderea activităților rău intenționate și a camuflajului.

La începutul anului 2017, grupul a început să folosească domeniul jquery-js.com, mascandu-se ca un CDN pentru jQuery: atunci când merge pe site-ul atacatorilor, utilizatorul este redirecționat către un site legitim jquery.com.

Și la jumătatea anului 2018, grupul a adoptat numele de domeniu g-analytics.com și a început să mascheze activitățile sniffer-ului ca un serviciu Google Analytics legitim.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online
Patru sniffer-uri JavaScript care vă așteaptă în magazinele online

Analiza versiunii

În timpul analizei domeniilor utilizate pentru stocarea codului sniffer, s-a constatat că site-ul conține un număr mare de versiuni, care diferă prin prezența ofucării, precum și prin prezența sau absența codului inaccesibil adăugat la fișier pentru a distrage atenția. și ascunde codul rău intenționat.

Total pe site jquery-js.com Au fost identificate șase versiuni de sniffer. Aceste sniffer-uri trimit datele furate la o adresă situată pe același site web cu sniffer-ul însuși: 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

Domeniu ulterior g-analytics.com, folosit de grup în atacuri de la jumătatea anului 2018, servește drept depozit pentru mai mulți sniffers. În total, au fost descoperite 16 versiuni diferite ale sniffer-ului. În acest caz, poarta pentru trimiterea datelor furate a fost deghizată ca o legătură către un format de imagine 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

Monetizarea datelor furate

Gruparea infracțională monetizează datele furate prin vânzarea de carduri printr-un magazin subteran special creat care oferă servicii carderilor. Analiza domeniilor folosite de atacatori ne-a permis să stabilim acest lucru google-analytics.cm a fost înregistrat de același utilizator ca și domeniul cardz.vc. Domeniu cardz.vc se referă la un magazin care vinde carduri bancare furate Cardsurfs (Flysurfs), care a câștigat popularitate încă din zilele activității platformei de tranzacționare subterană AlphaBay ca un magazin care vinde carduri bancare furate cu ajutorul unui sniffer.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online
Analizând domeniul analitic.este, situat pe același server cu domeniile folosite de sniffer pentru a colecta date furate, specialiștii Group-IB au descoperit un fișier care conținea jurnalele de furt de cookie-uri, care se pare că a fost ulterior abandonat de dezvoltator. Una dintre intrările din jurnal conținea un domeniu iozoz.com, care a fost folosit anterior într-unul dintre sniffer-urile active în 2016. Probabil, acest domeniu a fost folosit anterior de către un atacator pentru a colecta cărți furate folosind un sniffer. Acest domeniu a fost înregistrat la o adresă de e-mail [e-mail protejat], care a fost folosit și pentru înregistrarea domeniilor cardz.su и cardz.vc, legat de magazinul de carduri Cardsurfs.

Pe baza datelor obținute, se poate presupune că familia de sniffer G-Analytics și magazinul subteran care vinde carduri bancare Cardsurfs sunt administrate de aceleași persoane, iar magazinul este folosit pentru a vinde carduri bancare furate cu ajutorul sniffer-ului.

Infrastructură

Numele de domeniu Data descoperirii/apariției
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
analitic.la 04.12.2018
google-analytics.to 06.12.2018
google-analytics.cm 28.12.2018
analitic.este 28.12.2018
google-analytics.cm 17.01.2019

Familia Illum

Illum este o familie de sniffer folosite pentru a ataca magazinele online care rulează CMS Magento. Pe lângă introducerea de cod rău intenționat, operatorii acestui sniffer folosesc și introducerea unor forme de plată false cu drepturi depline care trimit date către porțile controlate de atacatori.

La analiza infrastructurii de rețea folosită de operatorii acestui sniffer, s-a remarcat un număr mare de scripturi rău intenționate, exploit-uri, formulare de plată false, precum și o colecție de exemple cu sniffer-uri rău intenționate de la concurenți. Pe baza informațiilor despre datele de apariție a numelor de domenii utilizate de grup, se poate presupune că campania a început la sfârșitul anului 2016.

Cum este implementat Illum în codul unui magazin online

Primele versiuni ale snifferului descoperite au fost încorporate direct în codul site-ului compromis. Datele furate au fost trimise către cdn.illum[.]pw/records.php, poarta a fost codificată folosind base64.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online
Mai târziu, a fost descoperită o versiune ambalată a sniffer-ului care folosește o altă poartă - records.nstatistics[.]com/records.php.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online
În conformitate cu raport Willem de Groot, aceeași gazdă a fost folosită în sniffer, care a fost implementat pe site-ul magazinului, deținut de partidul politic german CSU.

Analiza site-ului atacatorilor

Specialiștii Group-IB au descoperit și analizat un site web folosit de acest grup infracțional pentru a stoca instrumente și a colecta informații furate.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online
Printre instrumentele găsite pe serverul atacatorilor au fost scripturi și exploit-uri pentru escaladarea privilegiilor în sistemul de operare Linux: de exemplu, Linux Privilege Escalation Check Script dezvoltat de Mike Czumak, precum și un exploit pentru CVE-2009-1185.

Atacatorii au folosit două exploit-uri direct pentru a ataca magazinele online: în primul rând capabil să injecteze cod rău intenționat în core_config_data prin exploatarea CVE-2016-4010, în al doilea rând exploatează o vulnerabilitate RCE în pluginurile pentru CMS Magento, permițând executarea unui cod arbitrar pe un server web vulnerabil.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online
De asemenea, în timpul analizei serverului au fost descoperite diverse mostre de sniffer și formulare de plată false, folosite de atacatori pentru a colecta informații de plată de pe site-uri piratate. După cum puteți vedea din lista de mai jos, unele scripturi au fost create individual pentru fiecare site piratat, în timp ce o soluție universală a fost folosită pentru anumite CMS și gateway-uri de plată. De exemplu, scripturi segapay_standart.js и segapay_onpage.js conceput pentru implementare pe site-uri care utilizează gateway-ul de plată Sage Pay.

Lista de scripturi pentru diverse gateway-uri de plată

Scenariul Gateway de plată
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=

Gazdă paymentnow[.]tk, folosit ca poartă într-un script payment_forminsite.js, a fost descoperit ca subiectAltName în mai multe certificate legate de serviciul CloudFlare. În plus, gazda conținea un scenariu evil.js. Judecând după numele scriptului, acesta ar putea fi folosit ca parte a exploatării CVE-2016-4010, datorită căruia este posibil să se injecteze cod rău intenționat în subsolul unui site care rulează Magento CMS. Gazda a folosit acest script ca o poartă cerere.requestnet[.]tkfolosind același certificat ca și gazda paymentnow[.]tk.

Forme de plată false

Figura de mai jos prezintă un exemplu de formular pentru introducerea datelor cardului. Acest formular a fost folosit pentru a se infiltra într-un magazin online și a fura datele cardului.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online
Următoarea figură prezintă un exemplu de formular de plată PayPal fals, care a fost folosit de atacatori pentru a se infiltra pe site-uri cu această metodă de plată.
Patru sniffer-uri JavaScript care vă așteaptă în magazinele online
Infrastructură

Numele de domeniu Data descoperirii/apariției
cdn.illum.pw 27/11/2016
records.nstatistics.com 06/09/2018
cerere.plătiți acum.cf 25/05/2018
paymentnow.tk 16/07/2017
linie de plată.tk 01/03/2018
paymentpal.cf 04/09/2017
requestnet.tk 28/06/2017

Cafeaua familia Mokko

Familia de sniffer CoffeMokko, concepută pentru a fura carduri bancare de la utilizatorii magazinelor online, este folosită cel puțin din mai 2017. Se presupune că operatorii acestei familii de sniffer sunt gruparea infracțională Grupa 1, descrisă de specialiștii RiskIQ în 2016. Au fost atacate site-uri care rulează CMS-uri precum Magento, OpenCart, WordPress, osCommerce și Shopify.

Cum este implementat CoffeMokko în codul unui magazin online

Operatorii acestei familii creează sniffer unice pentru fiecare infecție: fișierul sniffer este localizat în director src sau js pe serverul atacatorilor. Încorporarea în codul site-ului se realizează printr-un link direct către sniffer.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online
Codul sniffer codifică numele câmpurilor de formular din care datele trebuie furate. Sniffer-ul verifică, de asemenea, dacă utilizatorul se află pe pagina de plată, verificând lista de cuvinte cheie cu adresa curentă a utilizatorului.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online
Unele versiuni descoperite ale sniffer-ului erau ascunse și conțineau un șir criptat în care era stocată principala matrice de resurse: conținea numele câmpurilor de formular pentru diferite sisteme de plată, precum și adresa de poartă la care trebuiau trimise datele furate.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online
Informațiile de plată furate au fost trimise la un script de pe serverul atacatorilor pe parcurs /savePayment/index.php sau /tr/index.php. Probabil, acest script este folosit pentru a trimite date de la poartă către serverul principal, care consolidează datele de la toate sniffer-urile. Pentru a ascunde datele transmise, toate informațiile de plată ale victimei sunt criptate folosind base64, iar apoi au loc mai multe substituții de caractere:

  • caracterul „e” este înlocuit cu „:”
  • simbolul „w” este înlocuit cu „+”
  • caracterul „o” este înlocuit cu „%”
  • caracterul „d” este înlocuit cu „#”
  • caracterul „a” este înlocuit cu „-”
  • simbolul „7” este înlocuit cu „^”
  • caracterul „h” este înlocuit cu „_”
  • simbolul „T” este înlocuit cu „@”
  • caracterul „0” este înlocuit cu „/”
  • caracterul „Y” este înlocuit cu „*”

Ca rezultat al substituirilor de caractere codificate folosind base64 Datele nu pot fi decodificate fără efectuarea conversiei inverse.

Așa arată un fragment de cod sniffer care nu a fost obscurcat:

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online

Analiza infrastructurii

În primele campanii, atacatorii au înregistrat nume de domenii similare cu cele ale site-urilor legitime de cumpărături online. Domeniul lor poate diferi de cel legitim printr-un simbol sau altul TLD. Domeniile înregistrate au fost folosite pentru a stoca codul sniffer, un link către care a fost încorporat în codul magazinului.

Acest grup a folosit și nume de domenii care amintesc de pluginurile jQuery populare (slickjs[.]org pentru site-urile care utilizează pluginul slick.js), gateway-uri de plată (sagecdn[.]org pentru site-urile care utilizează sistemul de plată Sage Pay).

Ulterior, grupul a început să creeze domenii ale căror nume nu aveau nicio legătură cu domeniul magazinului sau cu tema magazinului.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online
Fiecare domeniu corespundea unui site pe care a fost creat directorul /js sau /src. Scripturile sniffer au fost stocate în acest director: câte un sniffer pentru fiecare nouă infecție. Sniffer-ul a fost încorporat în codul site-ului printr-un link direct, dar în cazuri rare, atacatorii au modificat unul dintre fișierele site-ului și i-au adăugat cod rău intenționat.

Analiza codului

Primul algoritm de ofuscare

În unele mostre descoperite de sniffer-uri din această familie, codul a fost ofucat și conținea date criptate necesare pentru ca sniffer-ul să funcționeze: în special, adresa porții sniffer-ului, o listă de câmpuri ale formularului de plată și, în unele cazuri, codul unui fals. formular de plată. În codul din interiorul funcției, resursele au fost criptate folosind XOR prin cheia care a fost transmisă ca argument la aceeași funcție.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online
Prin decriptarea șirului cu cheia corespunzătoare, unică pentru fiecare probă, puteți obține un șir care conține toate șirurile din codul sniffer separate printr-un caracter separator.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online

Al doilea algoritm de ofuscare

În eșantioanele ulterioare de sniffer din această familie, a fost utilizat un mecanism de ofuscare diferit: în acest caz, datele au fost criptate folosind un algoritm auto-scris. Un șir care conține date criptate necesare funcționării sniffer-ului a fost transmis ca argument pentru funcția de decriptare.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online
Folosind consola browserului, puteți decripta datele criptate și puteți obține o matrice care conține resurse sniffer.

Patru sniffer-uri JavaScript care vă așteaptă în magazinele online

Conexiune la primele atacuri MageCart

În cadrul analizei unuia dintre domeniile utilizate de grup ca poartă de acces pentru colectarea datelor furate, s-a constatat că acest domeniu a găzduit o infrastructură pentru furtul cărților de credit, identică cu cea folosită de Grupul 1, unul dintre primele grupuri, descoperit de către specialiștii RiskIQ.

Au fost găsite două fișiere pe gazda familiei de sniffer CoffeMokko:

  • mage.js — fișier care conține codul sniffer Grup 1 cu adresa de poartă js-cdn.link
  • mag.php — Script PHP responsabil pentru colectarea datelor furate de sniffer

Conținutul fișierului mage.js Patru sniffer-uri JavaScript care vă așteaptă în magazinele online
De asemenea, s-a stabilit că cele mai vechi domenii utilizate de grupul din spatele familiei de sniffer CoffeMokko au fost înregistrate pe 17 mai 2017:

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

Formatul acestor nume de domenii se potrivește cu numele de domeniu din Grupa 1 care au fost utilizate în atacurile din 2016.

Pe baza faptelor descoperite, se poate presupune că există o legătură între operatorii sniffer-urilor CoffeMokko și gruparea criminală Grupa 1. Probabil, operatorii CoffeMokko ar fi putut împrumuta instrumente și software de la predecesorii lor pentru a fura carduri. Cu toate acestea, este mai probabil ca grupul infracțional din spatele utilizării familiei de sniffer CoffeMokko să fie aceleași persoane care au comis atacurile din Grupul 1. În urma publicării primului raport privind activitățile grupului infracțional, toate numele lor de domenii au fost blocate iar instrumentele au fost studiate în detaliu și descrise. Grupul a fost forțat să ia o pauză, să-și perfecționeze instrumentele interne și să rescrie codul sniffer pentru a-și continua atacurile și a rămâne nedetectat.

Infrastructură

Numele de domeniu Data descoperirii/apariției
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
securitate-plata.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
blackririveimaging.org 23.12.2017
exrpesso.org 02.01.2018
parcuri.su 09.01.2018
pmtonline.su 12.01.2018
otocap.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

Sursa: www.habr.com

Adauga un comentariu