Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker

Nästan alla av oss använder nätbutikernas tjänster, vilket innebär att vi förr eller senare riskerar att bli offer för JavaScript-sniffer - specialkod som angripare implementerar på en webbplats för att stjäla bankkortsdata, adresser, inloggningar och lösenord för användare .

Nästan 400 000 användare av British Airways hemsida och mobilapplikation har redan drabbats av sniffers, liksom besökare på den brittiska webbsidan för sportjätten FILA och den amerikanska biljettdistributören Ticketmaster. PayPal, Chase Paymenttech, USAePay, Moneris - dessa och många andra betalningssystem var infekterade.

Threat Intelligence Group-IB-analytiker Viktor Okorokov pratar om hur sniffers infiltrerar webbkod och stjäl betalningsinformation, samt vilka CRM:er de attackerar.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker

"Doldt hot"

Det hände så att JS-sniffare under lång tid förblev utom synhåll för antivirusanalytiker, och banker och betalningssystem såg dem inte som ett allvarligt hot. Och helt förgäves. Group-IB-experter analyseras 2440 1,5 infekterade nätbutiker, vars besökare – totalt cirka XNUMX miljoner människor per dag – riskerade att kompromissa. Bland offren finns inte bara användare, utan även nätbutiker, betalningssystem och banker som utfärdat komprometterade kort.

Rapport Group-IB blev den första studien av darknet-marknaden för sniffers, deras infrastruktur och metoder för intäktsgenerering, vilket ger deras skapare miljontals dollar. Vi identifierade 38 familjer av sniffers, varav endast 12 tidigare var kända för forskare.

Låt oss uppehålla oss i detalj vid de fyra familjer av sniffers som studerades under studien.

ReactGet Family

Sniffers från ReactGet-familjen används för att stjäla bankkortsdata på shoppingsajter online. Sniffaren kan arbeta med ett stort antal olika betalningssystem som används på sajten: ett parametervärde motsvarar ett betalningssystem, och individuella upptäckta versioner av sniffern kan användas för att stjäla autentiseringsuppgifter, samt för att stjäla bankkortsdata från betalning former av flera betalningssystem samtidigt, som den så kallade universella sniffern. Det visade sig att angripare i vissa fall utför nätfiskeattacker på administratörer av onlinebutiker för att få tillgång till webbplatsens administrativa panel.

En kampanj med denna familj av sniffers började i maj 2017; webbplatser som körde CMS och Magento, Bigcommerce och Shopify-plattformar attackerades.

Hur ReactGet implementeras i koden för en onlinebutik

Förutom den "klassiska" implementeringen av ett skript via en länk, använder operatörerna av ReactGet-familjen av sniffers en speciell teknik: med hjälp av JavaScript-kod kontrollerar de om den aktuella adressen där användaren befinner sig uppfyller vissa kriterier. Den skadliga koden kommer endast att exekveras om delsträngen finns i den aktuella URL:en kassan eller ett stegs utcheckning, en sida/, ut/onepag, kassa/ett, ckout/ett. Således kommer snifferkoden att exekveras exakt i det ögonblick då användaren fortsätter att betala för köp och anger betalningsinformation i formuläret på webbplatsen.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker
Denna sniffer använder en icke-standardteknik. Offrets betalnings- och personuppgifter samlas in och kodas med hjälp av base64, och sedan används den resulterande strängen som en parameter för att skicka en begäran till angriparens webbplats. Oftast imiterar sökvägen till porten en JavaScript-fil, till exempel resp.js, data.js och så vidare, men länkar till bildfiler används också, GIF и JPG. Det speciella är att sniffern skapar ett bildobjekt som mäter 1 gånger 1 pixel och använder den tidigare mottagna länken som en parameter src Bilder. Det vill säga, för användaren kommer en sådan begäran i trafik att se ut som en begäran om en vanlig bild. En liknande teknik användes i ImageID-familjen av sniffers. Dessutom används tekniken att använda en bild på 1 x 1 pixel i många legitima onlineanalysskript, vilket också kan vilseleda användaren.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker

Versionsanalys

Analys av de aktiva domänerna som används av ReactGet sniffer-operatörer avslöjade många olika versioner av denna familj av sniffers. Versioner skiljer sig åt i närvaro eller frånvaro av obfuskation, och dessutom är varje sniffer designad för ett specifikt betalningssystem som behandlar bankkortsbetalningar för nätbutiker. Efter att ha sorterat igenom värdet på parametern som motsvarar versionsnumret fick Group-IB-specialister en komplett lista över tillgängliga sniffervarianter, och genom namnen på formulärfälten som varje sniffer letar efter i sidkoden identifierade de betalningssystemen som sniffern riktar sig till.

Lista över sniffers och deras motsvarande betalningssystem

