Fire JavaScript-sniffere, der lurer på dig i webshops

Fire JavaScript-sniffere, der lurer på dig i webshops

Næsten alle af os bruger online butikker, og derfor risikerer vi før eller siden at blive offer for JavaScript-sniffere — en særlig kode, der bliver injiceret på et website af ondsindede aktører for at stjæle betalingskortoplysninger, adresser, brugernavne og adgangskoder fra brugerne.

Cirka 400.000 brugere af British Airways' hjemmeside og mobilapplikation er allerede blevet ramt af sniffere, ligesom besøgende på den britiske sportsgigant FILA's hjemmeside og den amerikanske billetdistributør Ticketmaster. Betalingssystemer som PayPal, Chase Paymenttech, USAePay og Moneris — disse og mange andre betalingsløsninger er blevet kompromitteret.

Analytikeren fra Threat Intelligence Group-IB, Viktor Okorokov, fortæller om, hvordan sniffere bliver injiceret i websitekoden og stjæler betalingsoplysninger, samt hvilke CRM-systemer de angriber.

Fire JavaScript-sniffere, der lurer på dig i webshops

«Den skjulte trussel»

Det viste sig, at JS-sniffere længe har været uden for radarene for antivirusanalytikere, og banker og betalingssystemer betragtede dem ikke som en alvorlig trussel. Og det var helt ubegrundet. Eksperter fra Group-IB har analyseret 2440 kompromitterede online butikker, hvis besøgende i alt er cirka 1,5 millioner mennesker om dagen, blev udsat for risikoen for at blive kompromitteret. Både brugere, online butikker, betalingssystemer og banker, der har udstedt kompromitterede kort, er blandt de berørte.

Rapport Group-IB har gennemført den første undersøgelse af darknet-markedet for sniffere, deres infrastruktur og måderne, de monetariserer på, hvilket har indbragt deres skabere millioner af dollars. Vi identificerede 38 familier af sniffere, hvoraf kun 12 tidligere var kendt af forskerne.

Lad os se nærmere på fire familier af sniffere, der blev studeret i løbet af undersøgelsen.

Familien ReactGet

ReactGet-familien af snifferne bruges til at stjæle oplysninger om kreditkort på onlinebutikker. Snifferen kan arbejde med mange forskellige betalingssystemer, der bruges på siden: én værdi af parameteren svarer til ét betalingssystem, og separate versioner af snifferen kan bruges til at stjæle adgangsoplysninger, såvel som kreditkortoplysninger fra betalingsformer fra flere betalingssystemer, som den såkaldte universelle sniffer. Det er blevet fastslået, at angribere i nogle tilfælde udfører phishingangreb på administratorer af onlinebutikker for at få adgang til webstedets administrationspanel.

Kampagnen med dette familiesniffer begyndte i maj 2017, hvor websteder, der drives af CMS og platforme som Magento, Bigcommerce og Shopify, blev ramt.

Hvordan ReactGet integreres i koden til onlinebutikken

Udover den "klassiske" integration af scriptet via linket bruger operatører af ReactGet-familien sniffer en særlig teknik: Med JavaScript-kode kontrolleres det, om den aktuelle adresse, som brugeren befinder sig på, opfylder visse kriterier. Den ondsindede kode vil kun blive kørt, hvis den aktuelle URL-streng indeholder substringen checkout eller onestepcheckout, onepage/, out/onepag, checkout/one, ckout/one. På denne måde udføres snifferens kode præcist, når brugeren går til betaling og indtaster betalingsoplysninger i formularen på siden.

Fire JavaScript-sniffere, der lurer på dig i webshops
Denne sniffer anvender en usædvanlig teknik. Betalings- og personlige oplysninger fra offeret indsamles sammen, kodet ved hjælp af base64, og den resulterende streng bruges som parameter til at sende en forespørgsel til angribernes websted. Ofte imiterer stien til gaten en JavaScript-fil, for eksempel resp.js, data.js og så videre, men der bruges også links til billedfiler, GIF og JPG. Særegenheden er, at snifferen opretter et billedeobjekt med en størrelse på 1x1 pixel og bruger det tidligere opnåede link som parameter. src Billeder. Det vil sige, for brugeren vil en sådan forespørgsel i trafikken se ud som en forespørgsel på et almindeligt billede. En lignende teknik blev brugt i sniffere fra ImageID-familien. Desuden anvendes teknikken med et billede, der er 1 på 1 pixel, i mange legitime online-analyse scripts, hvilket også kan forvirre brugeren.

