Vier JavaScript-snuffelaars die op je wachten in online winkels

Vier JavaScript-snuffelaars die op je wachten in online winkels

Bijna iedereen van ons maakt gebruik van de diensten van online winkels, wat betekent dat we vroeg of laat het risico lopen slachtoffer te worden van JavaScript-sniffers - een speciale code die aanvallers in een website injecteren om bankkaartgegevens, adressen, gebruikersnamen en wachtwoorden te stelen .

Bijna 400 gebruikers van de British Airways-website en mobiele app zijn al getroffen door sniffers, evenals bezoekers van de Britse sportgigant FILA-website en de Amerikaanse ticketdistributeur Ticketmaster. PayPal, Chase Paymenttech, USAePay, Moneris - deze en vele andere betalingssystemen zijn geïnfecteerd.

Threat Intelligence Group-IB-analist Viktor Okorokov vertelt hoe sniffers websitecode infiltreren en betalingsgegevens stelen, en welke CRM's ze aanvallen.

Vier JavaScript-snuffelaars die op je wachten in online winkels

"Verborgen dreiging"

Toevallig bleven JS-sniffers lange tijd uit het zicht van antivirusanalisten en zagen banken en betaalsystemen ze niet als een serieuze bedreiging. En absoluut tevergeefs. Groep-IB-experts geanalyseerd 2440 besmette webwinkels, waarvan de bezoekers - in totaal zo'n 1,5 miljoen mensen per dag - het risico liepen gecompromitteerd te worden. Onder de slachtoffers zijn niet alleen gebruikers, maar ook webwinkels, betalingssystemen en banken die gecompromitteerde kaarten hebben uitgegeven.

Verslag Group-IB werd de eerste studie van de darknet-markt van sniffers, hun infrastructuur en manieren om geld te verdienen, wat miljoenen dollars opleverde voor hun makers. We identificeerden 38 snuffelfamilies, waarvan er slechts 12 eerder bekend waren bij onderzoekers.

Laten we in detail stilstaan ​​​​bij de vier families van snuivers die in de loop van het onderzoek zijn bestudeerd.

ReactGet familie

Sniffers van de ReactGet-familie worden gebruikt om bankkaartgegevens op online winkelsites te stelen. De sniffer kan werken met een groot aantal verschillende betalingssystemen die op de site worden gebruikt: één parameterwaarde komt overeen met één betalingssysteem, en individuele gedetecteerde versies van de sniffer kunnen worden gebruikt om inloggegevens te stelen, evenals om bankkaartgegevens te stelen van de betaalvormen van meerdere betaalsystemen tegelijk, zoals de zogenaamde universele sniffer. Er werd vastgesteld dat aanvallers in sommige gevallen phishing-aanvallen uitvoeren op beheerders van online winkels om toegang te krijgen tot het beheerpaneel van de site.

De campagne waarbij deze familie van sniffers werd gebruikt, begon in mei 2017. Sites met CMS en platforms Magento, Bigcommerce en Shopify werden aangevallen.

Hoe ReactGet is ingebed in de code van een online winkel

Naast de "klassieke" scriptinjectie per link, gebruiken ReactGet family sniffer-operators een speciale techniek: met behulp van JavaScript-code wordt gecontroleerd of het huidige adres waar de gebruiker zich bevindt, aan bepaalde criteria voldoet. De schadelijke code wordt alleen uitgevoerd als de huidige URL een subtekenreeks bevat uitchecken of één stap uitchecken, een pagina/, uit/éénpag, afrekenen/een, ckout / een. De sniffercode wordt dus precies uitgevoerd op het moment dat de gebruiker doorgaat met betalen voor aankopen en betalingsinformatie invoert in het formulier op de site.

Vier JavaScript-snuffelaars die op je wachten in online winkels
Deze sniffer gebruikt een niet-standaard techniek. De betalings- en persoonsgegevens van het slachtoffer worden samen verzameld, gecodeerd met behulp van base64, en vervolgens wordt de resulterende tekenreeks gebruikt als een parameter om een ​​verzoek naar de kwaadwillende site te sturen. Meestal imiteert het pad naar de poort bijvoorbeeld een JavaScript-bestand resp.js, data.js enzovoort, maar er worden ook koppelingen naar afbeeldingsbestanden gebruikt, GIF и JPG. De bijzonderheid is dat de sniffer een afbeeldingsobject maakt met een grootte van 1 bij 1 pixel en de eerder verkregen link als parameter gebruikt src Afbeeldingen. Dat wil zeggen, voor de gebruiker zal zo'n verzoek in het verkeer eruit zien als een verzoek om een ​​gewone foto. Een vergelijkbare techniek werd gebruikt in de ImageID-familie van sniffers. Bovendien wordt de 1x1 pixel afbeeldingstechniek gebruikt in veel legitieme online analysescripts, die de gebruiker ook kunnen misleiden.

