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

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

Practic aproape fiecare dintre noi folosește serviciile magazinelor online, ceea ce înseamnă că, mai devreme sau mai târziu, riscă să devină victima sniffer-elor JavaScript - un cod special pe care infractorii cibernetici îl integrează în site-uri pentru a fura datele cardurilor bancare, adresele, numele de utilizator și parolele utilizatorilor.

Aproape 400.000 de utilizatori ai site-ului și aplicației mobile a companiei aeriene British Airways au fost afectați de sniffer-e, precum și vizitatorii site-ului britanic al gigantului sportiv FILA și ai distribuitorului american de bilete Ticketmaster. PayPal, Chase Paymenttech, USAePay, Moneris - aceste și multe alte sisteme de plată au fost compromise.

Analistul Threat Intelligence Group-IB, Viktor Okorokov, explică modul în care sniffer-ele sunt integrate în codul site-ului și fură informații despre plăți, cât și despre CRM-urile pe care le atacă.

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

„Amenințarea ascunsă”

Din păcate, sniffer-ele JS au rămas mult timp în afara atenției analiștilor antivirus, iar băncile și sistemele de plată nu le-au considerat o amenințare serioasă. Și pe bună dreptate, expertiza Group-IB au analizat 2440 de magazine online infectate, vizitate de aproximativ 1,5 milioane de persoane pe zi, au fost expuse riscului de compromitere. Printre victime se numără nu doar utilizatorii, ci și magazinele online, sistemele de plată și băncile care au emis carduri compromise.

Raport Group-IB a fost prima cercetare a pieței darknet a sniffer-elor, infrastructurii acestora și modurilor de monetizare care le aduc creatorilor milioane de dolari. Am identificat 38 de familii de sniffer-e, dintre care doar 12 erau cunoscute anterior cercetătorilor.

Vom detalia patru familii de sniffer-e studiate în cadrul cercetării.

Familia ReactGet

Snifferii din familia ReactGet sunt utilizati pentru furtul datelor de carduri bancare pe site-urile magazinelor online. Un sniffer poate lucra cu un număr mare de sisteme de plată diferite utilizate pe site: o valoare a parametrului corespunde unui singur sistem de plată, iar versiunile detectate ale snifferului pot fi folosite pentru a fura datele de autentificare, precum și pentru a fura informațiile cardurilor bancare din formularele de plată ale mai multor sisteme de plată, ca un așa-numit sniffer universal. S-a constatat că în unele cazuri, atacatorii desfășoară atacuri de phishing asupra administratorilor magazinelor online, cu scopul de a obține acces la panoul de administrare al site-ului.

Campania care folosește această familie de snifferi a început în mai 2017, atacurile vizând site-uri gestionate de CMS și platforme precum Magento, Bigcommerce, Shopify.

Cum se integrează ReactGet în codul magazinului online

Pe lângă integrarea „clasică” a scriptului prin link, operatorii snifferilor din familia ReactGet folosesc o tehnică specială: prin intermediul codului JavaScript se verifică dacă adresa curentă, pe care se află utilizatorul, corespunde anumitor criterii. Codul malițios va fi executat doar dacă în URL-ul curent se găsește subșirul checkout sau onestepcheckout, onepage/, out/onepag, checkout/one, ckout/one. Astfel, codul snifferului se va executa exact în momentul în care utilizatorul trece la plata achizițiilor și introduce informațiile de plată în formularul de pe site.

Patru sniffer-e JavaScript care vă așteaptă în magazinele online
Acest sniffer folosește o tehnică neobișnuită. Datele de plată și informațiile personale ale victimei sunt colectate împreună, codificate prin intermediul base64, iar apoi șirul obținut este utilizat ca parametru pentru a trimite o cerere către site-ul atacatorilor. Cel mai adesea, calea către poarta imită un fișier JavaScript, de exemplu resp.js, data.js și așa mai departe, dar sunt folosite și linkuri către fișiere de imagini, GIF și JPG. Caracteristica este că snifferul creează un obiect de imagine de dimensiuni 1 pe 1 pixel și folosește linkul obținut anterior ca parametru. src imagini. Asta înseamnă că pentru utilizator, o astfel de cerere în trafic va arăta ca o cerere normală de imagine. O tehnică similară a fost folosită în sniferele din familia ImageID. În plus, tehnica de utilizare a unei imagini de 1 pe 1 pixel este aplicată în multe scripturi legitime de analiză online, ceea ce poate induce, de asemenea, utilizatorul în eroare.

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

Analiza versiunilor

