La difficulté de la lutte antibot sur le web

La difficulté de la lutte antibot sur le web

Les robots, appelés plus couramment bots, pullulent aujourd’hui sur Internet. Il représente une part du trafic Internet global non négligeable.

Aujourd’hui, je vous propose de découvrir le monde des bots de l’Internet.

Des bots… mais pour quoi faire ?

La première question que l’on pourrait se poser serait de savoir pourquoi des bots se baladent en liberté sur Internet.

Vous utilisez, parfois sans le savoir, des bots quotidiennement lorsque vous naviguez sur Internet. Vous avez lancé une recherche sur un moteur de recherche, un bot l’a indexé auparavant pour vous. Une grosse partie des messages d’entreprises présents sur les réseaux sociaux proviennent de bots qui les publient en leurs noms.

Mais les bots ce sont aussi des attaques sur des sites web pour les saturer, ou encore des wrappers chargés de télécharger tout le contenu des sites pour par exemple en revendre le contenu ou créer un site web à moindre coût en exploitant les données et infrastructure d’autres sites web.

Les gentils bots et les méchants bots

Les gentils bots, ils vont sur les sites web, ils téléchargent tout le contenu, mais ce sont de gentils bots. Les méchants bots, ils vont sur les sites web, ils téléchargent tout le contenu… mais ce n’est pas pareil.

Voilà un peu la complexité de la lutte antibot résumée en une phrase. Je ne vais bien sûr pas parler des bots "d’attaque" par exemple DDoS, dont je parlerais plus bas, mais plutôt des bots d’indexation versus les bots wrappers de contenus.

Côté bot d’indexation, je vais par exemple parler du plus connu d’entre eux : GoogleBot. Ce bot va lire votre site, et notamment quelques fichiers bien spécifiques pour indexer le contenu de votre site web, et permettre de le référencer dans son moteur. Bing, Duckduckgo, Qwant et les autres utilisent aussi des méthodes similaires.

Ces bots sont nécessaires au fonctionnement moderne d’Internet et ont très souvent un impact mineur, voire nul, sur le site visité. Cela vient aussi du fait que ces bots n’ont rien à gagner à dégrader les performances du site.

Pour aider ces bots, plusieurs fichiers peuvent être déposés sur le serveur, par exemple le fichier robots.txt à la racine du serveur permet par exemple d’indiquer au moteur de recherche les contenus à ne pas indexer. Attention toutefois, ce fichier est purement indicatif et peut complètement être ignoré par le robot. De même, pour faciliter l’indexation, on mettre souvent en place un sitemap permettant aux robots de structurer le contenu du site.

De l’autre côté, les bots d’aspiration, ou wrappers, n’ont qu’un seul but, aspirer une partie ou la totalité de votre site, pour :

  • Créer un site à partir des données extraites : LinkedIn VS Apollo.io
  • Extraire les données et les croiser avec d’autres pour les revendre
  • Faire des stats à côté par exemple

Tous les wrappers ne sont pas forcément malveillants, j’en ai moi-même développé un il y a quelques années pour récupérer les informations publiques d’un site qui ne mettait pas à disposition d’API (API arrivée un peu plus tard d’ailleurs).

Les bots d’attaque

On pourrait aussi parler des bots plus malveillants, les bots d’attaques. Le but est dans ce cas clairement de nuire au site web.

Ces bots sont déclinés dans plusieurs types, mais on pourrait citer :

  • Les bots qui scannent les ports ouverts (avec du NMAP par exemple)
  • Les bots de brute force (si vous avez un site web, regardez les accès sur l’admin wordpress ou phpmyadmin, même si vous n’en avez pas)
  • Les bots DDOS, qui n’ont pour but que de faire tomber votre site web

Ces bots n’ont aucune utilité pour l’hébergeur.

Vous pourriez vous dire : quelle est l’utilité pour un hacker de prendre le contrôle d’un blog ?

Il y a en fait plusieurs :

  • Extraire la base utilisateur (adresse mail, mot de passe, etc..)
  • Pouvoir utiliser le site pour héberger des pages de phishing en utilisant la réputation web "clean" de ce dernier
  • Publier des contenus spécifiques

C’est pourquoi il est important de se protéger tout autant de ces bots.

Différencier les bots

Comme vous avez dû le comprendre, différencier le "good bot" du "bad bot" n’est pas forcément aisé. Des solutions existent aujourd’hui, mais aucune n’est fiable à 100 %.

La plupart de ces solutions vont se baser sur plusieurs critères, notamment :

  • Est-ce que l’IP source est connue comme dangereuse ?
  • Est-ce que l’utilisateur a un comportement anormal, ou inhumain (un utilisateur qui va lire 2000 articles de blogs en 20 secondes est par exemple légèrement suspect)
  • Est-ce que l’utilisateur utilise un navigateur "headless" (plus d’informations ici) ?

Le souci est qu’une analyse heuristique demande d’avoir un modèle de données préexistant et nécessite aussi de la navigation avant blocage, donc on laisse potentiellement le bot se balader temporairement.

De plus, lors d’un blocage, de nombreux bots reviennent à la charge, mais autrement. Par exemple, en passant derrière un proxy, ou pour des bots fonctionnant depuis des périphériques compromis, en exploitant un réseau de botnet.

Dans le cas des botnets d’ailleurs, la lutte est bien plus compliquée, car l’utilisateur peut être plus compliqué à tracer.

Je n’ai qu’à afficher un captcha

Le captcha… l’arme ultime de beaucoup de sites. Cette arme est d’ailleurs souvent inutile, car mal exploitée. Le captcha est souvent plus gênant pour l’humain que le robot, ce qui est un peu paradoxal.

Afficher un captcha est toujours compliqué, car il faut bien se demander si cela ne va pas dégrader l’expérience utilisateur outre mesure. Je fais moi-même parti des gens qui ne sont pas fans d’entrainer les algorithmes de reconnaissance de Google avec reCaptcha.

De plus, il faut garder en tête que beaucoup de Captchas sont contournables, soit par des bots qui vont les résoudre, soit par des humains payés à résoudre des captchas qui s’affichent (par exemple : https://anti-captcha.com/mainpage).

Néanmoins, lorsque l’on détecte un comportement que l’on juge anormal, afficher un captcha peut-être une solution pour :

  • Ralentir le bot
  • Lever un doute sur un humain ou un bot

Tout en gardant en tête que cette solution n’est pas fiable à 100 %.

En conclusion

Vous l’aurez compris, la lutte antibot est une lutte compliquée. C’est un combat quotidien et c’est surtout le jeu du chat et de la souris. Comme j’aime à le dire, aucune sécurité n’est infaillible, et les bots évoluent en permanence. Il est donc de notre devoir, pour ceux qui comme moi font de la sécurité au quotidien, de ne jamais baisser notre garde et rester à l’affût des nouvelles méthodes.

C’est aussi une lutte compliquée, car c’est une lutte qui doit être silencieuse, au risque de dégrader l’expérience utilisateur et faire fuir son public. De plus, comme je l’ai expliqué, certains bots sont nécessaires pour assurer le bon fonctionnement du site et son référencement par exemple.

Et vous qu’en pensez-vous ?