Vier JavaScript-snuffelaars die op je wachten in online winkels

Versie-analyse

Een analyse van de actieve domeinen die door ReactGet-snifferoperators worden gebruikt, onthulde veel verschillende versies van deze familie van sniffers. Versies verschillen in de aanwezigheid of afwezigheid van verduistering, en bovendien is elke sniffer ontworpen voor een specifiek betalingssysteem dat bankkaartbetalingen voor online winkels verwerkt. Na het sorteren van de waarde van de parameter die overeenkomt met het versienummer, ontvingen Group-IB-specialisten een volledige lijst met beschikbare sniffervariaties, en aan de hand van de namen van de formuliervelden waarnaar elke sniffer zoekt in de paginacode, bepaalden ze de betalingssystemen waar de sniffer zich op richt.

Lijst met sniffers en hun bijbehorende betalingssystemen

Snuffel-URL Betaalsysteem
reactjsapi.com/react.js Authorize.Net
ajaxstatic.com/api.js?v=2.1.1 Kaarten opslaan
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 Snel
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 Salie betalen
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 LinkPunt
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 Salie betalen
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 Salie betalen
cloudodesc.com/gtm.js?v=2.7 Salie betalen
cloudodesc.com/gtm.js?v=2.8 Achtervolg 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 Cyberbron
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 Salie betalen
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 Cyberbron
livegetpay.com/pay.js?v=2.1.7 Authorize.Net
livegetpay.com/pay.js?v=2.1.8 Salie betalen
livegetpay.com/pay.js?v=2.1.9 Realex
livegetpay.com/pay.js?v=2.2.0 Cyberbron
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 Snel
livegetpay.com/pay.js?v=2.2.7 Salie betalen
livegetpay.com/pay.js?v=2.2.8 Salie betalen
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 Eerste wereldwijde gegevensgateway
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 Snel
mxcounter.com/c.js?v=1.8 Salie betalen
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 Salie betalen
mxcounter.com/c.js?v=2.31 Salie betalen
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 Snel
mxcounter.com/click.js?v=1.8 Salie betalen
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 Salie betalen
mxcounter.com/click.js?v=2.31 Salie betalen
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 Salie betalen
newrelicnet.com/api.js?v=4.5 Salie betalen
newrelicnet.com/api.js?v=4.6 Westpac PayWay
nr-public.com/api.js?v=2.0 BetaalFort
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 Eerste wereldwijde gegevensgateway
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 Salie betalen
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 LinkPunt
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 Salie betalen
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 BetaalFort
ordercheckpays.com/api.js?v=2.29 Cyberbron
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 Salie betalen
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 Salie betalen
ordercheckpays.com/api.js?v=4.3 Authorize.Net
reactiejsapi.com/api.js?v=0.1.0 Authorize.Net
reactiejsapi.com/api.js?v=0.1.1 PayPal
reactiejsapi.com/api.js?v=4.1.2 Vuursteen
reactiejsapi.com/api.js?v=4.1.4 PayPal
reactiejsapi.com/api.js?v=4.1.5 Salie betalen
reactiejsapi.com/api.js?v=4.1.51 Verisign
reactiejsapi.com/api.js?v=4.1.6 Authorize.Net
reactiejsapi.com/api.js?v=4.1.7 Authorize.Net
reactiejsapi.com/api.js?v=4.1.8 Stripe
reactiejsapi.com/api.js?v=4.1.9 Dikke zebra
reactiejsapi.com/api.js?v=4.2.0 Salie betalen
reactiejsapi.com/api.js?v=4.2.1 Authorize.Net
reactiejsapi.com/api.js?v=4.2.2 Eerste wereldwijde gegevensgateway
reactiejsapi.com/api.js?v=4.2.3 Authorize.Net
reactiejsapi.com/api.js?v=4.2.4 eWAY Snel
reactiejsapi.com/api.js?v=4.2.5 Adyen
reactiejsapi.com/api.js?v=4.2.7 PayPal
reactiejsapi.com/api.js?v=4.2.8 QuickBooks-handelsdiensten
reactiejsapi.com/api.js?v=4.2.9 Verisign
reactiejsapi.com/api.js?v=4.2.91 Salie betalen
reactiejsapi.com/api.js?v=4.2.92 Verisign
reactiejsapi.com/api.js?v=4.2.94 Authorize.Net
reactiejsapi.com/api.js?v=4.3.97 Authorize.Net
reactiejsapi.com/api.js?v=4.5 Salie betalen
reactjsapi.com/react.js Authorize.Net
sydneysalonsupplies.com/gtm.js eWAY Snel
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 Cyberbron
tagstracking.com/tag.js?v=2.1.7 Authorize.Net
tagstracking.com/tag.js?v=2.1.8 Salie betalen
tagstracking.com/tag.js?v=2.1.9 Realex
tagstracking.com/tag.js?v=2.2.0 Cyberbron
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 Snel
tagstracking.com/tag.js?v=2.2.7 Salie betalen
tagstracking.com/tag.js?v=2.2.8 Salie betalen
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 Eerste wereldwijde gegevensgateway
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

