Comment MageCart collecte les numéros de cartes de crédit sur les sites de vente en ligne

En falsifiant le code source d'un site de vente en ligne pour y injecter du javascript malveillant, en exploitant la vulnérabilité d'un serveur, ou encore en compromettant une bibliothèque tierce, les cybercriminels sont en mesure de collecter des numéros de carte bleue. Démonstration.

Vers fin décembre 2019, des individus ont reçu un avis de leur prestataire de services bancaires indiquant qu'une transaction de carte pour un achat d’une valeur substantielle était en suspens. Ne reconnaissant pas la transaction, certains ont immédiatement fait en sorte de mettre fin à la transaction qui n'avait pas encore été finalisée. Quelques minutes plus tard, la carte était bloquée et une nouvelle carte était envoyée par la poste à leur adresse.

Pour eux, l’histoire s’arrête là. Mais on peut légitimement se demander où et quand les données de leur carte de crédit avaient été volées, si elles ont été victimes d'une des compromissions de données qui ont touché les grandes enseignes retail ou les banques émettrices de cartes de crédit.

En retraçant les achats en ligne récents, il était évident que la plupart de ces achats n’avaient rien de particulier, mais un cas s'est démarqué parce que les victimes n'avaient fait un achat dans cette enseigne qu'une seule fois : focuscamera.com. Le site était populaire - une enseigne physique bien connue et existant depuis longtemps - et n'avait pas été l’objet d’articles relatifs à une quelconque compromission de données.

Pour savoir si le site avait été compromis, il fallait se concentrer sur la page de paiement. C'est ainsi que le tristement célèbre groupe MageCart fonctionne, en injectant un code javascript pour envoyer les informations de carte de crédit à un serveur de Command&Control qui lui est propre, au moment où les clients renseignent les informations de paiement.

Pour identifier un comportement inhabituel du site web, il suffisait d’ajouter un article au panier d'achat et de procéder à la commande. A ce stade, la combinaison des outils de développement de Chrome et d’un analyseur de paquets (wireshark, pour ne pas le citer) est le seul outil nécessaire pour identifier toute connexion inhabituelle et non-légitime.

 Page de paiement de FocusCamera.com

Détails de la carte soumis au site de C&C

En parcourant la liste des connexions réseau, il n'a pas fallu longtemps pour se rendre compte que les données des cartes de crédit étaient envoyées à deux sites différents, comme le montrent les captures d'écran ci-dessous.

Ce premier est le site légitime de traitement des cartes de paiement de focuscamera.com, auquel les informations de la carte de crédit sont normalement soumises:

La deuxième demande de type POST est la demande frauduleuse, soumise à un domaine nommé zdsassets.com. Notez la similitude avec un domaine ZenDesk légitime nommé zdassets.com (pas de "s" entre le "d" et le "a").

Les données de cartes de crédit sont ainsi soumises au domaine de l'exfiltration :

Selon les données d'enregistrement fournies par Domaintools.com, le domaine zdsassets.com a été enregistré le 11 novembre 2019. A ce jour, cela signifie donc que l'opération de collecte de ce domaine a potentiellement duré environ deux mois. Le domaine est enregistré auprès de Hosting Concepts B.V. d/b/a Openprovider, un fournisseur d'hébergement aux Pays-Bas. Le site est hébergé sur un serveur dédié à Vultr Holdings dans le New Jersey et l'adresse IP 149.28.237.85 est fournie par AS-Choopa (ASN AS20473).

Les victimes

Sur la base de données de télémétrie DNS il semble que ce domaine C&C a été atteint 905 fois depuis sa création, ce qui peut être une indication du nombre de victimes de cette opération de collecte de numéros de cartes. Il est possible que le même domaine de C&C soit utilisé sur plusieurs sites et pages e-commerce compromis - Mais à ce stade, il est difficile de le démontrer. 

Compromission du site

Il semble que le cyber-criminel ait réussi à accéder au code source du site web et à modifier un fichier javascript pour injecter la charge utile malveillante.

Le script de récupération principal charge un fichier javascript visible ci-dessous :

Ce script particulier a été modifié par le cybercriminel pour ajouter une routine javascript encodée en base64 obfusquée comme montré ci-dessous :

Lorsque base64 est décodé, ce script exécute l'activité malveillante suivante (Script de récolte d’informations de carte de crédit  ) :

Le processus ci-dessus s'adresse aux clients qui effectuent le paiement en tant qu'invités. Nous n'avons pas testé le processus de paiement pour les utilisateurs déjà enregistrés pour voir si les numéros de cartes de crédit seraient également collectés.

Cette compromission affiche tous les marqueurs d'une attaque menée par MageCart, récoltant les données des cartes de paiement côté client. Il ne s'agit pas d'un groupe de pirates en particulier, mais plutôt d'un consortium d'acteurs utilisant des méthodes similaires pour compromettre des bibliothèques tierces au sein d’une chaîne d'approvisionnement, ou simplement en piratant le site Web cible pour y implanter un code malveillant. Parmi les victimes bien connues, on peut citer British Airways, TicketMaster, NewEgg et bien d'autres.

MageCart continue de poser un risque important pour les achats en ligne et devrait compter parmi les principales histoires de cybersécurité en 2020. Les propriétaires de sites peuvent se prémunir contre cette attaque en s’assurant de l'intégrité du code source de leur site. En effet, les attaquants doivent falsifier le code source du site pour injecter le javascript malveillant, soit en exploitant la vulnérabilité d'un serveur, soit en compromettant une bibliothèque tierce. Dans cet exemple particulier, il est clair que certains fichiers javascript de focuscamera.com ont été modifiés par rapport à la version originale déployée. Comparer la version déployée du fichier à une version de référence propre pour identifier les différences potentielles (attributs, tailles de fichiers, signatures hash) devrait écarter tout risque ou alerter sur un risque.