Quatre renifleurs javascript qui vous piègent dans les boutiques en ligne



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
URL de renifleur
Système de paiement
reactjsapi.com/react.jsAuthorize.Net
ajaxstatic.com/api.js?v=2.1.1Cartes
ajaxstatic.com/api.js?v=2.1.2Authorize.Net
ajaxstatic.com/api.js?v=2.1.3Authorize.Net
ajaxstatic.com/api.js?v=2.1.4eWAY Rapid
ajaxstatic.com/api.js?v=2.1.5Authorize.Net
ajaxstatic.com/api.js?v=2.1.6Adyen
ajaxstatic.com/api.js?v=2.1.7USAePay
ajaxstatic.com/api.js?v=2.1.9Authorize.Net
apitstatus.com/api.js?v=2.1.1USAePay
apitstatus.com/api.js?v=2.1.2Authorize.Net
apitstatus.com/api.js?v=2.1.3Moneris
apitstatus.com/api.js?v=2.1.5USAePay
apitstatus.com/api.js?v=2.1.6Paypal
apitstatus.com/api.js?v=2.1.7Sage pay
apitstatus.com/api.js?v=2.1.8Verisign
apitstatus.com/api.js?v=2.1.9Paypal
apitstatus.com/api.js?v=2.3.0Stripe
apitstatus.com/api.js?v=3.0.2Realex
apitstatus.com/api.js?v=3.0.3Paypal
apitstatus.com/api.js?v=3.0.4Linkpoint
apitstatus.com/api.js?v=3.0.5Paypal
apitstatus.com/api.js?v=3.0.7Paypal
apitstatus.com/api.js?v=3.0.8Datacash
apitstatus.com/api.js?v=3.0.9Paypal
asianfoodgracer.com/footer.jsAuthorize.Net
billgetstatus.com/api.js?v=1.2Authorize.Net
billgetstatus.com/api.js?v=1.3Authorize.Net
billgetstatus.com/api.js?v=1.4Authorize.Net
billgetstatus.com/api.js?v=1.5Verisign
billgetstatus.com/api.js?v=1.6Authorize.Net
billgetstatus.com/api.js?v=1.7Moneris
billgetstatus.com/api.js?v=1.8Sage pay
billgetstatus.com/api.js?v=2.0USAePay
billgetstatus.com/react.jsAuthorize.Net
cloudodesc.com/gtm.js?v=1.2Authorize.Net
cloudodesc.com/gtm.js?v=1.3ANZ eGate
cloudodesc.com/gtm.js?v=2.3Authorize.Net
cloudodesc.com/gtm.js?v=2.4Moneris
cloudodesc.com/gtm.js?v=2.6
Sage pay
cloudodesc.com/gtm.js?v=2.7Sage pay
cloudodesc.com/gtm.js?v=2.8Chase Paymentech
cloudodesc.com/gtm.js?v=2.9Authorize.Net
cloudodesc.com/gtm.js?v=2.91Adyen
cloudodesc.com/gtm.js?v=2.92Psigate
cloudodesc.com/gtm.js?v=2.93Cyber ​​source
cloudodesc.com/gtm.js?v=2.95ANZ eGate
cloudodesc.com/gtm.js?v=2.97Realex
geisseie.com/gs.jsUSAePay
gtmproc.com/age.jsAuthorize.Net
gtmproc.com/gtm.js?v=1.2Authorize.Net
gtmproc.com/gtm.js?v=1.3ANZ eGate
gtmproc.com/gtm.js?v=1.5Paypal
gtmproc.com/gtm.js?v=1.6Paypal
gtmproc.com/gtm.js?v=1.7Realex
livecheckpay.com/api.js?v=2.0Sage pay
livecheckpay.com/api.js?v=2.1Paypal
livecheckpay.com/api.js?v=2.2Verisign
livecheckpay.com/api.js?v=2.3Authorize.Net
livecheckpay.com/api.js?v=2.4Verisign
livecheckpay.com/react.jsAuthorize.Net
livegetpay.com/pay.js?v=2.1.2ANZ eGate
livegetpay.com/pay.js?v=2.1.3Paypal
livegetpay.com/pay.js?v=2.1.5Cyber ​​source
livegetpay.com/pay.js?v=2.1.7Authorize.Net
livegetpay.com/pay.js?v=2.1.8Sage pay
livegetpay.com/pay.js?v=2.1.9Realex
livegetpay.com/pay.js?v=2.2.0Cyber ​​source
livegetpay.com/pay.js?v=2.2.1Paypal
livegetpay.com/pay.js?v=2.2.2Paypal
livegetpay.com/pay.js?v=2.2.3Paypal
livegetpay.com/pay.js?v=2.2.4Verisign
livegetpay.com/pay.js?v=2.2.5eWAY Rapid
livegetpay.com/pay.js?v=2.2.7Sage pay
livegetpay.com/pay.js?v=2.2.8Sage pay
livegetpay.com/pay.js?v=2.2.9Verisign
livegetpay.com/pay.js?v=2.3.0Authorize.Net
livegetpay.com/pay.js?v=2.3.1Authorize.Net
livegetpay.com/pay.js?v=2.3.2Première passerelle mondiale de données
livegetpay.com/pay.js?v=2.3.3Authorize.Net
livegetpay.com/pay.js?v=2.3.4Authorize.Net
livegetpay.com/pay.js?v=2.3.5Moneris
livegetpay.com/pay.js?v=2.3.6Authorize.Net
livegetpay.com/pay.js?v=2.3.8Paypal
livegetpay.com/pay.js?v=2.4.0Verisign
maxstatics.com/site.jsUSAePay
mediapack.info/track.js?d=funlove.comUSAePay
mediapack.info/track.js?d=qbedding.comAuthorize.Net
mediapack.info/track.js?d=vseyewear.comVerisign
mxcounter.com/c.js?v=1.2Paypal
mxcounter.com/c.js?v=1.3Authorize.Net
mxcounter.com/c.js?v=1.4Stripe
mxcounter.com/c.js?v=1.6Authorize.Net
mxcounter.com/c.js?v=1.7eWAY Rapid
mxcounter.com/c.js?v=1.8Sage pay
mxcounter.com/c.js?v=2.0Authorize.Net
mxcounter.com/c.js?v=2.1Braintree
mxcounter.com/c.js?v=2.10Braintree
mxcounter.com/c.js?v=2.2Paypal
mxcounter.com/c.js?v=2.3Sage pay
mxcounter.com/c.js?v=2.31Sage pay
mxcounter.com/c.js?v=2.32Authorize.Net
mxcounter.com/c.js?v=2.33Paypal
mxcounter.com/c.js?v=2.34Authorize.Net
mxcounter.com/c.js?v=2.35Verisign
mxcounter.com/click.js?v=1.2Paypal
mxcounter.com/click.js?v=1.3Authorize.Net
mxcounter.com/click.js?v=1.4Stripe
mxcounter.com/click.js?v=1.6Authorize.Net
mxcounter.com/click.js?v=1.7eWAY Rapid
mxcounter.com/click.js?v=1.8Sage pay
mxcounter.com/click.js?v=2.0Authorize.Net
mxcounter.com/click.js?v=2.1Braintree
mxcounter.com/click.js?v=2.2Paypal
mxcounter.com/click.js?v=2.3Sage pay
mxcounter.com/click.js?v=2.31Sage pay
mxcounter.com/click.js?v=2.32Authorize.Net
mxcounter.com/click.js?v=2.33Paypal
mxcounter.com/click.js?v=2.34Authorize.Net
mxcounter.com/click.js?v=2.35Verisign
mxcounter.com/cnt.jsAuthorize.Net
mxcounter.com/j.jsAuthorize.Net
newrelicnet.com/api.js?v=1.2Authorize.Net
newrelicnet.com/api.js?v=1.4Authorize.Net
newrelicnet.com/api.js?v=1.8Sage pay
newrelicnet.com/api.js?v=4.5Sage pay
newrelicnet.com/api.js?v=4.6Payway Westpac
nr-public.com/api.js?v=2.0Payfort
nr-public.com/api.js?v=2.1Paypal
nr-public.com/api.js?v=2.2Authorize.Net
nr-public.com/api.js?v=2.3Stripe
nr-public.com/api.js?v=2.4Première passerelle mondiale de données
nr-public.com/api.js?v=2.5Psigate
nr-public.com/api.js?v=2.6Authorize.Net
nr-public.com/api.js?v=2.7Authorize.Net
nr-public.com/api.js?v=2.8Moneris
nr-public.com/api.js?v=2.9Authorize.Net
nr-public.com/api.js?v=3.1Sage pay
nr-public.com/api.js?v=3.2Verisign
nr-public.com/api.js?v=3.3Moneris
nr-public.com/api.js?v=3.5Paypal
nr-public.com/api.js?v=3.6Linkpoint
nr-public.com/api.js?v=3.7Payway Westpac
nr-public.com/api.js?v=3.8Authorize.Net
nr-public.com/api.js?v=4.0Moneris
nr-public.com/api.js?v=4.0.2Paypal
nr-public.com/api.js?v=4.0.3Adyen
nr-public.com/api.js?v=4.0.4Paypal
nr-public.com/api.js?v=4.0.5Authorize.Net
nr-public.com/api.js?v=4.0.6USAePay
nr-public.com/api.js?v=4.0.7EBizCharge
nr-public.com/api.js?v=4.0.8Authorize.Net
nr-public.com/api.js?v=4.0.9Verisign
nr-public.com/api.js?v=4.1.2Verisign
ordercheckpays.com/api.js?v=2.11Authorize.Net
ordercheckpays.com/api.js?v=2.12Paypal
ordercheckpays.com/api.js?v=2.13Moneris
ordercheckpays.com/api.js?v=2.14Authorize.Net
ordercheckpays.com/api.js?v=2.15Paypal
ordercheckpays.com/api.js?v=2.16Paypal
ordercheckpays.com/api.js?v=2.17Payway Westpac
ordercheckpays.com/api.js?v=2.18Authorize.Net
ordercheckpays.com/api.js?v=2.19Authorize.Net
ordercheckpays.com/api.js?v=2.21Sage pay
ordercheckpays.com/api.js?v=2.22Verisign
ordercheckpays.com/api.js?v=2.23Authorize.Net
ordercheckpays.com/api.js?v=2.24Paypal
ordercheckpays.com/api.js?v=2.25Payfort
ordercheckpays.com/api.js?v=2.29Cyber ​​source
ordercheckpays.com/api.js?v=2.4PayPal Payflow Pro
ordercheckpays.com/api.js?v=2.7Authorize.Net
ordercheckpays.com/api.js?v=2.8Authorize.Net
ordercheckpays.com/api.js?v=2.9Verisign
ordercheckpays.com/api.js?v=3.1Authorize.Net
ordercheckpays.com/api.js?v=3.2Authorize.Net
ordercheckpays.com/api.js?v=3.3Sage pay
ordercheckpays.com/api.js?v=3.4Authorize.Net
ordercheckpays.com/api.js?v=3.5Stripe
ordercheckpays.com/api.js?v=3.6Authorize.Net
ordercheckpays.com/api.js?v=3.7Authorize.Net
ordercheckpays.com/api.js?v=3.8Verisign
ordercheckpays.com/api.js?v=3.9Paypal
ordercheckpays.com/api.js?v=4.0Authorize.Net
ordercheckpays.com/api.js?v=4.1Authorize.Net
ordercheckpays.com/api.js?v=4.2Sage pay
ordercheckpays.com/api.js?v=4.3Authorize.Net
reactjsapi.com/api.js?v=0.1.0Authorize.Net
reactjsapi.com/api.js?v=0.1.1Paypal
reactjsapi.com/api.js?v=4.1.2Silex
reactjsapi.com/api.js?v=4.1.4Paypal
reactjsapi.com/api.js?v=4.1.5Sage pay
reactjsapi.com/api.js?v=4.1.51Verisign
reactjsapi.com/api.js?v=4.1.6Authorize.Net
reactjsapi.com/api.js?v=4.1.7Authorize.Net
reactjsapi.com/api.js?v=4.1.8Stripe
reactjsapi.com/api.js?v=4.1.9Gros zèbre
reactjsapi.com/api.js?v=4.2.0Sage pay
reactjsapi.com/api.js?v=4.2.1Authorize.Net
reactjsapi.com/api.js?v=4.2.2Première passerelle mondiale de données
reactjsapi.com/api.js?v=4.2.3Authorize.Net
reactjsapi.com/api.js?v=4.2.4eWAY Rapid
reactjsapi.com/api.js?v=4.2.5Adyen
reactjsapi.com/api.js?v=4.2.7Paypal
reactjsapi.com/api.js?v=4.2.8Services aux marchands QuickBooks
reactjsapi.com/api.js?v=4.2.9Verisign
reactjsapi.com/api.js?v=4.2.91Sage pay
reactjsapi.com/api.js?v=4.2.92Verisign
reactjsapi.com/api.js?v=4.2.94Authorize.Net
reactjsapi.com/api.js?v=4.3.97Authorize.Net
reactjsapi.com/api.js?v=4.5Sage pay
reactjsapi.com/react.jsAuthorize.Net
sydneysalonsupplies.com/gtm.jseWAY Rapid
tagsmediaget.com/react.jsAuthorize.Net
tagstracking.com/tag.js?v=2.1.2ANZ eGate
tagstracking.com/tag.js?v=2.1.3Paypal
tagstracking.com/tag.js?v=2.1.5Cyber ​​source
tagstracking.com/tag.js?v=2.1.7Authorize.Net
tagstracking.com/tag.js?v=2.1.8Sage pay
tagstracking.com/tag.js?v=2.1.9Realex
tagstracking.com/tag.js?v=2.2.0Cyber ​​source
tagstracking.com/tag.js?v=2.2.1Paypal
tagstracking.com/tag.js?v=2.2.2Paypal
tagstracking.com/tag.js?v=2.2.3Paypal
tagstracking.com/tag.js?v=2.2.4Verisign
tagstracking.com/tag.js?v=2.2.5eWAY Rapid
tagstracking.com/tag.js?v=2.2.7Sage pay
tagstracking.com/tag.js?v=2.2.8Sage pay
tagstracking.com/tag.js?v=2.2.9
Verisign
tagstracking.com/tag.js?v=2.3.0Authorize.Net
tagstracking.com/tag.js?v=2.3.1Authorize.Net
tagstracking.com/tag.js?v=2.3.2Première passerelle mondiale de données
tagstracking.com/tag.js?v=2.3.3Authorize.Net
tagstracking.com/tag.js?v=2.3.4Authorize.Net
tagstracking.com/tag.js?v=2.3.5Moneris
tagstracking.com/tag.js?v=2.3.6Authorize.Net
tagstracking.com/tag.js?v=2.3.8Paypal


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.


