Attention au risque de phishing par des publicités malveillantes pour les projets de la chaîne Terra
0x01 Résumé de l’événement
Récemment, les actifs de certains utilisateurs de la chaîne Terra ont été transférés de manière malveillante. Du 12 au 21 avril, des fonds d’environ 52 adresses ont été transférés de manière malveillante vers terra1fz57nt6t3nnxel6q77wsmxxdesn7rgy0h27x30 avec une perte totale d’environ 4,31 millions de dollars.
0x02 Détails de l’événement
Cette attaque est un lot d’annonces de mots clés Google pour le phishing. Lorsque les utilisateurs recherchent sur Google des projets Terra aussi connus que astroport, protocole de connexion, protocole d’ancrageetc., le premier lien publicitaire apparemment normal sur la page de résultats de Google (le nom de domaine affiché ou même le même) est en fait un site de phishing.
L’utilisateur a entré sa phrase de départ sur le site Web apparemment légitime et instantanément, les pirates ont commencé à vider son portefeuille. L’utilisateur avait jalonné 1000 Luna dans son portefeuille (d’une valeur d’environ 100 000 $). Utiliser le volé phrase de départ, le hacker ouvrit son portefeuille et procéda au démontage de cette Luna. Il y a une période de blocage de 21 jours pour retirer la Luna jalonnée, de sorte que le pirate ne pourrait pas la retirer immédiatement dans son propre portefeuille. L’explorateur de blocs Luna publie l’heure exacte à laquelle la Luna jalonnée sera libérée, alors a commencé un compte à rebours de 3 semaines de notre ami regardant anxieusement son portefeuille, sachant qu’il était impuissant à empêcher que sa Luna ne soit volée au moment où elle a été déverrouillée.
La victime a supposé que le pirate exécuterait un script qui dépenserait la Luna dès qu’elle deviendrait disponible. Ils ont donc décidé que la meilleure chance qu’ils avaient de récupérer la Luna était d’écrire un script similaire qui, espérons-le, retirerait l’argent dans un portefeuille sûr avant que le script du pirate ne puisse faire de même.
Le résultat a été une course pour dépenser la Luna au moment du retrait – presque comme essayer d’être la première personne à saisir le dernier cookie d’une assiette, sauf que le cookie vaut 100 000 $.
0x03 Leur approche
Ils ont écrit leur script en utilisant le SDK terra.js. Cela fonctionnait comme suit :
- Une fois démarré, le script attendrait jusqu’à ce qu’un
execution_time
- Un minuteur d’intervalle s’exécute alors toutes les 200 ms qui tente de retirer le Luna
- Pour retirer la Luna, vous devez :
– Créé unLCDClient
et se connecter à un nœud
– Créer unMsgSend
— Créer et signer une transaction
— Diffuser la transaction
Notez que ces étapes sont toutes effectuées de manière asynchrone
Voici le référentiel Github
0x04 Leurs optimisations
En supposant que le script était bien conçu, ce projet était essentiellement une course contre la montre. Pour améliorer leurs chances de soumettre leur transaction en premier, ils souhaitaient se connecter à autant de nœuds que possible. Sur les 6 nœuds LCD publics répertoriés dans la documentation, seuls 2 d’entre eux fonctionnaient pour eux, à savoir https://terra-lcd.easy2stake.com et https://blockdaemon-terra-lcd.api.bdnodes.net:1317.
Une recherche d’adresse IP des 2 nœuds ci-dessus a révélé que l’un était situé en Allemagne et l’autre en Virginie aux États-Unis. Pour réduire la latence entre nous et les nœuds, nous avons mis en place deux instances AWS EC2 : l’une située en Virginie et l’autre à Francfort. Chacun connecté à son nœud le plus proche. Ensuite, pour faire bonne mesure, nous avons configuré deux instances AWS EC2 supplémentaires aux mêmes emplacements.
Chaque serveur commencerait à exécuter le script environ 30 secondes avant le déverrouillage, mais avec une heure de début échelonnée d’environ 250 ms, pour essayer d’améliorer les chances de glisser une transaction au bon moment.
0x05 Résultat
Lorsque le moment du déverrouillage est venu, les instances ont pu créer et signer avec succès les transactions (ce qui ne pouvait se produire qu’une fois la Luna déverrouillée). Malheureusement, la diffusion de notre transaction a échoué. Cela est probablement dû au fait que le pirate a pu diffuser sa transaction avant nous et, par conséquent, notre diffusion a été rejetée.
Ils pensent qu’entre la création de la transaction et sa diffusion sur le nœud, le pirate avait déjà soumis sa diffusion concurrente, prenant ainsi la Luna du portefeuille.
Voici la transaction réussie du pirate. Ce hacker est un professionnel. Ils ont un site Web qui ressemble exactement à un portefeuille Luna et des publicités Google pour inciter les victimes à révéler leurs phrases de départ. Nous avons pu retracer certaines de leurs transactions précédentes dans un autre portefeuille pour découvrir qu’ils détenaient environ 20 millions de dollars en crypto volée.
Tentative de création et diffusion de transactions sur les 4 serveurs au moment de l’exécution
0x05 Conseil de sécurité
L’équipe de sécurité de Lunaray recommande aux utilisateurs de la chaîne Terra de veiller à ne pas cliquer sur les liens des recherches Google ou de cliquer sur des liens d’origine inconnue, de réduire les opérations inutiles à l’aide de portefeuilles communs et d’éviter les pertes de capital inutiles.
réf : https://medium.com/@LiorNn/our-failed-attempt-at-saving-100-000-of-crypto-from-hackers-19aa8d3d961e
Rejoignez Coinmonks Telegram Channel et Youtube Channel pour en savoir plus sur le trading et l’investissement cryptographiques