Les escrocs ne sont pas des pirates informatiques : analyse de quatre backends, tous facilement compromis
Firebase · Supabase · Express.js · Drainer-as-a-Service · Février 2026
Avertissement : il s'agit d'une analyse, et non d'une attaque
Tout ce qui est présenté dans cet article est le résultat de analyse passive et données accessibles au public. Aucun système n'a été piraté. Aucune procédure d'authentification n'a été contournée. Dans chaque cas, ce sont les propres erreurs de configuration des escrocs qui ont exposé leur infrastructure, les données des victimes et leurs identités opérationnelles à quiconque daignait y jeter un œil. Toutes les clés API se trouvaient dans des paquets JavaScript publics. Toutes les bases de données étaient grand ouvertes, conformément à la conception même des opérateurs. Nous rapportons ces faits non pas pour attaquer, mais pour démontrer que les personnes qui volent vos cryptomonnaies ne parviennent même pas à mettre leurs propres outils en sécurité.
Thèse centrale : des « script kiddies » armés d'outils volés
Il existe un mythe tenace dans l'esprit du grand public selon lequel les escrocs en ligne seraient des « hackers », c'est-à-dire des génies de l'informatique capables de s'introduire dans des systèmes avec habileté et sophistication. Ce n'est pas vrai.
Les escrocs spécialisés dans les cryptomonnaies d'aujourd'hui sont des « script kiddies » utilisant des kits d'outils achetés. Ils achètent des packs « Drainer-as-a-Service » pour 200 à 500 dollars, les déploient sur des hébergements gratuits ou bon marché, et prient pour que leurs victimes ne s'en aperçoivent pas. Ils n'écrivent pas de code. Ils ne comprennent rien aux réseaux. Et ils ne comprennent certainement rien à la sécurité.
Nous le savons car, en février 2026, PhishDestroy a analysé 4 réseaux frauduleux indépendants — et dans chaque cas, nous aurions pu :
- 📖 Consulter toutes les données des victimes de vol (phrases de récupération, adresses e-mail, adresses IP, types de portefeuilles)
- ✏️ Modifié ou supprimé la base de données des escrocs
- 🔍 Identification de l'opérateur par le biais de clés API exposées, d'adresses e-mail et d'empreintes d'infrastructure
- 🔄 Reconstitution de l'attaque contre l'escroc — en exploitant les mêmes failles qu'ils avaient laissées ouvertes
Pas besoin d'exploits. Pas de failles « zero-day ». Pas de « piratage ». Juste en ouvrant la porte d'entrée qu'ils avaient laissée ouverte.
Cas n° 1 : L'API fantôme — server0002.mn19indexpre.xyz
Express.js sur Apache : aucune sécurité réelle
| Paramètres | Valeur |
|---|---|
| Domaine | server0002.mn19indexpre.xyz |
| Adresse IP | 108.181.185.225 |
| Pile serveur | Apache/2.4.58 (Ubuntu) → Express.js (Node.js) |
| Bannière SSH | SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.11 |
| Émetteur TLS | Let's Encrypt (E7), valable de janvier à avril 2026 |
| Registre DNS | GoDaddy (ns39/ns40.domaincontrol.com) |
| Courriel (MX) | mn19indexpre-xyz.mail.protection.outlook.com |
| Microsoft Tenant | NETORGFT19090185.onmicrosoft.com |
| Ports ouverts | 22 (SSH), 80 (HTTP→301), 443 (HTTPS) |
« L'authentification » — Une plaisanterie
L'API est fournie avec un jeton Bearer prédéfini : thisisakeyforsecureserver. Mais voici le clou de l'histoire — le jeton n'est en réalité pas vérifié:
Validation sans entrée
Toutes les charges utiles d'injection que nous avons testées ont été acceptées sans avertissement :
Empreinte de performance
Temps de réponse constant d'environ 7,5 secondes pour les requêtes POST, quelle que soit la taille de la charge utile (acceptation de 10 octets à 10 Mo), ce qui laisse supposer un transfert d'e-mails ou un relais de webhooks en arrière-plan. Les requêtes GET sont traitées en 0,6 seconde. Dix requêtes parallèles sont traitées en 9,1 secondes — aucune limitation de débit n'est appliquée.
Risque de désanonymisation
Microsoft 365 tenant ID NETORGFT19090185 est un lien direct vers le compte de l'organisation qui a enregistré ce domaine. Si l'on ajoute à cela les enregistrements d'enregistrement GoDaddy et une adresse IP dédiée (non masquée par un CDN), cet opérateur est facilement identifiable par la voie judiciaire. L'enregistrement SPF (include:secureserver.net) confirme que, dans le cadre de l'hébergement de messagerie GoDaddy, toutes les métadonnées des e-mails sont accessibles sur présentation d'une assignation à comparaître.
Cas n° 2 : Firebase à la merci de tous — web3ledgar.com
Firestore sans aucune règle de sécurité
| Paramètres | Valeur |
|---|---|
| Domaine de phishing | web3ledgar.com (typosquat de « Ledger ») |
| Domaine alternatif | web3.ledgerscore.ltd |
| Projet Firebase | web3ledger-210ab |
| Clé API | AIzaSyCv8e-Gl7nK1RPpfNkJt-WjSZiaoe4AsL8 |
| Identifiant de l'application | 1:1054258933515:web:9fb193fcd0093023f7fc0e |
| Ensemble JS | /static/js/main.7a5ec2fa.js |
| Règles Firestore | Accès libre — lecture/écriture sans authentification |
| Nombre total de victimes | 12 enregistrements dans users collection |
| Collections trouvées | users, transactions |
Données sur les victimes — Accessibles à tous
Une seule requête GET non authentifiée adressée à l'API REST de Firestore a renvoyé chaque phrase de récupération volée:
Parmi ces 12 enregistrements, il y avait une entrée révélatrice : quelqu'un avait déjà testé le système avec fbi@fbi.gov comme l'indique l'e-mail. Soit l'escroc a testé son propre système (ce qui est utile pour l'identifier), soit quelqu'un d'autre l'avait déjà sondé.
Le déroulement de l'attaque
Le site de phishing imite l'interface du portefeuille Ledger. La victime clique sur « Connecter le portefeuille » → saisit sa phrase de récupération → l'interface React envoie directement les données à Firestore → l'escroc récupère ces informations dans la même base de données accessible. Pas de serveur backend du tout. L'ensemble du système fonctionne grâce à l'offre gratuite de Google.
Risque de désanonymisation
ID du projet Firebase web3ledger-210ab et l'identifiant de l'application 1:1054258933515 sont associé à un compte Google. Google conserve les relevés de facturation, les journaux d'adresses IP et les données de création de compte pour tous les projets Firebase. Une simple demande des forces de l'ordre adressée à Google permet de révéler l'identité de l'opérateur. De plus, le fait que les règles Firestore soient totalement ouvertes signifie que nous aurions pu enregistrer ces données dans leur base de données, a averti les victimes en temps réel ou a effacé l'intégralité de la collection.
Cas n° 3 : Supabase Full CRUD — web3safe-pal.com
Sécurité au niveau des lignes désactivée, GraphQL entièrement accessible
| Paramètres | Valeur |
|---|---|
| Domaine de phishing | web3safe-pal.com (typosquat de « SafePal ») |
| Projet Supabase | gzqsadraigchwdhblavp |
| Quelle est la clé ? | Publié dans /assets/index-b025f4a6.js (748 Ko) |
| Table de base de données | seeds — ouvrir, lire, insérer, mettre à jour, supprimer |
| GraphQL | Introspection complète + mutations activées |
| Fonctions en périphérie | send-wallet-import-email, send-email |
| Service de messagerie électronique | Réenvoyer l'API (RESEND_API_KEY dans l'environnement) |
| Dossiers des victimes | N° 130-131 (le n° 129 ayant été supprimé précédemment) |
| Langue de l'interface utilisateur | Français (« Portefeuille principal », « Votre portefeuille est en cours de chargement... ») |
Accès complet à la base de données — Lecture, écriture, suppression
La clé « anon » de Supabase, qui se trouve dans le fichier JavaScript minifié, permet accès complet aux fonctions CRUD vers le seeds table:
Les identifiants commencent à 130 — ce qui signifie que les enregistrements 1 à 129 ont été précédemment supprimés par l'opérateur. Au moins 131 phrases de récupération sont passées par ce système.
Fonctions Edge : la traçabilité des e-mails
Deux fonctions Edge de Supabase sont actives. Nous avons procédé à une ingénierie inverse du send-email le format d'entrée attendu de la fonction en testant différentes charges utiles :
La clé API de renvoi (RESEND_API_KEY) est stockée dans les variables d'environnement de Supabase. Resend conserve les enregistrements de vérification de l'expéditeur et les données de facturation — un autre moyen direct d'accéder à l'identité de l'opérateur.
Risque de désanonymisation
La localisation russe de l'interface utilisateur (« Portefeuille principal », « Votre portefeuille est en cours de chargement... ») indique un Opérateur parlant russe. Le projet Supabase (gzqsadraigchwdhblavp) est associé à un compte comportant des relevés de facturation. Le service de renvoi d'e-mails dispose de l'adresse e-mail du destinataire. L'introspection GraphQL révèle le schéma complet de la base de données. Nous avons démontré un accès en écriture complet — nous aurions pu remplacer chaque phrase de récupération volée par un message d'avertissement destiné aux victimes, ou supprimé l'intégralité de la table. L'opérateur n'aurait alors aucun moyen de récupérer les données.
Cas n° 4 : Système de drainage à l'échelle industrielle — aipolypredictor.xyz
19 000 phrases de récupération en 5,8 jours
| Paramètres | Valeur |
|---|---|
| Domaine front-end | aipolypredictor.xyz (« PolySniper | Les paris d'initiés de Frontrun ») |
| API C2 | api.yfhikblkhghdyteiuyf54.run |
| Adresses IP C2 | 172.67.168.147, 104.21.26.231 (Cloudflare) |
| Back-end | Express.js (Node.js) v1.0.0 |
| S'inscrire (Interface utilisateur) | NiceNIC International Group Co. |
| S'inscrire (C2) | PDR Ltd. (PublicDomainRegistry.com) |
| Temps de disponibilité | Environ 139 heures (débuté vers le 10 février 2026 à 21 h 00 UTC) |
| Drainer Kit CDN | renderer-postcard.defex.cc (601 Ko de code JS obfusqué) |
| Bot Telegram | Actif, intégré pour les notifications |
| Limite de débit | 10 requêtes/60 s (seule limite détectée) |
Échelle mise en évidence par des identifiants séquentiels
L'erreur la plus grave : numéros d'identification séquentiels des tâches. Chaque soumission d'une phrase de récupération génère un identifiant incrémental, ce qui permet à quiconque de calculer le volume total :
Architecture multi-chaînes
Le serveur C2 génère des clés sur l'ensemble des principales chaînes en utilisant des chemins de dérivation d'une profondeur de 100 :
Infrastructure de campagne
11 domaines confirmés répartis entre 2 groupes d'opérateurs, identifiés par leurs identifiants de bundle :
| Identifiant du bundle | Domaines | Statut |
|---|---|---|
88ef78f5... | Aipolypredictor.xyz | EN DIRECT |
4446ea5d... | solana.onspace.app, solxjup.onspace.app | EN DIRECT |
| Kit defex.cc | jup-v2.com, events-charizard.fun, events-llquid.fun, events-blackswan.fun, soljup.onspace.build | Mixte |
Analyse des charges utiles JavaScript
Trois charges utiles JavaScript obfusquées alimentent le drainer :
- wallet-connect.js (46 Ko) — Gère l'interface utilisateur de connexion au portefeuille, intercepte la saisie de la graine. Obscurcissement par rotation de tableaux de chaînes de caractères.
- wallet-specific-modals.js (134 Ko) — Contient Liste complète des mots anglais BIP39 et Liste de mots pour Monero (1 626 mots). Protection contre le débogage via le remplacement des appels console.log/trace. Prise en charge des fenêtres modales multi-portefeuilles.
- defex.cc/index.js (601 Ko) — Code obfusqué en Unicode avec des noms de variables en chinois. Logique de drainer spécifique à Solana. Encodeur Base58, primitives de dérivation de clés cryptographiques. Version 3.0.0.
Risque de désanonymisation
Le CORS: * l'en-tête et l'absence de moyens d'authentification Tout le monde peut soumettre des demandes et suivre l'évolution des numéros d'identification des tâches en temps réel. Grâce à l'intégration du bot Telegram, le compte Telegram de l'opérateur reçoit des notifications — et les métadonnées de Telegram peuvent faire l'objet d'une assignation à comparaître. NiceNIC (bureau d'enregistrement pour l'interface utilisateur) est un bureau d'enregistrement réputé pour sa sécurité que nous avons déjà examiné, mais PDR Ltd. (bureau d'enregistrement de domaines .C2) répond aux demandes des forces de l'ordre. Le defex.cc Le kit de drainage dessert plus de 255 domaines — une compromission de defex.cc mettrait à nu l'ensemble de l'opération DaaS et tous ses clients.
Comparaison : 4 opérations, même modèle
| Système métrique | mn19indexpre Express.js |
web3ledgar Firebase |
Web3SafePal Supabase |
aipolypredictor Drainer C2 |
|---|---|---|---|---|
| Authentification | Aucun (jeton ignoré) | Aucun | Clé anonyme en JavaScript | Aucun (CORS : *) |
| Données lisibles | Messages/relais | Toutes les phrases de récupération | Toutes les phrases de récupération | Références de poste / échelle |
| Données modifiables | Oui (illimité) | Oui | Oui (CRUD complet) | Oui (envoyer) |
| Validation des données saisies | Zéro | Zéro | Zéro | Au minimum |
| Limitation du débit | Aucun | Aucun | Aucun | 10 répétitions en 60 secondes |
| Non anonymisable | MS365 tenant | Compte Google | Renvoyer + Facturation Supabase | PDR + Telegram |
| Nombre estimé de victimes | Inconnu | 12 | 131+ | Plus de 19 000 |
| Langue de l'opérateur | Inconnu | Anglais | Russe | Inconnu |
Pourquoi les escrocs ne sont pas des pirates informatiques
Les preuves sont accablantes. Dans les quatre opérations, on observe le même schéma :
- Acheter des kits de égouttoirs prêts à l'emploi (200 à 500 $)
- Déployer sur des offres gratuites (Firebase, Supabase)
- Ne modifiez pas les configurations par défaut
- Utilisez des jetons codés en dur qu'ils ne vérifient pas
- N'activez jamais RLS, ne restreignez jamais CORS
- Révéler leur identité dans les métadonnées
- Utilisez des identifiants séquentiels qui reflètent leur échelle
- Créer des outils d'exfiltration personnalisés
- Utilisez des canaux cryptés et authentifiés
- Générer des identifiants aléatoires, alterner les infrastructures
- Mettre en place un contrôle d'accès adéquat
- Utiliser Tor ou des chaînes de proxys, effectuer des paiements anonymes
- Distinguer l'identité opérationnelle de l'hébergement
- Mettre en œuvre des techniques anti-forensiques
Le client type de Drainer-as-a-Service est un un escroc spécialisé dans l'ingénierie sociale muni d'une carte de crédit, et non des techniciens. Ils savent comment enregistrer un nom de domaine et insérer du code dans un panneau d'hébergement. En revanche, ils ne savent pas :
- Configurer les règles de sécurité Firestore (cela ne prendra que 2 minutes)
- Activer la sécurité au niveau des lignes dans Supabase (cela prendrait environ 5 minutes)
- Valider et nettoyer les données saisies (cela prendrait 30 minutes)
- Utilisez des UUID plutôt que des nombres entiers séquentiels (cela ne prendrait qu'une ligne de code)
- Limiter le CORS à leurs propres domaines (cela ne demanderait qu'une ligne de configuration)
Ce ne sont pas des adversaires sophistiqués. Ce sont des personnes qui ne savent pas configurer une base de données.
Indicateurs de compromission (IOC)
Domaines
Adresses IP
Clés API et identifiants de projet
Conclusion : L'Empereur est nu
En résumé
Toutes les opérations frauduleuses que nous avons analysées pourraient être entièrement compromis, désanonymisés et mis hors service en utilisant simplement un navigateur web, curl et la documentation accessible au public. Dans tous les cas, les pirates ont laissé leurs bases de données grand ouvertes, leurs clés API dans des fichiers JavaScript publics, leurs identités dans les métadonnées, et les données de leurs victimes accessibles à quiconque prenait la peine de les consulter.
La leçon est simple : Les escrocs ne sont pas des pirates informatiques. Ce sont des voleurs à l'étalage qui ont acheté un kit de crochetage sur AliExpress et ont oublié de fermer leur porte d'entrée à clé. Les outils qu'ils utilisent sont sophistiqués… parce que quelqu'un d'autre les a conçus. Les auteurs de ces actes sont eux-mêmes des amateurs qui exposent systématiquement leur propre infrastructure, les données de leurs victimes et leur propre identité à quiconque possède des connaissances techniques de base.
Si vous avez saisi votre phrase de récupération sur l'un de ces sites, partez du principe que votre portefeuille a été piraté et transférez immédiatement vos fonds.
Toutes les constatations ont été signalées aux prestataires de services concernés (Google/Firebase, Supabase, Cloudflare, bureaux d'enregistrement de noms de domaine) et consignées à l'intention des autorités chargées de l'application de la loi. Les indicateurs de compromission (IOC) ci-dessus ont été ajoutés à la PhishDestroy : liste des sites à supprimer.