Wachtwoord sniffer

Een van de voordelen van JavaScript-sniffers die aan de clientzijde van een website werken, is de veelzijdigheid ervan: kwaadaardige code die op een website is ingesloten, kan elk type gegevens stelen, of het nu gaat om betalingsinformatie of een login en wachtwoord van een gebruikersaccount. Specialisten van Group-IB ontdekten een voorbeeld van een sniffer die tot de ReactGet-familie behoort, ontworpen om e-mailadressen en wachtwoorden van sitegebruikers te stelen.

Vier JavaScript-snuffelaars die op je wachten in online winkels

Kruising met ImageID sniffer

Tijdens de analyse van een van de geïnfecteerde winkels bleek dat zijn website tweemaal was geïnfecteerd: naast de kwaadaardige code van de ReactGet-familiesniffer werd de code van de ImageID-familiesniffer gevonden. Deze overlap zou een bewijs kunnen zijn dat de operators achter beide sniffers vergelijkbare technieken gebruiken om kwaadaardige code te injecteren.

Vier JavaScript-snuffelaars die op je wachten in online winkels

Universele snuffelaar

Tijdens de analyse van een van de domeinnamen die verband houden met de ReactGet sniffer-infrastructuur, bleek dat dezelfde gebruiker drie andere domeinnamen registreerde. Deze drie domeinen imiteerden de domeinen van real-life sites en werden voorheen gebruikt om sniffers te hosten. Bij het analyseren van de code van drie legitieme sites werd een onbekende sniffer gevonden en verdere analyse toonde aan dat dit een verbeterde versie is van de ReactGet-sniffer. Alle eerder getraceerde versies van deze familie van sniffers waren gericht op één betalingssysteem, dat wil zeggen dat voor elk betalingssysteem een ​​speciale versie van de sniffer nodig was. In dit geval werd echter een universele versie van de sniffer ontdekt, die in staat is om informatie te stelen van formulieren met betrekking tot 15 verschillende betalingssystemen en modules van e-commercesites voor online betalingen.

Dus aan het begin van het werk zocht de sniffer naar basisformuliervelden met de persoonlijke informatie van het slachtoffer: volledige naam, fysiek adres, telefoonnummer.

Vier JavaScript-snuffelaars die op je wachten in online winkels
De sniffer doorzocht vervolgens meer dan 15 verschillende prefixen die overeenkomen met verschillende betalingssystemen en modules voor online betalingen.

Vier JavaScript-snuffelaars die op je wachten in online winkels
Vervolgens werden de persoonlijke gegevens en betalingsinformatie van het slachtoffer verzameld en naar een site gestuurd die door de aanvaller werd gecontroleerd: in dit specifieke geval werden twee versies van de ReactGet universele sniffer gevonden op twee verschillende gehackte sites. Beide versies stuurden de gestolen gegevens echter naar dezelfde gehackte site. zoobashop.com.

Vier JavaScript-snuffelaars die op je wachten in online winkels
Een analyse van de voorvoegsels die door de sniffer werden gebruikt om velden met de betalingsinformatie van het slachtoffer te vinden, stelde vast dat deze sniffer-steekproef gericht was op de volgende betalingssystemen:

  • Authorize.Net
  • Verisign
  • First Data
  • USAePay
  • Stripe
  • PayPal
  • ANZ eGate
  • Braintree
  • Data Contant (MasterCard)
  • Realex-betalingen
  • PsiGate
  • Heartland betalingssystemen

Welke tools worden gebruikt om betalingsgegevens te stelen

