
Fast jeder von uns nutzt die Dienste von Online-Shops, was bedeutet, dass er früher oder später Gefahr läuft, Opfer von JavaScript-Schnüfflern zu werden - ein spezieller Code, den Cyberkriminelle auf die Website injizieren, um Bankkarteninformationen, Adressen, Anmeldungen und Benutzerkennwörter zu stehlen.
Fast 400.000 Nutzer der Website und der mobilen Anwendung der British Airways Airline sowie Besucher der britischen Website des Sportgiganten FILA und des amerikanischen Ticketvertriebs Ticketmaster waren bereits von Schnüfflern betroffen.
Viktor Okorokov, Analyst der Threat Intelligence Group-IB, spricht darüber, wie Sniffer in Site-Code eingebettet sind und Rechnungsinformationen stehlen und welche CRMs sie angreifen.
Die Phantombedrohung
Es stellte sich heraus, dass JS-Sniffer lange Zeit nicht in Sichtweite von Antiviren-Analysten waren und Banken und Zahlungssysteme keine ernsthafte Bedrohung in ihnen sahen. Und völlig vergebens. Group-IB-Experten
analysierten 2.440 infizierte Online-Shops, deren Besucher - etwa 1,5 Millionen Menschen pro Tag - einem Kompromissrisiko ausgesetzt waren. Unter den Opfern sind nicht nur Benutzer, sondern auch Online-Shops, Zahlungssysteme und Banken, die kompromittierte Karten ausgestellt haben.
Der Group-IB-
Bericht war die erste Studie über den Darknet-Markt für Sniffer, ihre Infrastruktur und Möglichkeiten zur Monetarisierung, die ihren Entwicklern Millionen von Dollar einbrachte. Wir identifizierten 38 Familien von Schnüfflern, von denen den Forschern bisher nur 12 bekannt waren.
Lassen Sie uns im Detail auf die vier Familien von Schnüfflern eingehen, die während der Studie untersucht wurden.
ReactGet-Familie
Schnüffler der ReactGet-Familie werden verwendet, um Bankkartendaten auf Websites von Online-Shops zu stehlen. Ein Sniffer kann mit einer großen Anzahl verschiedener Zahlungssysteme arbeiten, die auf der Website verwendet werden: Ein Parameterwert entspricht einem Zahlungssystem, und einzelne erkannte Sniffer-Versionen können verwendet werden, um Anmeldeinformationen zu stehlen sowie Bankkartendaten aus Zahlungsformen mehrerer Zahlungssysteme gleichzeitig zu stehlen, z der sogenannte Universalschnüffler. Es wurde festgestellt, dass Angreifer in einigen Fällen Phishing-Angriffe auf Administratoren von Online-Shops ausführen, um Zugriff auf das Verwaltungsfenster der Website zu erhalten.
Die Kampagne mit dieser Familie von Sniffern begann im Mai 2017, Websites unter der Kontrolle von CMS und den Plattformen Magento, Bigcommerce, Shopify wurden angegriffen.
Wie ReactGet in Online-Shop-Code eingebettet ist
Zusätzlich zur „klassischen“ Implementierung eines Skripts als Referenz verwendet die ReactGet-Sniffer-Familie eine spezielle Technik: Mithilfe von JavaScript-Code wird überprüft, ob die aktuelle Adresse, an der sich der Benutzer befindet, bestimmte Kriterien erfüllt. Schädlicher Code wird nur gestartet, wenn die aktuelle URL den Teilstring-
Checkout oder den
Onestepcheckout ,
onepage / ,
out / onepag ,
checkout / one ,
ckout / one enthält . Somit wird der Sniffer-Code genau zu dem Zeitpunkt ausgeführt, zu dem der Benutzer die Einkäufe bezahlt und die Zahlungsinformationen in das Formular auf der Website eingibt.
Dieser Schnüffler verwendet eine nicht standardmäßige Technik. Die Zahlungs- und persönlichen Daten des Opfers werden zusammen gesammelt, mit
base64 codiert. Anschließend wird die resultierende Zeichenfolge als Parameter verwendet, um eine Anfrage an die Website des Angreifers zu senden. Meistens simuliert der Pfad zum Gate eine JavaScript-Datei, z. B.
resp.js ,
data.js usw., aber auch Links zu Bilddateien,
GIFs und
JPGs . Die Besonderheit besteht darin, dass der Schnüffler ein Bildobjekt mit einer Größe von 1 x 1 Pixel erstellt und den zuvor erhaltenen Link als
src- Parameter des Bildes verwendet. Das heißt, für den Benutzer sieht eine solche Anforderung im Verkehr wie eine Anforderung für ein reguläres Bild aus. Eine ähnliche Technik wurde bei den Sniffern der ImageID-Familie verwendet. Darüber hinaus wird die Technik der Verwendung eines 1 x 1-Pixel-Bildes in vielen legitimen Online-Analyseskripten verwendet, was den Benutzer auch irreführen kann.
Versionsanalyse
Eine Analyse der aktiven Domänen, die von den ReactGet-Sniffer-Operatoren verwendet werden, ergab viele verschiedene Versionen der Sniffer-Familie. Versionen unterscheiden sich in der Anwesenheit oder Abwesenheit von Verschleierung, und außerdem ist jeder Sniffer für ein bestimmtes Zahlungssystem ausgelegt, das Bankkartenzahlungen für Online-Shops verarbeitet. Nachdem die Group-IB-Spezialisten den Wert des Parameters entsprechend der Versionsnummer sortiert hatten, erhielten sie eine vollständige Liste der verfügbaren Sniffer-Variationen und bestimmten anhand der Namen der Formularfelder, nach denen jeder Sniffer im Seitencode sucht, die Zahlungssysteme, auf die der Sniffer abzielt.
Liste der Schnüffler und ihrer entsprechenden Zahlungssysteme Passwort-Schnüffler
Einer der Vorteile von JavaScript-Sniffern, die auf der Clientseite der Website arbeiten, ist ihre Vielseitigkeit: Auf der Website eingebetteter Schadcode kann jede Art von Daten stehlen, unabhängig davon, ob es sich um Zahlungsdaten oder den Benutzernamen und das Kennwort eines Benutzerkontos handelt. Group-IB-Spezialisten entdeckten eine Stichprobe eines Sniffers der ReactGet-Familie, der E-Mail-Adressen und Passwörter von Site-Benutzern stehlen soll.
Schnittpunkt mit ImageID Sniffer
Eine Analyse eines der infizierten Geschäfte ergab, dass seine Website zweimal infiziert war: Zusätzlich zum Schadcode der ReactGet-Sniffer-Familie wurde ein Sniffer-Code der ImageID-Familie erkannt. Dieser Schnittpunkt kann darauf hinweisen, dass die Bediener, die hinter der Verwendung beider Sniffer stehen, ähnliche Techniken verwenden, um schädlichen Code einzufügen.
Universalschnüffler
Eine Analyse eines der Domainnamen im Zusammenhang mit der ReactGet-Sniffer-Infrastruktur ergab, dass derselbe Benutzer drei weitere Domainnamen registriert hatte. Diese drei Domänen simulierten Domänen von realen Standorten und wurden zuvor zum Hosten von Sniffern verwendet. Bei der Analyse des Codes von drei legitimen Sites wurde ein unbekannter Sniffer entdeckt, und eine weitere Analyse ergab, dass dies eine verbesserte Version des ReactGet-Sniffers ist. Alle zuvor erfassten Versionen von Sniffern dieser Familie waren auf ein einziges Zahlungssystem ausgerichtet, dh für jedes Zahlungssystem war eine spezielle Version des Sniffers erforderlich. In diesem Fall wurde jedoch eine universelle Version des Sniffers entdeckt, die Informationen aus Formularen stehlen kann, die sich auf 15 verschiedene Zahlungssysteme und Module von E-Commerce-Websites für Online-Zahlungen beziehen.
Zu Beginn der Arbeit suchte der Schnüffler nach den Basisfeldern des Formulars, das die persönlichen Informationen des Opfers enthielt: vollständiger Name, physische Adresse, Telefonnummer.
Dann suchte der Schnüffler nach mehr als 15 verschiedenen Präfixen, die verschiedenen Zahlungssystemen und Modulen für Online-Zahlungen entsprechen.
Außerdem wurden die persönlichen Daten und Zahlungsinformationen des Opfers zusammen gesammelt und an die vom Angreifer kontrollierte Site gesendet. In diesem speziellen Fall wurden zwei Versionen des ReactGet Universal Sniffer entdeckt, die sich auf zwei verschiedenen gehackten Sites befinden. Beide Versionen haben die gestohlenen Daten jedoch an dieselbe gehackte Site
zoobashop.com gesendet .
Eine Analyse der Präfixe, die der Sniffer verwendet, um nach Feldern zu suchen, die die Zahlungsinformationen des Opfers enthalten, ermöglichte es uns festzustellen, dass dieses Sniffer-Muster auf die folgenden Zahlungssysteme abzielte:
- Authorize.Net
- Verisign
- Erste Daten
- USAePay
- Streifen
- Paypal
- ANZ eGate
- Braintree
- DataCash (MasterCard)
- Realex-Zahlungen
- Psigate
- Heartland-Zahlungssysteme
Mit welchen Tools werden Rechnungsinformationen gestohlen?
Das erste Tool, das bei der Analyse der Infrastruktur des Angreifers entdeckt wurde, wird verwendet, um schädliche Skripte zu verschleiern, die für den Diebstahl von Bankkarten verantwortlich sind. Auf einem der angreifenden Hosts wurde ein Bash-Skript mithilfe der
Javascript-Obfuscator- CLI entdeckt, um die Verschleierung von Sniffer-Code zu automatisieren.
Das zweite erkannte Tool dient zum Generieren von Code, der für das Laden des Haupt-Sniffers verantwortlich ist. Dieses Tool generiert einen JavaScript-Code, der überprüft, ob sich der Benutzer auf der Zahlungsseite befindet, indem die aktuelle Adresse des Benutzers nach den Zeilen
Checkout ,
Warenkorb usw. durchsucht wird. Wenn das Ergebnis positiv ist, lädt der Code den Haupt-Sniffer vom Server des Angreifers. Um böswillige Aktivitäten zu verbergen, werden alle Zeilen, einschließlich Testzeilen zur Ermittlung der Zahlungsseite sowie ein Link zum Sniffer, mit
base64 codiert.
Phishing-Angriffe
Bei der Analyse der Netzwerkinfrastruktur der Angreifer wurde festgestellt, dass eine kriminelle Gruppe häufig Phishing verwendet, um Zugriff auf das Verwaltungsfenster des Ziel-Online-Shops zu erhalten. Angreifer registrieren eine Domain, die der Domain eines Geschäfts optisch ähnlich sieht, und stellen dann ein gefälschtes Anmeldeformular für das Magento-Admin-Panel bereit. Bei Erfolg erhalten Angreifer Zugriff auf das CMS Magento-Administrationsfenster, über das sie Site-Komponenten bearbeiten und einen Sniffer implementieren können, um Kreditkarteninformationen zu stehlen.
G-Analytics-Familie
Diese Familie von Schnüfflern wird verwendet, um Karten von Kunden von Online-Shops zu stehlen. Der allererste von der Gruppe verwendete Domainname wurde im April 2016 registriert, was auf den Beginn der Aktivität der Gruppe Mitte 2016 hinweisen kann.
In der aktuellen Kampagne verwendet die Gruppe Domain-Namen, die reale Dienste wie Google Analytics und jQuery imitieren und die Sniffer-Aktivitäten mit legitimen Skripten maskieren und legitimen Domain-Namen ähneln. Der Angriff wurde auf Websites ausgeführt, auf denen CMS Magento ausgeführt wird.
Wie G-Analytics in Online-Shop-Code eingebettet ist
Ein charakteristisches Merkmal dieser Familie ist die Verwendung verschiedener Methoden zum Diebstahl von Benutzerzahlungsinformationen. Zusätzlich zur klassischen Implementierung von JavaScript-Code im Client-Teil der Site verwendete die kriminelle Gruppe auch die Technik des Einbettens von Code in den Server-Teil der Site, nämlich PHP-Skripte, die die vom Benutzer eingegebenen Daten verarbeiten. Diese Technik ist insofern gefährlich, als sie es Forschern von Drittanbietern erschwert, bösartigen Code zu erkennen. Group-IB-Spezialisten entdeckten eine Version eines
Snifters , der in den PHP-Code der Site eingebettet ist und die Domain
dittm.org als Gate verwendet.
Es wurde auch eine frühere Version des Sniffers entdeckt, die dieselbe
dittm.org- Domain verwendet, um gestohlene Daten zu sammeln. Diese Version ist jedoch bereits für die Installation auf der Clientseite des Online-Shops vorgesehen.
Später änderte die Gruppe ihre Taktik und begann, der Verschleierung böswilliger Aktivitäten und Verkleidungen mehr Aufmerksamkeit zu widmen.
Anfang 2017 begann die Gruppe, die als CDN für jQuery
getarnte Domain
jquery-js.com zu verwenden: Wenn sie zu einer Site böswilliger Benutzer umleitet, leitet sie zur legitimen Site
jquery.com weiter .
Mitte 2018 übernahm die Gruppe den Domainnamen
g-analytics.com und begann, die Aktivitäten des Sniffers unter dem legitimen Google Analytics-Dienst zu maskieren.
Versionsanalyse
Bei der Analyse der Domänen, die zum Speichern von Sniffer-Code verwendet werden, wurde festgestellt, dass die Site eine große Anzahl von Versionen aufweist, die sich hinsichtlich des Vorhandenseins von Verschleierung sowie des Vorhandenseins oder Nichtvorhandenseins von nicht erreichbarem Code, der der Datei hinzugefügt wurde, unterscheiden, um die Aufmerksamkeit abzulenken und den schädlichen Code zu verbergen.
Insgesamt wurden sechs Versionen von Schnüfflern auf
jquery-js.com identifiziert. Diese Sniffer senden die gestohlenen Daten an die Adresse, die sich auf derselben Site 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 bei Angriffen verwendet wird, dient als Repository für eine größere Anzahl von Sniffern. Insgesamt wurden 16 verschiedene Sniffer-Versionen entdeckt. In diesem Fall wurde das Gate zum Senden der gestohlenen Daten als Link zu einem
GIF- Bild
getarnt :
hxxp: // g-analysis [.] Com / __ utm.gif? = 2145 x 371 & je = 0 & _u = AACAAEAB ~ & jid = 1841704724 & gjid = 877686936 & cid
= 1283183910.1527732071 :
- hxxps: // g-analyse [.] com / libs / 1.0.1 / analyse.js
- hxxps: // g-analyse [.] com / libs / 1.0.10 / analyse.js
- hxxps: // g-analyse [.] com / libs / 1.0.11 / analyse.js
- hxxps: // g-analyse [.] com / libs / 1.0.12 / analyse.js
- hxxps: // g-analyse [.] com / libs / 1.0.13 / analyse.js
- hxxps: // g-analyse [.] com / libs / 1.0.14 / analyse.js
- hxxps: // g-analyse [.] com / libs / 1.0.15 / analyse.js
- hxxps: // g-analyse [.] com / libs / 1.0.16 / analyse.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
, , . , , ,
google-analytics.cm ,
cardz.vc .
cardz.vc Cardsurfs (Flysurfs), AlphaBay , .
analytic.is , , , , Group-IB , Cookie-, , , .
iozoz.com , , 2016 . , . email-
kts241@gmail.com ,
cardz.su cardz.vc , Cardsurfs.
, , G-Analytics Cardsurfs , , .
Illum
Illum — , -, CMS Magento. , , .
, , , , , . , , , 2016 .
Illum -
.
cdn.illum[.]pw/records.php ,
base64 .
, —
records.nstatistics[.]com/records.php .
Willem de Groot, ,
, CSU.
Group-IB , .
, , Linux: , Linux Privilege Escalation Check Script, (Mike Czumak), CVE-2009-1185.
- :
core_config_data CVE-2016-4010,
RCE CMS Magento, -.
, . , , CMS . ,
segapay_standart.js segapay_onpage.js , Sage Pay.
paymentnow[.]tk ,
payment_forminsite.js ,
subjectAltName , CloudFlare. ,
evil.js . , CVE-2016-4010, footer CMS Magento.
request.requestnet[.]tk , ,
paymentnow[.]tk .
. - .
— PayPal, .
CoffeMokko
CoffeMokko, -, 2017 . , Group 1, RiskIQ 2016 . CMS, Magento, OpenCart, WordPress, osCommerce, Shopify.
CoffeMokko -
:
src js . .
, . , , .
, : , , .
/savePayment/index.php /tr/index.php . , , .
base64 , :
- «e» «:»
- «w» «+»
- «o» «%»
- «d» «#»
- «a» «-»
- «7» «^»
- «h» «_»
- «T» «@»
- «0» «/»
- «Y» «*»
base64 , .
, :
, -. TLD. , .
, jQuery (
slickjs[.]org ,
slick.js ), (
sagecdn[.]org , Sage Pay).
, , .
,
/js /src . : . , .
In einigen erkannten Sniffer-Beispielen dieser Familie war der Code verschleiert und enthielt die verschlüsselten Daten, die für das Funktionieren des Sniffers erforderlich sind: insbesondere die Adresse des Sniffer-Gates, eine Liste von Zahlungsformularfeldern und in einigen Fällen einen gefälschten Zahlungsformularcode. Im Code innerhalb der Funktion wurden die Ressourcen mit
XOR unter Verwendung des Schlüssels verschlüsselt, der vom Argument derselben Funktion übergeben wurde.
Nachdem Sie die Zeichenfolge mit dem entsprechenden Schlüssel entschlüsselt haben, der für jedes Beispiel eindeutig ist, können Sie eine Zeichenfolge mit allen Zeilen aus dem Sniffer-Code über das Trennzeichen erhalten.
Zweiter Verschleierungsalgorithmus
In späteren Sniffer-Beispielen dieser Familie wurde ein anderer Verschleierungsmechanismus verwendet: In diesem Fall wurden die Daten mit einem selbstgeschriebenen Algorithmus verschlüsselt. Eine Zeichenfolge mit den verschlüsselten Daten, die für die Funktion des Sniffers erforderlich sind, wurde als Argument an die Entschlüsselungsfunktion übergeben.
Über die Browserkonsole können Sie die verschlüsselten Daten entschlüsseln und ein Array mit Sniffer-Ressourcen abrufen.
Verknüpfung mit frühen MageCart-Angriffen
Eine Analyse einer der Domänen, die von der Gruppe als Gate zum Sammeln gestohlener Daten verwendet wurden, ergab, dass die Domäne über eine Infrastruktur für Kreditkartendiebstahl verfügt, die mit der von Gruppe 1, einer der ersten von RiskIQ-Spezialisten,
entdeckten Gruppe, identisch ist.
Auf dem Host der CoffeMokko-Sniffer-Familie wurden zwei Dateien gefunden:
- mage.js - Datei mit Sniffer-Code der Gruppe 1 mit der Gate-Adresse js-cdn.link
- mag.php - PHP-Skript, das für das Sammeln von gestohlenen Daten verantwortlich ist
Es wurde auch 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 Domänennamen entspricht den Domänennamen der Gruppe 1, die bei den Angriffen von 2016 verwendet wurden.
Aufgrund der festgestellten Tatsachen kann davon ausgegangen werden, dass eine Verbindung zwischen den CoffeMokko-Sniffer-Betreibern und der kriminellen Gruppe der Gruppe 1 besteht. Vermutlich könnten CoffeMokko-Betreiber Tools und Software für Kartendiebstahl von ihren Vorgängern ausleihen. Es ist jedoch wahrscheinlicher, dass die kriminelle Gruppe, die hinter der Verwendung der CoffeMokko-Familie von Schnüfflern steht, dieselben Personen sind, die die Angriffe im Rahmen der Aktivitäten der Gruppe 1 ausgeführt haben. Nach der Veröffentlichung des ersten Berichts über die Aktivitäten der kriminellen Gruppe wurden alle ihre Domain-Namen blockiert und die Tools wurden detailliert untersucht und beschrieben werden. Die Gruppe war gezwungen, eine Pause einzulegen, ihre internen Tools zu verfeinern und den Sniffer-Code neu zu schreiben, um ihre Angriffe fortzusetzen und unbemerkt zu bleiben.