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.
"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
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.
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.
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 |
---|---|
|
Authorize.Net |
Cardsave | |
|
Authorize.Net |
Authorize.Net | |
|
eWAY Snabb |
Authorize.Net | |
Adyen | |
|
USAePay |
Authorize.Net | |
USAePay | |
|
Authorize.Net |
Moneris | |
USAePay | |
PayPal | |
SagePay | |
verisign | |
PayPal | |
Rand | |
|
Realex |
PayPal | |
LinkPoint | |
PayPal | |
PayPal | |
Datacash | |
|
PayPal |
|
Authorize.Net |
|
Authorize.Net |
Authorize.Net | |
Authorize.Net | |
|
verisign |
|
Authorize.Net |
Moneris | |
|
SagePay |
|
USAePay |
|
Authorize.Net |
|
Authorize.Net |
|
ANZ eGate |
|
Authorize.Net |
|
Moneris |
|
SagePay |
SagePay | |
|
Chase Paymentech |
|
Authorize.Net |
|
Adyen |
PsiGate | |
Cyberkälla | |
ANZ eGate | |
Realex | |
|
USAePay |
|
Authorize.Net |
|
Authorize.Net |
|
ANZ eGate |
|
PayPal |
|
PayPal |
Realex | |
|
SagePay |
|
PayPal |
|
verisign |
Authorize.Net | |
|
verisign |
Authorize.Net | |
|
ANZ eGate |
PayPal | |
Cyberkälla | |
|
Authorize.Net |
|
SagePay |
Realex | |
|
Cyberkälla |
PayPal | |
PayPal | |
|
PayPal |
|
verisign |
|
eWAY Snabb |
|
SagePay |
SagePay | |
|
verisign |
Authorize.Net | |
Authorize.Net | |
|
Första Data Global Gateway |
Authorize.Net | |
Authorize.Net | |
Moneris | |
|
Authorize.Net |
|
PayPal |
|
verisign |
|
USAePay |
USAePay | |
Authorize.Net | |
verisign | |
PayPal | |
|
Authorize.Net |
Rand | |
|
Authorize.Net |
eWAY Snabb | |
|
SagePay |
Authorize.Net | |
|
Braintree |
|
Braintree |
|
PayPal |
|
SagePay |
|
SagePay |
|
Authorize.Net |
|
PayPal |
|
Authorize.Net |
verisign | |
|
PayPal |
|
Authorize.Net |
|
Rand |
|
Authorize.Net |
eWAY Snabb | |
SagePay | |
|
Authorize.Net |
Braintree | |
|
PayPal |
|
SagePay |
SagePay | |
|
Authorize.Net |
PayPal | |
Authorize.Net | |
|
verisign |
|
Authorize.Net |
|
Authorize.Net |
|
Authorize.Net |
|
Authorize.Net |
|
SagePay |
SagePay | |
|
Westpac PayWay |
|
PayFort |
|
PayPal |
|
Authorize.Net |
|
Rand |
|
Första Data Global Gateway |
|
PsiGate |
Authorize.Net | |
Authorize.Net | |
|
Moneris |
|
Authorize.Net |
SagePay | |
|
verisign |
Moneris | |
PayPal | |
|
LinkPoint |
|
Westpac PayWay |
Authorize.Net | |
|
Moneris |
|
PayPal |
Adyen | |
PayPal | |
Authorize.Net | |
USAePay | |
EBizCharge | |
|
Authorize.Net |
|
verisign |
verisign | |
Authorize.Net | |
|
PayPal |
|
Moneris |
Authorize.Net | |
|
PayPal |
PayPal | |
Westpac PayWay | |
Authorize.Net | |
|
Authorize.Net |
SagePay | |
|
verisign |
|
Authorize.Net |
|
PayPal |
|
PayFort |
Cyberkälla | |
PayPal Payflow Pro | |
|
Authorize.Net |
|
Authorize.Net |
verisign | |
|
Authorize.Net |
|
Authorize.Net |
SagePay | |
Authorize.Net | |
|
Rand |
|
Authorize.Net |
Authorize.Net | |
verisign | |
|
PayPal |
Authorize.Net | |
|
Authorize.Net |
SagePay | |
|
Authorize.Net |
|
Authorize.Net |
|
PayPal |
|
Flint |
|
PayPal |
SagePay | |
verisign | |
|
Authorize.Net |
|
Authorize.Net |
|
Rand |
|
Fet zebra |
SagePay | |
|
Authorize.Net |
Första Data Global Gateway | |
|
Authorize.Net |
|
eWAY Snabb |
Adyen | |
|
PayPal |
QuickBooks säljtjänster | |
verisign | |
|
SagePay |
verisign | |
|
Authorize.Net |
|
Authorize.Net |
SagePay | |
|
Authorize.Net |
|
eWAY Snabb |
Authorize.Net | |
|
ANZ eGate |
|
PayPal |
Cyberkälla | |
|
Authorize.Net |
SagePay | |
|
Realex |
Cyberkälla | |
|
PayPal |
|
PayPal |
|
PayPal |
|
verisign |
eWAY Snabb | |
|
SagePay |
|
SagePay |
|
verisign |
Authorize.Net | |
|
Authorize.Net |
|
Första Data Global Gateway |
Authorize.Net | |
Authorize.Net | |
|
Moneris |
|
Authorize.Net |
|
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.
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.
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.
Sniffaren sökte sedan över 15 olika prefix som motsvarar olika betalningssystem och onlinebetalningsmoduler.
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.
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
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.
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.
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.
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.
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.
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.
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.
Senare upptäcktes en paketerad version av sniffern som använder en annan grind - records.nstatistics[.]com/records.php.
Enligt
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.
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:
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 |
---|---|
|
//request.payrightnow[.]cf/checkpayment.php |
|
//request.payrightnow[.]cf/alldata.php |
|
//request.payrightnow[.]cf/alldata.php |
|
//request.payrightnow[.]cf/alldata.php |
|
//request.payrightnow[.]cf/alldata.php |
|
//request.payrightnow[.]cf/alldata.php |
|
//request.payrightnow[.]cf/checkpayment.php |
|
//cdn.illum[.]pw/records.php |
|
//request.payrightnow[.]cf/checkpayment.php |
|
//cdn.illum[.]pw/records.php |
|
//request.payrightnow[.]cf/alldata.php |
|
//request.payrightnow[.]cf/alldata.php |
//request.payrightnow[.]cf/checkpayment.php | |
|
//request.payrightnow[.]cf/checkpayment.php |
|
//request.payrightnow[.]cf/alldata.php |
|
//cdn.illum[.]pw/records.php |
|
//cdn.illum[.]pw/records.php |
|
//request.payrightnow[.]cf/checkpayment.php |
|
//cdn.illum[.]pw/records.php |
//request.payrightnow[.]cf/checkpayment.php | |
|
//cdn.illum[.]pw/records.php |
//payrightnow[.]cf/?payment= | |
|
//payrightnow[.]cf/?payment= |
|
//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.
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.
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.
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.
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.
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:
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.
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.
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.
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.
Med hjälp av webbläsarkonsolen kan du dekryptera krypterad data och få en array som innehåller snifferresurser.
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,
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
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