De eerste tool die tijdens de analyse van de infrastructuur van de aanvallers werd ontdekt, dient om kwaadaardige scripts die verantwoordelijk zijn voor het stelen van bankpassen te verdoezelen. Een bash-script dat de CLI van het project gebruikt, is gevonden op een van de hosts van de aanvaller. javascript-obfuscator om sniffer code verduistering te automatiseren.

Vier JavaScript-snuffelaars die op je wachten in online winkels
De tweede ontdekte tool is ontworpen om de code te genereren die verantwoordelijk is voor het laden van de hoofdsniffer. Deze tool genereert een JavaScript-code die controleert of de gebruiker zich op de afrekenpagina bevindt door op het huidige adres van de gebruiker te zoeken naar de tekenreeksen uitchecken, winkelwagen enzovoort, en als het resultaat positief is, laadt de code de hoofdsniffer van de server van de indringer. Om kwaadaardige activiteiten te verbergen, worden alle regels, inclusief testregels voor het bepalen van de betalingspagina, evenals een link naar de sniffer, gecodeerd met behulp van base64.

Vier JavaScript-snuffelaars die op je wachten in online winkels

Phishing-aanvallen

Tijdens de analyse van de netwerkinfrastructuur van de aanvallers bleek dat de criminele groep vaak phishing gebruikt om toegang te krijgen tot het administratieve paneel van de doelwebwinkel. De aanvallers registreren een domein dat eruitziet als een winkeldomein en zetten er vervolgens een nep Magento admin-inlogformulier op in. Als dit lukt, krijgen de aanvallers toegang tot het Magento CMS-beheerderspaneel, waardoor ze sitecomponenten kunnen bewerken en een sniffer kunnen implementeren om creditcardgegevens te stelen.

Vier JavaScript-snuffelaars die op je wachten in online winkels
Infrastructuur

domein Datum van ontdekking/verschijning
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
reactiejsapi.com 19.01.2018
mxcounter.com 02.02.2018
apitstatus. com 01.03.2018
bestelracker.com 20.04.2018
tagtracking.com 25.06.2018
adsapigate.com 12.07.2018
trusttracker.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-betalingen.com 16.11.2018
bestelcheckpays.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-publiek.com 03.01.2019
cloudodesc.com 04.01.2019
ajaxstatic.com 11.01.2019
livecheckpay.com 21.01.2019
asianfoodgracer. com 25.01.2019

G-Analytics-familie

Deze familie van snuffelaars wordt gebruikt om klantenkaarten van online winkels te stelen. De allereerste domeinnaam die door de groep werd gebruikt, werd geregistreerd in april 2016, wat kan duiden op het begin van de activiteiten van de groep medio 2016.

In de huidige campagne gebruikt de groep domeinnamen die echte services zoals Google Analytics en jQuery nabootsen, waarbij snifferactiviteit wordt gemaskeerd met legitieme scripts en legitiem ogende domeinnamen. Websites die draaien onder CMS Magento werden aangevallen.

Hoe G-Analytics is geïmplementeerd in de online winkelcode

Een onderscheidend kenmerk van deze familie is het gebruik van verschillende methoden om betalingsgegevens van gebruikers te stelen. Naast de klassieke JavaScript-injectie in de clientzijde van de site, gebruikte de criminele groep ook de techniek van het injecteren van code in de serverkant van de site, namelijk PHP-scripts die gebruikersinvoer verwerken. Deze techniek is gevaarlijk omdat het voor externe onderzoekers moeilijk wordt om kwaadaardige code te detecteren. Specialisten van Group-IB ontdekten een versie van de sniffer ingebed in de PHP-code van de site, waarbij het domein als poort werd gebruikt dittm.org.

Vier JavaScript-snuffelaars die op je wachten in online winkels
Er werd ook een vroege versie van een sniffer ontdekt die hetzelfde domein gebruikt om gestolen gegevens te verzamelen. dittm.org, maar deze versie is al bedoeld voor installatie aan de clientzijde van de online winkel.

Vier JavaScript-snuffelaars die op je wachten in online winkels
Later veranderde de groep van tactiek en begon ze meer aandacht te besteden aan het verbergen van kwaadaardige activiteiten en camouflage.

Begin 2017 nam de groep het domein in gebruik jquery-js.comvermomd als CDN voor jQuery: leidt de gebruiker om naar een legitieme site wanneer hij naar een kwaadaardige site gaat jQuery.com.

En medio 2018 nam de groep een domeinnaam aan g-analytics.com en begon de activiteit van de sniffer te vermommen als een legitieme Google Analytics-service.

Vier JavaScript-snuffelaars die op je wachten in online winkels
Vier JavaScript-snuffelaars die op je wachten in online winkels

