Comment les cybercriminels contournent les CAPTCHA

Écosystème F5 | 12 juillet 2017


Le CAPTCHA (test de Turing public entièrement automatisé permettant de distinguer les ordinateurs des humains) a été conçu à l’origine pour empêcher les robots, les logiciels malveillants et l’intelligence artificielle (IA) d’interagir avec une page web. Dans les années 1990, il servait à bloquer les robots de spam. Aujourd’hui, les organisations utilisent le CAPTCHA pour tenter d’empêcher des attaques automatisées plus malveillantes, telles que le bourrage d’identifiants.

Cependant, presque aussitôt après l’introduction du CAPTCHA, les cybercriminels ont mis au point des méthodes efficaces pour le contourner. Les défenseurs ont réagi en renforçant les CAPTCHA, mais le résultat reste le même : le test censé bloquer l’automatisation est contourné grâce à l’automatisation.

Il existe plusieurs façons de contourner les CAPTCHA. Une méthode courante consiste à utiliser un service de résolution de CAPTCHA, qui fait appel à une main-d’œuvre humaine bon marché dans les pays en développement pour résoudre les images CAPTCHA. Les cybercriminels s’abonnent à un service de résolution de CAPTCHA, dont les réponses sont directement intégrées à leurs outils d’automatisation via des API afin de renseigner les champs correspondants sur le site web ciblé. Ces entreprises douteuses sont si répandues qu’une simple recherche Google permet d’en trouver un grand nombre, notamment :

  • DeathbyCAPTCHA
  • 2Captcha
  • Kolotibablo
  • ProTypers
  • Antigate

Cet article s’appuiera sur 2Captcha pour montrer comment les attaquants intègrent cette solution afin d’orchestrer des attaques par bourrage d’identifiants.

2Captcha

En accédant au site 2Captcha.com, l’internaute est accueilli par l’image ci-dessous, qui lui demande s’il souhaite 1) travailler pour 2Captcha ou 2) acheter les services de 2Captcha.

Comment les cybercriminels contournent les CAPTCHA

Option 1 – Travailler pour 2Captcha

Pour travailler pour 2Captcha, il suffit de créer un compte en fournissant une adresse e-mail et un compte PayPal pour recevoir les paiements. Lors d’un test, un compte a été validé en quelques minutes.

Les nouveaux travailleurs doivent suivre une formation unique qui leur apprend à résoudre rapidement les CAPTCHA. Elle leur donne également des conseils, notamment sur les cas où la casse est importante ou non. Après avoir terminé la formation avec un niveau de précision suffisant, ils peuvent commencer à gagner de l’argent.

Comment les cybercriminels contournent les CAPTCHA

Après avoir sélectionné « Start Work », le travailleur accède à l’écran de l’espace de travail, illustré ci-dessus. Un CAPTCHA lui est alors présenté et il est invité à fournir une réponse. Une fois le CAPTCHA correctement résolu, de l’argent est versé dans un « porte-monnaie » électronique, et le travailleur peut demander à être payé quand il le souhaite. Le nombre de CAPTCHA qui apparaissent dans l’espace de travail semble illimité, ce qui témoigne d’une demande constante pour ce service.

Comment les cybercriminels contournent les CAPTCHA

Les travailleurs de 2Captcha sont incités à fournir des solutions correctes de la même manière qu’un chauffeur Uber est encouragé à offrir un excellent service : grâce aux évaluations des clients. Les clients de 2Captcha évaluent l’exactitude des solutions de CAPTCHA qu’ils ont reçues. Si la note d’une travailleuse de 2Captcha tombe en dessous d’un certain seuil, elle sera exclue de la plateforme. À l’inverse, les travailleurs les mieux notés seront récompensés en période de faible demande en bénéficiant d’une priorité dans l’attribution des CAPTCHA.

Option 2 – 2Captcha en tant que service

Pour utiliser 2Captcha en tant que service, un client (c’est-à-dire un attaquant) intègre l’API 2Captcha à son attaque afin de créer une chaîne d’approvisionnement numérique qui transmet automatiquement les CAPTCHA du site ciblé et reçoit les solutions à saisir sur ce même site.