Sniffer URL Betalningssystem
reactjsapi.com/react.js Authorize.Net
ajaxstatic.com/api.js?v=2.1.1 Cardsave
ajaxstatic.com/api.js?v=2.1.2 Authorize.Net
ajaxstatic.com/api.js?v=2.1.3 Authorize.Net
ajaxstatic.com/api.js?v=2.1.4 eWAY Snabb
ajaxstatic.com/api.js?v=2.1.5 Authorize.Net
ajaxstatic.com/api.js?v=2.1.6 Adyen
ajaxstatic.com/api.js?v=2.1.7 USAePay
ajaxstatic.com/api.js?v=2.1.9 Authorize.Net
apitstatus.com/api.js?v=2.1.1 USAePay
apitstatus.com/api.js?v=2.1.2 Authorize.Net
apitstatus.com/api.js?v=2.1.3 Moneris
apitstatus.com/api.js?v=2.1.5 USAePay
apitstatus.com/api.js?v=2.1.6 PayPal
apitstatus.com/api.js?v=2.1.7 SagePay
apitstatus.com/api.js?v=2.1.8 verisign
apitstatus.com/api.js?v=2.1.9 PayPal
apitstatus.com/api.js?v=2.3.0 Rand
apitstatus.com/api.js?v=3.0.2 Realex
apitstatus.com/api.js?v=3.0.3 PayPal
apitstatus.com/api.js?v=3.0.4 LinkPoint
apitstatus.com/api.js?v=3.0.5 PayPal
apitstatus.com/api.js?v=3.0.7 PayPal
apitstatus.com/api.js?v=3.0.8 Datacash
apitstatus.com/api.js?v=3.0.9 PayPal
asianfoodgracer.com/footer.js Authorize.Net
billgetstatus.com/api.js?v=1.2 Authorize.Net
billgetstatus.com/api.js?v=1.3 Authorize.Net
billgetstatus.com/api.js?v=1.4 Authorize.Net
billgetstatus.com/api.js?v=1.5 verisign
billgetstatus.com/api.js?v=1.6 Authorize.Net
billgetstatus.com/api.js?v=1.7 Moneris
billgetstatus.com/api.js?v=1.8 SagePay
billgetstatus.com/api.js?v=2.0 USAePay
billgetstatus.com/react.js Authorize.Net
cloudodesc.com/gtm.js?v=1.2 Authorize.Net
cloudodesc.com/gtm.js?v=1.3 ANZ eGate
cloudodesc.com/gtm.js?v=2.3 Authorize.Net
cloudodesc.com/gtm.js?v=2.4 Moneris
cloudodesc.com/gtm.js?v=2.6 SagePay
cloudodesc.com/gtm.js?v=2.7 SagePay
cloudodesc.com/gtm.js?v=2.8 Chase Paymentech
cloudodesc.com/gtm.js?v=2.9 Authorize.Net
cloudodesc.com/gtm.js?v=2.91 Adyen
cloudodesc.com/gtm.js?v=2.92 PsiGate
cloudodesc.com/gtm.js?v=2.93 Cyberkälla
cloudodesc.com/gtm.js?v=2.95 ANZ eGate
cloudodesc.com/gtm.js?v=2.97 Realex
geisseie.com/gs.js USAePay
gtmproc.com/age.js Authorize.Net
gtmproc.com/gtm.js?v=1.2 Authorize.Net
gtmproc.com/gtm.js?v=1.3 ANZ eGate
gtmproc.com/gtm.js?v=1.5 PayPal
gtmproc.com/gtm.js?v=1.6 PayPal
gtmproc.com/gtm.js?v=1.7 Realex
livecheckpay.com/api.js?v=2.0 SagePay
livecheckpay.com/api.js?v=2.1 PayPal
livecheckpay.com/api.js?v=2.2 verisign
livecheckpay.com/api.js?v=2.3 Authorize.Net
livecheckpay.com/api.js?v=2.4 verisign
livecheckpay.com/react.js Authorize.Net
livegetpay.com/pay.js?v=2.1.2 ANZ eGate
livegetpay.com/pay.js?v=2.1.3 PayPal
livegetpay.com/pay.js?v=2.1.5 Cyberkälla
livegetpay.com/pay.js?v=2.1.7 Authorize.Net
livegetpay.com/pay.js?v=2.1.8 SagePay
livegetpay.com/pay.js?v=2.1.9 Realex
livegetpay.com/pay.js?v=2.2.0 Cyberkälla
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 Snabb
livegetpay.com/pay.js?v=2.2.7 SagePay
livegetpay.com/pay.js?v=2.2.8 SagePay
livegetpay.com/pay.js?v=2.2.9 verisign
livegetpay.com/pay.js?v=2.3.0 Authorize.Net
livegetpay.com/pay.js?v=2.3.1 Authorize.Net
livegetpay.com/pay.js?v=2.3.2 Första Data Global Gateway
livegetpay.com/pay.js?v=2.3.3 Authorize.Net
livegetpay.com/pay.js?v=2.3.4 Authorize.Net
livegetpay.com/pay.js?v=2.3.5 Moneris
livegetpay.com/pay.js?v=2.3.6 Authorize.Net
livegetpay.com/pay.js?v=2.3.8 PayPal
livegetpay.com/pay.js?v=2.4.0 verisign
maxstatics.com/site.js USAePay
mediapack.info/track.js?d=funlove.com USAePay
mediapack.info/track.js?d=qbedding.com Authorize.Net
mediapack.info/track.js?d=vseyewear.com verisign
mxcounter.com/c.js?v=1.2 PayPal
mxcounter.com/c.js?v=1.3 Authorize.Net
mxcounter.com/c.js?v=1.4 Rand
mxcounter.com/c.js?v=1.6 Authorize.Net
mxcounter.com/c.js?v=1.7 eWAY Snabb
mxcounter.com/c.js?v=1.8 SagePay
mxcounter.com/c.js?v=2.0 Authorize.Net
mxcounter.com/c.js?v=2.1 Braintree
mxcounter.com/c.js?v=2.10 Braintree
mxcounter.com/c.js?v=2.2 PayPal
mxcounter.com/c.js?v=2.3 SagePay
mxcounter.com/c.js?v=2.31 SagePay
mxcounter.com/c.js?v=2.32 Authorize.Net
mxcounter.com/c.js?v=2.33 PayPal
mxcounter.com/c.js?v=2.34 Authorize.Net
mxcounter.com/c.js?v=2.35 verisign
mxcounter.com/click.js?v=1.2 PayPal
mxcounter.com/click.js?v=1.3 Authorize.Net
mxcounter.com/click.js?v=1.4 Rand
mxcounter.com/click.js?v=1.6 Authorize.Net
mxcounter.com/click.js?v=1.7 eWAY Snabb
mxcounter.com/click.js?v=1.8 SagePay
mxcounter.com/click.js?v=2.0 Authorize.Net
mxcounter.com/click.js?v=2.1 Braintree
mxcounter.com/click.js?v=2.2 PayPal
mxcounter.com/click.js?v=2.3 SagePay
mxcounter.com/click.js?v=2.31 SagePay
mxcounter.com/click.js?v=2.32 Authorize.Net
mxcounter.com/click.js?v=2.33 PayPal
mxcounter.com/click.js?v=2.34 Authorize.Net
mxcounter.com/click.js?v=2.35 verisign
mxcounter.com/cnt.js Authorize.Net
mxcounter.com/j.js Authorize.Net
newrelicnet.com/api.js?v=1.2 Authorize.Net
newrelicnet.com/api.js?v=1.4 Authorize.Net
newrelicnet.com/api.js?v=1.8 SagePay
newrelicnet.com/api.js?v=4.5 SagePay
newrelicnet.com/api.js?v=4.6 Westpac PayWay
nr-public.com/api.js?v=2.0 PayFort
nr-public.com/api.js?v=2.1 PayPal
nr-public.com/api.js?v=2.2 Authorize.Net
nr-public.com/api.js?v=2.3 Rand
nr-public.com/api.js?v=2.4 Första Data Global Gateway
nr-public.com/api.js?v=2.5 PsiGate
nr-public.com/api.js?v=2.6 Authorize.Net
nr-public.com/api.js?v=2.7 Authorize.Net
nr-public.com/api.js?v=2.8 Moneris
nr-public.com/api.js?v=2.9 Authorize.Net
nr-public.com/api.js?v=3.1 SagePay
nr-public.com/api.js?v=3.2 verisign
nr-public.com/api.js?v=3.3 Moneris
nr-public.com/api.js?v=3.5 PayPal
nr-public.com/api.js?v=3.6 LinkPoint
nr-public.com/api.js?v=3.7 Westpac PayWay
nr-public.com/api.js?v=3.8 Authorize.Net
nr-public.com/api.js?v=4.0 Moneris
nr-public.com/api.js?v=4.0.2 PayPal
nr-public.com/api.js?v=4.0.3 Adyen
nr-public.com/api.js?v=4.0.4 PayPal
nr-public.com/api.js?v=4.0.5 Authorize.Net
nr-public.com/api.js?v=4.0.6 USAePay
nr-public.com/api.js?v=4.0.7 EBizCharge
nr-public.com/api.js?v=4.0.8 Authorize.Net
nr-public.com/api.js?v=4.0.9 verisign
nr-public.com/api.js?v=4.1.2 verisign
ordercheckpays.com/api.js?v=2.11 Authorize.Net
ordercheckpays.com/api.js?v=2.12 PayPal
ordercheckpays.com/api.js?v=2.13 Moneris
ordercheckpays.com/api.js?v=2.14 Authorize.Net
ordercheckpays.com/api.js?v=2.15 PayPal
ordercheckpays.com/api.js?v=2.16 PayPal
ordercheckpays.com/api.js?v=2.17 Westpac PayWay
ordercheckpays.com/api.js?v=2.18 Authorize.Net
ordercheckpays.com/api.js?v=2.19 Authorize.Net
ordercheckpays.com/api.js?v=2.21 SagePay
ordercheckpays.com/api.js?v=2.22 verisign
ordercheckpays.com/api.js?v=2.23 Authorize.Net
ordercheckpays.com/api.js?v=2.24 PayPal
ordercheckpays.com/api.js?v=2.25 PayFort
ordercheckpays.com/api.js?v=2.29 Cyberkälla
ordercheckpays.com/api.js?v=2.4 PayPal Payflow Pro
ordercheckpays.com/api.js?v=2.7 Authorize.Net
ordercheckpays.com/api.js?v=2.8 Authorize.Net
ordercheckpays.com/api.js?v=2.9 verisign
ordercheckpays.com/api.js?v=3.1 Authorize.Net
ordercheckpays.com/api.js?v=3.2 Authorize.Net
ordercheckpays.com/api.js?v=3.3 SagePay
ordercheckpays.com/api.js?v=3.4 Authorize.Net
ordercheckpays.com/api.js?v=3.5 Rand
ordercheckpays.com/api.js?v=3.6 Authorize.Net
ordercheckpays.com/api.js?v=3.7 Authorize.Net
ordercheckpays.com/api.js?v=3.8 verisign
ordercheckpays.com/api.js?v=3.9 PayPal
ordercheckpays.com/api.js?v=4.0 Authorize.Net
ordercheckpays.com/api.js?v=4.1 Authorize.Net
ordercheckpays.com/api.js?v=4.2 SagePay
ordercheckpays.com/api.js?v=4.3 Authorize.Net
reactjsapi.com/api.js?v=0.1.0 Authorize.Net
reactjsapi.com/api.js?v=0.1.1 PayPal
reactjsapi.com/api.js?v=4.1.2 Flint
reactjsapi.com/api.js?v=4.1.4 PayPal
reactjsapi.com/api.js?v=4.1.5 SagePay
reactjsapi.com/api.js?v=4.1.51 verisign
reactjsapi.com/api.js?v=4.1.6 Authorize.Net
reactjsapi.com/api.js?v=4.1.7 Authorize.Net
reactjsapi.com/api.js?v=4.1.8 Rand
reactjsapi.com/api.js?v=4.1.9 Fet zebra
reactjsapi.com/api.js?v=4.2.0 SagePay
reactjsapi.com/api.js?v=4.2.1 Authorize.Net
reactjsapi.com/api.js?v=4.2.2 Första Data Global Gateway
reactjsapi.com/api.js?v=4.2.3 Authorize.Net
reactjsapi.com/api.js?v=4.2.4 eWAY Snabb
reactjsapi.com/api.js?v=4.2.5 Adyen
reactjsapi.com/api.js?v=4.2.7 PayPal
reactjsapi.com/api.js?v=4.2.8 QuickBooks säljtjänster
reactjsapi.com/api.js?v=4.2.9 verisign
reactjsapi.com/api.js?v=4.2.91 SagePay
reactjsapi.com/api.js?v=4.2.92 verisign
reactjsapi.com/api.js?v=4.2.94 Authorize.Net
reactjsapi.com/api.js?v=4.3.97 Authorize.Net
reactjsapi.com/api.js?v=4.5 SagePay
reactjsapi.com/react.js Authorize.Net
sydneysalonsupplies.com/gtm.js eWAY Snabb
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 Cyberkälla
tagstracking.com/tag.js?v=2.1.7 Authorize.Net
tagstracking.com/tag.js?v=2.1.8 SagePay
tagstracking.com/tag.js?v=2.1.9 Realex
tagstracking.com/tag.js?v=2.2.0 Cyberkälla
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 Snabb
tagstracking.com/tag.js?v=2.2.7 SagePay
tagstracking.com/tag.js?v=2.2.8 SagePay
tagstracking.com/tag.js?v=2.2.9 verisign
tagstracking.com/tag.js?v=2.3.0 Authorize.Net
tagstracking.com/tag.js?v=2.3.1 Authorize.Net
tagstracking.com/tag.js?v=2.3.2 Första Data Global Gateway
tagstracking.com/tag.js?v=2.3.3 Authorize.Net
tagstracking.com/tag.js?v=2.3.4 Authorize.Net
tagstracking.com/tag.js?v=2.3.5 Moneris
tagstracking.com/tag.js?v=2.3.6 Authorize.Net
tagstracking.com/tag.js?v=2.3.8 PayPal