Versie-analyse

Tijdens de analyse van de domeinen die werden gebruikt om de sniffercode op te slaan, bleek dat de site een groot aantal versies heeft die verschillen in de aanwezigheid van verduistering, evenals de aan- of afwezigheid van onbereikbare code die aan het bestand is toegevoegd om de aandacht af te leiden en schadelijke code verbergen.

Totaal op de site jquery-js.com zes versies van sniffers werden geïdentificeerd. Deze sniffers sturen de gestolen gegevens naar een adres dat zich op dezelfde site bevindt als de sniffer zelf: 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

Later domein g-analytics.com, gebruikt door de groep bij aanvallen sinds medio 2018, dient als opslagplaats voor meer sniffers. In totaal zijn er 16 verschillende versies van de sniffer ontdekt. In dit geval was de poort voor het verzenden van de gestolen gegevens vermomd als een link naar een afbeelding van het formaat 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

Inkomsten genereren met gestolen gegevens

De criminele groep verdient geld met de gestolen gegevens door kaarten te verkopen via een speciaal gecreëerde ondergrondse winkel die diensten verleent aan kaarters. Een analyse van de domeinen die door de aanvallers werden gebruikt, maakte het mogelijk om dat vast te stellen google-analytics.cm is geregistreerd door dezelfde gebruiker als het domein cardz.vc. Domein cardz.vc verwijst naar Cardsurfs (Flysurfs), een winkel die gestolen bankkaarten verkoopt, die tijdens de ondergrondse marktplaats AlphaBay aan populariteit won als een winkel die bankkaarten verkoopt die met een sniffer zijn gestolen.

Vier JavaScript-snuffelaars die op je wachten in online winkels
Het domein analyseren analytisch.is, gelegen op dezelfde server als de domeinen die door de sniffers worden gebruikt om gestolen gegevens te verzamelen, ontdekten Group-IB-specialisten een bestand met Cookie-stealer-logboeken, dat later naar het schijnt door de ontwikkelaar is verlaten. Een van de vermeldingen in het logboek bevatte een domein iozoz. com, die eerder werd gebruikt in een van de sniffers die in 2016 actief was. Vermoedelijk is dit domein eerder door een aanvaller gebruikt om met een sniffer gestolen kaarten te verzamelen. Dit domein is geregistreerd op een e-mailadres [e-mail beveiligd], dat ook werd gebruikt om domeinen te registreren cardz.su и cardz.vcgerelateerd aan de kaartwinkel van Cardsurfs.

Op basis van de verkregen gegevens kan worden aangenomen dat de snifferfamilie van G-Analytics en de ondergrondse Cardsurfs-bankkaartwinkel door dezelfde mensen worden gerund en dat de winkel wordt gebruikt om bankpassen te verkopen die met een sniffer zijn gestolen.

Infrastructuur

domein Datum van ontdekking/verschijning
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
analytisch.naar 04.12.2018
google-analytics.to 06.12.2018
google-analytics.cm 28.12.2018
analytisch.is 28.12.2018
googlelc-analytics.cm 17.01.2019

familie Illum

Illum is een familie van snuffelaars die worden gebruikt om online winkels met Magento CMS aan te vallen. Naast de introductie van kwaadaardige code, gebruiken de operators van deze sniffer ook de introductie van volwaardige valse betalingsformulieren die gegevens naar door aanvallers gecontroleerde poorten sturen.

Bij het analyseren van de netwerkinfrastructuur die wordt gebruikt door de operators van deze sniffer, werden een groot aantal kwaadaardige scripts, exploits, valse betalingsformulieren opgemerkt, evenals een verzameling voorbeelden met kwaadaardige sniffer-concurrenten. Op basis van de informatie over de verschijningsdata van de door de groep gebruikte domeinnamen kan ervan worden uitgegaan dat de start van de campagne eind 2016 valt.

Hoe Illum is geïmplementeerd in de code van een online winkel

De eerste ontdekte versies van de sniffer waren rechtstreeks ingebed in de code van de gecompromitteerde site. De gestolen gegevens zijn verzonden naar cdn.illum[.]pw/records.php, werd de poort gecodeerd met behulp van base64.

Vier JavaScript-snuffelaars die op je wachten in online winkels
Later werd een verpakte versie van de sniffer ontdekt met een andere poort - records.nstatistics[.]com/records.php.

Vier JavaScript-snuffelaars die op je wachten in online winkels
Volgens verslag Willem de Groot, dezelfde host werd gebruikt in de sniffer die erop was geïmplementeerd winkel website, eigendom van de Duitse politieke partij CSU.