2Captcha fournit utilement des exemples de scripts permettant de générer des appels d’API dans différents langages de programmation, notamment C#, JavaScript, PHP et Python. L’exemple de code écrit en Python est reproduit ci-dessous :

Comment les cybercriminels contournent les CAPTCHA

Intégration de 2CAPTCHA dans une attaque automatisée

Comment un attaquant utiliserait-il 2Captcha dans le cadre d’une attaque par bourrage d’identifiants ? Le schéma ci-dessous montre comment les différentes entités interagissent lors d’un processus de contournement de CAPTCHA :

Comment les cybercriminels contournent les CAPTCHA

Processus technique :

  1. L’attaquant récupère le code source de l’iframe CAPTCHA ainsi que l’URL utilisée pour intégrer l’image CAPTCHA depuis le site cible, puis les enregistre localement.
  2. L’attaquant demande un jeton d’API sur le site web de 2Captcha
  3. L’attaquant envoie le CAPTCHA au service 2Captcha via une requête HTTP POST et reçoit un identifiant de CAPTCHA, qui est un identifiant numérique associé à l’image du CAPTCHA soumise à 2Captcha. Cet identifiant est utilisé à l’étape 5 pour effectuer une requête GET à l’API de 2Captcha afin de récupérer le CAPTCHA résolu.
  4. 2Captcha attribue le CAPTCHA à un opérateur, qui le résout puis transmet la solution à 2Captcha.
  5. L’attaquant programme un script pour interroger 2Captcha à l’aide de l’identifiant du CAPTCHA (toutes les 5 secondes jusqu’à sa résolution). 2Captcha envoie ensuite le CAPTCHA résolu. Si la résolution est toujours en cours, l’attaquant reçoit une réponse de 2Captcha indiquant « CAPTCHA_NOT_READY », et le programme réessaie 5 secondes plus tard.
  6. L’attaquant envoie une requête de connexion au site ciblé avec les champs renseignés (c’est-à-dire un ensemble d’identifiants provenant d’une liste volée), ainsi que la solution du CAPTCHA.
  7. L’attaquant répète ce processus pour chaque image CAPTCHA.

En combinaison avec des frameworks de test web tels que Selenium ou PhantomJS, un attaquant peut donner l’impression d’interagir avec le site web ciblé comme le ferait un humain, contournant ainsi efficacement de nombreuses mesures de sécurité existantes pour lancer une attaque par bourrage d’identifiants.

Monétisation et écosystème criminel

Avec une solution aussi élégante en place, à quoi ressemble l’écosystème financier et comment chacune des parties gagne-t-elle de l’argent ?

Monétisation : solveur de CAPTCHA

Travailler comme résolveur de CAPTCHA est loin d’être lucratif. D’après les données fournies sur le site web de 2Captcha, il est possible de calculer la rémunération suivante :

En supposant qu’il faille 6 secondes par CAPTCHA, un travailleur peut soumettre 10 CAPTCHA par minute, soit 600 CAPTCHA par heure. Sur une journée de 8 heures, cela représente 4 800 CAPTCHA. D’après les gains obtenus lors de notre essai en tant qu’employé de 2Captcha (environ 0,0004 $ par solution), cela équivaut à 1,92 $ par jour.

C’est une perte de temps pour les personnes vivant dans les pays développés, mais pour celles qui vivent dans des régions où quelques dollars par jour peuvent représenter beaucoup, les services de résolution de CAPTCHA constituent un moyen facile de gagner de l’argent.

Monétisation : attaquant

L’attaquant paie le tiers 2Captcha pour obtenir des solutions de CAPTCHA par lots de 1 000. Les attaquants enchérissent sur ces solutions et paient entre 1 et 5 $ par lot.

De nombreux attaquants utilisent des services de résolution de CAPTCHA dans le cadre d’une attaque plus vaste par bourrage d’identifiants, ce qui justifie la dépense. Imaginons, par exemple, qu’un attaquant lance une attaque visant à tester sur un site cible un million d’identifiants provenant de Pastebin. Dans ce scénario, l’attaquant doit contourner un CAPTCHA pour chaque jeu d’identifiants, ce qui lui coûterait environ 1 000 $. En supposant un taux de réutilisation réussie des identifiants de 1,5 %, l’attaquant peut prendre le contrôle de 15 000 comptes, qu’il peut ensuite tous monétiser.