Lösenord sniffer

En av fördelarna med JavaScript-sniffare som arbetar på klientsidan av en webbplats är deras mångsidighet: skadlig kod inbäddad på en webbplats kan stjäla alla typer av data, vare sig det är betalningsdata eller inloggningen och lösenordet för ett användarkonto. Group-IB-specialister upptäckte ett exempel på en sniffer som tillhör ReactGet-familjen, designad för att stjäla e-postadresser och lösenord för webbplatsanvändare.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker

Korsning med ImageID sniffer

Under analysen av en av de infekterade butikerna fann man att dess webbplats var infekterad två gånger: förutom den skadliga koden för ReactGet-familjens sniffer, upptäcktes koden för ImageID-familjens sniffer. Denna överlappning kan vara bevis på att operatörerna bakom båda sniffarna använder liknande tekniker för att injicera skadlig kod.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker

Universal sniffer

En analys av ett av domännamnen associerade med ReactGet sniffer-infrastrukturen visade att samma användare hade registrerat tre andra domännamn. Dessa tre domäner imiterade domänerna på verkliga webbplatser och användes tidigare för att vara värd för sniffers. När koden för tre legitima webbplatser analyserades upptäcktes en okänd sniffer, och ytterligare analys visade att det var en förbättrad version av ReactGet sniffer. Alla tidigare övervakade versioner av denna familj av sniffers var inriktade på ett enda betalningssystem, det vill säga varje betalningssystem krävde en speciell version av sniffern. Men i det här fallet upptäcktes en universell version av sniffern som kan stjäla information från formulär relaterade till 15 olika betalningssystem och moduler av e-handelssajter för att göra onlinebetalningar.

