web-dev-qa-db-fra.com

Comment Google reCAPTCHA v2 fonctionne-t-il en coulisse?

Cet article se réfère à Google ReCaptcha v2 (pas la dernière version)

Récemment, Google a introduit un système de vérification "captcha" simplifié ( vidéo ) permettant aux utilisateurs de passer le "captcha" simplement en cliquant dessus.

Mais comment peut-il différencier un bot d'une personne par un simple clic?

Selon cette réponse , (en supposant une implémentation similaire), d'abord "recaptcha" génère une clé cachée et l'attache à un élément d'entrée caché et restitue par la suite une case à cocher (et non une case à cocher réelle input mais div) avec la même clé qui envoie une requête asynchrone (XHR) aux serveurs dorsaux de Google pour la marquer comme clé de vérification valide (c'est-à-dire une clé à valider lorsque le formulaire est soumis).

Mais pourquoi les robots ne peuvent-ils pas automatiser ce clic (du moins, les robots basés sur un navigateur)?

Comment cela pourrait-il fonctionner?

292
everlasto

Ceci est une spéculation, mais basée sur la référence de Google au "moteur d'analyse de risque" utilisé ( http://googleonlinesecurity.blogspot.com/2014/12/are-you-robot-introducing-no-captcha.html )

Je suppose que cela indique comment vous vous êtes comporté avant de cliquer, comment votre curseur s'est déplacé pour se rendre au contrôle (chemin organique/accélération), à quelle partie de la case à cocher a été cliqué (emplacements aléatoires, ou centré à chaque fois), navigateur empreinte digitale, cookies et contenu Google, cliquez sur l'historique des lieux lié à votre empreinte digitale ou à votre compte s'il en détecte un, etc.

Il est assez difficile de simuler un comportement "organique" de manière à tromper un moteur de détection de motifs en apprentissage continu. Dans les cas où ce n'est pas sûr, il vous invite tout de même à faire correspondre une chaîne CAPTCHA réelle.

194
AgmLauncher

Un nouveau document a été publié avec plusieurs tests contre reCAPTCHA:

https://www.blackhat.com/docs/asia-16/materials/asia-16-Sivakorn-Im-Not-a-Human-Breaking-the-Google-reCAPTCHA-wp.pdf

Quelques faits saillants:

  • En maintenant un cookie actif pendant +9 jours (en naviguant sur des sites contenant des ressources Google), vous pouvez ensuite transmettre reCAPTCHA simplement en cochant la case correspondante.
  • Il n'y a pas de restrictions basées sur les demandes par IP;
  • L'agent utilisateur du navigateur doit être réel et Google exécute des tests sur votre environnement pour s'assurer qu'il correspond à l'agent utilisateur.
  • Google vérifie si le navigateur peut générer un canevas.
  • La résolution de l'écran et les événements de souris n'affectent pas les résultats.

Google a déjà corrigé la vulnérabilité des cookies et restreint probablement certains comportements basés sur les adresses IP.

Un autre résultat intéressant est que Google exécute un VM en JavaScript qui masque une grande partie du code et du comportement de reCAPTCHA. Ce VM est connu sous le nom de botguard et est utilisé pour protéger d'autres services que reCAPTCHA:

https://github.com/neuroradiology/InsideReCaptcha

MISE À JOUR 2017

Un article récent (datant d'août) a été publié sur WOOT 2017, atteignant une précision de 85% dans la résolution des problèmes audio noCAPTCHA reCAPTCHA:

http://uncaptcha.cs.umd.edu/papers/uncaptcha_woot17.pdf

UPDATE 2018

Google présente reCAPTCHA v3, qui ressemble à un "moteur de prédiction du score humain" calibré par site Web. Il peut être installé sur différentes pages d'un site Web (fonctionnant comme un script Google Analytics) pour aider reCAPTCHA et le propriétaire du site Web à comprendre le comportement des humains par rapport aux robots avant de remplir un formulaire reCAPTCHA.

https://www.google.com/recaptcha/intro/v3beta.html

69
barbolo

Mes robots fonctionnent bien contre ReCaptcha.

Voici ma solution.

Laissez votre bot faire ceci:

Commencez par écrire une fonction de déplacement de souris humaine pour déplacer votre souris comme une B-Spline (demandez-moi le code source). C'est le point le plus important.

Également utiliser pour un meilleur résultat un VPN comme https://www.purevpn.com

Pour chaque Recpatcha, procédez comme suit:

  1. Si vous utilisez d'abord un commutateur VPN IP

  2. Effacer tous les cookies du navigateur

  3. Effacer tout le cache du navigateur

  4. Définissez l'un de ces Useragents par Random:

    une. Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)

    b. Mozilla/5.0 (Windows NT 6.1; WOW64; rv: 44.0) Gecko/20100101 Firefox/44.0

5 Déplacez votre souris avec la souris humaine. Déplacez la fonction de RandomPoint vers la Je ne suis pas une image de robot à chaque fois avec une plage aléatoire différente 10x10.

  1. Puis cliquez toujours avec un délai aléatoire entre

    WM_LBUTTONDOWN

    et

    WM_LBUTTONUP

  2. Prendre une capture d'écran de Image Captcha

  3. Envoyer une capture d'écran à

    http://www.deathbycaptcha.com

    ou

    https://2captcha.com

et laissez-les résoudre.

  1. Après avoir reçu les cooridinats du résolveur captcha, utilisez votre fonction de déplacement de souris humaine pour vous déplacer et cliquez sur Images Recaptcha.

  2. Utilisez votre fonction de déplacement de souris humaine pour vous déplacer et cliquez sur le bouton de vérification de Recaptcha

Dans 75% des cas, tous les tests recaptcha seront résolus

Chears Google

À M

20
Ingo

Puis-je présenter mon hypothèse, puisqu'il ne s'agit pas d'une technologie ouverte.

Google dit qu'il s'agit de combiner les informations avant, pendant, après pour distinguer l'homme du robot. Mais je suis plus intéressé par ce dernier clic sur la case à cocher.

Disons que les données POST (CAPTCHA résolu) ont un champ appelé empreinte digitale, une chaîne calculée à partir du comportement de l'utilisateur. Je pense qu'il peut y avoir un champ sur l'emplacement de cette case à cocher. Je suppose que cette case à cocher se trouve dans un système de coordonnées généré aléatoirement par Google back-end et chiffré par la clé publique de mon site. Ainsi, un robot peut "deviner/calculer" un emplacement à propos de cette case, mais lorsque le propriétaire du site effectue la requête GET avec la clé privée pour vérifier l'identité de l'utilisateur, Google décrypte le système de coordonnées et indique si l'utilisateur clique au bon endroit. Donc, un seul clic possible (avec quelques décalages, c’est une boîte carrée) dans ce système de coordonnées aléatoires, propriété de Google et des propriétaires de sites.

3
hakunami