Comment les robots peuvent-ils battre les CAPTCHAs?

84

J'ai un formulaire e-mail de site Web. J'utilise un CAPTCHA personnalisé pour empêcher le spam provenant de robots. Malgré cela, je reçois toujours du spam.

Pourquoi? Comment les robots battent-ils le CAPTCHA? Utilisent-ils une sorte d'OCR avancé ou obtiennent-ils simplement la solution là où elle est stockée?

Comment puis-je empêcher cela? Devrais-je changer de type de CAPTCHA?


Je suis sûr que les courriers électroniques proviennent du formulaire, car ils proviennent de mon expéditeur de courrier électronique qui envoie les messages du formulaire. Aussi le style de la lettre est le même.

Pour mémoire, j'utilise PHP + MySQL, mais je ne cherche pas de solution à ce problème. Je m'intéressais à la situation générale dans laquelle les robots battaient ces technologies. Je viens de raconter cette situation à titre d'exemple, pour que vous puissiez mieux comprendre ce que je vous demande.

totymedli
la source
86
Je veux contrer votre question: comment les humains peuvent-ils battre CAPTCHA: le plus souvent, il me faut plusieurs fois, parfois très souvent, pour passer au travers.
Pieter B
14
Si quelqu'un pense que cette question mérite un vote négatif, expliquez-moi au moins pourquoi.
Totymedli
10
@Blrfl, je ne comprends pas en quoi ce sujet est hors sujet.
47
Si vous souhaitez que nous répondions à votre question, commencez par prouver que vous n'êtes pas un robot.
Pete Kirkham
7
@Blrfl Il a cependant tout à voir avec le développement logiciel de qualité.
Izkata

Réponses:

72

Deux manières les plus simples de traverser CAPTCHA:

  • Utiliser des fermes humaines, c’est-à-dire demander aux gens de remplir les CAPTCHA contre de l’argent, comme le fait ProTypers .

  • Utilisez un OCR.

Il peut également y avoir un bogue dans le mécanisme CAPTCHA lui-même ou dans l’application environnante, permettant à quelqu'un de contourner le CAPTCHA.

En passant, l' article du W3C intitulé Inaccessibilité de CAPTCHA: Alternatives aux tests de Visual Turing sur le Web explique également comment les CAPTCHA pourraient être compromis:

[...] L'une des premières attaques documentées contre le système a été réalisée par un étudiant de Carnegie Mellon, qui a associé les images CAPTCHA à l'accès à un site Web pour adultes, permettant ainsi à une main-d'œuvre humaine de s'affranchir de l'authentification. [...]

Des projets externes [...] ont montré des méthodologies et des résultats indiquant que bon nombre des systèmes peuvent être vaincus par des ordinateurs avec une précision de 88% à 100%, en utilisant la reconnaissance optique de caractères.

Alors, comment pouvez-vous prévenir ces attaques?

  • Si votre CAPTCHA est implémenté sur mesure, vous pouvez essayer de passer à un logiciel populaire, tel que reCAPTCHA .

    Cela vous aidera si soit votre propre CAPTCHA était trop facile à OCR, ou s'il y avait un bogue qui a été exploité avec succès.

  • Si vous utilisez un mécanisme CAPTCHA populaire, le passage à un mécanisme personnalisé ou à un autre très populaire risque d’empêcher l’OCR.

Techniquement, rien n’empêcherait les fermes humaines: vous pouvez créer des GIF animés dans lesquels plusieurs cadres affichent un texte différent très rapidement et si un seul cadre est réellement visible par l’utilisateur, vous pouvez déformer ou plier le texte dans toutes les directions ou trouver de nouveaux moyens alternatifs de prévention. Les OCR issus de la reconnaissance de texte, mais les humains payés pour la résolution de CAPTCHA parviendront à les résoudre.

Vous voudrez peut-être passer du visuel CAPTCHA au son (si vous n'utilisez pas déjà les deux et vous devriez le faire), mais cela signifie que les utilisateurs malentendants ne pourront pas utiliser votre application.


FrustratedWithFormsDesigner et GalacticCowboy mentionnés dans les commentaires CAPTCHAs spécifiques au domaine. J'ai essayé de trouver des informations sur leur efficacité, mais sans succès, voici donc mon opinion personnelle:

  1. Les CAPTCHA spécifiques à un domaine peuvent être extrêmement gênants lorsque les utilisateurs réels n'ont aucune idée de la réponse.

    Exemple: je visite une page sur un site Web axé sur les films. Je remarque une erreur dans un article et je souhaite faire un commentaire pour en informer l'auteur. Le formulaire de commentaires me demande, en tant que mécanisme CAPTCHAs, de fournir le nom de l'actrice affiché sur une photo. Je ne sais pas du tout qui est cette actrice, je ne peux donc que quitter le site Web (ou passer les deux prochaines minutes avec Google Images).

    Autre exemple: un site Web demande de donner un synonyme de "mystérieux". Aussi simple que cela puisse paraître pour une personne non-handicapée qui parle anglais couramment, il serait impossible à résoudre sans aide extérieure pour les personnes ne parlant pas bien l'anglais ou les personnes ayant une déficience intellectuelle, sans compter le fait que trouver des synonymes ou des antonymes toujours délicat.

  2. La plupart de ces problèmes spécifiques à un domaine peuvent être résolus par programme. Les deux exemples que j'ai donnés sont facilement résolus à l'aide de ressources externes (dictionnaire Google Images et Synonymes). Celui sur les transistors donné à titre d'exemple par FrustratedWithFormsDesigner est meilleur, mais peut toujours être résolu avec un bot sur mesure.

  3. Aucun ne résiste aux fermes humaines.

  4. Soit ils génèrent des données, tout comme un texte ordinaire, les CAPTCHA dessinent des caractères déformés, auquel cas l’algorithme de génération peut lui-même être exploité pour ajuster les robots, soit ils trouvent des données quelque part, tout comme reCAPTCHA prend du texte dans des livres numérisés , auquel cas utilisez ces données pour les utiliser (par exemple, si vous prenez des mots d'un dictionnaire et demandez à l'utilisateur de fournir des synonymes, le bot peut utiliser le même dictionnaire pour réussir à 100%).

Arseni Mourzenko
la source
4
+1 pour avoir noté qu'il n'y avait pas de garantie CAPTCHA de fonctionner
Neil
8
J'ai vu de nouveaux captchas très spécifiques à un domaine. L'un d'eux affichait des images de résistances et l'utilisateur devait entrer la résistance (il y avait un lien vers une page d'aide pour les personnes qui ne savaient pas lire les bandes de couleurs des résistances). Un autre avait une image d'un petit extrait de notation musicale et l'utilisateur devait entrer certaines notes (telles que "notes dans le second accord uniquement"). Ils sont toujours jouables, mais le coût pour les spammeurs pourrait ne pas en valoir la peine.
FrustratedWithFormsDesigner
2
@MainMa, il y avait un article dans un rapport technique quelque part sur quelqu'un qui avait conçu un bot qui battait captchas remarquablement vite, parce qu'il ignorait le visuel et interprétait plutôt le signal audio avec celui-ci, de sorte que vous deviez ajouter de la statique à la audio one, ce qui le rend encore plus difficile pour les utilisateurs
RhysW
@RhysW: l'article du W3C que j'ai mentionné mentionne également que passer des images à l'audio ne résout pas le problème des robots et pourrait même rendre les choses plus faciles pour les bots.
Arseni Mourzenko
24
Fermes humaines. Pourquoi est-ce que je représente la matrice?
LarsTech
37

Ajout à la réponse de MainMa ...

Les spammeurs incitent les autres à faire le CAPTCHA pour eux

Fondamentalement, les spammeurs ont créé un site warez ou un site porno qui semble contenir un CAPTCHA, mais ce n’est pas un véritable CAPTCHA. Un bot extrait le CAPTCHA du site qu’il souhaite spammer (ou exploiter autrement), puis l’affiche sur le site warez ou sur un site pornographique où quelqu'un le complète pour lui. Ensuite, la valeur CAPTCHA est renvoyée à leur bot ...

Un peu plus sur les spammeurs

J'utilise reCAPTCHA et j'ai trouvé que cela ne valait rien. J'utilise également un filtre anti-spam personnalisé qui capture le spam qui a dépassé reCAPTCHA et je dois le vérifier tous les deux ou trois jours pour y détecter les faux positifs.

Mon forum est également entièrement personnalisé et génère très peu de trafic. Je ne crois pas que quiconque ait codé une attaque spécifique sur mon site. Malgré tout, mon filtre anti-spam intercepte 2k messages par jour! Aucun n'est jamais affiché sur le site. Les spammeurs ne tirent aucun avantage de l'envoi de spams, mais ils le font toujours.

Je peux voir des tendances dans les tentatives de spam parce que je les enregistre tous. Je peux vous dire ceci: mis à part comment ils parviennent à se défaire de la CAPTCHA, les spammeurs utilisent clairement une technique de force brute faisant varier les champs renseignés ainsi que le type de mélange de données et de mots qui les remplit. Apparemment, ils le font à si bon marché (y compris en contournant la CAPTCHA) au point qu’il n’est même pas rentable d’analyser les sites individuels pour voir si ce qu’ils font fonctionne ou non.

Année après année, ils continuent de cibler mon site avec des milliers de pourriels par jour pour en recevoir un par mois, et celui-ci est supprimé manuellement un jour plus tard. C'est si bon marché de faire du spam!

Cela va être une bataille pour les années à venir. Particulièrement pour les petits sites modérateurs individuels comme le mien.


EDIT 22/06/2017 : Je tiens à ajouter que, depuis cette publication, reCAPTCHA a été complètement remodelé et que, depuis la rédaction de cet article, il fonctionne parfaitement. Bien que je soupçonne qu’il ya un peu de faux positifs ou que c’est un problème pour les utilisateurs, les publications ont un peu chuté depuis que je l’ai implémenté. Les 2 grands changements sont

1) Ils utilisent des images au lieu de texte (donc plus d'OCR)

2) Ils le combinent avec l'activité des utilisateurs sur tous les sites utilisant reCAPTCHA. Donc, si vous avez dépassé le reCAPTCHA sur le site A, accédez au site B, il ne vous demandera peut-être même pas de prouver que vous êtes humain! Aussi (je pense) si vous frappez trop de reCAPTCHAs sur trop de sites, cela vous signalera également. Je suis sûr qu'il utilise d'autres types d'intelligence artificielle en fonction de l'activité des utilisateurs.

Je suis sûr que c'est juste une question de temps avant que les spammeurs battent ça aussi ...

Crétins
la source
C'est probablement l'argument le plus puissant de reCAPTCHA pour un petit site Web: Google dispose de beaucoup plus de ressources pour suivre les techniques de spam actuelles.
Stephen C. Steel
15

Avez-vous déjà essayé d'utiliser captcha chat-chien? J'ai un forum qui avait captcha standard et l'a changé et je n'ai pas de spams invités depuis.entrez la description de l'image ici

homme-chat-homme
la source
12

Il est possible que votre site soit la cible d'une main-d'œuvre exploitée et extrêmement onéreuse et qu'un être humain saisisse manuellement vos phrases CAPTCHA.

Si la solution que vous utilisez n'est pas trop sophistiquée, il est possible que votre attaquant réalise la reconnaissance d'image.

Il est également possible que votre code contienne un bogue qui permet de contourner le CAPTCHA.

Ne présumez pas qu'un robot bat votre CAPTCHA. Pensez à votre système de manière holistique et voyez s'il a été compromis.

Sam
la source
Je combinerais des schémas d'image et de CSS que les humains ne pourraient pas résoudre facilement.
Erik Reppen
2
Deux mots ... Turc mécanique. Amazon a fait de la capture de Captcha une entreprise incroyablement peu coûteuse.
Michael Brown
10

D'autres ont discuté de la manière dont les spammeurs contournent les CAPTCHA. Voici quelques conseils sur comment puis-je éviter cela :

Notez qu'il n'y a pas de solution miracle et que les spammeurs semblent avoir une longueur d'avance sur le match. Donc, vous devrez utiliser une combinaison de plusieurs techniques

  1. Utilisez une forme de pot de miel
  2. Utilisez une question CAPTCHAs ou Logic. Questions de base telles que "pomme, poisson, main, six - laquelle d’entre elles est une partie du corps"
  3. Avoir un délai. Si le formulaire est publié dans les 5 secondes suivant le chargement de la page, la demande est ignorée par la plupart des robots dans moins d'une seconde.
  4. Ayez une surveillance de l'adresse IP - si vous remarquez qu'une araignée explore votre site Web qui ne figure pas dans une liste blanche (google, bing), mettez-la sur une liste noire et bannissez son adresse IP. De préférence, ce serait dynamique / automatisé en code / logiciel
Daveo
la source
6

Pour faire écho aux autres réponses, vous rencontrerez probablement des robots qui utilisent des fermes humaines pour saisir les captchas.

J'ai récemment discuté d'une technique (et publié un module Drupal d'accompagnement) qui bloque les robots de spam en exigeant le JavaScript côté client. Autant que je sache, cela a fonctionné avec une efficacité de 100% sur tous les sites qui ont utilisé ce code. L'idée est d'utiliser AJAX pour générer un hachage unique et le soumettre avec les autres données de formulaire, puis calculer le même hachage sur le backend une fois le formulaire soumis et comparer les deux valeurs.

Tous les détails dans mon article de blog (comme par hasard, puisque vous avez mentionné l'utilisation de PHP + MySQL, il s'agit des mêmes technologies que celles décrites ici) - Version du module: Badbot; éliminer le spam ...

Yuriy Babenko
la source
1
Cela fonctionnera jusqu'à ce qu'il se généralise et que le polluposteur utilise un navigateur sans tête.
Xavier Combelle
1
Comment l'utilisation d'un navigateur sans tête change-t-elle quelque chose?
Tatiana Racheva
-2

Si votre site est twitter et que quelqu'un l'a ciblé spécifiquement (plutôt qu'un bot le trouvant), alors vous pouvez arrêter de lire ...

Sinon, il pourrait être intéressant de ne pas faire ressembler votre formulaire à un formulaire. 1. N'ayez pas de champs avec 'e-mail' dans le type, le nom ou l'espace réservé, utilisez des noms abrégés ou trompeurs pour tous les champs. 2. N'utilisez pas un élément de formulaire HTML et un bouton d'envoi. Utilisez plutôt AJAX pour l'afficher au clic d'une div normale (stylé pour ressembler à un bouton). 3. Ne mettez pas l'événement onclick dans le code HTML, ajoutez un écouteur en JavaScript. 4. Utilisez JavaScript pour renseigner les conseils «entrez votre adresse e-mail ici», car il est possible que des bots ne déclenchent pas JS lors de la navigation sur des pages (pas sûr sur celui-ci, mais je le fais quand même).

David Gilbertson
la source