Qu’est-ce qu’un sweeper bot et comment s’en débarasser ?

Un sweeper bot, c'est le type de robot que l'on souhaiterait à tout prix éviter car les dégâts causés peuvent être conséquent. Des cryptomonnaies ont soudainement quitté votre compte, sans votre permission ou à votre insu ? Avez-vous remarqué que chaque fois que vous transférez quelque chose sur votre wallet, il est automatiquement transféré ailleurs ? Si tel est le cas, vous êtes peut-être victime d'un sweeper bot.

Sweeper Bot

A travers cet article, nous allons aborder tous les aspect autour du sweeper bot pour comprendre le fonctionnement et surtout, voir s’il est réellement possible de s’en débarrasser.

Qu’est-ce qu’un sweeper bot ?

Un sweeper bot ou « robot balayeur » en français, est un robot, issue d’un code informatique, qui va suivre en permanence le moindre mouvement d’une adresse blockchain afin de rediriger des actifs déposés sur l’adresse vers une autre.

Pour accéder aux cryptomonnaies et NFT des adresses, ils vont détourner la clé privée ou seed phrase d’un utilisateur par différents moyens comme le piratage de la machine de l’utilisateurs ou par le biais de faux site d’application crypto (phishing) sur lequel l’utilisateur va donner sa phrase de récupération qui doit resté totalement secrète.

Comme tous les programmes informatiques, le caractère malveillant ou non d’un script dépend de la personne qui l’a programmé, de ce qu’il est censé faire et de l’endroit où il est déployé. Après tout, le fait de pouvoir déplacer automatiquement des actifs d’une adresse à une autre pourrait être une fonctionnalité très pratique dans certains cas.

Cependant, les sweeper bots sont souvent utilisés de manière malveillante afin de faire le ménage sur les adresses sur lesquelles ils sont déployés.

Comment fonctionne un sweeper bot ?

Dans la grande majorité des cas, ce type de robot à un accès total à l’adresse et va dans un premier temps vider l’adresse de la majorité de son contenu (NFT et cryptomonnaies) et ne laisser qu’une infime partie qui ne permettra pas de payer les frais de transaction.

Par exemple, le sweeper bot pourrait laisser 200$ en USDT sur l’adresse Ethereum de la victime, mais retirer tous les ETH pour ne pas permettre le transfert sans un nouveau dépôt afin de payer les frais de transaction.

Ensuite, la victime voulant récupérer ce qu’il reste sur son adresse, va envoyer de la cryptomonnaie pour payer les frais et faire les transferts de ce qu’il reste sur son adresse vers une autre adresse sécurisé.

Malheureusement, dès que la crypto-monnaie en question atteint l’adresse, elle est directement transférée vers une autre adresse. En effet, le sweeper bot scanne généralement en permanence la blockchain afin de détecter la moindre transaction entrante et prend les devant en exécutant automatiquement un transfert vers une autre adresse.

Souvent, ce type de robot à également accès au mempool, la zone d’attente pour les transactions, lui permettant ainsi d’avoir un temps d’avance et de faire du front-running, une méthode qui consiste à faire passer sa transaction en priorité avec des frais de transaction élevés.

Les méthodes pour se débarrasser d’un sweeper bot

Avant toute chose, sachez que vous ne pourrez jamais réellement vous débarrasser d’un sweeper bot étant donné qu’il dispose d’un accès à distance à votre adresse. Vous allez donc devoir abandonner votre adresse car la clé privée est compromise.

Néanmoins, nous allons voir différentes méthodes pour tenter de récupérer les cryptomonnaies et NFT qui se trouvent encore sur cette adresse pour sauver les meubles.

1. Un combat de robots

Vous vous doutez bien que vous battre contre un adversaire entièrement automatisé et capable de voler vos ETH au moment où ils arrivent sur votre adresse est une guerre perdue d’avance. Heureusement, il existe des solutions dont l’une d’entre elle est développée par Flashbots et se nomme Flashbots/searcher-sponsored-tx.

Concrètement, cette solution vous permet de payer la transaction sur l’adresse compromise à partir d’un autre compte (sponsor) afin de faire les transferts nécessaires sur l’adresse compromise (exécuteur), le tout dans le même bloc de transaction afin que le sweeper bot n’ai pas le temps de bouger le petit doigt.

Cette stratégie nécessite donc deux comptes :

  • le compte compromis (l’exécuteur)
  • le compte pour payer la transaction (le sponsor)

Le succès de l’utilisation des Flashbots nécessitera des connaissances technique et des recherches importantes avant de passer à l’action. Notez que toutes les instructions suivantes ne sont fournies qu’à titre d’exemple et que chaque cas peut nécessiter une modification partielle ou complète du code.

La logique et la méthodologie

La première chose à faire et pour plus de sécurité, c’est de s’assurer que le compte en question ne contienne pas d’ETH. Pour cela, il convient d’utiliser un robot brûleur (Burner bot). Son objectif est de vérifier en permanence la présence d’ETH sur l’adresse et si c’est le cas, réaliser une transaction pour brûler (et non pas transférer) les ETH afin de rentre l’adresse inutilisable.