Analiza domeniilor active folosite de operatorii snifferelor ReactGet a permis descoperirea multor versiuni diferite ale acestui tip de sniffer. Versiunile diferă prin prezența sau absența obfuscării, iar fiecare sniffer este destinat unui sistem de plată specific care procesează plăți cu carduri bancare pentru magazinele online. Evaluând valoarea parametrului corespunzător numărului versiunii, specialiștii de la Group-IB au obținut o listă completă de variații disponibile ale snifferelor, iar prin denumirile câmpurilor de formulare pe care fiecare sniffer le caută în codul paginii, au identificat sistemele de plată cărora snifferul le este destinat.

Lista snifferelor și sistemelor de plată corespunzătoare

URL-ul snifferuluiSistem de plată
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.4eWAY 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.7USAePay
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.3Moneris
apitstatus.com/api.js?v=2.1.5 USAePay
apitstatus.com/api.js?v=2.1.6PayPal
apitstatus.com/api.js?v=2.1.7Sage Pay
apitstatus.com/api.js?v=2.1.8Verisign
apitstatus.com/api.js?v=2.1.9PayPal
apitstatus.com/api.js?v=2.3.0Stripe
apitstatus.com/api.js?v=3.0.2Realex
apitstatus.com/api.js?v=3.0.3PayPal
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.8DataCash
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.3Authorize.Net
billgetstatus.com/api.js?v=1.4 Authorize.Net
billgetstatus.com/api.js?v=1.5Verisign
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.jsAuthorize.Net
cloudodesc.com/gtm.js?v=1.2 Authorize.Net
cloudodesc.com/gtm.js?v=1.3ANZ eGate
cloudodesc.com/gtm.js?v=2.3Authorize.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.9Authorize.Net
cloudodesc.com/gtm.js?v=2.91 Adyen
cloudodesc.com/gtm.js?v=2.92 PsiGate
cloudodesc.com/gtm.js?v=2.93CyberSource
cloudodesc.com/gtm.js?v=2.95 ANZ eGate
cloudodesc.com/gtm.js?v=2.97Realex
geisseie.com/gs.js USAePay
gtmproc.com/age.jsAuthorize.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.5PayPal
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.3Authorize.Net
livecheckpay.com/api.js?v=2.4Verisign
livecheckpay.com/react.jsAuthorize.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.5CyberSource
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 CyberSource
livegetpay.com/pay.js?v=2.2.1PayPal
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.9Verisign
livegetpay.com/pay.js?v=2.3.0 Authorize.Net
livegetpay.com/pay.js?v=2.3.1Authorize.Net
livegetpay.com/pay.js?v=2.3.2First Data Global Gateway
livegetpay.com/pay.js?v=2.3.3 Authorize.Net
livegetpay.com/pay.js?v=2.3.4Authorize.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.0Verisign
maxstatics.com/site.js USAePay
mediapack.info/track.js?d=funlove.com USAePay
mediapack.info/track.js?d=qbedding.comAuthorize.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.7eWAY 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.1Braintree
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.33PayPal
mxcounter.com/c.js?v=2.34Authorize.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.8Sage Pay
mxcounter.com/click.js?v=2.0Authorize.Net
mxcounter.com/click.js?v=2.1 Braintree
mxcounter.com/click.js?v=2.2PayPal
mxcounter.com/click.js?v=2.3 Sage Pay
mxcounter.com/click.js?v=2.31Sage Pay
mxcounter.com/click.js?v=2.32Authorize.Net
mxcounter.com/click.js?v=2.33PayPal
mxcounter.com/click.js?v=2.34 Authorize.Net
mxcounter.com/click.js?v=2.35 Verisign
mxcounter.com/cnt.jsAuthorize.Net
mxcounter.com/j.jsAuthorize.Net
newrelicnet.com/api.js?v=1.2Authorize.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.0PayFort
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.3Stripe
nr-public.com/api.js?v=2.4First 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.7Authorize.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.3Moneris
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.7Westpac PayWay
nr-public.com/api.js?v=3.8 Authorize.Net
nr-public.com/api.js?v=4.0Moneris
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.4PayPal
nr-public.com/api.js?v=4.0.5Authorize.Net
nr-public.com/api.js?v=4.0.6USAePay
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.11Authorize.Net
ordercheckpays.com/api.js?v=2.12 PayPal
ordercheckpays.com/api.js?v=2.13Moneris
ordercheckpays.com/api.js?v=2.14Authorize.Net
ordercheckpays.com/api.js?v=2.15PayPal
ordercheckpays.com/api.js?v=2.16PayPal
ordercheckpays.com/api.js?v=2.17Westpac 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.23Authorize.Net
ordercheckpays.com/api.js?v=2.24 PayPal
ordercheckpays.com/api.js?v=2.25 PayFort
ordercheckpays.com/api.js?v=2.29 CyberSource
ordercheckpays.com/api.js?v=2.4 PayPal Payflow Pro
ordercheckpays.com/api.js?v=2.7Authorize.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.3Sage Pay
ordercheckpays.com/api.js?v=3.4 Authorize.Net
ordercheckpays.com/api.js?v=3.5Stripe
ordercheckpays.com/api.js?v=3.6Authorize.Net
ordercheckpays.com/api.js?v=3.7 Authorize.Net
ordercheckpays.com/api.js?v=3.8 Verisign
ordercheckpays.com/api.js?v=3.9PayPal
ordercheckpays.com/api.js?v=4.0 Authorize.Net
ordercheckpays.com/api.js?v=4.1Authorize.Net
ordercheckpays.com/api.js?v=4.2 Sage Pay
ordercheckpays.com/api.js?v=4.3Authorize.Net
reactjsapi.com/api.js?v=0.1.0 Authorize.Net
reactjsapi.com/api.js?v=0.1.1PayPal
reactjsapi.com/api.js?v=4.1.2 Flint
reactjsapi.com/api.js?v=4.1.4PayPal
reactjsapi.com/api.js?v=4.1.5Sage Pay
reactjsapi.com/api.js?v=4.1.51 Verisign
reactjsapi.com/api.js?v=4.1.6Authorize.Net
reactjsapi.com/api.js?v=4.1.7Authorize.Net
reactjsapi.com/api.js?v=4.1.8 Stripe
reactjsapi.com/api.js?v=4.1.9 Fat Zebra
reactjsapi.com/api.js?v=4.2.0Sage 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.7PayPal
reactjsapi.com/api.js?v=4.2.8 QuickBooks Merchant Services
reactjsapi.com/api.js?v=4.2.9Verisign
reactjsapi.com/api.js?v=4.2.91 Sage Pay
reactjsapi.com/api.js?v=4.2.92Verisign
reactjsapi.com/api.js?v=4.2.94Authorize.Net
reactjsapi.com/api.js?v=4.3.97Authorize.Net
reactjsapi.com/api.js?v=4.5Sage Pay
reactjsapi.com/react.jsAuthorize.Net
sydneysalonsupplies.com/gtm.jseWAY Rapid
tagsmediaget.com/react.jsAuthorize.Net
tagstracking.com/tag.js?v=2.1.2ANZ eGate
tagstracking.com/tag.js?v=2.1.3PayPal
tagstracking.com/tag.js?v=2.1.5CyberSource
tagstracking.com/tag.js?v=2.1.7Authorize.Net
tagstracking.com/tag.js?v=2.1.8Sage Pay
tagstracking.com/tag.js?v=2.1.9Realex
tagstracking.com/tag.js?v=2.2.0CyberSource
tagstracking.com/tag.js?v=2.2.1 PayPal
tagstracking.com/tag.js?v=2.2.2PayPal
tagstracking.com/tag.js?v=2.2.3PayPal
tagstracking.com/tag.js?v=2.2.4Verisign
tagstracking.com/tag.js?v=2.2.5eWAY Rapid
tagstracking.com/tag.js?v=2.2.7Sage Pay
tagstracking.com/tag.js?v=2.2.8Sage Pay
tagstracking.com/tag.js?v=2.2.9Verisign
tagstracking.com/tag.js?v=2.3.0Authorize.Net
tagstracking.com/tag.js?v=2.3.1Authorize.Net
tagstracking.com/tag.js?v=2.3.2First Data Global Gateway
tagstracking.com/tag.js?v=2.3.3Authorize.Net
tagstracking.com/tag.js?v=2.3.4Authorize.Net
tagstracking.com/tag.js?v=2.3.5Moneris
tagstracking.com/tag.js?v=2.3.6Authorize.Net
tagstracking.com/tag.js?v=2.3.8PayPal