Fire JavaScript-sniffere, der lurer på dig i webshops

Versionanalyse

Analysen af aktive domæner, der anvendes af operatørerne af ReactGet-sniffere, har afsløret mange forskellige versioner af rækken af sniffere. Versionerne adskiller sig ved tilstedeværelsen eller fraværet af obfuscation, og desuden er hver sniffer designet til et bestemt betalingssystem, der behandler kortbetalinger for onlinebutikker. Ved at gennemgå værdien af parameteren, der svarer til versionsnummeret, fik specialisterne fra Group-IB en fuld liste over tilgængelige varianter af sniffere. Ved at se på navnene på felterne i formularerne, som hver sniffer søger efter i sidens kode, kunne de identificere de betalingssystemer, som snifferen er rettet mod.

Liste over sniffere og deres tilsvarende betalingssystemer

Sniffer URLBetalingssystem
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

Password sniffer

En af fordelene ved JavaScript-sniffere, der kører på klientsiden af ​​webstedet, er universelheden: den indlejrede ondsindede kode kan stjæle data af enhver art, hvad enten det er betalingsoplysninger eller login og adgangskode til brugerens konto. Specialisterne fra Group-IB har opdaget et eksempel på en sniffer, der tilhører ReactGet-familien, designet til at stjæle e-mailadresser og adgangskoder fra brugerne på webstedet.

Fire JavaScript-sniffere, der lurer på dig i webshops

Overlap med ImageID-sniffer

Under analysen af en af de inficerede butikker blev det fastslået, at dens websted var blevet inficeret to gange: udover den ondsindede kode fra ReactGet-familien blev der også fundet kode fra ImageID-familien. Denne overlapning kan være et tegn på, at operatørerne bag brugen af begge snifferne bruger lignende teknikker til at implementere ondsindet kode.

Fire JavaScript-sniffere, der lurer på dig i webshops

Universal sniffer

Ved analysen af et af domænenavnene, der tilhører ReactGet-sniffernes infrastruktur, blev det konstateret, at den samme bruger havde registreret tre andre domænenavne. Disse tre domæner imiterede domænerne for eksisterende websteder og blev tidligere brugt til at hoste snifferne. Ved analysen af koden fra de tre legitime websteder blev der opdaget en ukendt sniffer, og videre analyse viste, at dette var en forbedret version af ReactGet-snifferen. Alle tidligere sporede versioner af snifferne fra denne familie var rettet mod en specifik betalingssystem, hvilket betød, at der var behov for en særlig version af snifferen for hver betalingsmetode. Men i dette tilfælde blev der opdaget en universel version af snifferen, der kunne stjæle oplysninger fra formularer relateret til 15 forskellige betalingssystemer og moduler til e-commerce-websteder for online betalinger.

I starten af snifferens arbejde søgte den efter grundlæggende formularfelter, der indeholdt offerets personlige information: fulde navn, fysisk adresse, telefonnummer.

Fire JavaScript-sniffere, der lurer på dig i webshops
Derefter søgte snifferen efter mere end 15 forskellige præfikser, der svarede til forskellige betalingssystemer og moduler til online betalinger.

Fire JavaScript-sniffere, der lurer på dig i webshops
Derefter blev offerets personlige data og betalingsinformation samlet og sendt til en hjemmeside kontrolleret af angriberen: i dette specifikke tilfælde blev der opdaget to versioner af den universelle ReactGet-sniffer, der var placeret på to forskellige hackede websteder. Men begge versioner sendte de stjålne data til den samme hackede hjemmeside zoobashop.com.

Fire JavaScript-sniffere, der lurer på dig i webshops
Analysen af de præfikser, som snifferen brugte til at finde felter, der indeholdt offerets betalingsinformation, gjorde det muligt at bestemme, at denne snifferprøve var rettet mod følgende betalingssystemer:

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

Hvilke værktøjer bruges til at stjæle betalingsinformation

Det første værktøj, der blev opdaget under analysen af angriberens infrastruktur, bruges til at obfuske ondsindede scripts, der er ansvarlige for at stjæle kreditkort. På en af angribernes værter blev der opdaget et bash-script, der bruger CLI-projektet javascript-obfuscator til automatisering af obfuskeringsprocessen for sniffernes kode.