Så i början av arbetet sökte sniffern efter grundläggande formulärfält som innehåller offrets personliga information: fullständigt namn, fysisk adress, telefonnummer.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker
Sniffaren sökte sedan över 15 olika prefix som motsvarar olika betalningssystem och onlinebetalningsmoduler.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker
Därefter samlades offrets personuppgifter och betalningsinformation ihop och skickades till en webbplats som kontrollerades av angriparen: i det här specifika fallet upptäcktes två versioner av den universella ReactGet-sniffaren, som finns på två olika hackade webbplatser. Båda versionerna skickade dock stulen data till samma hackade webbplats zoobashop.com.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker
Analys av prefixen som sniffern använde för att söka efter fält som innehåller offrets betalningsinformation gjorde att vi kunde fastställa att detta snifferprov var inriktat på följande betalningssystem:

  • Authorize.Net
  • verisign
  • First Data
  • USAePay
  • Rand
  • PayPal
  • ANZ eGate
  • Braintree
  • DataCash (MasterCard)
  • Realex betalningar
  • PsiGate
  • Heartland Payment Systems

Vilka verktyg används för att stjäla betalningsinformation?

Det första verktyget, som upptäcktes under analysen av angriparnas infrastruktur, används för att fördunkla skadliga skript som är ansvariga för stöld av bankkort. Ett bash-skript som använder projektets CLI upptäcktes på en av angriparens värdar javascript-obfuscator för att automatisera obfuskering av snifferkod.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker
Det andra upptäckta verktyget är utformat för att generera kod som ansvarar för att ladda huvudsniffaren. Detta verktyg genererar JavaScript-kod som kontrollerar om användaren är på betalningssidan genom att söka efter strängar i användarens aktuella adress kassan, vagn och så vidare, och om resultatet är positivt, så laddar koden huvudsniffaren från angriparnas server. För att dölja skadlig aktivitet kodas alla rader, inklusive testrader för att fastställa betalningssidan, samt en länk till sniffern med base64.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker

Nätfiskeattacker

En analys av angriparnas nätverksinfrastruktur avslöjade att den kriminella gruppen ofta använder nätfiske för att få tillgång till den administrativa panelen för målwebbbutiken. Angripare registrerar en domän som visuellt liknar en butiks domän och distribuerar sedan ett falskt inloggningsformulär för Magento-administrationspanelen på den. Om det lyckas kommer angriparna att få tillgång till den administrativa panelen i Magento CMS, som ger dem möjlighet att redigera webbplatskomponenter och implementera en sniffer för att stjäla kreditkortsdata.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker
Infrastruktur

Домен Datum för upptäckt/framträdande
mediapack.info 04.05.2017
adsgetapi.com 15.06.2017
simcounter.com 14.08.2017
mageanalytics.com 22.12.2017
maxstatics.com 16.01.2018
reactjsapi.com 19.01.2018
mxcounter.com 02.02.2018
apitstatus.com 01.03.2018
orderracker.com 20.04.2018
tagstracking.com 25.06.2018
adsapigate.com 12.07.2018
trust-tracker.com 15.07.2018
fbstatspartner.com 02.10.2018
billgetstatus.com 12.10.2018
www.aldenmlilhouse.com 20.10.2018
balletbeautlful.com 20.10.2018
bargalnjunkie.com 20.10.2018
payselector.com 21.10.2018
tagsmediaget.com 02.11.2018
hs-payments.com 16.11.2018
ordercheckpays.com 19.11.2018
geisseie.com 24.11.2018
gtmproc.com 29.11.2018
livegetpay.com 18.12.2018
sydneysalonsupplies.com 18.12.2018
newrelicnet.com 19.12.2018
nr-public.com 03.01.2019
cloudodesc.com 04.01.2019
ajaxstatic.com 11.01.2019
livecheckpay.com 21.01.2019
asianfoodgracer.com 25.01.2019

G-Analytics-familjen

Denna familj av sniffers används för att stjäla kundkort från nätbutiker. Det allra första domännamnet som användes av gruppen registrerades i april 2016, vilket kan tyda på att gruppen började sin verksamhet i mitten av 2016.

I den aktuella kampanjen använder gruppen domännamn som imiterar verkliga tjänster, som Google Analytics och jQuery, och maskerar sniffers aktivitet med legitima skript och domännamn som liknar legitima. Webbplatser som körde Magento CMS attackerades.

Hur G-Analytics implementeras i koden för en webbutik

En utmärkande egenskap hos denna familj är användningen av olika metoder för att stjäla användarbetalningsinformation. Förutom den klassiska injiceringen av JavaScript-kod på klientsidan av webbplatsen, använde den kriminella gruppen även tekniker för kodinjektion på serversidan av webbplatsen, nämligen PHP-skript som bearbetar användarinmatad data. Denna teknik är farlig eftersom den gör det svårt för tredjepartsforskare att upptäcka skadlig kod. Group-IB-specialister upptäckte en version av sniffern inbäddad i PHP-koden för webbplatsen, med en domän som en gate dittm.org.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker
En tidig version av en sniffer upptäcktes också som använder samma domän för att samla in stulen data dittm.org, men den här versionen är avsedd för installation på klientsidan av en onlinebutik.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker
Gruppen ändrade senare sin taktik och började fokusera mer på att dölja skadlig aktivitet och kamouflage.