L'infrastructure
Domaine
Date de découverte / apparition
mediapack.info05/04/2017
adsgetapi.com15/06/2017
simcounter.com14/08/2017
mageanalytics.com22/12/2017
maxstatics.com16/01/2018
reactjsapi.com19/01/2018
mxcounter.com02/02/2018
apitstatus.com03/01/2018
orderracker.com20/04/2018
tagstracking.com25/06/2018
adsapigate.com07/12/2018
trust-tracker.com15/07/2018
fbstatspartner.com10/02/2018
billgetstatus.com10/12/2018
aldenmlilhouse.com20/10/2018
balletbeautlful.com20/10/2018
bargalnjunkie.com20/10/2018
payselector.com10.21.2018
tagsmediaget.com11/02/2018
hs-payments.com16/11/2018
ordercheckpays.com19/11/2018
geisseie.com24/11/2018
gtmproc.com29/11/2018
livegetpay.com18/12/2018
sydneysalonsupplies.com18/12/2018
newrelicnet.com
19/12/2018
nr-public.com01/03/2019
cloudodesc.com01/04/2019
ajaxstatic.com01/11/2019
livecheckpay.com21/01/2019
asianfoodgracer.com25/01/2019


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

L'infrastructure

/
iozoz.com08.04.2016
dittm.org10.09.2016
jquery-js.com02.01.2017
g-analytics.com31.05.2018
google-analytics.is21.11.2018
analytic.to04.12.2018
google-analytics.to06.12.2018
google-analytics.cm28/12/2018
analytic.is28/12/2018
googlc-analytics.cm17.01.2019


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.

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