Fire JavaScript-sniffere, der lurer på dig i webshops
Det andet opdagede værktøj er beregnet til at generere koden, der er ansvarlig for at indlæse hovedsnifferen. Dette værktøj genererer JavaScript-kode, der tjekker, om brugeren er på betalingssiden ved at søge i den nuværende adresse. checkout, kurv Og så videre, og hvis resultatet er positivt, indlæser koden hovedsnifferen fra gerningsmandens server. For at skjule den ondsindede aktivitet er alle strenge, inklusive teststrenge til at bestemme betalingsiden samt linket til snifferen, kodet ved hjælp af. base64.

Fire JavaScript-sniffere, der lurer på dig i webshops

Phishingangreb

Under analysen af angrebernes netværksinfrastruktur blev det fastslået, at den kriminelle gruppe ofte bruger phishing for at få adgang til adminpanelet for den målrettede onlinebutik. Angriberne registrerer et domæne, der visuelt ligner butikkens domæne, og skaber derefter en falsk indlogningsformular til Magento-adminpanelet. Hvis angrebet lykkes, får angriberne adgang til CMS Magento's adminpanel, hvilket giver dem mulighed for at redigere komponenter på websitet og installere en sniffer til at stjæle kreditkortoplysninger.

Fire JavaScript-sniffere, der lurer på dig i webshops
Infrastruktur

DomæneDato for opdagelse/forekomst
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

G-Analytics-familien

Dette er en familie af sniffer, der bruges til at stjæle kunders kortoplysninger fra onlinebutikker. Det allerførste domænenavn, som gruppen brugte, blev registreret i april 2016, hvilket kan indikere begyndelsen på gruppens aktivitet i midten af 2016.

I den nuværende kampagne bruger gruppen domænenavne, der imiterer reelle tjenester som Google Analytics og jQuery, hvilket maskerer sniffernes aktivitet med legitime scripts og domænenavne, der ligner legitime. Angrebet ramte websites, der kører på CMS Magento.

Hvordan G-Analytics implementeres i koden for onlinebutikken

Det kendetegnende for denne familie er brugen af forskellige metoder til at stjæle brugerens betalingsoplysninger. Udover den klassiske metode med at integrere JavaScript-kode i klientdelen af webstedet anvendte kriminalgruppen også teknikken med at integrere kode i serverdelen af webstedet, nemlig PHP-scripts, der behandler brugerens indtastede data. Denne teknik er farlig, da den vanskeliggør opdagelsen af ondsindet kode af uafhængige forskere. Specialister fra Group-IB fandt en version af sniffere, der var integreret i PHP-koden på webstedet, som bruger domænet dittm.org.

Fire JavaScript-sniffere, der lurer på dig i webshops
Der blev også fundet en tidlig version af sniffere, der bruger det samme domæne til at indsamle stjålne data dittm.org, men denne version er designet til at blive installeret på klientens side af onlinebutikken.

Fire JavaScript-sniffere, der lurer på dig i webshops
Senere ændrede gruppen deres taktik og begyndte at lægge større vægt på at skjule ondsindet aktivitet og camouflage.

I begyndelsen af 2017 begyndte gruppen at bruge domænet jquery-js.com, som skjuler sig som et CDN for jQuery: når brugeren går til gerningsmændenes websted, bliver de omdirigeret til den legitime hjemmeside jquery.com.

Og i midten af 2018 tog gruppen domænenavnet g-analytics.com i brug og begyndte at camouflere snifferens aktiviteter som en legitim service fra Google Analytics.

Fire JavaScript-sniffere, der lurer på dig i webshops
Fire JavaScript-sniffere, der lurer på dig i webshops

Versionanalyse

Ved analysen af domænerne, der blev brugt til at opbevare koden til sniffere, blev det fastslået, at der på webstedet findes mange versioner, der adskiller sig ved tilstedeværelsen af obfuskering samt tilstedeværelsen eller fraværet af utilgængelig kode, der er tilføjet til filen for at aflede opmærksomheden og skjule den ondsindede kode.

I alt blev der fundet seks versioner af sniffere på hjemmesiden. jquery-js.com De stjålne data sendes til en adresse, der ligger på samme websted som snifferen: 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

Det senere domæne g-analytics.com, der blev brugt af gruppen i angreb siden midten af 2018, fungerer som lager for et større antal sniffere. I alt blev 16 forskellige versioner af sniffere opdaget. I dette tilfælde blev porten til at sende stjålne data camoufleret som et link til et billede i formatet 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