Sniffer de parole

Unul dintre avantajele snifferelor JavaScript care funcționează pe partea clientului este versatilitatea: codul malițios încorporat pe site poate fura date de orice tip, fie că sunt date de plată sau un nume de utilizator și parola unui cont de utilizator. Specialiștii de la Group-IB au descoperit un exemplu de sniffer din familia ReactGet destinat furtului adreselor de e-mail și parolilor utilizatorilor site-ului.

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

Intersecția cu snifferul ImageID

În timpul analizei unuia dintre magazinele infectate, s-a stabilit că site-ul său a fost infectat de două ori: pe lângă codul malițios al snifferului din familia ReactGet, a fost descoperit și codul snifferului din familia ImageID. Această intersecție poate fi o dovadă că operatorii care stau în spatele utilizării ambelor snifferi aplică tehnici similare pentru a introduce cod malițios.

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

Sniffer universal

În analiza uneia dintre numele de domeniu asociate infrastructurii snifferelor ReactGet, s-a constatat că același utilizator a înregistrat alte trei nume de domeniu. Aceste trei domenii imită domeniile unor site-uri reale și au fost folosite anterior pentru găzduirea snifferelor. Analizând codul celor trei site-uri legitime, a fost descoperit un sniffer necunoscut, iar o analiză ulterioară a arătat că este o versiune îmbunătățită a snifferului ReactGet. Toate versiunile anterior urmărite ale snifferelor din această familie erau țintite spre un anumit sistem de plată, ceea ce înseamnă că pentru fiecare sistem de plată era necesară o versiune specială a snifferului. Totuși, în acest caz, a fost descoperită o versiune universală a snifferului, capabilă să fure informații din formulare aparținând a 15 sisteme de plată diferite și modulelor e-commerce pentru efectuarea plăților online.

