it-swarm.com.de

Wie funktioniert Google reCAPTCHA v2 im Hintergrund?

Dieser Beitrag bezieht sich auf Google ReCaptcha v2 (nicht die neueste Version)

Vor kurzem hat Google ein vereinfachtes "Captcha" -Verifizierungssystem eingeführt ( video ), mit dem Benutzer das "Captcha" durch einfaches Anklicken weitergeben können.

Aber wie kann es einen Bot von einer Person nur durch einen Klick unterscheiden?

Gemäß diese Antwort (unter der Annahme einer ähnlichen Implementierung) generiert "recaptcha" zunächst einen verborgenen Schlüssel und hängt ihn an ein verborgenes Eingabeelement an. Außerdem wird ein Kontrollkästchen (kein tatsächliches Kontrollkästchen) träge gerendert. input Ein div) mit demselben Schlüssel, der beim Klicken eine asynchrone Anforderung (XHR) an die Google-Back-End-Server sendet, um ihn als gültigen Bestätigungsschlüssel zu kennzeichnen (dh einen Schlüssel, der beim Absenden des Formulars validiert werden muss).

Aber warum können Bots diesen Klick nicht automatisieren (zumindest browserbasierte Bots)?

Wie könnte das funktionieren?

292
everlasto

Dies ist eine Spekulation, basiert jedoch auf dem Hinweis von Google auf die von ihnen verwendete "Risikoanalyse-Engine" ( http://googleonlinesecurity.blogspot.com/2014/12/are-you-robot-introducing-no-captcha.html) )

Ich nehme an, es sieht danach aus, wie Sie sich vor dem Klicken verhalten haben, wie sich Ihr Cursor auf dem Weg zur Prüfung (organischer Pfad/Beschleunigung) bewegt hat, welcher Teil des Kontrollkästchens angeklickt wurde (zufällige Orte oder jedes Mal mittellos), Browser Fingerabdruck, Google-Cookies und -Inhalte, Klick-Standortverlauf, der mit Ihrem Fingerabdruck oder Konto verknüpft ist, sofern ein solcher erkannt wird usw.

Es ist ziemlich schwierig, "organisches" Verhalten so vorzutäuschen, dass es eine kontinuierlich lernende Mustererkennungs-Engine zum Narren hält. In Fällen, in denen es nicht sicher ist, werden Sie trotzdem aufgefordert, einen tatsächlichen CAPTCHA-String zuzuordnen.

194
AgmLauncher

Ein neues Papier wurde mit mehreren Tests gegen reCAPTCHA veröffentlicht:

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

Einige Höhepunkte:

  • Wenn Sie ein Cookie 9 Tage lang aktiv halten (indem Sie Websites mit Google-Ressourcen durchsuchen), können Sie reCAPTCHA übergeben, indem Sie nur auf das Kontrollkästchen klicken.
  • Es gibt keine Einschränkungen für Anfragen pro IP.
  • Der Benutzeragent des Browsers muss echt sein, und Google führt Tests für Ihre Umgebung durch, um sicherzustellen, dass er mit dem Benutzeragenten übereinstimmt.
  • Google testet, ob der Browser einen Canvas rendern kann.
  • Bildschirmauflösung und Mausereignisse wirken sich nicht auf die Ergebnisse aus.

Google hat die Cookie-Sicherheitsanfälligkeit bereits behoben und schränkt möglicherweise einige Verhaltensweisen basierend auf IPs ein.

Ein weiteres interessantes Ergebnis ist, dass Google ein VM in JavaScript ausführt, das einen Großteil des reCAPTCHA-Codes und -Verhaltens verschleiert. Dieser VM ist als Botguard bekannt und wird zum Schutz anderer Dienste neben reCAPTCHA verwendet:

https://github.com/neuroradiology/InsideReCaptcha

UPDATE 2017

Auf der WOOT 2017 wurde ein kürzlich veröffentlichtes Papier (ab August) veröffentlicht, das eine Genauigkeit von 85% bei der Lösung der noCAPTCHA reCAPTCHA Audio-Herausforderungen erzielt:

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

UPDATE 2018

Google führt reCAPTCHA v3 ein, das aussieht wie eine "Human Score Prediction Engine", die pro Website kalibriert wird. Es kann auf verschiedenen Seiten einer Website installiert werden (funktioniert wie ein Google Analytics-Skript), um reCAPTCHA und dem Websitebesitzer zu helfen, das Verhalten von Menschen gegenüber Bots zu verstehen, bevor ein reCAPTCHA erstellt wird.

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

69
barbolo

Meine Bots laufen gut gegen ReCaptcha.

Hier meine Lösung.

Lassen Sie Ihren Bot die folgenden Schritte ausführen:

Schreiben Sie zuerst eine Human Mouse Move-Funktion, um Ihre Maus wie einen B-Spline zu bewegen (fragen Sie mich nach dem Quellcode). Dies ist der wichtigste Punkt.

Verwenden Sie für bessere Ergebnisse auch ein VPN wie https://www.purevpn.com

Führen Sie für jedes Recpatcha die folgenden Schritte aus:

  1. Wenn Sie VPN verwenden, wechseln Sie zuerst die IP-Adresse

  2. Löschen Sie alle Browser-Cookies

  3. Löschen Sie den gesamten Browser-Cache

  4. Legen Sie einen dieser Useragents nach Zufallsprinzip fest:

    ein. Mozilla/5.0 (kompatibel; 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 Bewegen Sie Ihre Maus mit der Human Mouse Move-Funktion von einem RandomPoint in das Ich bin nicht jedes Mal ein Roboterbild mit einem anderen 10x10 RandomRange

  1. Dann klicke immer mit zufälliger Verzögerung dazwischen

    WM_LBUTTONDOWN

    und

    WM_LBUTTONUP

  2. Screenshot von Image Captcha machen

  3. Screenshot senden an

    http://www.deathbycaptcha.com

    oder

    https:///2captcha.com

und sie lösen lassen.

  1. Nachdem Sie die Klick-Cooridinate vom Captcha-Löser erhalten haben, können Sie die Bilder mit der Human Mouse Move-Funktion verschieben und mit Click Recaptcha Images erneut erfassen

  2. Bewegen Sie sich mit der Human Mouse Move-Funktion und klicken Sie auf die Recaptcha Verify-Schaltfläche

In 75% aller Versuche wird Recaptcha gelöst

Chears Google

Tom

20
Ingo

Darf ich meine Vermutung vorstellen, da dies keine offene Technologie ist.

Google sagt, es gehe darum, Informationen vor, während und nach dem Kämmen zu sammeln, um Menschen von Robotern zu unterscheiden. Aber ich bin mehr an diesem letzten Klick auf das Kontrollkästchen interessiert.

Angenommen, die POST -Daten (gelöstes CAPTCHA) haben ein Feld namens Fingerprint, eine Zeichenfolge, die aus dem Benutzerverhalten berechnet wird. Ich denke, es könnte ein Feld für diesen Kontrollkästchenort geben. Ich vermute, dieses Kontrollkästchen befindet sich in einem Koordinatensystem, das zufällig vom Google-Back-End generiert und mit dem öffentlichen Schlüssel meiner Website verschlüsselt wurde. Ein Roboter kann also einen Standort für dieses Feld "erraten/berechnen". Wenn der Websitebesitzer jedoch die GET-Abfrage mit einem privaten Schlüssel vornimmt, um die Benutzeridentität zu überprüfen, entschlüsselt Google das Koordinatensystem und sagt, ob der Benutzer auf den richtigen Ort klickt. In diesem zufälligen Koordinatensystem, das nur Google und den Eigentümern von Websites gehört, gibt es also nur einen möglichen Standort mit der rechten Maustaste (bei einigen Offsets handelt es sich um ein Quadrat).

3
hakunami