Monetisering af de stjålne data

Kriminalgruppen monetiserer de stjålne data ved at sælge kort gennem en specielt oprettet undergrundsbutik, der tilbyder tjenester til kortsvindlere. Analysen af domænerne, der bruges af angriberne, gjorde det muligt at fastslå, at google-analytics.cm blev registreret af den samme bruger som domænet cardz.vc. Domænet cardz.vc henviser til butikken, der sælger stjålne kreditkort Cardsurfs (Flysurfs), som blev populær tilbage i tiden for den underjordiske handelsplads AlphaBay som en butik for salg af kreditkort stjålet ved hjælp af sniffer.

Fire JavaScript-sniffere, der lurer på dig i webshops
Ved at analysere domænet analytic.is, placeret på den samme server som domænerne, der anvendes af snifferne til at indsamle stjålne data, opdagede eksperter fra Group-IB en fil, der indeholdt logs fra Cookie-stillerne, som tilsyneladende senere blev forladt af udvikleren. En af posterne i loggen indeholdt domænet iozoz.com, der tidligere blev brugt i en af snifferne, der var aktive i 2016. Formodentlig blev dette domæne tidligere brugt af en kriminel til at indsamle stjålne kort ved hjælp af en sniffer. Dette domæne blev registreret på e-mail-adressen kts241@gmail.com, som også blev brugt til registrering af domæner cardz.su og cardz.vc, der henviser til kreditkortbutikken Cardsurfs.

Baseret på de indsamlede data kan man antage, at familien af snifferne G-Analytics og den underjordiske butik til salg af kreditkort Cardsurfs drives af de samme mennesker, og at butikken bruges til at realisere de kreditkort, der er stjålet ved hjælp af sniffer.

Infrastruktur

DomæneDato for opdagelse/forekomst
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

Familien Illum

Illum er en familie af snifferne, der anvendes til angreb på onlinebutikker, der kører på CMS Magento. Udover at indføre skadelig kode, bruger operatørerne af denne sniffer også implementering af fuldt falske betalingsformularer, der sender data til kontrollerede gates af kriminelle.

Ved analysen af den netværksinfrastruktur, som operatørerne af denne sniffer bruger, blev der bemærket et stort antal skadelige scripts, exploits, falske betalingsformularer, samt en samling af eksempler med skadelige sniffer fra konkurrenter. Baseret på information om datoerne for fremkomsten af domænenavne brugt af gruppen, kan man antage, at kampagnens begyndelse falder på slutningen af 2016.

Hvordan Illum injiceres i koden på onlinebutikken

De første opdagede versioner af snifferen blev injiceret direkte i koden på den kompromitterede hjemmeside. De stjålne data blev sendt til adressen cdn.illum[.]pw/records.php, mens gate'en blev kodet ved hjælp af base64.

Fire JavaScript-sniffere, der lurer på dig i webshops
Senere blev der opdaget en pakket version af snifferen, der bruger en anden gateway – records.nstatistics[.]com/records.php.

Fire JavaScript-sniffere, der lurer på dig i webshops
Ifølge rapporten Willem de Groot, den samme vært blev brugt i snifferen, der blev indsat på butikens hjemmeside, der tilhører det tyske politiske parti CSU.

Analyse af angriberens hjemmeside

Specialister fra Group-IB opdagede og analyserede en hjemmeside, der blev brugt af denne kriminelle gruppe til at lagre værktøjer og indsamle stjålet information.

Fire JavaScript-sniffere, der lurer på dig i webshops
Blandt de værktøjer, der blev fundet på angribernes server, var der scripts og exploits til at hæve privilegier i Linux OS: for eksempel Linux Privilege Escalation Check Script, udviklet af Mike Czumak, samt en exploit til CVE-2009-1185.

Direkte til angreb på onlinebutikker brugte angriberne to exploits: den første kan indsætte ondsindet kode i core_config_data ved udnyttelse af CVE-2016-4010, den anden udnytter en RCE-sårbarhed i plugins til CMS Magento, hvilket tillader udførelse af vilkårlig kode på den sårbare webserver.

