
Fast jeder von uns nutzt die Dienste von Online-Shops, was bedeutet, dass man früher oder später das Risiko eingeht, Opfer von JavaScript-Sniffern zu werden – einem speziellen Code, den Cyberkriminelle in eine Website einfügen, um Kundendaten wie Kreditkartendaten, Adressen, Benutzernamen und Passwörter zu stehlen.
Bereits fast 400.000 Nutzer der Website und der mobilen App der British Airways wurden von Sniffern betroffen, ebenso wie Besucher der britischen Website des Sportgiganten FILA und des amerikanischen Ticketdistributors 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 einer Website eingebaut werden und Zahlungsinformationen stehlen, sowie welche CRM-Systeme sie angreifen.

„Verborgene Bedrohung“
Es kam so, dass JS-Sniffer lange Zeit außerhalb des Blickfeldes von Antivirus-Analysten blieben und Banken sowie Zahlungssysteme sie nicht als ernsthafte Bedrohung wahrnahmen. Und das vollkommen zu Unrecht. Experten von Group-IB 2440 infizierte Online-Shops, deren Besucher insgesamt etwa 1,5 Millionen pro Tag betrugen, waren dem Risiko einer Kompromittierung ausgesetzt. Unter den Betroffenen sind nicht nur die Nutzer, sondern auch Online-Shops, Zahlungssysteme und Banken, die kompromittierte Karten ausgegeben haben.
Group-IB war die erste Untersuchung des Darknet-Marktes für Sniffer, deren Infrastruktur und Monetarisierung, die den Schöpfern Millionen von Dollar einbringt. Wir haben 38 Sniffer-Familien identifiziert, von denen nur 12 zuvor den Forschern bekannt waren.
Lassen Sie uns ausführlich auf vier Sniffer-Familien eingehen, die im Rahmen der Untersuchung analysiert wurden.
Familie ReactGet
Die Sniffer der Familie ReactGet werden verwendet, um Daten von Kreditkarten auf den Websites von Online-Shops zu stehlen. Der Sniffer kann mit einer Vielzahl von verschiedenen Zahlungssystemen arbeiten, die auf der Website genutzt werden: Ein Wert des Parameters entspricht einem Zahlungssystem, und einzelne entdeckte Versionen des Sniffers können verwendet werden, um Anmeldedaten zu stehlen sowie Kreditkartendaten aus Zahlungsformularen mehrerer Zahlungssysteme gleichzeitig zu stehlen, wie es bei einem sogenannten universellen Sniffer der Fall ist. Es wurde festgestellt, dass in einigen Fällen Angreifer Phishing-Angriffe auf die Administratoren von Online-Shops durchführen, um Zugang zum Administrationsbereich der Website zu erhalten.
Die Kampagne, die dieses Sniffer-Familie anwendet, begann im Mai 2017, und angegriffen wurden Websites, die von CMS und Plattformen wie Magento, Bigcommerce und Shopify verwaltet werden.
Wie ReactGet in den Code von Online-Shops integriert wird
Zusätzlich zur "klassischen" Integration des Skripts über einen Link verwenden die Betreiber der Sniffer der Familie ReactGet eine besondere Technik: Mit Hilfe von JavaScript-Code wird geprüft, ob die aktuelle Adresse, an der sich der Benutzer befindet, bestimmten Kriterien entspricht. Der schädliche Code wird nur ausgeführt, wenn die aktuelle URL-Adresszeile den Substring enthält checkout oder onestepcheckout, onepage/, out/onepag, checkout/one, ckout/one. Damit wird der Sniffer-Code genau zu dem Zeitpunkt ausgeführt, an dem der Benutzer zum Zahlungsvorgang übergeht und die Zahlungsinformationen in das Formular auf der Website eingibt.

Dieser Sniffer verwendet eine unkonventionelle Technik. Die Zahlungs- und persönlichen Daten des Opfers werden zusammen gesammelt, mithilfe von base64, und die erhaltene Zeichenkette wird als Parameter zum Senden einer Anfrage an die Website der Angreifer verwendet. Am häufigsten imitiert der Pfad zum Gate eine JavaScript-Datei, zum Beispiel 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 Bildobjekt mit einer Größe von 1 auf 1 Pixel erstellt und den zuvor erhaltenen Link als Parameter verwendet. src Bilder. Das heißt, für den Benutzer wird eine solche Anfrage im Verkehr wie eine Anfrage nach einem ganz normalen Bild aussehen. Eine ähnliche Technik wurde in den Sniffer-Familien ImageID verwendet. Darüber hinaus wird die Technik mit einem Bild in der Größe 1 mal 1 Pixel in vielen legitimen Skripten der Online-Analyse angewendet, was ebenfalls zur Irreführung des Benutzers führen kann.