paymentnow[.]tk , payment_forminsite.js , subjectAltName , CloudFlare. , evil.js . , CVE-2016-4010, footer CMS Magento. request.requestnet[.]tk , , paymentnow[.]tk .



. - .


— PayPal, .

L'infrastructure

/
cdn.illum.pw27/11/2016
records.nstatistics.com06/09/2018
request.payrightnow.cf25/05/2018
paymentnow.tk16/07/2017
payment-line.tk01/03/2018
paymentpal.cf04/09/2017
requestnet.tk28/06/2017


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.

L'infrastructure
DomaineDate de découverte / apparition
link-js.link17/05/2017
info-js.link17/05/2017
track-js.link17/05/2017
map-js.link17/05/2017
smart-js.link17/05/2017
adorebeauty.org09/03/2017
security-payment.su09/03/2017
braincdn.org09/04/2017
sagecdn.org09/04/2017
slickjs.org09/04/2017
oakandfort.org09/10/2017
citywlnery.org15/09/2017
dobell.su10/04/2017
childsplayclothing.org31/10/2017
jewsondirect.com11/05/2017
shop-rnib.org15/11/2017
closetlondon.org16/11/2017
misshaus.org28/11/2017
battery-force.org12/01/2017
kik-vape.org12/01/2017
greatfurnituretradingco.org12/02/2017
etradesupply.org12/04/2017
replacemyremote.org12/04/2017
all-about-sneakers.org12/05/2017
mage-checkout.org12/05/2017
nililotan.org12/07/2017
lamoodbighats.net12/08/2017
walletgear.org10/12/2017
dahlie.org12/12/2017
davidsfootwear.org20/12/2017
blackriverimaging.org23/12/2017
exrpesso.org01/02/2018
parks.su01/09/2018
pmtonline.su01/12/2018
ottocap.org15/01/2018
christohperward.org27/01/2018
coffetea.org31/01/2018
energycoffe.org31/01/2018
energytea.org31/01/2018
teacoffe.net31/01/2018
adaptivecss.org03/01/2018
coffemokko.com03/01/2018
londontea.net03/01/2018
ukcoffe.com03/01/2018
labbe.biz20/03/2018
batterynart.com04/03/2018
btosports.net04/09/2018
chicksaddlery.net16/04/2018
paypaypay.org05/11/2018
ar500arnor.com26/05/2018
authorizecdn.com28/05/2018
slickmin.com28/05/2018
bannerbuzz.info06/03/2018
kandypens.net06/08/2018
mylrendyphone.com15/06/2018
freshchat.info07/01/2018
3lift.org07/02/2018
abtasty.net07/02/2018
mechat.info07/02/2018
zoplm.com07/02/2018
zapaljs.com09/02/2018
foodandcot.com15/09/2018
freshdepor.com15/09/2018
swappastore.com15/09/2018
verywellfitnesse.com15/09/2018
elegrina.com18/11/2018
majsurplus.com19/11/2018
top5value.com19/11/2018

Source: https://habr.com/ru/post/fr451792/


All Articles