Analyse van de aanvalssite

Specialisten van Group-IB ontdekten en analyseerden de site die door deze criminele groep werd gebruikt om tools op te slaan en gestolen informatie te verzamelen.

Vier JavaScript-snuffelaars die op je wachten in online winkels
Onder de tools die op de server van de aanvaller werden gevonden, bevonden zich scripts en exploits voor privilege-escalatie in Linux OS: bijvoorbeeld Linux Privilege Escalation Check Script, ontwikkeld door Mike Czumak, evenals een exploit voor CVE-2009-1185.

Aanvallers gebruikten twee exploits rechtstreeks om online winkels aan te vallen: eerste in staat om kwaadaardige code in te injecteren core_config_gegevens door gebruik te maken van CVE-2016-4010, tweede maakt gebruik van een RCE-type kwetsbaarheid in plug-ins voor CMS Magento, waardoor willekeurige code kan worden uitgevoerd op een kwetsbare webserver.

Vier JavaScript-snuffelaars die op je wachten in online winkels
Tijdens de analyse van de server werden ook verschillende voorbeelden van sniffers en valse betalingsformulieren gevonden, die door aanvallers werden gebruikt om betalingsinformatie van gehackte sites te verzamelen. Zoals je kunt zien in de onderstaande lijst, zijn sommige scripts afzonderlijk gemaakt voor elke gehackte site, terwijl er een universele oplossing is gebruikt voor bepaalde CMS- en betalingsgateways. Bijvoorbeeld scripties segapay_standaard.js и segapay_onpage.js ontworpen om te worden ingebed op sites die de Sage Pay-betalingsgateway gebruiken.

Lijst met scripts voor verschillende betalingsgateways

Script Betalingsgateway
sr.illum[.]pw/mjs_special/visiondirect.co.uk.js //request.payrightnow[.]cf/checkbetaling.php
sr.illum[.]pw/mjs_special/topdirenshop.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/checkbetaling.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/checkbetaling.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/checkbetaling.php
sr.illum[.]pw/mjs_special/fareastflora.com.js //request.payrightnow[.]cf/checkbetaling.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_standard.js //request.payrightnow[.]cf/checkbetaling.php
sr.illum[.]pw/mjs/all_inputs.js //cdn.illum[.]pw/records.php
sr.illum[.]pw/mjs/add_inputs_standart.js //request.payrightnow[.]cf/checkbetaling.php
sr.illum[.]pw/magento/payment_standard.js //cdn.illum[.]pw/records.php
sr.illum[.]pw/magento/betaling_redirect.js //payrightnow[.]cf/?betaling=
sr.illum[.]pw/magento/betaling_redcrypt.js //payrightnow[.]cf/?betaling=
sr.illum[.]pw/magento/betaling_forminsite.js //betalingnu[.]tk/?betaling=

Gastheer betalingnu[.]tk, gebruikt als poort in een script payment_forminsite.js, werd ontdekt als onderwerpAltNaam in verschillende certificaten met betrekking tot de CloudFlare-service. Bovendien bevond het script zich op de host kwaad.js. Te oordelen naar de naam van het script, zou het kunnen zijn gebruikt als onderdeel van het exploiteren van CVE-2016-4010, waardoor het mogelijk is om kwaadaardige code te injecteren in de voettekst van een site met het Magento CMS. Dit script gebruikte de host als poort request.requestnet[.]tk, met hetzelfde certificaat als de host betalingnu[.]tk.

Valse betalingsformulieren

In onderstaande figuur ziet u een voorbeeld van een formulier voor het invoeren van kaartgegevens. Dit formulier werd gebruikt om de website van een online winkel te infiltreren en kaartgegevens te stelen.

Vier JavaScript-snuffelaars die op je wachten in online winkels
De volgende afbeelding is een voorbeeld van een nep-PayPal-betalingsformulier dat door aanvallers werd gebruikt om sites te infiltreren met behulp van deze betalingsmethode.
Vier JavaScript-snuffelaars die op je wachten in online winkels
Infrastructuur

domein Datum van ontdekking/verschijning
cdn.illum.pw 27/11/2016
records.nstatistics.com 06/09/2018
aanvraag.payrightnow.cf 25/05/2018
betalingnu.tk 16/07/2017
betalingslijn.tk 01/03/2018
paymentpal.cf 04/09/2017
requestnet.tk 28/06/2017

CoffeeMokko-familie