Așadar, la începutul activității, snifferul căuta câmpurile de bază ale formularului care conțin informațiile personale ale victimei: numele complet, adresa fizică, numărul de telefon.

Patru sniffer-e JavaScript care vă așteaptă în magazinele online
Apoi, snifferul căuta printre mai mult de 15 prefixe diferite, corespunzătoare diferitelor sisteme de plată și module pentru plăți online.

Patru sniffer-e JavaScript care vă așteaptă în magazinele online
Ulterior, datele personale ale victimei și informațiile de plată erau adunate la un loc și trimise pe un site controlat de atacator: în acest caz specific, au fost descoperite două versiuni ale snifferului universal ReactGet, situate pe două site-uri hack-uite diferite. Totuși, ambele versiuni trimiteau datele furate pe același site hack-uit. zoobashop.com.

Patru sniffer-e JavaScript care vă așteaptă în magazinele online
Analiza prefixelor utilizate de sniffer pentru căutarea câmpurilor care conțin informații de plată ale victimei a permis determinarea faptului că acest exemplar de sniffer a fost țintit spre următoarele sisteme de plată:

  • Authorize.Net
  • Verisign
  • First Data
  • USAePay
  • Stripe
  • PayPal
  • ANZ eGate
  • Braintree
  • DataCash (MasterCard)
  • Realex Payments
  • PsiGate
  • Heartland Payment Systems

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

Primul instrument descoperit în timpul analizei infrastructurii atacatorilor este destinat obfuscării scripturilor malițioase, responsabil pentru furtul cardurilor bancare. Pe unul dintre serverele atacatorilor a fost descoperit un script bash, care utilizează CLI-ul proiectului javascript-obfuscator pentru automatizarea obfuscației codului snifferelor.

Patru sniffer-e JavaScript care vă așteaptă în magazinele online
Al doilea instrument descoperit este destinat generării codului responsabil pentru încărcarea sniff-ului principal. Acest instrument generează cod JavaScript care verifică dacă utilizatorul se află pe pagina de plată, căutând în adresa curentă a utilizatorului fragmente checkout, cumpărătură și așa mai departe, iar dacă rezultatul este pozitiv, codul încarcă sniff-ul principal de pe serverul atacatorilor. Pentru a ascunde activitatea dăunătoare, toate fragmentele, inclusiv cele pentru identificarea paginii de plată, precum și linkul la sniff-er, sunt codificate folosind base64.

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

Atacuri de phishing

În timpul analizei infrastructurii de rețea a atacatorilor, s-a constatat că, adesea, pentru a obține acces la panoul de administrare al magazinului online țintă, grupul criminal utilizează phishing. Atacatorii înregistrează un domeniu care seamănă vizual cu domeniul magazinului și apoi desfășoară o formă falsă de autentificare a panoului de administrare Magento. În cazul unui succes, atacatorii vor obține acces la panoul de administrare CMS Magento, ceea ce le permite să modifice componentele site-ului și să implementeze un sniff-er pentru a fura datele cardurilor de credit.

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

DomeniuData descoperirii/apariției
mediapack.info04.05.2017
adsgetapi.com15.06.2017
simcounter.com14.08.2017
mageanalytics.com22.12.2017
maxstatics.com16.01.2018
reactjsapi.com19.01.2018
mxcounter.com02.02.2018
apitstatus.com01.03.2018
orderracker.com20.04.2018
tagstracking.com25.06.2018
adsapigate.com12.07.2018
trust-tracker.com15.07.2018
fbstatspartner.com02.10.2018
billgetstatus.com12.10.2018
aldenmlilhouse.com20.10.2018
balletbeautlful.com20.10.2018
bargalnjunkie.com20.10.2018
payselector.com21.10.2018
tagsmediaget.com02.11.2018
hs-payments.com16.11.2018
ordercheckpays.com19.11.2018
geisseie.com24.11.2018
gtmproc.com29.11.2018
livegetpay.com18.12.2018
sydneysalonsupplies.com18.12.2018
newrelicnet.com19.12.2018
nr-public.com03.01.2019
cloudodesc.com04.01.2019
ajaxstatic.com11.01.2019
livecheckpay.com21.01.2019
asianfoodgracer.com25.01.2019