Monétisation : 2Captcha

2Captcha est rémunéré par l’attaquant pour chaque lot de 1 000 CAPTCHA. Comme indiqué précédemment, les clients (c’est-à-dire les attaquants) paient entre 1 et 5 dollars pour 1 000 CAPTCHA. Les services comme 2Captcha prélèvent ensuite une commission sur le montant proposé et reversent le reste à leur main-d’œuvre humaine. Les services de résolution de CAPTCHA étant utilisés à grande échelle, les bénéfices s’accumulent rapidement. Même si 2Captcha ne perçoit qu’un dollar pour 1 000 CAPTCHA résolus, le service réalise un bénéfice net d’au moins 60 cents par lot. Les propriétaires de ces sites se trouvent souvent eux-mêmes dans des pays en développement, si bien que ces revenus, qui peuvent sembler faibles, sont en réalité conséquents.

Qu’en est-il du reCAPTCHA invisible de Google ?

En mars de cette année, Google a lancé une version améliorée de son reCAPTCHA, baptisée « Invisible reCAPTCHA ». Contrairement à « no CAPTCHA reCAPTCHA », qui obligeait tous les utilisateurs à cliquer sur le fameux bouton « Je ne suis pas un robot », Invisible reCAPTCHA laisse passer les utilisateurs identifiés comme humains et ne présente un test reCAPTCHA sous forme d’image qu’aux utilisateurs suspects.

On pourrait penser que cela dérouterait les attaquants, puisqu’ils ne pourraient pas savoir quand ils sont soumis à un test. Pourtant, à peine un jour après le lancement d’Invisible reCAPTCHA par Google, 2CAPTCHA a publié un article de blog expliquant comment le contourner.

Pour déterminer qu’un utilisateur est bien un être humain, Google vérifie s’il a déjà consulté la page demandée en examinant les cookies du navigateur. Si ce même utilisateur se connecte depuis un nouvel appareil ou a récemment vidé son cache, Google ne dispose pas de cette information et doit lui soumettre un test reCAPTCHA.

Pour automatiser une attaque par bourrage d’identifiants à l’aide de 2Captcha, un attaquant doit s’assurer qu’un test CAPTCHA est systématiquement déclenché. Ainsi, une façon de contourner Invisible reCAPTCHA consiste à ajouter au script d’attaque une ligne de code qui efface les données du navigateur à chaque requête, garantissant ainsi le déclenchement d’un test reCAPTCHA pouvant être résolu.

La difficulté avec Invisible reCAPTCHA tient au fait que le défi CAPTCHA est masqué, mais il existe une solution de contournement. Le CAPTCHA peut être « trouvé » à l’aide de l’outil « Inspecter l’élément » du navigateur. L’attaquant peut alors envoyer à 2Captcha une requête POST comprenant un paramètre indiquant l’emplacement du CAPTCHA masqué. Une fois que l’attaquant a reçu la solution du CAPTCHA de la part de 2Captcha, Invisible reCAPTCHA peut être contourné automatiquement de l’une des deux manières suivantes :

  1. Action JavaScript qui appelle une fonction afin de transmettre le jeton résolu lors de l’envoi du formulaire de la page
  2. Modification du code HTML directement dans la page web afin de remplacer un extrait du code CAPTCHA standard par le champ contenant le jeton résolu.

Si le reCAPTCHA invisible peut être contourné, ce n’est pas en raison d’une faille fatale dans la conception de cette nouvelle version du CAPTCHA. C’est simplement que tout test de Turing inversé peut, par nature, être déjoué dès lors que les conditions de réussite sont connues.

Tant qu’il y aura des CAPTCHA, il y aura des services comme 2Captcha, car le modèle économique profite largement aux criminels. Le recours à une main-d’œuvre humaine bon marché réduit les coûts d’exploitation et permet aux cybercriminels d’engranger des bénéfices pouvant atteindre plusieurs millions de dollars à grande échelle. Et comme il y aura toujours des régions du monde où le coût de la main-d’œuvre est faible, la demande constante garantit à 2Captcha un approvisionnement continu.