Analyse der Versionen
Die Analyse der aktiven Domains, die von den Betreibern der ReactGet-Sniffer verwendet werden, ermöglichte es, viele verschiedene Versionen von Sniffern dieser Familie zu entdecken. Die Versionen unterscheiden sich durch das Vorhandensein oder Fehlen von Obfuskation, und darüber hinaus ist jeder Sniffer für ein bestimmtes Zahlungssystem ausgelegt, das Kartenzahlungen für Online-Shops verarbeitet. Durch das Durchprobieren des Wertes des Parameters, der der Versionsnummer entspricht, erhielten die Spezialisten von Group-IB eine vollständige Liste verfügbarer Variationen von Sniffern und bestimmten anhand der Namen der Formularfelder, die jeder Sniffer im Code der Seite sucht, die Zahlungssysteme, auf die der Sniffer abzielt.
Liste der Sniffer und entsprechender Zahlungssysteme
| URL des Sniffers | 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: Der auf die Website eingefügte Schadcode kann Daten jeglicher Art stehlen, sei es Zahlungsdaten oder Login und Passwort des Benutzerkontos. Die Spezialisten von Group-IB entdeckten ein Muster eines Sniffers, der zur Familie ReactGet gehört und zum Stehlen von E-Mail-Adressen und Passwörtern der Website-Benutzer bestimmt ist.

Überlappung mit dem Sniffer ImageID
Im Zuge der Analyse eines der infizierten Geschäfte wurde festgestellt, dass dessen Website zweimal infiziert wurde: Neben dem Schadcode des Sniffers der Familie ReactGet wurde auch der Code eines Sniffers der Familie ImageID entdeckt. Diese Überlappung könnte ein Indiz dafür sein, dass die Betreiber, die beide Sniffer verwenden, ähnliche Techniken zur Einschleusung von Schadcode anwenden.

Universeller Sniffer
Im Laufe der Analyse eines der Domainnamen, die zur Infrastruktur der Sniffer ReactGet gehören, wurde festgestellt, dass derselbe Benutzer drei weitere Domainnamen registriert hatte. Diese drei Domains ahmten die Domains tatsächlich existierender Websites nach und wurden zuvor zur Platzierung von Sniffern verwendet. Bei der Analyse des Codes von drei legitimen Websites wurde ein unbekannter Sniffer entdeckt, und weitere Analysen zeigten, dass es sich um eine verbesserte Version des Sniffers ReactGet handelte. Alle zuvor verfolgten Versionen der Sniffer dieser Familie zielten auf bestimmte Zahlungssysteme ab, 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 sich auf 15 verschiedene Zahlungssysteme und Module von E-Commerce-Websites für Online-Zahlungen beziehen.
Zu Beginn der Arbeit suchte der Sniffer nach grundlegenden Formularfeldern, die personenbezogene Informationen des Opfers enthielten: vollständiger Name, physische Adresse, Telefonnummer.

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

Darüber hinaus wurden die personenbezogenen Daten des Opfers und die Zahlungsinformationen zusammengeführt und an eine vom Angreifer kontrollierte Website gesendet: In diesem konkreten Fall wurden zwei Versionen des universellen Sniffers ReactGet gefunden, die sich auf zwei verschiedenen gehackten Websites befanden. Beide Versionen sendeten jedoch die gestohlenen Daten an dieselbe gehackte Website. zoobashop.com.