Familia G-Analytics

Această familie de sniff-eri este utilizată pentru a fura cardurile clienților din magazinele online. Primul nume de domeniu utilizat de grup a fost înregistrat în aprilie 2016, ceea ce poate indica începerea activității grupului în mijlocul anului 2016.

În campania curentă, grupul folosește nume de domenii care imită servicii reale, cum ar fi Google Analytics și jQuery, mascând activitatea sniff-erilor cu scripturi legitime și nume de domenii asemănătoare cu cele legitime. Au fost compromise site-uri care funcționează pe baza CMS Magento.

Cum se integrează G-Analytics în codul magazinului online

Caracteristica distinctivă a acestei familii este utilizarea diferitelor metode de sustragere a informațiilor de plată ale utilizatorului. Pe lângă implementarea clasică a codului JavaScript în partea de client a site-ului, grupul criminal a aplicat, de asemenea, tehnica de inserare a codului în partea serverului site-ului, și anume a scripturilor PHP care procesează datele introduse de utilizatori. Această tehnică este periculoasă deoarece îngreunează descoperirea codului malițios de către cercetătorii externi. Specialiștii de la Group-IB au descoperit o versiune a sniffer-ului, inserat în codul PHP al site-ului, care utiliza ca gateway domeniul dittm.org.

Patru sniffer-e JavaScript care vă așteaptă în magazinele online
De asemenea, a fost descoperită o versiune anterioară a sniffer-ului, care folosea același domeniu pentru a colecta datele furate dittm.org, dar această versiune era destinată deja instalării pe partea clientului al magazinului online.

Patru sniffer-e JavaScript care vă așteaptă în magazinele online
Ulterior, grupul și-a schimbat tactica și a început să acorde mai multă atenție ascunderii activității malițioase și camuflării.

La începutul anului 2017, grupul a început să utilizeze domeniul jquery-js.com, care se masca sub un CDN pentru jQuery: atunci când utilizatorul accesează site-ul infractorilor, este redirecționat către site-ul legitim jquery.com.

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

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

Analiza versiunilor

În urma analizei domeniilor utilizate pentru stocarea codului sniffer-elor, s-a stabilit că pe site se află un număr mare de versiuni, care diferă prin prezența obfuscării, precum și prin prezența sau absența codului inaccesibil, adăugat în fișier pentru a distrage atenția și a ascunde codul malițios.

În total, pe site jquery-js.com au fost identificate șase versiuni ale sniffer-elor. Datele furate sunt trimise de aceste sniffer-e la o adresă situată pe același site 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

Domeniul mai recent g-analytics.com, utilizat de grup în atacuri din mijlocul anului 2018, servește ca depozit pentru un număr mai mare de sniffer-e. În total au fost descoperite 16 versiuni diferite ale sniffer-ului. În acest caz, gateway-ul pentru trimiterea datelor furate a fost mascat sub un link către o imagine de format 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

Grupul criminal monetizează datele furate, vânzând carduri printr-un magazin subteran special creat, care oferă servicii carder-ilor. Analiza domeniilor utilizate de atacatori a permis identificarea faptului că google-analytics.cm a fost înregistrat de același utilizator care a înregistrat domeniul cardz.vc. Domeniul cardz.vc se referă la magazinul de vânzare a cardurilor bancare furate Cardsurfs (Flysurfs), care a câștigat popularitate în timpul activității pieței subterane AlphaBay ca magazin de vânzare a cardurilor bancare furate prin intermediul sniffer-elor.

Patru sniffer-e JavaScript care vă așteaptă în magazinele online
Analizând domeniul analytic.is, situat pe același server cu domeniile utilizate de sniffer-e pentru colectarea datelor furate, specialiștii de la Group-IB au descoperit un fișier conținând jurnale ale Cookie-stiller-ului, care, după cum pare, a fost ulterior abandonat de dezvoltator. Una dintre înregistrările din jurnal conținea domeniul iozoz.com, care a fost anterior utilizat într-unul dintre sniffer-ele active în 2016. Se presupune că acest domeniu a fost folosit anterior de atacator pentru a colecta carduri furate prin intermediul sniffer-ului. Acest domeniu a fost înregistrat pe o adresă de email kts241@gmail.com, care a fost, de asemenea, utilizată pentru înregistrarea domeniilor cardz.su și cardz.vc, legate de magazinul de carduri Cardsurfs.