Pour un maximum de sécurité, il convient d’exécuter ce bot brûleur sur plusieurs machines située à différents endroit et en utilisant un point de terminaison différent sur chacune d’elles. Par exemple, exécutez un burner bot localement en utilisant Infura, et un autre burner bot sur un serveur distant avec un autre fournisseur tel que Quiknode.

Cela vous permet d’avoir un plan de redondance au cas où il y aurait une latence réseau élevée ou des problèmes de connectivité avec les nœuds (limites d’utilisations, problèmes de synchronisation).

Ensuite, vous pouvez utiliser le code source Flashbots/searcher-sponsored-tx qu’il faudra modifier en fonction de vos besoins spécifiques. Néanmoins, le cœur du script peut vous permettre de sauver vos jetons d’une adresse compromise et même des NFT. Le moteur de Flashbots est suffisamment flexible pour supporter un seul appel transfer() ou un appel chaîné avec unstake() et transfer().

Si vous n’avez pas de notion de développeur, vous pouvez toujours essayer kendricktan/flashbots.tools qui est une solution avec une interface pour utiliser la fonctionnalité des flashbots. Sinon, n’hésitez pas à faire appel à un développeur compétent pour la mise en œuvre de ce type de script.

2. Utiliser un contrat intelligent autodestructeur

Une seconde méthode pour obtenir de l’ETH sur son compte sans qu’il soit visible publiquement dans le mempool consiste à l’envoyer par une transaction interne. Pour cela, il faut utiliser un contrat intelligent déployé avec une nouvelle adresse hors d’atteinte du sweeper bot.

pragma solidity >=0.7.0 <0.9.0 ;

contract MoveETH {
    constructor(address sendToAddress) payable {
        address payable addr = payable(address(sendToAddress));
        selfdestruct(addr);
    }
}

En déployant ce contrat, vous allez envoyer des ETH à l’adresse compromise directement dans le constructeur de la fonction. Concrètement, dès que le contrat sera créer, il va envoyer les ETH sur l’adresse sous forme de transaction interne.

Après sa création, le contrat va automatiquement s’autodétruire dans la même transaction. Ceci est possible en utilisant la fonction selfdestruct() qui signifie que vous allez effacer l’état de la blockchain (puisqu’il s’agit d’un contrat à usage unique) et que vous envoyez l’ETH à l’adresse compromise en une seule transaction.

Un exemple est disponible sur le testnet Goerli pour que ce soit un peu plus parlant.

Déploiement contrat sweeper bot

Bien qu’efficace, cette méthode utilise une quantité de gaz nettement plus élevée (environ 70 000), car elle est beaucoup plus complexe qu’un simple transfert d’un compte à un autre (normalement 21 000).

À partir de là, il faudra diffuser des transactions pré signées en utilisant des librairies comme ethers.js et utiliser la totalité des ETH sur le compte pour payer les frais de transaction afin que le sweeper bot ne puisse pas vous devancer avec des frais plus élevés. En parallèle, vous pouvez également déployer un burner bot afin de brûler les ETH si jamais la transaction de transfère n’opère pas correctement.

3. Faire appel à un professionnel

En fonction de la somme dont vous disposez sur votre portefeuille compromis, vous pouvez toujours faire appel à un professionnel pour ce service. Généralement, ce type de service se chiffre en pourcentage par rapport à la valeur des cryptomonnaies sauvés.

Il est inutile de préciser que si vous avec 30$ à sauver, il y a peu de chance qu’un professionnel réponde favorablement à votre demande car cela représente un certain temps de mise en œuvre.

De plus, Flashbots propose également de vous mettre en relation avec des whitehat via un formulaire directement sur leur plateforme. Ils peuvent aussi de leur côté tenter de récupérer vos actifs, mais cela ne garantit en rien le succès de l’opération.

Conclusion : soyez vigilant pour éviter les sweeper bots

Dans la majorité des cas, si vous avec un sweeper bot sur votre adresse, il vaut mieux oublier l’adresse. Vous pouvez toujours tenter de vider votre adresse avant lui avec les différentes techniques que nous avons vu précédemment, mais les chances de succès sont relativement minces.

Le mieux étant de se protéger un maximum afin de ne jamais faire fuite sa seed par quelques manières que ce soit. Pour cela, privilégiez impérativement l’utilisation d’un portefeuille matériel comme Ledger ou Satochip qui vous éviteront des failles matériel. Ensuite, ne donnez JAMAIS votre phrase de récupération ou ce genre d’éléments sensible à qui que ce soit. Le seul moment où vous allez entrer votre phrase de récupération, c’est pour restaurer un portefeuille, c’est tout.

Partager l'article sur les réseaux sociaux

Auteur

Depuis 2017, je ne cesse d'explorer l'univers du Bitcoin, de la blockchain des crypto monnaies, des NFT et plus récemment, celui du Web3. Après avoir fondé Au Coin du Bloc en 2021, je met à disposition mes connaissances et tente de vulgariser les aspects obscurs pour rendre abordable et compréhensible cet univers naissant dans lequel je crois fermement.

Articles similaires