De CoffeMokko-familie van snuffelaars die zijn ontworpen om bankpassen van online winkelgebruikers te stelen, wordt al sinds mei 2017 gebruikt. Vermoedelijk is de groep 1 criminele groep beschreven door RiskIQ-experts in 2016 de exploitant van deze familie van snuffelaars. Websites met CMS zoals Magento, OpenCart, WordPress, osCommerce, Shopify werden aangevallen.

Hoe CoffeMokko is ingebed in de code van een online winkel

Operators van deze familie maken unieke sniffers voor elke infectie: het sniffer-bestand bevindt zich in de directory src of js op de server van de aanvaller. Implementatie in de sitecode wordt uitgevoerd door een directe link naar de sniffer.

Vier JavaScript-snuffelaars die op je wachten in online winkels
De sniffercode codeert hard de namen van de formuliervelden waaruit u gegevens wilt stelen. De sniffer controleert ook of de gebruiker zich op de afrekenpagina bevindt door de lijst met trefwoorden te vergelijken met het huidige adres van de gebruiker.

Vier JavaScript-snuffelaars die op je wachten in online winkels
Sommige ontdekte versies van de sniffer waren versluierd en bevatten een gecodeerde reeks die de belangrijkste reeks bronnen opsloeg: het bevatte de namen van formuliervelden voor verschillende betalingssystemen, evenals het adres van de poort waarnaar de gestolen gegevens moesten worden verzonden.

Vier JavaScript-snuffelaars die op je wachten in online winkels
De gestolen betalingsinformatie werd onderweg naar een script op de server van de aanvaller gestuurd. /savePayment/index.php of /tr/index.php. Vermoedelijk wordt dit script gebruikt om gegevens van de poort naar de hoofdserver te sturen, die gegevens van alle sniffers consolideert. Om de verzonden gegevens te verbergen, wordt alle betalingsinformatie van het slachtoffer gecodeerd met behulp van base64, en dan gebeuren er verschillende karaktervervangingen:

  • karakter "e" wordt vervangen door ":"
  • het symbool "w" wordt vervangen door "+"
  • karakter "o" wordt vervangen door "%"
  • het teken "d" wordt vervangen door "#"
  • karakter "a" wordt vervangen door "-"
  • het symbool "7" wordt vervangen door "^"
  • karakter "h" wordt vervangen door "_"
  • het "T"-symbool wordt vervangen door "@"
  • het teken "0" wordt vervangen door "/"
  • het teken "Y" wordt vervangen door "*"

Als gevolg van karaktervervangingen gecodeerd met base64 gegevens kunnen niet worden gedecodeerd zonder inverse transformatie.

Zo ziet een fragment van de sniffercode dat niet versluierd is eruit:

Vier JavaScript-snuffelaars die op je wachten in online winkels

Infrastructuur analyse

In vroege campagnes registreerden de aanvallers domeinnamen die vergelijkbaar waren met die van legitieme online winkelsites. Hun domein kan één voor één teken of een andere TLD verschillen van het legitieme domein. Geregistreerde domeinen werden gebruikt om de sniffercode op te slaan, waarvan de link in de winkelcode was ingesloten.

Deze groep gebruikte ook domeinnamen die doen denken aan populaire jQuery-plug-ins (slickjs[.]org voor sites die de plug-in gebruiken slick.js), Betaling Gateways (sagecdn[.]org voor sites die het Sage Pay-betalingssysteem gebruiken).

Later begon de groep domeinen te maken waarvan de naam niets te maken had met het domein van de winkel of het thema van de winkel.

Vier JavaScript-snuffelaars die op je wachten in online winkels
Elk domein kwam overeen met de site waarop de directory is gemaakt /js of / src. Sniffer-scripts werden in deze map opgeslagen: één sniffer voor elke nieuwe infectie. De sniffer werd via een directe link in de sitecode geïntroduceerd, maar in zeldzame gevallen hebben aanvallers een van de bestanden van de site gewijzigd en er schadelijke code aan toegevoegd.

Code-analyse

Eerste verduisteringsalgoritme

In sommige sniffer-voorbeelden van deze familie was de code versluierd en bevatte gecodeerde gegevens die nodig zijn om de sniffer te laten werken: met name het poortadres van de sniffer, een lijst met betalingsformuliervelden en in sommige gevallen een valse betalingsformuliercode. In de code binnen de functie werden de bronnen versleuteld met FREE door de sleutel die als argument aan dezelfde functie is doorgegeven.