I början av 2017 började gruppen använda domänen jquery-js.com, maskerad som ett CDN för jQuery: när användaren går till angriparnas webbplats omdirigeras användaren till en legitim webbplats jquery.com.

Och i mitten av 2018 antog gruppen domännamnet g-analytics.com och började dölja snifferns aktiviteter som en legitim Google Analytics-tjänst.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker
Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker

Versionsanalys

Under analysen av de domäner som används för att lagra snifferkod, fann man att webbplatsen innehåller ett stort antal versioner, som skiljer sig åt i närvaro av förvirring, såväl som närvaron eller frånvaron av oåtkomlig kod som lagts till filen för att distrahera uppmärksamheten och dölj skadlig kod.

Totalt på webbplatsen jquery-js.com Sex versioner av sniffers identifierades. Dessa sniffers skickar den stulna informationen till en adress som finns på samma webbplats som sniffern själv: 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

Senare domän g-analytics.com, som använts av gruppen i attacker sedan mitten av 2018, fungerar som ett förråd för fler sniffers. Totalt upptäcktes 16 olika versioner av sniffern. I det här fallet var porten för att skicka stulen data förklädd som en länk till ett bildformat 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

Intäktsgenerering av stulen data

Den kriminella gruppen tjänar pengar på de stulna uppgifterna genom att sälja kort genom en speciellt skapad underjordisk butik som tillhandahåller tjänster till kortare. Analys av de domäner som angriparna använde gjorde att vi kunde fastställa det google-analytics.cm registrerades av samma användare som domänen cardz.vc. Domän cardz.vc hänvisar till en butik som säljer stulna bankkort Cardsurfs (Flysurfs), som fick popularitet redan under den tid då den underjordiska handelsplattformen AlphaBay var aktiv som en butik som säljer bankkort stulna med hjälp av en sniffer.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker
Analyserar domänen analytical.is, som ligger på samma server som de domäner som sniffers använder för att samla in stulen data, upptäckte Group-IB-specialister en fil som innehåller cookie-stealer-loggar, som senare verkar ha övergivits av utvecklaren. En av posterna i loggen innehöll en domän iozoz.com, som tidigare användes i en av sniffarna som var aktiva 2016. Förmodligen har denna domän tidigare använts av en angripare för att samla in kort som stulits med hjälp av en sniffer. Denna domän registrerades till en e-postadress [e-postskyddad], som också användes för att registrera domäner cardz.su и cardz.vc, relaterat till kardbutiken Cardsurfs.

Baserat på de uppgifter som erhållits kan det antas att G-Analytics-familjen av sniffers och den underjordiska butiken som säljer bankkort Cardsurfs hanteras av samma personer, och butiken används för att sälja bankkort som stulits med sniffern.

Infrastruktur

Домен Datum för upptäckt/framträdande
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
analytisk.till 04.12.2018
google-analytics.to 06.12.2018
google-analytics.cm 28.12.2018
analytical.is 28.12.2018
googlc-analytics.cm 17.01.2019

Familjen Illum

Illum är en familj av sniffers som används för att attackera onlinebutiker som kör Magento CMS. Förutom att introducera skadlig kod använder operatörerna av denna sniffer också introduktionen av fullfjädrade falska betalningsformulär som skickar data till grindar som kontrolleras av angripare.

När man analyserade nätverksinfrastrukturen som används av operatörerna av denna sniffer, noterades ett stort antal skadliga skript, utnyttjande, falska betalningsformulär, såväl som en samling exempel med skadliga sniffers från konkurrenter. Baserat på information om datumen för uppkomsten av de domännamn som används av gruppen, kan det antas att kampanjen började i slutet av 2016.

Hur Illum implementeras i koden för en webbutik

De första versionerna av sniffern som upptäcktes bäddades in direkt i koden för den utsatta webbplatsen. De stulna uppgifterna skickades till cdn.illum[.]pw/records.php, kodades porten med hjälp av base64.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker
Senare upptäcktes en paketerad version av sniffern som använder en annan grind - records.nstatistics[.]com/records.php.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker
Enligt Rapportera Willem de Groot, samma värd användes i sniffern, som implementerades på butikens webbplats, som ägs av det tyska politiska partiet CSU.

Analys av angriparnas hemsida

Group-IB-specialister upptäckte och analyserade en webbplats som används av denna kriminella grupp för att lagra verktyg och samla in stulen information.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker
Bland verktygen som hittades på angriparnas server var skript och exploateringar för att eskalera privilegier i Linux OS: till exempel Linux Privilege Escalation Check Script som utvecklats av Mike Czumak, samt en exploit för CVE-2009-1185.

Angriparna använde två exploateringar direkt för att attackera onlinebutiker: первый kan injicera skadlig kod i core_config_data genom att utnyttja CVE-2016-4010, 2. utnyttjar en RCE-sårbarhet i plugins för CMS Magento, vilket gör att godtycklig kod kan exekveras på en sårbar webbserver.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker
Under analysen av servern upptäcktes också olika prover av sniffers och falska betalningsformulär, som används av angripare för att samla in betalningsinformation från hackade webbplatser. Som du kan se från listan nedan skapades vissa skript individuellt för varje hackad webbplats, medan en universell lösning användes för vissa CMS och betalningsgateways. Till exempel manus segapay_standart.js и segapay_onpage.js designad för implementering på webbplatser som använder Sage Pay-betalningsgatewayen.

