
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.

«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 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.
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.

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.

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 URL | Betalingssystem |
|---|---|
| Authorize.Net | |
| Cardsave | |
| Authorize.Net | |
| Authorize.Net | |
| eWAY Rapid | |
| Authorize.Net | |
| Adyen | |
| USAePay | |
| Authorize.Net | |
| USAePay | |
| Authorize.Net | |
| Moneris | |
| USAePay | |
| PayPal | |
| Sage Pay | |
| Verisign | |
| PayPal | |
| Stripe | |
| Realex | |
| PayPal | |
| LinkPoint | |
| PayPal | |
| PayPal | |
| DataCash | |
| PayPal | |
| Authorize.Net | |
| Authorize.Net | |
| Authorize.Net | |
| Authorize.Net | |
| Verisign | |
| Authorize.Net | |
| Moneris | |
| Sage Pay | |
| USAePay | |
| Authorize.Net | |
| Authorize.Net | |
| ANZ eGate | |
| Authorize.Net | |
| Moneris | |
| Sage Pay | |
| Sage Pay | |
| Chase Paymentech | |
| Authorize.Net | |
| Adyen | |
| PsiGate | |
| CyberSource | |
| ANZ eGate | |
| Realex | |
| USAePay | |
| Authorize.Net | |
| Authorize.Net | |
| ANZ eGate | |
| PayPal | |
| PayPal | |
| Realex | |
| Sage Pay | |
| PayPal | |
| Verisign | |
| Authorize.Net | |
| Verisign | |
| Authorize.Net | |
| ANZ eGate | |
| PayPal | |
| CyberSource | |
| Authorize.Net | |
| Sage Pay | |
| Realex | |
| CyberSource | |
| PayPal | |
| PayPal | |
| PayPal | |
| Verisign | |
| eWAY Rapid | |
| Sage Pay | |
| Sage Pay | |
| Verisign | |
| Authorize.Net | |
| Authorize.Net | |
| First Data Global Gateway | |
| Authorize.Net | |
| Authorize.Net | |
| Moneris | |
| Authorize.Net | |
| PayPal | |
| Verisign | |
| USAePay | |
| USAePay | |
| Authorize.Net | |
| Verisign | |
| PayPal | |
| Authorize.Net | |
| Stripe | |
| Authorize.Net | |
| eWAY Rapid | |
| Sage Pay | |
| Authorize.Net | |
| Braintree | |
| Braintree | |
| PayPal | |
| Sage Pay | |
| Sage Pay | |
| Authorize.Net | |
| PayPal | |
| Authorize.Net | |
| Verisign | |
| PayPal | |
| Authorize.Net | |
| Stripe | |
| Authorize.Net | |
| eWAY Rapid | |
| Sage Pay | |
| Authorize.Net | |
| Braintree | |
| PayPal | |
| Sage Pay | |
| Sage Pay | |
| Authorize.Net | |
| PayPal | |
| Authorize.Net | |
| Verisign | |
| Authorize.Net | |
| Authorize.Net | |
| Authorize.Net | |
| Authorize.Net | |
| Sage Pay | |
| Sage Pay | |
| Westpac PayWay | |
| PayFort | |
| PayPal | |
| Authorize.Net | |
| Stripe | |
| First Data Global Gateway | |
| PsiGate | |
| Authorize.Net | |
| Authorize.Net | |
| Moneris | |
| Authorize.Net | |
| Sage Pay | |
| 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 | |
| Sage Pay | |
| Verisign | |
| Authorize.Net | |
| PayPal | |
| PayFort | |
| CyberSource | |
| PayPal Payflow Pro | |
| Authorize.Net | |
| Authorize.Net | |
| Verisign | |
| Authorize.Net | |
| Authorize.Net | |
| Sage Pay | |
| Authorize.Net | |
| Stripe | |
| Authorize.Net | |
| Authorize.Net | |
| Verisign | |
| PayPal | |
| Authorize.Net | |
| Authorize.Net | |
| Sage Pay | |
| Authorize.Net | |
| Authorize.Net | |
| PayPal | |
| Flint | |
| PayPal | |
| Sage Pay | |
| Verisign | |
| Authorize.Net | |
| Authorize.Net | |
| Stripe | |
| Fat Zebra | |
| Sage Pay | |
| Authorize.Net | |
| First Data Global Gateway | |
| Authorize.Net | |
| eWAY Rapid | |
| Adyen | |
| PayPal | |
| QuickBooks Merchant Services | |
| Verisign | |
| Sage Pay | |
| Verisign | |
| Authorize.Net | |
| Authorize.Net | |
| Sage Pay | |
| Authorize.Net | |
| eWAY Rapid | |
| Authorize.Net | |
| ANZ eGate | |
| PayPal | |
| CyberSource | |
| Authorize.Net | |
| Sage Pay | |
| Realex | |
| CyberSource | |
| PayPal | |
| PayPal | |
| PayPal | |
| Verisign | |
| eWAY Rapid | |
| Sage Pay | |
| Sage Pay | |
| Verisign | |
| Authorize.Net | |
| Authorize.Net | |
| First Data Global Gateway | |
| Authorize.Net | |
| Authorize.Net | |
| Moneris | |
| Authorize.Net | |
| PayPal |
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.

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.

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.

Derefter søgte snifferen efter mere end 15 forskellige præfikser, der svarede til forskellige betalingssystemer og moduler til online betalinger.

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.

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 til automatisering af obfuskeringsprocessen for sniffernes kode.
![]()
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.

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.

Infrastruktur
| Domæne | Dato for opdagelse/forekomst |
|---|---|
| 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 |
| 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-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.

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.

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.


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.

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æne | Dato for opdagelse/forekomst |
|---|---|
| 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 |
| analytic.to | 04.12.2018 |
| google-analytics.to | 06.12.2018 |
| google-analytics.cm | 28.12.2018 |
| analytic.is | 28.12.2018 |
| googlc-analytics.cm | 17.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.

Senere blev der opdaget en pakket version af snifferen, der bruger en anden gateway – records.nstatistics[.]com/records.php.

Ifølge Willem de Groot, den samme vært blev brugt i snifferen, der blev indsat på , 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.

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: kan indsætte ondsindet kode i core_config_data ved udnyttelse af CVE-2016-4010, udnytter en RCE-sårbarhed i plugins til CMS Magento, hvilket tillader udførelse af vilkårlig kode på den sårbare webserver.

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
| Script | Betalingsgateway |
|---|---|
| [.]pw/mjs_special/visiondirect.co.uk.js | //request.payrightnow[.]cf/checkpayment.php |
| [.]pw/mjs_special/topdierenshop.nl.js | //request.payrightnow[.]cf/alldata.php |
| [.]pw/mjs_special/tiendalenovo.es.js | //request.payrightnow[.]cf/alldata.php |
| [.]pw/mjs_special/pro-bolt.com.js | //request.payrightnow[.]cf/alldata.php |
| [.]pw/mjs_special/plae.co.js | //request.payrightnow[.]cf/alldata.php |
| [.]pw/mjs_special/ottolenghi.co.uk.js | //request.payrightnow[.]cf/alldata.php |
| [.]pw/mjs_special/oldtimecandy.com.js | //request.payrightnow[.]cf/checkpayment.php |
| [.]pw/mjs_special/mylook.ee.js | //cdn.illum[.]pw/records.php |
| [.]pw/mjs_special/luluandsky.com.js | //request.payrightnow[.]cf/checkpayment.php |
| [.]pw/mjs_special/julep.com.js | //cdn.illum[.]pw/records.php |
| [.]pw/mjs_special/gymcompany.es.js | //request.payrightnow[.]cf/alldata.php |
| [.]pw/mjs_special/grotekadoshop.nl.js | //request.payrightnow[.]cf/alldata.php |
| [.]pw/mjs_special/fushi.co.uk.js | //request.payrightnow[.]cf/checkpayment.php |
| [.]pw/mjs_special/fareastflora.com.js | //request.payrightnow[.]cf/checkpayment.php |
| [.]pw/mjs_special/compuindia.com.js | //request.payrightnow[.]cf/alldata.php |
| [.]pw/mjs/segapay_standart.js | //cdn.illum[.]pw/records.php |
| [.]pw/mjs/segapay_onpage.js | //cdn.illum[.]pw/records.php |
| [.]pw/mjs/replace_standart.js | //request.payrightnow[.]cf/checkpayment.php |
| [.]pw/mjs/all_inputs.js | //cdn.illum[.]pw/records.php |
| [.]pw/mjs/add_inputs_standart.js | //request.payrightnow[.]cf/checkpayment.php |
| [.]pw/magento/payment_standart.js | //cdn.illum[.]pw/records.php |
| [.]pw/magento/payment_redirect.js | //payrightnow[.]cf/?payment= |
| [.]pw/magento/payment_redcrypt.js | //payrightnow[.]cf/?payment= |
| [.]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.

Det følgende billede viser et eksempel på en falsk betalingsformular fra PayPal, som angribere har brugt til at infiltrere websteder med denne betalingsmetode.

Infrastruktur
| Domæne | Dato for opdagelse/forekomst |
|---|---|
| cdn.illum.pw | 27/11/2016 |
| records.nstatistics.com | 06/09/2018 |
| request.payrightnow.cf | 25/05/2018 |
| paymentnow.tk | 16/07/2017 |
| payment-line.tk | 01/03/2018 |
| paymentpal.cf | 04/09/2017 |
| requestnet.tk | 28/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.

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.

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.

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:

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.

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.

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.

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.

Ved hjælp af browserens konsol kan man dekryptere de krypterede data og få et array, der indeholder snifferens ressourcer.

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, 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 
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æne | Dato for opdagelse/forekomst |
|---|---|
| link-js.link | 17.05.2017 |
| info-js.link | 17.05.2017 |
| track-js.link | 17.05.2017 |
| map-js.link | 17.05.2017 |
| smart-js.link | 17.05.2017 |
| 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 |
| childsplayclothing.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 |
| lamoodbighats.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 |
| ottocap.org | 15.01.2018 |
| christohperward.org | 27.01.2018 |
| coffetea.org | 31.01.2018 |
| energycoffe.org | 31.01.2018 |
| energytea.org | 31.01.2018 |
| teacoffe.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 |
Kilde: habr.com