Die Analyse der Präfixe, die vom Sniffer zur Suche nach den Feldern verwendet wurden, die die Zahlungsinformationen des Opfers enthielten, ergab, dass dieses Sniffer-Muster auf folgende Zahlungssysteme abzielte:
- Authorize.Net
- Verisign
- First Data
- USAePay
- Stripe
- PayPal
- ANZ eGate
- Braintree
- DataCash (MasterCard)
- Realex Payments
- PsiGate
- Heartland Payment Systems
Welche Werkzeuge werden verwendet, um Zahlungsinformationen zu stehlen?
Das erste Werkzeug, das während der Analyse der Infrastruktur der Angreifer entdeckt wurde, dient der Obfuskation von bösartigen Skripten, die für den Diebstahl von Kreditkartendaten verantwortlich sind. Auf einem der Hosts der Angreifer wurde ein Bash-Skript entdeckt, das das CLI-Projekt zur Automatisierung der Obfuskation des Codes der Sniffer verwendet.
![]()
Das zweite entdeckte Tool dient zur Generierung von Code, der für das Laden des Haupt-Sniffers verantwortlich ist. Dieses Tool generiert JavaScript-Code, der überprüft, ob sich der Benutzer auf der Zahlungsseite befindet, indem es nach der aktuellen Benutzeradresse sucht. checkout, Warenkorb usw. und wenn das Ergebnis positiv ist, lädt der Code den Haupt-Sniffer von den Servern der Angreifer. Um bösartige Aktivitäten zu verbergen, sind alle Zeichenfolgen, einschließlich der Testzeichenfolgen zur Identifizierung der Zahlungsseite, sowie der Link zum Sniffer, durch base64.

Phishing-Angriffe
Im Verlauf der Analyse der Netzwerk-Infrastruktur der Angreifer wurde festgestellt, dass eine kriminelle Gruppe häufig Phishing verwendet, um Zugriff auf das Administrationspanel eines Ziel-Onlineshops zu erhalten. Die Angreifer registrieren eine Domain, die visuell der Domain des Shops ähnlich ist, und richten dann ein gefälschtes Anmeldeformular für das Administrationspanel von Magento ein. Bei Erfolg erhalten die Angreifer Zugriff auf das Administrationspanel von Magento CMS, was ihnen die Möglichkeit gibt, die Komponenten der Website zu bearbeiten und einen Sniffer zur Diebstahl von Kreditkartendaten einzufügen.

Infrastruktur
| Domäne | Entdeckungsdatum/ Auftauchdatum |
|---|---|
| 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 Karten von Kunden in Online-Shops zu stehlen. Der erste Domainname, der von der Gruppe verwendet wurde, wurde im April 2016 registriert, was auf einen Beginn der Aktivitäten der Gruppe Mitte 2016 hindeuten könnte.
In der aktuellen Kampagne verwendet die Gruppe Domainnamen, die echte Dienste wie Google Analytics und jQuery imitieren, und maskiert die Aktivitäten der Sniffer mit legitimen Skripten und ähnlichen Domainnamen. Angegriffen wurden Websites, die unter der Verwaltung von CMS Magento betrieben werden.
Wie G-Analytics in den Code eines Online-Shops integriert wird
Das herausragende Merkmal dieser Gruppe ist die Verwendung verschiedener Methoden zum Stehlen von Zahlungsinformationen der Benutzer. Neben der klassischen Einbettung von JavaScript-Code in den Client-Bereich der Website wandte die kriminelle Gruppe auch die Technik an, Code in den Serverbereich der Website einzubetten, insbesondere PHP-Skripte, die eingegebene Benutzerdaten verarbeiten. Diese Technik ist gefährlich, da sie die Entdeckung des Schadcodes durch externe Forscher erschwert. Spezialisten von Group-IB entdeckten eine Version des Sniffers, die in den PHP-Code der Website eingebettet ist und die Domain als Gate verwendet, dittm.org.

Es wurde auch eine frühere Version des Sniffers entdeckt, die zur Sammlung der gestohlenen Daten dieselbe Domain verwendet, dittm.org, aber diese Version ist bereits für die Installation auf der Client-Seite eines Online-Shops gedacht.

Später änderte die Gruppe ihre Taktik und begann, mehr Wert auf die Verschleierung bösartiger Aktivitäten und Tarnung zu legen.
Anfang 2017 begann die Gruppe, die Domain jquery-js.com, die sich als CDN für jQuery tarnt: Wenn Benutzer auf die Website der Angreifer zugreifen, werden sie auf die legitime Website jquery.com.
umgeleitet. Und Mitte 2018 übernahm die Gruppe den Domainnamen g-analytics.com und begann, die Aktivitäten des Sniffers als legitimen Google Analytics-Service zu tarnen.


Analyse der Versionen
Im Laufe der Analyse der Domains, die zur Speicherung des Sniffer-Codes verwendet werden, wurde festgestellt, dass sich auf der Website eine große Anzahl von Versionen befindet, die sich durch das Vorhandensein von Obfuskation sowie das Vorhandensein oder Fehlen unzugänglichen Codes unterscheiden, die in die Datei eingefügt wurden, um abzulenken und den bösartigen Code zu verbergen.
Insgesamt wurden auf der Website jquery-js.com sechs Versionen der Sniffer identifiziert. Diese Sniffer senden die gestohlenen Daten 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
Die spätere Domain g-analytics.com, die von der Gruppe seit Mitte 2018 in Angriffen verwendet wird, dient als Speicher für eine größere Anzahl von Sniffern. Insgesamt wurden 16 verschiedene Versionen des Sniffers entdeckt. In diesem Fall war das Gate zur Übertragung der gestohlenen Daten als Link zu einem Bildformat 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 der gestohlenen Daten
Die kriminelle Gruppe monetarisiert die gestohlenen Daten, indem sie Karten über einen eigens geschaffenen Untergrundladen verkauft, der Dienstleistungen für Carder anbietet. Die Analyse der von den Angreifern verwendeten Domains ergab, dass google-analytics.cm wurde von demselben Benutzer registriert wie die Domain cardz.vc. Die Domain cardz.vc bezieht sich auf einen Shop für den Verkauf von gestohlenen Bankkarten namens Cardsurfs (Flysurfs), der während der Aktivität des Underground-Marktplatzes AlphaBay als Verkaufsstelle für mit Sniffern gestohlene Bankkarten populär wurde.

Bei der Analyse der Domain analytic.is, die sich auf demselben Server befindet wie die von Sniffern genutzten Domains zur Sammlung gestohlener Daten, entdeckten die Experten von Group-IB eine Datei mit Protokollen von Cookie-Stealern, die offenbar später vom Entwickler aufgegeben wurde. Ein Eintrag im Protokoll enthielt die Domain iozoz.com, die zuvor in einem der Sniffer verwendet wurde, die 2016 aktiv waren. Dieser Domain wird vermutet, dass sie früher von einem Angreifer zum Sammeln gestohlener Karten mittels Sniffer verwendet wurde. Diese Domain wurde auf die E-Mail-Adresse kts241@gmail.com, die auch zur Registrierung der Domains cardz.su und cardz.vc, die mit dem Carding-Shop Cardsurfs in Verbindung stehen, verwendet wurde.
Aus den gesammelten Daten lässt sich ableiten, dass die Familie der Sniffer G-Analytics und der Underground-Shop für den Verkauf von Bankkarten Cardsurfs von denselben Personen betrieben werden und dass der Shop zur Veräußertung von mit Sniffern gestohlenen Bankkarten genutzt wird.
Infrastruktur
| Domäne | Entdeckungsdatum/ Auftauchdatum |
|---|---|
| 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 |
Familie Illum
Illum ist eine Familie von Sniffern, die für Angriffe auf Online-Shops verwendet wird, die unter der CMS Magento betrieben werden. Neben der Einspeisung von Schadcode nutzen die Betreiber dieses Sniffers auch die Implementierung vollständiger gefälschter Zahlungsformulare, die Daten an von den Angreifern kontrollierte Gateways senden.
Bei der Analyse der Netzwerkstruktur, die von den Betreibern dieses Sniffers verwendet wird, wurde eine große Anzahl von schädlichen Skripten, Exploits, gefälschten Zahlungsformularen sowie eine Sammlung von Beispielen schädlicher Sniffer von Wettbewerbern festgestellt. Aus den Informationen zu den Erstellungsdaten der von der Gruppe verwendeten Domainnamen lässt sich vermuten, dass der Beginn der Kampagne auf Ende 2016 fällt.
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, das Gateway wurde dabei kodiert mit Hilfe von base64.

Später wurde eine verpackte Version des Sniffers entdeckt, die ein anderes Gateway verwendete — records.nstatistics[.]com/records.php.

Laut Willem de Groot, derselbe Host wurde im Sniffer verwendet, der auf , das der deutschen politischen Partei CSU gehört.
Analyse der Website der Angreifer
Die 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 Werkzeugen, die auf dem Server der Angreifer entdeckt wurden, fanden sich Skripte und Exploits zur Erhöhung der Berechtigungen im Linux-Betriebssystem: zum Beispiel das Linux Privilege Escalation Check Script, das von Mike Czumak entwickelt wurde, sowie ein Exploit für CVE-2009-1185.
Direkt für Angriffe auf Online-Shops verwendeten die Angreifer zwei Exploits: der in der Lage ist, schädlichen Code in core_config_data mittels der Ausnutzung von CVE-2016-4010, der eine RCE-Sicherheitsanfälligkeit in den Plugins für das CMS Magento ausnutzt, was die Ausführung beliebiger Codes auf dem betroffenen Webserver ermöglicht.

Auch während der Analyse des Servers wurden verschiedene Muster von Sniffern und gefälschten Zahlungsformularen entdeckt, die von den Angreifern verwendet wurden, um Zahlungsinformationen von gehackten Websites zu sammeln. Wie aus der nachstehenden Liste zu entnehmen ist, wurden einige Skripte speziell für jede gehackte Website erstellt, während für bestimmte CMS und Zahlungsgateways eine universelle Lösung verwendet wurde. Zum Beispiel wurden die Skripte segapay_standart.js und segapay_onpage.js für die Implementierung auf Websites gedacht, die das Zahlungsgateway Sage Pay verwenden.
Liste der Skripte für verschiedene Zahlungsgateways
| Skript | Zahlungsgateway |
|---|---|
| [.]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, das als Gateway im Skript verwendet wird payment_forminsite.js, wurde als subjectAltName in mehreren Zertifikaten entdeckt, die zum CloudFlare-Service gehören. Darüber hinaus war auf dem Host ein Skript evil.jsuntergebracht. Judging by the script name, it could have been used as part of the exploitation of CVE-2016-4010, which allows malicious code to be injected into the footer of a website managed by the CMS Magento. As a gateway, this script adopted the host request.requestnet[.]tk, der dasselbe Zertifikat verwendet wie der Host paymentnow[.]tk.
Gefälschte Zahlungsformulare
Unten im Bild ist ein Beispiel für ein Formular zur Eingabe von Kartendaten zu sehen. Dieses Formular wurde verwendet, um auf die Website eines Online-Shops eingefügt zu werden und Kartendaten zu stehlen.

Im nächsten Bild sehen Sie ein Beispiel für ein gefälschtes PayPal-Zahlungsformular, das von Kriminellen zur Einspeisung auf Websites mit dieser Zahlungsmethode verwendet wurde.

Infrastruktur
| Domäne | Entdeckungsdatum/ Auftauchdatum |
|---|---|
| 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 |
Familie CoffeMokko
Die CoffeMokko-Sniffer-Familie, die zum Diebstahl von Bankkarten von Nutzern von Online-Shops entwickelt wurde, wird seit mindestens Mai 2017 eingesetzt. Vermutlich wird diese Sniffer-Familie von der kriminellen Gruppe Group 1 betrieben, die 2016 von RiskIQ-Experten beschrieben wurde. Angegriffen wurden Webseiten, die mit CMS wie Magento, OpenCart, WordPress, osCommerce und Shopify betrieben werden.
Wie CoffeMokko in den Code von Online-Shops eingebettet wird
Die Betreiber dieser Familie erstellen einzigartige Sniffer für jede Infektion: Die Sniffer-Datei wird im Verzeichnis src oder js auf den Servern der Kriminellen platziert. Die Einspeisung in den Webseiten-Code erfolgt über einen direkten Link zum Sniffer.

Im Code des Sniffers sind die Namen der Formularfelder fest codiert, aus denen Daten gestohlen werden müssen. Der Sniffer überprüft auch, ob sich der Benutzer auf der Zahlungsseite befindet, indem er eine Liste von Schlüsselwörtern mit der aktuellen Adresse des Benutzers abgleicht.

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

Die gestohlenen Zahlungsinformationen wurden über einen Skript auf dem Server der Kriminellen an den Pfad gesendet /savePayment/index.php или /tr/index.php. Vermutlich dient dieses Skript dazu, die Daten vom Gateway an den zentralen Server zu senden, der die Daten aller Sniffer konsolidiert. Um die übermittelten Daten zu verbergen, werden alle Zahlungsinformationen des Opfers mit Hilfe von base64verschlüsselt, und es erfolgen mehrere Zeichenersetzungen:
- 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 werden die mit Hilfe von base64 verschlüsselten Daten unverständlich, ohne dass eine Umkehrung des Prozesses durchgeführt wird.
So sieht ein unverschleierter Sniffer-Code aus:

Analyse der Infrastruktur
In früheren Kampagnen registrierten die Angreifer Domainnamen, die den legitimen Online-Shop-Domainnamen ähnlich waren. Ihre Domain konnte sich nur durch ein Zeichen oder eine andere TLD vom legitimen unterscheiden. Die registrierten Domains wurden verwendet, um den Sniffer-Code zu speichern, auf den ein Link in den Code des Shops eingefügt wurde.
Diese Gruppe verwendete auch Domainnamen, die an die Namen beliebter jQuery-Plugins erinnerten (slickjs[.]org für Websites, die das Plugin nutzen, slick.js), Zahlungs-Gateways (sagecdn[.]org für Websites, 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 Website, auf der ein Verzeichnis erstellt wurde /js oder /src. In diesem Verzeichnis wurden die Sniffer-Skripte gespeichert: jeweils ein Sniffer für jede neue Infektion. Der Sniffer wurde über einen direkten Link in den Code der Website eingefügt, aber in seltenen Fällen modifizierten die Angreifer eine der Dateien der Website und fügten darin schädlichen Code hinzu.
Codeanalyse
Erster Verschleierungsalgorithmus
In einigen der entdeckten Proben von Sniffern dieser Familie war der Code verschlüsselt und enthielt verschlüsselte Daten, die für den Betrieb des Sniffers erforderlich waren: insbesondere die Adresse des Sniffer-Gateways, die Liste der Felder des Zahlungsformulars, und in einigen Fällen den Code eines gefälschten Zahlungsformulars. Im Code innerhalb der Funktion wurden die Ressourcen mithilfe von XOR verschlüsselt mit einem Schlüssel, der als Argument an diese Funktion übergeben wurde.

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

Zweiter Verschleierungsalgorithmus
In neueren Proben von Sniffern dieser Familie wurde ein anderer Verschleierungsmechanismus verwendet: In diesem Fall wurden die Daten mit einem selbstgeschriebenen Algorithmus verschlüsselt. Die Zeichenfolge, die die für den Betrieb des Sniffers erforderlichen verschlüsselten Daten enthielt, wurde als Argument an die Entschlüsselungsfunktion übergeben.

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

Verbindung zu früheren MageCart-Angriffen
Im Zuge der Analyse einer der von der Gruppe als Tor zum Sammeln gestohlener Daten verwendeten Domänen wurde festgestellt, dass auf dieser Domäne eine Infrastruktur zum Stehlen von Kreditkarten betrieben wird, die derjenigen identisch ist, die von Gruppe 1 verwendet wurde — einer der ersten Gruppen, von RiskIQ-Spezialisten.
Auf dem Host der CoffeMokko-Sniffer-Familie wurden zwei Dateien entdeckt:
- mage.js — eine Datei, die den Sniffer-Code von Gruppe 1 mit dem Tor-Adresse js-cdn.link
- mag.php — ein PHP-Skript, das für das Sammeln von durch den Sniffer gestohlenen Daten verantwortlich ist
Содержимое файла mage.js 
Es wurde auch festgestellt, dass die frühesten von der Gruppe, die hinter der CoffeMokko-Sniffer-Familie steht, am 17. Mai 2017 registrierten Domänen waren:
- link-js[.]link
- info-js[.]link
- track-js[.]link
- map-js[.]link
- smart-js[.]link
Das Format dieser Domainnamen entspricht den von Gruppe 1 verwendeten Domainnamen, die bei den Angriffen im Jahr 2016 eingesetzt wurden.
Aufgrund der entdeckten Fakten kann man annehmen, dass es eine Verbindung zwischen den Betreibern von CoffeMokko-Sniffern und der kriminellen Gruppe Gruppe 1 gibt. Vermutlich haben die Betreiber von CoffeMokko Werkzeuge und Software zum Stehlen von Karten von ihren Vorgängern übernommen. Es ist jedoch wahrscheinlicher, dass die kriminelle Gruppe, die die Sniffer der CoffeMokko-Familie einsetzt, dieselben Personen sind, die die Angriffe im Rahmen der Aktivitäten von Gruppe 1 durchgeführt haben. Nach der Veröffentlichung des ersten Berichts über die Aktivitäten der kriminellen Gruppe wurden alle ihre Domainnamen blockiert, und die Werkzeuge wurden detailliert untersucht und beschrieben. Die Gruppe musste eine Pause einlegen, um ihre internen Werkzeuge zu überarbeiten und den Code der Sniffer neu zu schreiben, um ihre Angriffe fortzusetzen und unentdeckt zu bleiben.
Infrastruktur
| Domäne | Entdeckungsdatum/ Auftauchdatum |
|---|---|
| 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 |
Quelle: habr.com