Lista över skript för olika betalningsportar

Manus Betalningsgateway
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ärd betalning nu[.]tk, används som en grind i ett manus payment_forminsite.js, upptäcktes som subjectAltName i flera certifikat relaterade till CloudFlare-tjänsten. Dessutom innehöll programledaren ett manus evil.js. Att döma av skriptets namn kan det användas som en del av exploateringen av CVE-2016-4010, tack vare vilken det är möjligt att injicera skadlig kod i sidfoten på en webbplats som kör CMS Magento. Värden använde detta skript som en gate request.requestnet[.]tkanvänder samma certifikat som värden betalning nu[.]tk.

Falska betalningsformulär

Bilden nedan visar ett exempel på ett formulär för inmatning av kortdata. Detta formulär användes för att infiltrera en onlinebutik och stjäla kortdata.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker
Följande bild visar ett exempel på ett falskt PayPal-betalningsformulär som användes av angripare för att infiltrera webbplatser med denna betalningsmetod.
Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker
Infrastruktur

Домен Datum för upptäckt/framträdande
cdn.illum.pw 27/11/2016
records.nstatistics.com 06/09/2018
request.payrightnow.cf 25/05/2018
paymentnow.tk 16/07/2017
pay-line.tk 01/03/2018
paymentpal.jfr 04/09/2017
requestnet.tk 28/06/2017

CoffeeMokko familj

CoffeMokko-familjen av sniffers, designad för att stjäla bankkort från användare av nätbutiker, har varit i bruk sedan åtminstone maj 2017. Förmodligen är operatörerna av denna familj av sniffers den kriminella gruppen Grupp 1, som beskrevs av RiskIQ-specialister 2016. Webbplatser som kör CMS som Magento, OpenCart, WordPress, osCommerce och Shopify attackerades.

Hur CoffeMokko implementeras i koden för en webbutik

Operatörer av denna familj skapar unika sniffers för varje infektion: snifferfilen finns i katalogen src eller js på angriparnas server. Inkorporering i webbplatskoden görs via en direktlänk till sniffern.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker
Snifferkoden hårdkodar namnen på formulärfälten från vilka data måste stjälas. Sniffaren kontrollerar också om användaren är på betalningssidan genom att kontrollera sökordslistan med användarens aktuella adress.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker
Vissa upptäckta versioner av sniffern var fördunklade och innehöll en krypterad sträng där huvuduppsättningen av resurser lagrades: den innehöll namnen på formulärfält för olika betalningssystem, såväl som portadressen till vilken de stulna uppgifterna skulle skickas.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker
Den stulna betalningsinformationen skickades till ett skript på angriparnas server längs vägen /savePayment/index.php eller /tr/index.php. Förmodligen används detta skript för att skicka data från porten till huvudservern, som konsoliderar data från alla sniffers. För att dölja de överförda uppgifterna krypteras all betalningsinformation från offret med hjälp av base64, och sedan sker flera teckenersättningar:

  • tecknet "e" ersätts med ":"
  • "w"-symbolen ersätts med "+"
  • "o"-tecknet ersätts med "%"
  • tecknet "d" ersätts med "#"
  • tecknet "a" ersätts med "-"
  • symbolen "7" ersätts med "^"
  • tecknet "h" ersätts med "_"
  • "T"-symbolen ersätts med "@"
  • tecknet "0" ersätts med "/"
  • "Y"-tecknet ersätts med "*"

Som ett resultat av teckenersättningar kodade med base64 Data kan inte avkodas utan att utföra den omvända konverteringen.

Så här ser ett fragment av snifferkod ut som inte har obfuskerats:

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker

Infrastrukturanalys

I tidiga kampanjer registrerade angripare domännamn som liknade de på legitima shoppingsajter på nätet. Deras domän kan skilja sig från den legitima en efter en symbol eller en annan toppdomän. Registrerade domäner användes för att lagra snifferkod, en länk till vilken var inbäddad i butikskoden.

Denna grupp använde också domännamn som påminner om populära jQuery-plugins (slickjs[.]org för webbplatser som använder plugin slick.js), betalningsportar (sagecdn[.]org för webbplatser som använder betalningssystemet Sage Pay).

Senare började gruppen skapa domäner vars namn inte hade något att göra med butikens domän eller butikens tema.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker
Varje domän motsvarade en webbplats där katalogen skapades /js eller / src. Sniffer-skript lagrades i den här katalogen: en sniffer för varje ny infektion. Sniffaren var inbäddad i webbplatskoden via en direktlänk, men i sällsynta fall modifierade angripare en av webbplatsfilerna och lade till skadlig kod till den.

Kodanalys

Första obfuskeringsalgoritmen