Pe baza datelor obținute, se poate face presupunerea că familia de sniffer-e G-Analytics și magazinul subteran de vânzare a cardurilor bancare Cardsurfs sunt gestionate de aceleași persoane, iar magazinul este folosit pentru comercializarea cardurilor furate prin intermediul sniffer-ului.

Infrastructură

DomeniuData descoperirii/apariției
iozoz.com08.04.2016
dittm.org10.09.2016
jquery-js.com02.01.2017
g-analytics.com31.05.2018
google-analytics.is21.11.2018
analytic.to04.12.2018
google-analytics.to06.12.2018
google-analytics.cm28.12.2018
analytic.is28.12.2018
googlc-analytics.cm17.01.2019

Familia Illum

Illum este o familie de sniffer-e utilizate pentru atacuri asupra magazinelor online ce funcționează pe baza CMS Magento. Pe lângă injectarea de cod malițios, operatorii acestui sniffer utilizează, de asemenea, forme de plată false care trimit date către porți controlate de atacatori.

În analiza infrastructurii de rețea utilizate de operatorii acestui sniffer, a fost observată o mare cantitate de scripturi malițioase, exploatări, forme de plată false, precum și o colecție de exemple de sniffer-e malițioase concurente. Pe baza informațiilor legate de datele apariției numelui de domeniu utilizat de grup, se poate presupune că începutul campaniei coincide cu sfârșitul anului 2016.

Cum se integrează Illum în codul magazinului online

Primele versiuni detectate ale sniffer-ului au fost injectate direct în codul site-ului compromis. Datele furate erau trimise la adresa cdn.illum[.]pw/records.php, iar poarta a fost codificată folosind base64.

Patru sniffer-e JavaScript care vă așteaptă în magazinele online
O versiune ambalată a sniffer-ului a fost descoperită ulterior, utilizând o altă poartă — records.nstatistics[.]com/records.php.

Patru sniffer-e JavaScript care vă așteaptă în magazinele online
Conform raportului Willem de Groot, același host a fost utilizat în sniffer-ul care a fost implantat pe site-ul magazinului, aparținând partidului politic german CSU.

Analiza site-ului infractorilor

Specialiștii Group-IB au descoperit și analizat site-ul folosit de acest grup infracțional pentru stocarea uneltelor și colectarea informațiilor furate.

Patru sniffer-e JavaScript care vă așteaptă în magazinele online
Printre uneltele descoperite pe serverul infractorilor, au fost găsite scripturi și exploatări pentru creșterea 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.

În mod direct pentru atacurile asupra magazinelor online, infractorii au folosit două exploatări: primul capabil să injecteze cod malițios în core_config_data folosind exploatarea CVE-2016-4010, al doilea exploatează o vulnerabilitate de tip RCE în pluginurile pentru CMS Magento, permițând executarea de cod arbitrar pe serverul web vulnerabil.

Patru sniffer-e JavaScript care vă așteaptă în magazinele online
De asemenea, în timpul analizei serverului au fost descoperite diverse mostre de sniffer-e și formulare de plată false, folosite de infractori pentru a colecta informații de plată de pe site-urile compromise. Așa cum se poate observa din lista de mai jos, unele scripturi au fost create individual pentru fiecare site compromis, în timp ce pentru anumite CMS-uri și gateway-uri de plată a fost utilizată o soluție comună. De exemplu, scripturile segapay_standart.js și segapay_onpage.js sunt destinate injectării pe site-uri care folosesc gateway-ul de plată Sage Pay.

Lista scripturilor pentru diferite gateway-uri de plată

ScriptGateway 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, utilizat ca poartă în script payment_forminsite.js, a fost descoperit ca subjectAltName în mai multe certificate asociate serviciului CloudFlare. Pe lângă aceasta, pe host se afla un script evil.js. Judecând după numele scriptului, acesta ar fi putut fi folosit în cadrul exploatării CVE-2016-4010, care permite injectarea de cod malițios în footer-ul site-ului gestionat de CMS Magento. Ca poartă, acest script a folosit host-ul request.requestnet[.]tk, utilizând același certificat ca și host-ul paymentnow[.]tk.

Formulare de plată false

Mai jos, în imagine, este prezentat un exemplu de formular pentru introducerea datelor cardului. Acest formular a fost folosit pentru a fi injectat pe site-ul magazinului online și pentru furtul datelor cardurilor.

Patru sniffer-e JavaScript care vă așteaptă în magazinele online
Următoarea ilustrație este un exemplu de formular de plată PayPal fals, utilizat de infractori pentru a se integra pe site-uri care folosesc această metodă de plată.
Patru sniffer-e JavaScript care vă așteaptă în magazinele online
Infrastructură