Fire JavaScript-sniffere, der lurer på dig i webshops
Desuden blev der under analysen af serveren opdaget forskellige prøver af snifferne og falske betalingsformularer, der blev brugt af angriberne til at indsamle betalingsinformation fra hackede sider. Som man kan se fra listen nedenfor, blev nogle scripts oprettet individuelt til hver hackede hjemmeside, mens der blev brugt en universel løsning til bestemte CMS og betalingsgateways. For eksempel er scripts segapay_standart.js og segapay_onpage.js beregnet til indsættelse på sider, der bruger betalingsgateway’en Sage Pay.

Liste over scripts til forskellige betalingsgateways

ScriptBetalingsgateway
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=

Vært paymentnow[.]tk, der blev brugt som gateway i scriptet payment_forminsite.js, blev opdaget som subjectAltName i flere certifikater relateret til CloudFlare-tjenesten. Desuden blev der på værten placeret et script evil.js. Judging by the script name, it could have been used in the context of exploiting CVE-2016-4010, which allows the injection of malicious code into the footer of websites powered by CMS Magento. As a gateway, this script used the host request.requestnet[.]tk, der bruger det samme certifikat som værten paymentnow[.]tk.

Falske betalingsformularer

Nedenfor er et eksempel på en formular til indtastning af kortoplysninger. Denne formular blev brugt til at blive indsat på onlinebutikkens hjemmeside for at stjæle kortdata.

Fire JavaScript-sniffere, der lurer på dig i webshops
Det følgende billede viser et eksempel på en falsk betalingsformular fra PayPal, som angribere har brugt til at infiltrere websteder med denne betalingsmetode.
Fire JavaScript-sniffere, der lurer på dig i webshops
Infrastruktur

DomæneDato for opdagelse/forekomst
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

CoffeMokko familien

Familien af sniffer-programmer fra CoffeMokko, designet til at stjæle brugernes kreditkortoplysninger fra webshops, er blevet brugt siden maj 2017. Det formodes, at operatørerne af denne sniffer-familie er en kriminel gruppe kaldet Group 1, som blev beskrevet af RiskIQ-specialister i 2016. Angrebene målrettede websteder, der kørte på CMS som Magento, OpenCart, WordPress, osCommerce, Shopify.

Hvordan CoffeMokko infiltrerer webshop-koden

Operatørerne af denne familie skaber unikke sniffer-programmer til hver infektion: sniffer-filen placeres i mappen src eller js på angribernes server. Infiltreringen i webstedets kode sker via et direkte link til snifferen.

Fire JavaScript-sniffere, der lurer på dig i webshops
I snifferens kode er feltnavnene, hvorfra data skal stjæles, hårdkodet. Snifferen tjekker også, om brugeren er på betalings-siden ved at sammenligne en liste af nøgleord med den aktuelle URL.

Fire JavaScript-sniffere, der lurer på dig i webshops
Nogle af de fundne versioner af snifferen var obfuskerede og indeholdt en krypteret streng, hvori hovedarrayet af ressourcer blev gemt: det var her, feltnavnene for forskellige betalingssystemer samt adressen til gatewayen, hvortil de stjålne data skulle sendes, var indeholdt.

Fire JavaScript-sniffere, der lurer på dig i webshops
De stjålne betalingsoplysninger blev sendt til et script på angribernes server via stien /savePayment/index.php или /tr/index.php. Det formodes, at dette script fungerer til at sende data fra gatewayen til den primære server, som konsoliderer dataene fra alle snifferne. For at skjule de overførte data bliver alle betalingsoplysninger fra offeret krypteret ved hjælp af base64, hvorefter der sker flere tegnudskiftninger:

  • tegnet «e» bliver udskiftet med «:»
  • tegnet «w» bliver udskiftet med «+»
  • tegnet «o» bliver udskiftet med «%»
  • tegnet «d» bliver udskiftet med «#»
  • tegnet «a» bliver udskiftet med «-»
  • tegnet «7» bliver udskiftet med «^»
  • tegnet «h» bliver udskiftet med «_»
  • tegnet «T» bliver udskiftet med «@»
  • tegnet «0» bliver udskiftet med «/»
  • tegnet «Y» bliver udskiftet med «*»

Som følge af tegnudskiftningerne bliver dataene kodet ved hjælp af base64 det umuligt at dekode uden at udføre den inverse transformation.

Dette er et udsnit af kode fra en sniffers, der ikke er blevet obfuskeret:

Fire JavaScript-sniffere, der lurer på dig i webshops

Analyse af infrastrukturen