Vier JavaScript-snuffelaars die op je wachten in online winkels
Door de string te decoderen met de corresponderende sleutel, uniek voor elke sample, kun je een string krijgen die alle regels van de sniffercode bevat, gescheiden door een scheidingsteken.

Vier JavaScript-snuffelaars die op je wachten in online winkels

Tweede verduisteringsalgoritme

In latere voorbeelden van deze familie van sniffers werd een ander verduisteringsmechanisme gebruikt: in dit geval werden de gegevens versleuteld met behulp van een zelfgeschreven algoritme. Een tekenreeks met gecodeerde gegevens die nodig zijn om de sniffer te laten werken, is doorgegeven als argument aan de decoderingsfunctie.

Vier JavaScript-snuffelaars die op je wachten in online winkels
Met behulp van de browserconsole kunt u de versleutelde gegevens ontsleutelen en een array met de snifferbronnen verkrijgen.

Vier JavaScript-snuffelaars die op je wachten in online winkels

Link naar vroege MageCart-aanvallen

Bij een analyse van een van de domeinen die de groep gebruikte als poort om gestolen gegevens te verzamelen, bleek dat de infrastructuur voor het stelen van creditcards op dit domein was ingezet, identiek aan die gebruikt door Groep 1, een van de eerste groepen, ontdekt RiskIQ-specialisten.

Er zijn twee bestanden gevonden op de host van de CoffeMokko sniffer-familie:

  • mage.js - bestand met groep 1 sniffercode met poortadres js-cdn.link
  • mag.php - PHP-script dat verantwoordelijk is voor het verzamelen van de door de sniffer gestolen gegevens

De inhoud van het bestand mage.js Vier JavaScript-snuffelaars die op je wachten in online winkels
Er is ook vastgesteld dat de vroegste domeinen die door de groep achter de CoffeMokko sniffer-familie werden gebruikt, op 17 mei 2017 werden geregistreerd:

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

Het formaat van deze domeinnamen is hetzelfde als de Groep 1-domeinnamen die werden gebruikt bij de aanslagen van 2016.

Op basis van de ontdekte feiten kan worden aangenomen dat er een verband bestaat tussen de snuffelaars van CoffeMokko en de criminele groepering Groep 1. Vermoedelijk hebben CoffeMokko-operators tools en software geleend om kaarten van hun voorgangers te stelen. Het is echter waarschijnlijker dat de criminele groep achter het gebruik van familiesnuffelaars van CoffeMokko dezelfde mensen zijn die de aanslagen hebben gepleegd als onderdeel van activiteiten van Groep 1. Na de publicatie van het eerste rapport over de activiteiten van de criminele groep, zijn al hun domeinnamen werden geblokkeerd en de tools werden in detail bestudeerd en beschreven. De groep werd gedwongen een pauze te nemen, hun interne tools te verfijnen en de sniffer-code te herschrijven om hun aanvallen voort te zetten en onopgemerkt te blijven.

Infrastructuur

domein Datum van ontdekking/verschijning
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
adobeauty.org 03.09.2017
zekerheid-betaling.su 03.09.2017
braincdn.org 04.09.2017
sagecdn.org 04.09.2017
slickjs.org 04.09.2017
eikenandfort.org 10.09.2017
citywlnery.org 15.09.2017
dobell.su 04.10.2017
kinderspeelkleding.org 31.10.2017
jewsondirect.com 05.11.2017
winkel-rnib.org 15.11.2017
closetlondon.org 16.11.2017
misshaus.org 28.11.2017
batterij-kracht.org 01.12.2017
kik-vape.org 01.12.2017
Greatfurnituretradingco.org 02.12.2017
etradesupply.org 04.12.2017
vervangmijnafstandsbediening.org 04.12.2017
alles over 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
parken.su 09.01.2018
pmtonline.su 12.01.2018
otocap.org 15.01.2018
christohperward.org 27.01.2018
koffie.org 31.01.2018
energiekoffie.org 31.01.2018
energiethee.org 31.01.2018
theekoffie.net 31.01.2018
adaptivecss.org 01.03.2018
koffiemokko.com 01.03.2018
londontea.net 01.03.2018
nl.koffie.com 01.03.2018
labbe.biz 20.03.2018
batterijnart.com 03.04.2018
btosports.net 09.04.2018
chicksaddlery.net 16.04.2018
paypaypay.org 11.05.2018
ar500arnor.com 26.05.2018
geautoriseerdecdn.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
heelwellfitness.com 15.09.2018
elegrina. com 18.11.2018
majsurplus.com 19.11.2018
top5value. com 19.11.2018

Bron: www.habr.com

Voeg een reactie