DomeniuData descoperirii/apariției
cdn.illum.pw27/11/2016
records.nstatistics.com06/09/2018
request.payrightnow.cf25/05/2018
paymentnow.tk16/07/2017
payment-line.tk01/03/2018
paymentpal.cf04/09/2017
requestnet.tk28/06/2017

Familia CoffeMokko

Familia sniffer-ilor CoffeMokko, destinată furtului cardurilor bancare ale utilizatorilor magazinelor online, este utilizată cel puțin din mai 2017. Se presupune că operatorii acestei familii de snifferi sunt un grup criminal numit Group 1, descris de specialiștii RiskIQ în 2016. Atacurile au vizat site-uri gestionate de diverse CMS-uri, precum Magento, OpenCart, WordPress, osCommerce, Shopify.

Cum este integrat CoffeMokko în codul magazinului online

Operatorii acestei familii creează snifferi unici pentru fiecare infecție: fișierul sniffer-ului se află în directorul src sau js de pe serverul infractorilor. Integrarea în codul site-ului se realizează printr-un link direct către sniffer.

Patru sniffer-e JavaScript care vă așteaptă în magazinele online
În codul sniffer-ului sunt codificate din start denumirile câmpurilor formularului din care trebuie furate datele. De asemenea, sniffer-ul verifică dacă utilizatorul se află pe pagina de plată, comparând lista cuvintele cheie cu adresa curentă a utilizatorului.

Patru sniffer-e JavaScript care vă așteaptă în magazinele online
Unele versiuni ale sniffer-ului descoperite au fost obfuscate și conțineau un șir criptat, în care era stocat array-ul principal de resurse: exact acolo erau numele câmpurilor formularelor pentru diversele metode de plată, precum și adresa gateway-ului, la care trebuie trimise datele furate.

Patru sniffer-e JavaScript care vă așteaptă în magazinele online
Informațiile de plată furate erau trimise scriptului de pe serverul infractorilor pe parcursul /savePayment/index.php или /tr/index.php. Se presupune că acest script servește pentru a trimite date de la gateway la serverul principal, care consolidează datele de la toți snifferii. Pentru a ascunde datele transmise, toată informația de plată a victimei este codificată prin base64, iar apoi au loc mai multe înlocuiri de caractere:

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

Ca rezultat al înlocuirilor de caractere, datele codificate cu ajutorul base64 nu pot fi decodificate fără a efectua o inversare a transformării.

Iată cum arată un fragment de cod al unui sniffer, care nu a fost obfuscate:

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

Analiza infrastructurii

În campaniile anterioare, atacatorii înregistrau nume de domenii care semănau cu cele ale site-urilor legitime de comerț online. Domeniul lor putea diferi de cel legitim printr-un singur caracter sau un alt TLD. Domeniile înregistrate erau utilizate pentru a găzdui codul sniffer-ului, iar linkul către acesta era injectat în codul magazinului.

De asemenea, acest grup folosea nume de domenii care aminteau de denumirile popularilor pluginuri pentru jQuery (slickjs[.]org pentru site-urile care foloseau pluginul slick.js), gateway-uri de plată (sagecdn[.]org pentru site-urile care foloseau sistemul de plată Sage Pay).

Ulterior, grupul a început să creeze domenii, al căror nume nu avea nimic comun cu domeniul magazinului sau cu tema acestuia.

Patru sniffer-e JavaScript care vă așteaptă în magazinele online
Fiecărui domeniu îi corespundea un site, pe care se crea un director /js sau /src. În acest director erau stocate scripturi sniffer: câte unul pentru fiecare nouă infectare. Sniffer-ul era injectat în codul site-ului printr-un link direct, dar în cazuri rare atacatorii modificau unul dintre fișierele site-ului și adăugau în el cod malițios.

Analiza codului

Primul algoritm de obfuscare

În unele mostre descoperite ale acestui tip de sniffer, codul era obfuscate și conținea date criptate necesare pentru funcționarea sniffer-ului: în special, adresa gateway-ului sniffer-ului, lista câmpurilor din formularul de plată, iar în unele cazuri — codul unui formular de plată fals. În codul din interiorul funcției, resursele erau criptate folosind XOR pe baza unei chei, care era transmisă ca argument al aceleași funcții.

Patru sniffer-e JavaScript care vă așteaptă în magazinele online
Dezvăluind șirul cu cheia corespunzătoare, unică pentru fiecare mostră, se poate obține un șir care conține toate șirurile din codul sniffer-ului separate printr-un caracter delimitator.

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

Al doilea algoritm de obfuscare