I några upptäckta prover av sniffers av denna familj var koden obfuskerad och innehöll krypterad data som var nödvändig för att sniffern skulle fungera: i synnerhet sniffer gate-adressen, en lista över betalningsformulärfält och i vissa fall koden för en falsk betalningsformulär. I koden inuti funktionen krypterades resurserna med hjälp av XOR av nyckeln som skickades som ett argument till samma funktion.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker
Genom att dekryptera strängen med lämplig nyckel, unik för varje prov, kan du få en sträng som innehåller alla strängar från snifferkoden separerade med ett separatortecken.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker

Andra obfuskeringsalgoritmen

I senare prover av sniffers av denna familj användes en annan obfuskeringsmekanism: i detta fall krypterades data med en självskriven algoritm. En sträng som innehåller krypterad data som behövs för att sniffern ska fungera skickades som ett argument till dekrypteringsfunktionen.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker
Med hjälp av webbläsarkonsolen kan du dekryptera krypterad data och få en array som innehåller snifferresurser.

Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker

Anslutning till tidiga MageCart-attacker

Under analysen av en av de domäner som användes av gruppen som en gateway för att samla in stulen data, fann man att denna domän var värd för en infrastruktur för kreditkortsstöld, identisk med den som användes av Grupp 1, en av de första grupperna, upptäckt av RiskIQ-specialister.

Två filer hittades på värden för CoffeMokko-familjen av sniffers:

  • mage.js — fil som innehåller grupp 1 snifferkod med grindadress js-cdn.link
  • mag.php — PHP-skript som ansvarar för att samla in data som stulits av sniffern

Innehållet i filen mage.js Fyra JavaScript-sniffare som ligger och väntar på dig i nätbutiker
Det fastställdes också att de tidigaste domänerna som användes av gruppen bakom snifferfamiljen CoffeMokko registrerades den 17 maj 2017:

  • länk-js[.]länk
  • info-js[.]länk
  • track-js[.]länk
  • map-js[.]länk
  • smart-js[.]länk

Formatet på dessa domännamn matchar grupp 1-domännamnen som användes i 2016 års attacker.

Utifrån de upptäckta fakta kan man anta att det finns ett samband mellan operatörerna av CoffeMokko sniffers och den kriminella gruppen Grupp 1. Förmodligen kunde CoffeMokkos operatörer ha lånat verktyg och mjukvara från sina föregångare för att stjäla kort. Det är dock mer troligt att den kriminella gruppen bakom användningen av sniffersfamiljen CoffeMokko är samma personer som utförde attackerna i grupp 1. Efter publiceringen av den första rapporten om den kriminella gruppens verksamhet var alla deras domännamn. blockerade och verktygen studerades i detalj och beskrevs. Gruppen tvingades ta en paus, förfina sina interna verktyg och skriva om snifferkod för att fortsätta sina attacker och förbli oupptäckta.

Infrastruktur

Домен Datum för upptäckt/framträdande
länk-js.länk 17.05.2017
info-js.link 17.05.2017
track-js.link 17.05.2017
map-js.link 17.05.2017
smart-js.link 17.05.2017
adorebeauty.org 03.09.2017
security-payment.su 03.09.2017
braincdn.org 04.09.2017
sagecdn.org 04.09.2017
slickjs.org 04.09.2017
oakandfort.org 10.09.2017
citywlnery.org 15.09.2017
dobell.su 04.10.2017
childrensplayclothing.org 31.10.2017
jewsondirect.com 05.11.2017
shop-rnib.org 15.11.2017
closetlondon.org 16.11.2017
misshaus.org 28.11.2017
battery-force.org 01.12.2017
kik-vape.org 01.12.2017
greatfurnituretradingco.org 02.12.2017
etradesupply.org 04.12.2017
replacemyremote.org 04.12.2017
all-about-sneakers.org 05.12.2017
mage-checkout.org 05.12.2017
nililotan.org 07.12.2017
lamoodbighat.net 08.12.2017
walletgear.org 10.12.2017
dahlie.org 12.12.2017
davidsfootwear.org 20.12.2017
blackriverimaging.org 23.12.2017
exrpesso.org 02.01.2018
parks.su 09.01.2018
pmtonline.su 12.01.2018
otocap.org 15.01.2018
christohperward.org 27.01.2018
coffeetea.org 31.01.2018
energycoffe.org 31.01.2018
energytea.org 31.01.2018
teaffe.net 31.01.2018
adaptivecss.org 01.03.2018
coffemokko.com 01.03.2018
londontea.net 01.03.2018
ukcoffe.com 01.03.2018
labbe.biz 20.03.2018
batterynart.com 03.04.2018
btosports.net 09.04.2018
chicksaddlery.net 16.04.2018
paypaypay.org 11.05.2018
ar500arnor.com 26.05.2018
authorizecdn.com 28.05.2018
slickmin.com 28.05.2018
bannerbuzz.info 03.06.2018
kandypens.net 08.06.2018
mylrendyphone.com 15.06.2018
freshchat.info 01.07.2018
3lift.org 02.07.2018
abtasty.net 02.07.2018
mechat.info 02.07.2018
zoplm.com 02.07.2018
zapaljs.com 02.09.2018
foodandcot.com 15.09.2018
freshdepor.com 15.09.2018
swappastore.com 15.09.2018
verywellfitnesse.com 15.09.2018
elegrina.com 18.11.2018
majsurplus.com 19.11.2018
top5value.com 19.11.2018

Källa: will.com

Lägg en kommentar