I tidligere kampagner registrerede angriberne domænenavne, der lignede legitimt webshops domæner. Deres domæne kunne adskille sig fra det legitime med ét tegn eller et andet TLD. De registrerede domæner blev brugt til at opbevare sniffers kode, som blev indsat i webshoppens kode.

Denne gruppe anvendte også domænenavne, der mindede om navne på populære jQuery-plugins (slickjs[.]org til websteder, der bruger pluginet slick.js), betalingsgateways (sagecdn[.]org til websteder, der bruger betalingssystemet Sage Pay).

Senere begyndte gruppen at skabe domæner, hvis navne ikke havde noget med webshoppens domæne eller tema at gøre.

Fire JavaScript-sniffere, der lurer på dig i webshops
Hvert domæne svarede til et websted, hvor der blev oprettet et bibliotek /js eller /src. I dette bibliotek blev sniffers scripts opbevaret: én sniffer for hver ny infektion. Snifferen blev indsat i webstedets kode via et direkte link, men i sjældne tilfælde modificerede angriberne en af webstedets filer og tilføjede ondsindet kode til den.

Kodeanalyse

Den første obfuskationsalgoritme

I nogle af de opdagede prøver af denne snifferfamilie var koden obfuskeret og indeholdt krypterede data, der var nødvendige for snifferens funktion: specifikt adressen på snifferens gateway, listen over felter i betalingsformularen og i nogle tilfælde — koden til en falsk betalingsformular. I koden inden for funktionen var ressourcerne krypteret ved hjælp af XOR med en nøgle, der blev sendt som et argument til den samme funktion.

Fire JavaScript-sniffere, der lurer på dig i webshops
Ved at dekryptere strengen med den tilsvarende nøgle, der er unik for hver prøve, kan man få en streng, der indeholder alle strenge fra snifferkoden adskilt af et separator-tegn.

Fire JavaScript-sniffere, der lurer på dig i webshops

Den anden obfuskationsalgoritme

I nyere prøver af denne snifferfamilie blev der anvendt en anden obfuskationsmetode: i dette tilfælde var dataene krypteret med en selvskrevet algoritme. Strengen, der indeholdt de krypterede data, der var nødvendige for snifferens funktion, blev sendt som argument til dekrypteringsfunktionen.

Fire JavaScript-sniffere, der lurer på dig i webshops
Ved hjælp af browserens konsol kan man dekryptere de krypterede data og få et array, der indeholder snifferens ressourcer.

Fire JavaScript-sniffere, der lurer på dig i webshops

Forbindelse til tidlige MageCart-angreb

Under analysen af et af de domæner, der blev brugt af gruppen som en gateway til at indsamle stjålne data, blev det fastslået, at der var opbygget en infrastruktur på dette domæne til at stjæle kreditkort, identisk med den, der blev brugt af Group 1 — en af de første grupper, opdaget af RiskIQ-specialister.

På værtssystemet for snifferfamilien CoffeMokko blev der fundet to filer:

  • mage.js — en fil, der indeholder koden til snifferen fra Group 1 med gateway-adressen js-cdn.link
  • mag.php — et PHP-script, der er ansvarligt for indsamling af de stjålne data fra snifferen

Содержимое файла mage.js Fire JavaScript-sniffere, der lurer på dig i webshops
Det blev også fastslået, at de tidligste domæner, der blev brugt af gruppen bag snifferfamilien CoffeMokko, blev registreret den 17. maj 2017:

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

Formatet af disse domænenavne svarer til domænenavnene fra Group 1, som blev brugt i angrebene i 2016.

Baseret på de opdagede fakta kan man antage, at der er en forbindelse mellem operatørerne af snifferne CoffeMokko og den kriminelle gruppe Group 1. Det antages, at operatørerne af CoffeMokko kunne have lånt værktøjer og software til kreditkorttyveri fra deres forgængere. Det er dog mere sandsynligt, at den kriminelle gruppe bag brugen af snifferne fra CoffeMokko-familien er de samme personer, der udførte angrebene i forbindelsen med Group 1s aktiviteter. Efter offentliggørelsen af den første rapport om den kriminelle gruppes aktiviteter blev alle deres domænenavne blokeret, og værktøjerne blev grundigt undersøgt og beskrevet. Gruppen blev nødt til at tage en pause, for at forbedre deres interne værktøjer og skrive koden til snifferne om, så de kunne fortsætte deres angreb og forblive uset.

Infrastruktur

DomæneDato for opdagelse/forekomst
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

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster