
Presque chacun d'entre nous utilise les services des boutiques en ligne, ce qui signifie qu'il risque tôt ou tard d'être victime de renifleurs JavaScript - un code spécial que les cybercriminels injectent sur le site pour voler des informations de carte bancaire, des adresses, des identifiants et des mots de passe d'utilisateurs.
Près de 400 000 utilisateurs du site Internet et de l'application mobile de la compagnie aérienne British Airways, ainsi que les visiteurs du site Internet britannique du géant du sport FILA et du distributeur de billets américain Ticketmaster, ont déjà souffert de renifleurs.
Viktor Okorokov, analyste du Threat Intelligence Group-IB, explique comment les renifleurs sont intégrés dans le code du site et volent les informations de facturation, ainsi que les CRM qu'ils attaquent.
La menace fantôme
Il s'est avéré que pendant longtemps les renifleurs JS sont restés hors de la vue des analystes antivirus, et les banques et les systèmes de paiement n'y ont pas vu de menace sérieuse. Et complètement en vain. Les experts du Groupe IB ont
analysé 2 440 magasins en ligne infectés dont les visiteurs - environ 1,5 million de personnes par jour - étaient menacés de compromis. Parmi les victimes figurent non seulement des utilisateurs, mais également des boutiques en ligne, des systèmes de paiement et des banques qui ont émis des cartes compromises.
Le rapport Group-IB
a été la première étude sur le marché du darknet pour les renifleurs, leur infrastructure et les moyens de monétiser, rapportant à leurs créateurs des millions de dollars. Nous avons identifié 38 familles de renifleurs, dont seulement 12 étaient auparavant connus des chercheurs.
Arrêtons-nous en détail sur les quatre familles de renifleurs étudiées au cours de l'étude.
Famille ReactGet
Les renifleurs de la famille ReactGet sont utilisés pour voler les données des cartes bancaires sur les sites des boutiques en ligne. Un renifleur peut fonctionner avec un grand nombre de systèmes de paiement différents utilisés sur le site: une valeur de paramètre correspond à un système de paiement, et des versions individuelles de renifleur détectées peuvent être utilisées pour voler des informations d'identification, ainsi que pour voler des données de carte bancaire à partir de formes de paiement de plusieurs systèmes de paiement à la fois, telles que le soi-disant renifleur universel. Il a été constaté que, dans certains cas, des attaquants mènent des attaques de phishing contre les administrateurs de boutique en ligne afin d'accéder au panneau d'administration du site.
La campagne utilisant cette famille de renifleurs a débuté en mai 2017, des sites sous le contrôle de CMS et les plateformes Magento, Bigcommerce, Shopify ont été attaqués.
Comment ReactGet est intégré dans le code de la boutique en ligne
En plus de l'implémentation «classique» d'un script par référence, la famille de renifleurs ReactGet utilise une technique spéciale: en utilisant du code JavaScript, elle vérifie si l'adresse actuelle où se trouve l'utilisateur répond à certains critères. Un code malveillant ne sera lancé que si l'URL actuelle contient la sous-chaîne
checkout ou
onestepcheckout ,
onepage / ,
out / onepag ,
checkout / one ,
ckout / one . Ainsi, le code sniffer sera exécuté exactement au moment où l'utilisateur procède au paiement des achats et saisit les informations de paiement dans le formulaire du site.
Ce renifleur utilise une technique non standard. Le paiement et les données personnelles de la victime sont collectés ensemble, encodés en
base64 , puis la chaîne résultante est utilisée comme paramètre pour envoyer une demande au site des attaquants. Le plus souvent, le chemin d'accès à la porte simule un fichier JavaScript, par exemple
resp.js ,
data.js et ainsi de suite, mais également des liens vers des fichiers image,
GIF et
JPG sont également utilisés. La particularité est que le renifleur crée un objet image avec une taille de 1 par 1 pixel et utilise le lien obtenu précédemment comme paramètre
src de l'image. Autrement dit, pour l'utilisateur, une telle demande de trafic ressemblera à une demande d'image régulière. Une technique similaire a été utilisée dans les renifleurs de la famille ImageID. De plus, la technique d'utilisation d'une image 1 par 1 pixel est utilisée dans de nombreux scripts d'analyse en ligne légitimes, ce qui peut également induire l'utilisateur en erreur.
Analyse de version
Une analyse des domaines actifs utilisés par les opérateurs de renifleurs ReactGet a révélé de nombreuses versions différentes de la famille de renifleurs. Les versions se distinguent par la présence ou l'absence d'obscurcissement, et en outre, chaque renifleur est conçu pour un système de paiement spécifique qui traite les paiements par carte bancaire pour les magasins en ligne. Après avoir trié la valeur du paramètre correspondant au numéro de version, les spécialistes du Groupe IB ont obtenu une liste complète des variantes de renifleur disponibles, et par les noms des champs de formulaire que chaque renifleur recherche dans le code de page, ils ont déterminé les systèmes de paiement auxquels le renifleur est destiné.
Liste des renifleurs et de leurs systèmes de paiement correspondants Renifleur de mot de passe
L'un des avantages des renifleurs JavaScript travaillant du côté client du site est sa polyvalence: un code malveillant intégré sur le site peut voler n'importe quel type de données, qu'il s'agisse de données de paiement ou du nom d'utilisateur et du mot de passe d'un compte utilisateur. Les spécialistes du groupe IB ont découvert un échantillon d'un renifleur appartenant à la famille ReactGet, conçu pour voler les adresses e-mail et les mots de passe des utilisateurs du site.
Intersection avec ImageID Sniffer
Une analyse de l'un des magasins infectés a révélé que son site avait été infecté deux fois: en plus du code malveillant de la famille de sniffers ReactGet, un code de sniffer de la famille ImageID a été détecté. Cette intersection peut indiquer que les opérateurs derrière l'utilisation des deux renifleurs utilisent des techniques similaires pour injecter du code malveillant.
Renifleur universel
Une analyse de l'un des noms de domaine liés à l'infrastructure de renifleur ReactGet a révélé que le même utilisateur avait enregistré trois autres noms de domaine. Ces trois domaines simulaient des domaines de sites réels et étaient auparavant utilisés pour héberger des renifleurs. Lors de l'analyse du code de trois sites légitimes, un renifleur inconnu a été découvert et une analyse plus approfondie a montré qu'il s'agit d'une version améliorée du renifleur ReactGet. Toutes les versions de sniffers de cette famille précédemment suivies visaient un système de paiement unique, c'est-à-dire que pour chaque système de paiement, une version spéciale du sniffer était requise. Cependant, dans ce cas, une version universelle du renifleur a été découverte, capable de voler des informations à partir de formulaires liés à 15 systèmes de paiement et modules de sites de commerce électronique différents pour les paiements en ligne.
Ainsi, au début du travail, le renifleur a recherché les champs de base du formulaire contenant les informations personnelles de la victime: nom complet, adresse physique, numéro de téléphone.
Ensuite, le renifleur a recherché plus de 15 préfixes différents correspondant à différents systèmes et modules de paiement pour les paiements en ligne.
De plus, les données personnelles et les informations de paiement de la victime ont été collectées et envoyées au site contrôlé par l'attaquant: dans ce cas particulier, deux versions du renifleur universel ReactGet situées sur deux sites piratés différents ont été découvertes. Cependant, les deux versions ont envoyé les données volées au même site piraté
zoobashop.com .
Une analyse des préfixes utilisés par le sniffer pour rechercher les champs contenant les informations de paiement de la victime nous a permis de déterminer que ce modèle de sniffer visait les systèmes de paiement suivants:
- Authorize.Net
- Verisign
- Premières données
- USAePay
- Stripe
- Paypal
- ANZ eGate
- Braintree
- DataCash (MasterCard)
- Paiements Realex
- Psigate
- Systèmes de paiement Heartland
Quels outils sont utilisés pour voler les informations de facturation?
Le premier outil découvert lors de l'analyse de l'infrastructure de l'attaquant est utilisé pour masquer des scripts malveillants responsables du vol de cartes bancaires. Un script bash a été découvert sur l'un des hôtes attaquants à l'aide de la CLI
javascript-obfuscator pour automatiser l'obscurcissement du code de renifleur.
Le deuxième outil détecté est conçu pour générer du code qui est responsable du chargement du renifleur principal. Cet outil génère du code JavaScript qui vérifie si l'utilisateur se trouve sur la page de paiement en recherchant l'adresse actuelle de l'utilisateur pour le
paiement des lignes, le
panier, etc. Si le résultat est positif, le code charge le renifleur principal depuis le serveur des attaquants. Pour masquer les activités malveillantes, toutes les lignes, y compris les lignes de test pour déterminer la page de paiement, ainsi qu'un lien vers le renifleur, sont codées à l'aide de
base64 .
Attaques de phishing
Lors de l'analyse de l'infrastructure réseau des attaquants, il a été constaté que souvent un groupe criminel utilise le phishing pour accéder au panneau d'administration de la boutique en ligne cible. Les attaquants enregistrent un domaine qui ressemble visuellement au domaine d'un magasin, puis y déploient un faux formulaire de connexion au panneau d'administration Magento. En cas de succès, les attaquants auront accès au panneau d'administration de CMS Magento, qui leur permet de modifier les composants du site et d'implémenter un renifleur pour voler les informations de carte de crédit.
Famille G-analytics
Cette famille de renifleurs est utilisée pour voler des cartes aux clients des magasins en ligne. Le tout premier nom de domaine utilisé par le groupe a été enregistré en avril 2016, ce qui pourrait indiquer le début de l'activité du groupe mi-2016.
Dans la campagne actuelle, le groupe utilise des noms de domaine qui imitent des services réels tels que Google Analytics et jQuery, masquant l'activité de renifleur avec des scripts légitimes et similaires aux noms de domaine légitimes. L'attaque a été exécutée sur des sites exécutant CMS Magento.
Comment G-Analytics est intégré dans le code de la boutique en ligne
Une caractéristique distinctive de cette famille est l'utilisation de diverses méthodes de vol des informations de paiement de l'utilisateur. En plus de l'implémentation classique du code JavaScript dans la partie client du site, le groupe criminel a également utilisé la technique d'incorporation de code dans la partie serveur du site, à savoir des scripts PHP qui traitent les données saisies par l'utilisateur. Cette technique est dangereuse dans la mesure où il est difficile pour des chercheurs tiers de détecter un code malveillant. Les spécialistes de Group-IB ont découvert une version d'un renifleur intégré au code PHP du site, utilisant le domaine
dittm.org comme porte d'entrée.
Une version antérieure du renifleur a également été découverte, qui utilise le même domaine
dittm.org pour collecter les données volées, mais cette version est déjà destinée à être installée du côté client de la boutique en ligne.
Plus tard, le groupe a changé de tactique et a commencé à accorder plus d'attention à la dissimulation d'activités malveillantes et à un déguisement.
Début 2017, le groupe a commencé à utiliser le domaine
jquery-js.com , déguisé en CDN pour jQuery: lorsqu'il redirige vers un site d'utilisateurs malveillants, il redirige vers le site légitime
jquery.com .
Et à la mi-2018, le groupe a adopté le nom de domaine
g-analytics.com et a commencé à masquer les activités du renifleur sous le service légitime de Google Analytics.
Analyse de version
Lors de l'analyse des domaines utilisés pour stocker le code de renifleur, il a été constaté que le site dispose d'un grand nombre de versions qui diffèrent par la présence d'obscurcissement, ainsi que par la présence ou l'absence de code inaccessible ajouté au fichier pour distraire l'attention et masquer le code malveillant.
Au total, six versions de renifleurs ont été identifiées sur
jquery-js.com . Ces renifleurs envoient les données volées à l'adresse située sur le même site que le renifleur lui-même:
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
Le
dernier domaine
g-analytics.com , utilisé par le groupe lors d'attaques depuis la mi-2018, sert de référentiel à un plus grand nombre de renifleurs. Au total, 16 versions différentes de renifleurs ont été découvertes. Dans ce cas, la porte d'envoi des données volées a été déguisée en lien vers une image
GIF :
hxxp: // g-analytics [.] Com / __ utm.gif? V = 1 & _v = j68 & a = 98811130 & t = pageview & _s = 1 & sd = 24 bits & sr = 2560x1440 & vp = 2145x371 & 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
, , . , , ,
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 . : . , .
Dans certains échantillons de renifleurs détectés de cette famille, le code était obscurci et contenait les données chiffrées nécessaires au fonctionnement du renifleur: en particulier, l'adresse du portail de renifleur, une liste de champs de formulaire de paiement et, dans certains cas, un faux code de formulaire de paiement. Dans le code à l'intérieur de la fonction, les ressources ont été chiffrées à l'aide de
XOR à l'aide de la clé, qui a été passée par l'argument de la même fonction.
Après avoir déchiffré la chaîne avec la clé correspondante, unique pour chaque échantillon, vous pouvez obtenir une chaîne contenant toutes les lignes du code renifleur via le caractère délimiteur.
Deuxième algorithme d'obscurcissement
Dans des échantillons de renifleurs ultérieurs de cette famille, un mécanisme d'obscurcissement différent a été utilisé: dans ce cas, les données ont été chiffrées à l'aide d'un algorithme auto-écrit. Une chaîne contenant les données chiffrées nécessaires au fonctionnement du renifleur a été transmise comme argument à la fonction de déchiffrement.
À l'aide de la console du navigateur, vous pouvez déchiffrer les données chiffrées et obtenir un tableau contenant des ressources de renifleur.
Lien avec les premières attaques MageCart
Une analyse de l'un des domaines utilisés par le groupe comme portail pour collecter les données volées a révélé que le domaine possède une infrastructure de vol de cartes de crédit identique à celle utilisée par le groupe 1, l'un des premiers groupes
découverts par les spécialistes de RiskIQ.
Deux fichiers ont été trouvés sur l'hôte de la famille des renifleurs CoffeMokko:
- mage.js - fichier contenant le code de renifleur du groupe 1 avec l'adresse de la porte js-cdn.link
- mag.php - Script PHP responsable de la collecte de données volées par des renifleurs
Contenu du fichier Mage.js Il a également été constaté que les premiers domaines utilisés par le groupe derrière la famille de renifleurs CoffeMokko ont été enregistrés le 17 mai 2017:
- link-js [.] lien
- lien info-js [.]
- lien track-js [.]
- lien map-js [.]
- lien smart-js [.]
Le format de ces noms de domaine est le même que celui des noms de domaine du groupe 1 utilisés lors des attaques de 2016.
Sur la base des faits découverts, on peut supposer qu'il existe un lien entre les opérateurs de renifleurs CoffeMokko et le groupe criminel du groupe 1. Vraisemblablement, les opérateurs de CoffeMokko pourraient emprunter des outils et des logiciels de vol de cartes à leurs prédécesseurs. Cependant, il est plus probable que le groupe criminel derrière l'utilisation de la famille de renifleurs CoffeMokko soit les mêmes personnes qui ont commis les attaques dans le cadre des activités du groupe 1. Après la publication du premier rapport sur les activités du groupe criminel, tous leurs noms de domaine ont été bloqués et les outils ont été étudiés en détail et sont décrits. Le groupe a été contraint de faire une pause, d'affiner leurs outils internes et de réécrire le code du renifleur afin de poursuivre leurs attaques et passer inaperçu.