În mostrele mai recente ale acestui tip de sniffer, a fost utilizat un alt mecanism de obfuscare: în acest caz, datele erau criptate folosind un algoritm propriu. Șirul care conținea datele criptate necesare pentru funcționarea sniffer-ului era transmis ca argument al funcției de decriptare.

Patru sniffer-e JavaScript care vă așteaptă în magazinele online
Folosind consola browser-ului, se pot decripta datele criptate și se poate obține un array care conține resursele sniffer-ului.

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

Legătura cu atacurile timpurii MageCart

În timpul analizei unuia dintre domeniile folosite de grup ca poartă pentru colectarea de date furate, s-a constatat că pe acest domeniu a fost desfășurată o infrastructură pentru furtul de carduri de credit, similară cu cea utilizată de Group 1 — unul dintre primele grupuri, descoperite de specialiștii RiskIQ.

Pe gazda familiei de sniffere CoffeMokko au fost descoperite două fișiere:

  • mage.js — un fișier care conține codul snifferului Group 1 cu adresa porții js-cdn.link
  • mag.php — script PHP responsabil pentru colectarea datelor furate de sniffer

Содержимое файла mage.js Patru sniffer-e JavaScript care vă așteaptă în magazinele online
De asemenea, s-a stabilit că cele mai vechi domenii folosite de grupul din spatele familiilor de sniffere 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 corespunde cu numele de domenii ale Group 1, care au fost utilizate în atacurile din 2016.

Pe baza faptelor descoperite, se poate face o presupunere că între operatorii snifferelor CoffeMokko și grupul criminal Group 1 există o legătură. Se presupune că operatorii CoffeMokko ar fi putut împrumuta instrumentele și software-ul pentru furtul de carduri de la predecesorii lor. Totuși, este mai probabil ca grupul criminal din spatele utilizării snifferelor familiei CoffeMokko să fie aceleași persoane care au efectuat atacurile în cadrul activității Group 1. După publicarea primului raport privind activitatea grupului criminal, toate numele lor de domenii au fost blocate, iar instrumentele au fost studiate și descrise în detaliu. Grupul a fost obligat să facă o pauză, să-și îmbunătățească instrumentele interne și să rescrie codul snifferelor pentru a-și continua atacurile și a rămâne neobservați.

Infrastructură

DomeniuData descoperirii/apariției
link-js.link17.05.2017
info-js.link17.05.2017
track-js.link17.05.2017
map-js.link17.05.2017
smart-js.link17.05.2017
adorebeauty.org03.09.2017
security-payment.su03.09.2017
braincdn.org04.09.2017
sagecdn.org04.09.2017
slickjs.org04.09.2017
oakandfort.org10.09.2017
citywlnery.org15.09.2017
dobell.su04.10.2017
childsplayclothing.org31.10.2017
jewsondirect.com05.11.2017
shop-rnib.org15.11.2017
closetlondon.org16.11.2017
misshaus.org28.11.2017
battery-force.org01.12.2017
kik-vape.org01.12.2017
greatfurnituretradingco.org02.12.2017
etradesupply.org04.12.2017
replacemyremote.org04.12.2017
all-about-sneakers.org05.12.2017
mage-checkout.org05.12.2017
nililotan.org07.12.2017
lamoodbighats.net08.12.2017
walletgear.org10.12.2017
dahlie.org12.12.2017
davidsfootwear.org20.12.2017
blackriverimaging.org23.12.2017
exrpesso.org02.01.2018
parks.su09.01.2018
pmtonline.su12.01.2018
ottocap.org15.01.2018
christohperward.org27.01.2018
coffetea.org31.01.2018
energycoffe.org31.01.2018
energytea.org31.01.2018
teacoffe.net31.01.2018
adaptivecss.org01.03.2018
coffemokko.com01.03.2018
londontea.net01.03.2018
ukcoffe.com01.03.2018
labbe.biz20.03.2018
batterynart.com03.04.2018
btosports.net09.04.2018
chicksaddlery.net16.04.2018
paypaypay.org11.05.2018
ar500arnor.com26.05.2018
authorizecdn.com28.05.2018
slickmin.com28.05.2018
bannerbuzz.info03.06.2018
kandypens.net08.06.2018
mylrendyphone.com15.06.2018
freshchat.info01.07.2018
3lift.org02.07.2018
abtasty.net02.07.2018
mechat.info02.07.2018
zoplm.com02.07.2018
zapaljs.com02.09.2018
foodandcot.com15.09.2018
freshdepor.com15.09.2018
swappastore.com15.09.2018
verywellfitnesse.com15.09.2018
elegrina.com18.11.2018
majsurplus.com19.11.2018
top5value.com19.11.2018

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster