
Fast jeder von uns nutzt Online-Shops, was bedeutet, dass wir früher oder später das Risiko eingehen, Opfer von JavaScript-Sniffern zu werden — einem speziellen Code, den Kriminelle in Websites einschleusen, um Daten von Kreditkarten, Adressen, Benutzernamen und Passwörtern zu stehlen.
Bereits fast 400.000 Nutzer der Website und der mobilen App der British Airways sind von Sniffern betroffen, ebenso wie Besucher der britischen Website des Sportgiganten FILA und der amerikanischen Ticketvertriebsgesellschaft Ticketmaster. PayPal, Chase Paymenttech, USAePay, Moneris — diese und viele andere Zahlungssysteme wurden infiziert.
Der Analyst der Threat Intelligence Group-IB, Viktor Okorokov, erklärt, wie Sniffer in den Code von Websites eindringen und Zahlungsdaten stehlen, sowie welche CRM-Systeme sie angreifen.

„Verborgene Bedrohung“
Es stellte sich heraus, dass JS-Sniffer lange Zeit im Fokus der Antivirenanalytiker verborgen blieben und Banken sowie Zahlungssysteme sie nicht als ernsthafte Bedrohung wahrnahmen. Und das völlig zu Unrecht. Experten von Group-IB 2440 kompromittierte Online-Shops, deren Besucher insgesamt etwa 1,5 Millionen Menschen pro Tag ausmachen, waren einem Risiko ausgesetzt. Zu den Betroffenen gehören nicht nur die Nutzer, sondern auch die Online-Shops, Zahlungssysteme und Banken, die kompromittierte Karten ausgegeben haben.
Group-IB war die erste Untersuchung des Darknet-Markts für Sniffer, deren Infrastruktur und Monetarisierungsstrategien den Erstellern Millionen von Dollar einbrachten. Wir haben 38 Sniffer-Familien identifiziert, von denen nur 12 zuvor den Forschern bekannt waren.
Wir konzentrieren uns detailliert auf vier Sniffer-Familien, die im Rahmen der Studie untersucht wurden.
Familie ReactGet
Die ReactGet-Sniffer werden verwendet, um Bankkartendaten auf Websites von Online-Shops zu stehlen. Der Sniffer kann mit einer Vielzahl von Zahlungssystemen arbeiten, die auf der Website verwendet werden: Ein Parameterwert entspricht einem Zahlungssystem, während unterschiedliche entdeckte Versionen des Sniffers dazu verwendet werden können, Zugangsdaten sowie Bankkartendaten aus Zahlungsformularen mehrerer Zahlungssysteme zu stehlen, weshalb er als universeller Sniffer bezeichnet wird. Es wurde festgestellt, dass Angreifer in einigen Fällen Phishing-Attacken auf Administratoren von Online-Shops durchführen, um Zugang zum Administrationspanel der Website zu erhalten.
Die Kampagne, die diese Sniffer-Familie einsetzt, begann im Mai 2017 und richtete sich gegen Websites, die von CMS und Plattformen wie Magento, Bigcommerce und Shopify betrieben werden.
Wie ReactGet in den Code eines Online-Shops integriert wird
Neben der "klassischen" Implementierung des Scripts über den Link verwenden Sniffer-Operatoren der ReactGet-Familie eine spezielle Technik: Mithilfe von JavaScript wird überprüft, ob die aktuelle Adresse, auf der sich der Benutzer befindet, bestimmten Kriterien entspricht. Der schadhafter Code wird nur dann ausgeführt, wenn die aktuelle URL-Adresszeile die entsprechende Unterzeichenfolge enthält. checkout oder onestepcheckout, onepage/, out/onepag, checkout/one, ckout/one. Auf diese Weise wird der Sniffer-Code genau zu dem Zeitpunkt ausgeführt, an dem der Benutzer zur Zahlung seiner Einkäufe übergeht und Zahlungsinformationen in das Formular auf der Website eingibt.

Dieser Sniffer verwendet eine nicht standardisierte Technik. Die Zahlungs- und persönlichen Daten des Opfers werden gesammelt, codiert mit base64, und die resultierende Zeichenfolge wird dann als Parameter für die Anfrage an die Website der Angreifer verwendet. Häufig wird der Pfad zum Gateway als JavaScript-Datei imitiert, beispielsweise resp.js, data.js und so weiter, aber es werden auch Links zu Bilddateien verwendet, GIF und JPG. Das Besondere daran ist, dass der Sniffer ein 1x1 Pixel großes Bildobjekt erstellt und den zuvor erhaltenen Link als Parameter verwendet. src Bilder. Das heißt, für den Benutzer wird eine solche Anfrage im Datenverkehr wie eine Anfrage nach einem normalen Bild aussehen. Eine ähnliche Technik wurde in den Sniffern der ImageID-Familie verwendet. Darüber hinaus kommt die Technik mit einem Bild von 1 auf 1 Pixel in vielen legitimen Online-Analysetools zum Einsatz, was ebenfalls zu Verwirrung beim Benutzer führen kann.

Versionsanalyse
Die Analyse aktiver Domains, die von den Sniffer-Betreibern ReactGet verwendet werden, hat viele verschiedene Versionen dieser Sniffer-Familie zutage gefördert. Die Versionen unterscheiden sich durch das Vorhandensein oder Fehlen von Obfuskation, und jeder Sniffer ist für ein bestimmtes Zahlungssystem vorgesehen, das Kartenzahlungen für Online-Shops abwickelt. Durch die Anpassung des Parameters, der der Versionsnummer entspricht, hat die Gruppe Group-IB eine vollständige Liste der verfügbaren Sniffer-Variationen erstellt und anhand der Bezeichnungen der Formularfelder, nach denen jeder Sniffer im Seitenquellcode sucht, die Zahlungssysteme bestimmt, auf die der Sniffer abzielt.
Liste der Sniffer und der entsprechenden Zahlungssysteme
| Sniffer-URL | Zahlungssystem |
|---|---|
| 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 |
Passwort-Sniffer
Ein Vorteil von JavaScript-Sniffern, die auf der Client-Seite der Website arbeiten, ist ihre Vielseitigkeit: Eingebetteter schadhafter Code kann Daten jeglicher Art stehlen, seien es Zahlungsdaten oder Anmeldeinformationen für Benutzerkonten. Experten von Group-IB haben ein Sniffer-Muster entdeckt, das zur Familie ReactGet gehört und zum Stehlen von E-Mail-Adressen und Passwörtern von Benutzern der Website gedacht ist.

Kreuzung mit dem Sniffer ImageID
Bei der Analyse eines infizierten Shops wurde festgestellt, dass seine Website zweimal infiziert wurde: Neben dem Schadcode des Sniffers der Familie ReactGet wurde auch Code des Sniffers der Familie ImageID gefunden. Diese Überschneidung könnte darauf hindeuten, dass die Betreiber hinter der Verwendung beider Sniffer ähnliche Techniken zum Einfügen von Schadcode anwenden.

Universeller Sniffer
Bei der Analyse eines der Domainnamen, die zur Infrastruktur der ReactGet-Sniffer gehören, wurde festgestellt, dass derselbe Benutzer drei weitere Domainnamen registriert hatte. Diese drei Domains ahmten die Domains tatsächlich bestehender Websites nach und wurden zuvor zur Hosting von Sniffern verwendet. Bei der Analyse des Codes von drei legitimen Websites wurde ein unbekannter Sniffer entdeckt, dessen weitere Untersuchung ergab, dass es sich um eine verbesserte Version des ReactGet-Sniffers handelt. Alle zuvor verfolgten Versionen dieser Sniffer-Familie waren auf eine bestimmte Zahlungssystem anzuwenden, was bedeutete, dass für jedes Zahlungssystem eine spezielle Version des Sniffers erforderlich war. In diesem Fall wurde jedoch eine universelle Version des Sniffers entdeckt, die in der Lage war, Informationen aus Formularen zu stehlen, die 15 verschiedene Zahlungssysteme und Module von E-Commerce-Websites für Online-Zahlungen betreffen.
Zu Beginn suchte der Sniffer nach grundlegenden Formularfeldern, die persönliche Informationen des Opfers enthalten: vollständiger Name, physische Adresse, Telefonnummer.

Anschließend suchte der Sniffer in mehr als 15 verschiedenen Präfixen, die verschiedenen Zahlungssystemen und Modulen für Online-Zahlungen entsprechen.

Daraufhin wurden die persönlichen Daten des Opfers sowie Zahlungsinformationen zusammengeführt und an eine vom Angreifer kontrollierte Webseite gesendet: In diesem speziellen Fall wurden zwei Versionen des universellen Sniffers ReactGet entdeckt, die auf zwei verschiedenen gehackten Webseiten gehostet wurden. Beide Versionen sendeten jedoch die gestohlenen Daten an dieselbe gehackte Seite. zoobashop.com.

Die Analyse der Präfixe, die vom Sniffer verwendet wurden, um Felder zu finden, die die Zahlungsinformationen des Opfers enthielten, ergab, dass dieses Sniffer-Muster auf die folgenden Zahlungssysteme abzielte:
- Authorize.Net
- Verisign
- First Data
- USAePay
- Stripe
- PayPal
- ANZ eGate
- Braintree
- DataCash (MasterCard)
- Realex Payments
- PsiGate
- Heartland Payment Systems
Welche Werkzeuge werden zum Stehlen von Zahlungsinformationen eingesetzt
Das erste Tool, das während der Analyse der Infrastruktur der Angreifer entdeckt wurde, dient zur Obfuskation von schädlichen Skripten, die für den Diebstahl von Bankkarten verantwortlich sind. Auf einem der Hosts der Angreifer wurde ein Bash-Skript gefunden, das die CLI des Projekts verwendet. zur Automatisierung der Obfuskation von Sniffer-Code.
![]()
Das zweite entdeckte Werkzeug dient der Generierung von Code, der für das Laden des Hauptsniffers verantwortlich ist. Dieses Werkzeug erzeugt JavaScript-Code, der überprüft, ob sich der Benutzer auf der Zahlungsseite befindet, indem es in der aktuellen Benutzeradresse nach den Zeichenfolgen sucht checkout, Warenkorb und so weiter, und wenn das Ergebnis positiv ist, lädt der Code den Hauptsniffer vom Server des Angreifers. Um die schädlichen Aktivitäten zu verbergen, sind alle Zeilen, einschließlich der Testzeilen zur Feststellung der Zahlungsseite sowie der Link zum Sniffer, mithilfe von base64.

Phishing-Angriffen
Im Rahmen der Analyse der Netzwerk-Infrastruktur der Angreifer wurde festgestellt, dass Kriminelle häufig Phishing einsetzen, um Zugang zum Administrationspanel des Ziel-Onlineshops zu erhalten. Die Angreifer registrieren eine Domain, die der des Shops ähnlich sieht, und richten darauf eine gefälschte Anmeldeseite für das Magento-Administrationspanel ein. Im Erfolgsfall erhalten die Angreifer Zugang zum CMS Magento-Administrationspanel, was ihnen ermöglicht, die Komponenten der Website zu bearbeiten und einen Sniffer zur Stehlung von Kreditkartendaten zu integrieren.

Infrastruktur
| Domain | Entdeckungs-/Erscheinungsdatum |
|---|---|
| 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 Familie
Diese Familie von Sniffern wird verwendet, um die Kreditkartendaten von Kunden in Online-Shops zu stehlen. Der erste von der Gruppe verwendete Domainname wurde im April 2016 registriert, was auf den Beginn der Aktivitäten der Gruppe Mitte 2016 hindeutet.
In der aktuellen Kampagne verwendet die Gruppe Domainnamen, die echte Dienstleistungen wie Google Analytics und jQuery nachahmen, und tarnt die Aktivität der Sniffer mit legitimen Skripten und ähnlichen Domainnamen. Angriffe richteten sich gegen Websites, die auf der CMS Magento basieren.
Wie G-Analytics in den Code eines Online-Shops implementiert wird
Ein charakteristisches Merkmal dieser Familie ist die Verwendung verschiedener Methoden zur Entwendung von Zahlungsinformationen der Nutzer. Neben der klassischen Implementierung von JavaScript-Code auf der Client-Seite hat die kriminelle Gruppe auch die Technik der Code-Integration in den Server-Bereich der Website angewandt, konkret in die PHP-Skripte, die die vom Nutzer eingegebenen Daten verarbeiten. Diese Technik ist gefährlich, da sie die Entdeckung des schädlichen Codes durch externe Forscher erschwert. Spezialisten von Group-IB entdeckten eine Version des Sniffers, die in den PHP-Code der Website integriert wurde und als Gateway die Domain verwendet, dittm.org.

Außerdem wurde eine frühere Version des Sniffers entdeckt, die denselben Domainnamen zum Sammeln gestohlener Daten verwendet, dittm.org, jedoch ist diese Version für die Installation auf der Client-Seite des Online-Shops vorgesehen.

Später änderte die Gruppe ihre Taktik und begann, mehr Wert auf die Verschleierung schädlicher Aktivitäten und Tarnung zu legen.
Anfang 2017 begann die Gruppe, die Domain jquery-js.com, zu verwenden, die sich als CDN für jQuery tarnt: beim Besuch der Website werden die Nutzer auf die legitime Seite jquery.com.
Mitte 2018 nahm die Gruppe die Domain g-analytics.com in Betrieb und begann, die Aktivitäten des Sniffers als legitimen Google Analytics-Dienst auszugeben.


Versionsanalyse
Im Rahmen der Analyse der Domains, die zur Speicherung des Sniffer-Codes verwendet werden, wurde festgestellt, dass die Website eine Vielzahl von Versionen aufweist, die sich durch das Vorhandensein von Obfuskation sowie durch das Vorhandensein oder Fehlen von unerreichbarem Code unterscheiden, der zur Ablenkung und zum Verstecken des schädlichen Codes hinzugefügt wurde.
Insgesamt wurden auf der Website jquery-js.com sechs Versionen von Sniffern identifiziert. Die gestohlenen Daten senden diese Sniffer an eine Adresse, die sich auf derselben Website befindet wie der Sniffer selbst: 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
Eine spätere Domain g-analytics.com, die die Gruppe seit Mitte 2018 in ihren Angriffen verwendet, dient als Speicher für eine größere Anzahl an Sniffern. Insgesamt wurden 16 verschiedene Versionen des Sniffers gefunden. In diesem Fall war das Gateway für den Versand der gestohlenen Daten als Link zu einem Bild im Format maskiert. 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
Monetarisierung gestohlener Daten
Eine kriminelle Gruppe monetarisiert gestohlene Daten, indem sie Karten über einen eigens eingerichteten Untergrundshop verkauft, der Dienstleistungen für Carder anbietet. Die Analyse der von den Angreifern verwendeten Domains hat ergeben, dass google-analytics.cm von demselben Benutzer registriert wurde, der auch die Domain cardz.vcbesitzt. Die Domain cardz.vc gehört zu dem Shop für gestohlene Bankkarten Cardsurfs (Flysurfs), der insbesondere während der aktiven Zeit des Untergrundmarktes AlphaBay als Verkaufsplattform für Bankkarten, die mit einem Sniffer gestohlen wurden, an Popularität gewann.

Bei der Analyse der Domain analytic.is, die sich auf demselben Server befindet wie die Domains, die von Sniffern zum Sammeln gestohlener Daten verwendet werden, entdeckten die Spezialisten von Group-IB eine Datei mit Logs eines Cookie-Stealers, die anscheinend später vom Entwickler aufgegeben wurde. Einer der Einträge im Log enthielt die Domain iozoz.com, die zuvor in einem der Sniffer verwendet wurde, die 2016 aktiv waren. Es wird vermutet, dass diese Domain zuvor von einem Angreifer genutzt wurde, um mit einem Sniffer gestohlene Karten zu sammeln. Diese Domain wurde auf die E-Mail-Adresse kts241@gmail.com, der ebenfalls zur Registrierung von Domains verwendet wurde cardz.su und cardz.vc, die sich auf den Kartenladen Cardsurfs beziehen.
Aufgrund der erhaltenen Daten kann die Annahme getroffen werden, dass die G-Analytics-Sniffer-Familie und der Schwarzmarkt für Bankkarten Cardsurfs von denselben Personen betrieben werden, und dass der Laden zur Veräußertung von Bankkarten genutzt wird, die mittels Sniffer gestohlen wurden.
Infrastruktur
| Domain | Entdeckungs-/Erscheinungsdatum |
|---|---|
| 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 |
Die Illum-Familie
Illum ist eine Sniffer-Familie, die für Angriffe auf Online-Shops eingesetzt wird, die auf der CMS Magento basieren. Neben der Einspeisung von Schadcode verwenden die Betreiber dieses Sniffers auch die Implementierung vollständiger gefälschter Zahlungsformulare, die Daten an kontrollierte Gateways der Angreifer senden.
Bei der Analyse der Netzwerkstruktur, die von den Betreibern dieses Sniffers verwendet wird, wurde eine große Menge an Schadensskripten, Exploits, gefälschten Zahlungsformularen sowie eine Sammlung von Beispielen mit schädlichen Sniffern von Konkurrenten festgestellt. Angesichts der Informationen über die Entstehungsdaten der von der Gruppe verwendeten Domainnamen kann man davon ausgehen, dass der Beginn der Kampagne Ende 2016 liegt.
Wie Illum in den Code des Online-Shops integriert wird
Die ersten entdeckten Versionen des Sniffers wurden direkt in den Code der kompromittierten Website eingefügt. Die gestohlenen Daten wurden an die Adresse cdn.illum[.]pw/records.php, und der Gateway wurde durch base64.

später wurde eine gepackte Version des Sniffers entdeckt, die einen anderen Gateway verwendete — records.nstatistics[.]com/records.php.

Laut Willem de Groot wurde derselbe Host verwendet, der in dem Sniffer eingesetzt wurde, der auf , das einer deutschen politischen Partei, der CSU, gehört.
Analyse der Cyberkriminellen-Website
Spezialisten von Group-IB entdeckten und analysierten die Website, die von dieser kriminellen Gruppe zur Speicherung von Werkzeugen und zur Sammlung gestohlener Informationen verwendet wird.

Unter den Tools, die auf den Servern der Angreifer entdeckt wurden, fanden sich Skripte und Exploits zur Erhöhung der Berechtigungen in Linux-Betriebssystemen: beispielsweise das Linux Privilege Escalation Check Script, entwickelt von Mike Czumak, sowie ein Exploit für CVE-2009-1185.
Für Angriffe auf Online-Shops verwendeten die Angreifer zwei Exploits: ist in der Lage, schadhafter Code in core_config_data einzuschleusen, indem er CVE-2016-4010 ausnutzt, nutzt eine RCE-Sicherheitsanfälligkeit in Plugins für das CMS Magento aus, die es ermöglicht, willkürlichen Code auf dem verwundbaren Webserver auszuführen.

Im Rahmen der Serveranalyse wurden auch verschiedene Muster von Sniffern und gefälschten Zahlungsformularen gefunden, die von den Angreifern verwendet wurden, um Zahlungsinformationen von gehackten Websites zu sammeln. Wie aus der folgenden Liste ersichtlich ist, wurden einige Skripte individuell für jede gehackte Website erstellt, während für bestimmte CMS und Zahlungsmethoden universelle Lösungen verwendet wurden. Beispielsweise sind die Skripte segapay_standart.js und segapay_onpage.js für die Integration auf Websites gedacht, die das Zahlungs-Gateway Sage Pay nutzen.
Liste der Skripte für verschiedene Zahlungs-Gateways
| Script | Zahlungs-Gateway |
|---|---|
| [.]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= |
Host paymentnow[.]tk, verwendet als Gate im Skript payment_forminsite.js, wurde erkannt als subjectAltName in mehreren Zertifikaten, die mit dem CloudFlare-Dienst verbunden sind. Darüber hinaus wurde auf dem Host ein Skript gefunden evil.js. Anhand des Skriptnamens könnte es im Rahmen der Ausnutzung von CVE-2016-4010 verwendet worden sein, durch die schadhafter Code in den Footer einer von der CMS Magento betriebenen Website eingefügt werden kann. Als Gate hat dieses Skript den Host verwendet request.requestnet[.]tk, der dasselbe Zertifikat verwendet wie der Host paymentnow[.]tk.
Gefälschte Zahlungsformulare
Im Folgenden zeigt das Bild ein Beispiel für ein Formular zur Eingabe von Kartendaten. Dieses Formular wurde verwendet, um in die Website eines Online-Shops einzudringen und Kartendaten zu stehlen.

Das nächste Bild zeigt ein Beispiel für ein gefälschtes PayPal-Zahlungsformular, das von Angreifern verwendet wurde, um auf Websites mit dieser Zahlungsmethode eingebettet zu werden.

Infrastruktur
| Domain | Entdeckungs-/Erscheinungsdatum |
|---|---|
| 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 Familie
Die CoffeMokko-Sniffer-Familie, die für den Diebstahl von Bankkarten von Online-Shop-Nutzern entwickelt wurde, ist seit mindestens Mai 2017 im Einsatz. Vermutlich wird diese Sniffer-Familie von der kriminellen Gruppe Group 1 betrieben, die 2016 von Experten von RiskIQ beschrieben wurde. Angriffe richteten sich gegen Websites, die mit Content-Management-Systemen wie Magento, OpenCart, WordPress, osCommerce und Shopify betrieben werden.
Wie CoffeMokko in den Code eines Online-Shops integriert wird
Die Betreiber dieser Familie erstellen für jede Infektion einzigartige Sniffer: Die Sniffer-Datei befindet sich im Verzeichnis src oder js auf den Servern der Angreifer. Die Integration in den Website-Code erfolgt über einen direkten Link zum Sniffer.

Im Code des Sniffers sind die Feldnamen der Formulare hartkodiert, aus denen Daten gestohlen werden sollen. Der Sniffer prüft außerdem, ob sich der Benutzer auf der Zahlungsseite befindet, indem er die Liste der Schlüsselwörter mit der aktuellen Adresse des Benutzers abgleicht.

Einige entdeckte Versionen des Sniffers waren obfuskiert und enthielten eine verschlüsselte Zeichenfolge, in der das Hauptressourcenarray gespeichert war: darin waren die Namen der Formularfelder für verschiedene Zahlungssysteme sowie die Adresse des Gateways, an das die gestohlenen Daten gesendet werden sollten.

Die gestohlenen Zahlungsinformationen wurden über den Pfad an ein Script auf dem Server der Angreifer gesendet /savePayment/index.php или /tr/index.php. Es wird angenommen, dass dieses Script dazu dient, die Daten vom Gateway an den Hauptserver zu übertragen, der die Daten von allen Sniffern konsolidiert. Um die übertragenen Daten zu verbergen, werden alle Zahlungsinformationen des Opfers mit Hilfe von base64verschlüsselt, wonach mehrere Zeichenersetzungen stattfinden:
- Das Zeichen „e“ wird durch „:“ ersetzt
- Das Zeichen „w“ wird durch „+“ ersetzt
- Das Zeichen „o“ wird durch „%“ ersetzt
- Das Zeichen „d“ wird durch „#“ ersetzt
- Das Zeichen „a“ wird durch „-“ ersetzt
- Das Zeichen „7“ wird durch „^“ ersetzt
- Das Zeichen „h“ wird durch „_“ ersetzt
- Das Zeichen „T“ wird durch „@“ ersetzt
- Das Zeichen „0“ wird durch „/“ ersetzt
- Das Zeichen „Y“ wird durch „*“ ersetzt
Durch die Zeichenersetzungen ist es mit Hilfe von base64 nicht möglich, die Daten zu dekodieren, ohne eine Umkehrtransformation durchzuführen.
So sieht ein unverschleierter Sniffer-Code aus:

Analyse der Infrastruktur
In früheren Kampagnen registrierten Angreifer domainnamen, die den legitimen Webseiten von Online-Shops ähnlich waren. Ihre Domain konnte sich nur durch ein Zeichen oder eine andere TLD vom legitimen unterscheiden. Die registrierten Domains wurden verwendet, um Sniffer-Code zu speichern, dessen Verweis in den Code des Shops eingebaut wurde.
Diese Gruppe verwendete auch Domainnamen, die an den Namen populärer jQuery-Plugins erinnerten (slickjs[.]org für Seiten, die das Plugin nutzen slick.js), Zahlungsdienstleister (sagecdn[.]org für Seiten, die das Zahlungssystem Sage Pay verwenden).
Später begann die Gruppe, Domains zu erstellen, deren Namen nichts mit der Domain des Shops oder dem Thema des Shops zu tun hatten.

Jeder Domain entsprach eine Webseite, die ein Verzeichnis erstellte /js oder /src. In diesem Verzeichnis wurden die Sniffer-Skripte gespeichert: je ein Sniffer für jede neue Infektion. Der Sniffer wurde über einen direkten Link in den Code der Webseite eingefügt, aber in seltenen Fällen modifizierten die Angreifer eine der Dateien der Webseite und fügten schädlichen Code hinzu.
Codeanalyse
Erster Obfuskationsalgorithmus
In einigen der entdeckten Proben von Sniffern dieser Familie war der Code obfuskiert und enthielt verschlüsselte Daten, die für das Funktionieren des Sniffers erforderlich sind: insbesondere die Adresse des Sniffer-Gateways, eine Liste der Felder des Zahlformulars und in einigen Fällen - den Code des gefälschten Zahlungsformulars. Im Code innerhalb der Funktion wurden die Ressourcen mit Hilfe von XOR mit einem Schlüssel, der als Argument in dieselbe Funktion übergeben wurde, verschlüsselt.

Durch die Entschlüsselung der Zeichenfolge mit dem entsprechenden, für jede Probe einzigartigen Schlüssel kann eine Zeichenfolge erhalten werden, die alle Zeichenfolgen aus dem Sniffer-Code durch ein Trennzeichen enthält.

Zweiter Obfuskationsalgorithmus
In späteren Proben von Sniffern dieser Familie wurde ein anderer Obfuskationsmechanismus verwendet: In diesem Fall wurden die Daten mit Hilfe eines selbstgeschriebenen Algorithmus verschlüsselt. Die Zeichenfolge, die die für den Betrieb des Sniffers notwendigen verschlüsselten Daten enthielt, wurde als Argument der Entschlüsselungsfunktion übergeben.

Mit der Konsole des Browsers können die verschlüsselten Daten entschlüsselt werden, um ein Array zu erhalten, das die Ressourcen des Sniffers enthält.

Verbindung zu frühen MageCart-Attacken
Bei der Analyse einer der von der Gruppe verwendeten Domains, die als Gateway zum Sammeln gestohlener Daten dient, wurde festgestellt, dass auf dieser Domain eine Infrastruktur zum Diebstahl von Kreditkarten eingerichtet wurde, die identisch mit der von Group 1 ist – einer der ersten Gruppen, von den Spezialisten von RiskIQ.
Auf dem Host der CoffeMokko-Sniffer-Familie wurden zwei Dateien gefunden:
- mage.js — eine Datei, die den Sniffer-Code der Gruppe 1 mit dem Gateway-Adresse js-cdn.link
- mag.php enthält – ein PHP-Skript, das für das Sammeln der von dem Sniffer gestohlenen Daten verantwortlich ist.
Содержимое файла mage.js 
Es wurde außerdem festgestellt, dass die frühesten Domains, die von der Gruppe hinter der CoffeMokko-Sniffer-Familie verwendet wurden, am 17. Mai 2017 registriert wurden:
- link-js[.]link
- info-js[.]link
- track-js[.]link
- map-js[.]link
- smart-js[.]link
Das Format dieser Domainnamen entspricht den Domainnamen von Group 1, die in den Angriffen von 2016 verwendet wurden.
Auf Grundlage der entdeckten Fakten lässt sich die Vermutung aufstellen, dass zwischen den Betreibern der Sniffer CoffeMokko und der kriminellen Gruppe Group 1 eine Verbindung besteht. Es ist anzunehmen, dass die Betreiber von CoffeMokko Werkzeuge und Software für die Kartendatenklausel von ihren Vorgängern entliehen haben. Wahrscheinlicher ist jedoch, dass die kriminelle Gruppe, die für den Einsatz der CoffeMokko-Sniffer verantwortlich ist, dieselben Personen sind, die zuvor Angriffe im Rahmen der Aktivitäten von Group 1 durchgeführt haben. Nach der Veröffentlichung des ersten Berichts über die Aktivitäten der Gruppierung wurden alle ihre Domainnamen gesperrt, und ihre Werkzeuge wurden eingehend untersucht und dokumentiert. Die Gruppe sah sich gezwungen, eine Pause einzulegen, um ihre internen Tools zu überarbeiten und den Code der Sniffer neu zu schreiben, um ihre Angriffe fortsetzen und unentdeckt bleiben zu können.
Infrastruktur
| Domain | Entdeckungs-/Erscheinungsdatum |
|---|---|
| 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 |
| sehr geehrte Google Chrome 74 hat das Löschen des Verlaufs verlernt | 15.09.2018 |
| elegrina.com | 18.11.2018 |
| majsurplus.com | 19.11.2018 |
| top5value.com | 19.11.2018 |
Quelle: habr.com