Il n’est pas nécessaire de développer un meilleur CAPTCHA, car cette approche présente dans son ensemble des limites fondamentales. Nous devrions plutôt reconnaître ces limites et mettre en place des mécanismes de défense dont les conditions de validation sont inconnues ou, à tout le moins, difficiles à déterminer pour les attaquants.

Sources

Holmes, Tamara E. « Statistiques sur les cartes prépayées et les cartes-cadeaux. » CreditCards.com. Creditcards.com, 1er déc. 2015. En ligne.

Hunt, Troy. « Contourner les CAPTCHA à l’aide d’humains automatisés. » Billet de blog. Troy Hunt. Troy Hunt, 22 janv. 2012. Web.

Motoyama, Marti, Kirill Levchenko, Chris Kanich et Stefan Savage. Objet : CAPTCHA – Comprendre les services de résolution de CAPTCHA dans un contexte économique. Actes du 19e symposium USENIX sur la sécurité, Washington, D.C. Version imprimée.

Partager

À propos de l’auteur

Articles de blog associés

F5 NGINXaaS pour Google Cloud : des applications résilientes et évolutives
Écosystème F5 | 08/09/2025

F5 NGINXaaS pour Google Cloud : des applications résilientes et évolutives

Découvrez comment NGINXaaS s’intègre à Google Cloud pour renforcer les performances et la sécurité, et préparer vos applications critiques à un avenir propulsé par l’IA.

L’intégration de F5 Web Application Firewall (WAF) à AWS est disponible dès aujourd’hui
Écosystème F5 | 24/04/2023

L’intégration de F5 Web Application Firewall (WAF) à AWS est disponible dès aujourd’hui

En faisant appel à un partenaire de déploiement AWS WAF tel que F5, vous pouvez renforcer la sécurité de vos applications web grâce à des règles personnalisées qui bloquent les schémas d’attaque courants, comme les injections SQL ou les attaques par scripts intersites (XSS).

Appliquer le principe de Peter Parker à l’inspection TLS
Écosystème F5 | 09/12/2019

Appliquer le principe de Peter Parker à l’inspection TLS

« Un grand pouvoir implique de grandes responsabilités. » Si l’on en trouve des échos chez Voltaire et Churchill, cette citation est surtout connue grâce aux bandes dessinées Spider-Man, où elle est attribuée à l’oncle Ben. Bien entendu, si cette phrase est si répandue dans la culture populaire, c’est notamment parce qu’elle peut s’appliquer à une multitude de situations et de sujets, y compris à l’inspection TLS.

Le NetOps a besoin de défenseurs, pas d’adversaires
Écosystème F5 | 13/12/2018

Le NetOps a besoin de défenseurs, pas d’adversaires

Il est important de reconnaître que les équipes NetOps ne sont pas toujours celles qui font obstacle au déploiement de la dernière nouveauté, application ou service. Les freins à la rapidité sont souvent dus au fait que les organisations n’adoptent pas tous les principes du DevOps lorsqu’elles cherchent à transformer leurs opérations informatiques.

Mise à jour des services applicatifs : sécurité, rapidité et visiteurs suspects
Écosystème F5 | 01/03/2018

Mise à jour des services applicatifs : sécurité, rapidité et visiteurs suspects

Il est de nouveau temps de nous pencher sur les services applicatifs que les entreprises utilisent réellement pour rendre leurs applications plus rapides et plus sûres. On constate notamment une hausse du recours aux services de protection contre les bots, ainsi que la progression lente mais régulière de HTTP/2. Bien qu’il ne s’agisse pas d’une application…

Les templates prennent le contrôle du cloud
Écosystème F5 | 02/02/2017

Les templates prennent le contrôle du cloud

Les modèles s’imposent dans le cloud. Lisez le blog de F5 pour découvrir comment l’infrastructure en tant que code et les API déclaratives automatisent la mise à disposition des applications.