Wie funktioniert Google reCAPTCHA v2 hinter den Kulissen?

303

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

Kürzlich hat Google ein vereinfachtes "Captcha" -Verifizierungssystem ( Video ) eingeführt, mit dem Benutzer das "Captcha" durch einfaches Klicken weitergeben können.

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

Gemäß dieser Antwort (eine ähnliche Implementierung vorausgesetzt) auf dem ersten „recaptcha“ erzeugt ihn einen versteckten Schlüssel und Attaches zu einem Eingangselement versteckt und macht auch träge ein Kontrollkästchen (nicht ein tatsächliches Kontrollkästchen , inputsondern ein div) mit dem gleichen Schlüssel der Wenn Sie darauf klicken, wird eine asynchrone Anforderung (XHR) an die Google-Backend-Server gesendet, um sie als gültigen Bestätigungsschlüssel zu kennzeichnen (dh als Schlüssel, der beim Senden des Formulars überprüft werden muss).

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

Wie könnte das funktionieren?

Everlasto
quelle
1
Wahrscheinlich ähnlich wie sie einfache Captchas an Menschen und harte Captchas an Bots
schickten
1
So wie ich es verstanden habe, gibt es immer noch ein Captcha, aber wenn Sie keine verdächtigen Anfragen stellen, müssen Sie es nie lösen.
Kelm
@Louie Was wurde "gestohlen"? Jemand hat dieselbe Frage gestellt und denselben (und einzigen) Beitrag verlinkt - aber er ist etwas anders formuliert, und keine der Antworten ist dieselbe. Darüber hinaus wurde die ursprüngliche Quora-Frage am 3. Dezember, einen Tag vor dieser Frage, veröffentlicht. Was scheint das Problem zu sein?
Wchargin
10
@CiroSantilli the 事件 法轮功 was zum Teufel? Der Link ist weg
TechLife
14
@ TechLife wahr! Scheint auf github.com/neuroradiology/InsideReCaptcha umgezogen zu sein ? Erinnerung an sich selbst: immer Gabelzeug.
Ciro Santilli 法轮功 冠状 病 六四 事件 法轮功

Antworten:

200

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

Ich würde annehmen, dass es sich darum handelt, wie Sie sich vor dem Klicken verhalten haben, wie sich Ihr Cursor auf dem Weg zum Check (organischer Pfad / Beschleunigung) bewegt hat, welcher Teil des Kontrollkästchens angeklickt wurde (zufällige Stellen oder jedes Mal tot in der Mitte), Browser Fingerabdruck, Google-Cookies und -Inhalte, Klick-Standortverlauf, der mit Ihrem Fingerabdruck oder Konto verknüpft ist, falls einer erkannt wird usw.

Es ist ziemlich schwierig, "organisches" Verhalten so vorzutäuschen, dass es eine kontinuierlich lernende Mustererkennungs-Engine zum Narren hält. In den Fällen, in denen es nicht sicher ist, werden Sie dennoch aufgefordert, eine tatsächliche CAPTCHA-Zeichenfolge abzugleichen.

AgmLauncher
quelle
73
Das scheint richtig zu sein und sollte erklären, warum ich mit den Sticks immer einen String auf meiner PSVita eingeben muss. Es bewegt sich nicht wie eine normale Maus.
Domino
3
Ich frage mich, wie Google auf eine ausreichend große Menge aufgezeichneten organischen Verhaltens reagieren würde.
Markus Malkusch
16
Mausbewegungen tragen definitiv nicht dazu bei. Platzieren Sie den Cursor genau an der Stelle, an der das Kontrollkästchen angezeigt wird. Navigieren Sie zur Site, ohne den Cursor zu bewegen. Klicken Sie auf das Kontrollkästchen und es wird bestanden.
Derek 12 會 功夫
3
@Derek, ich denke nicht, dass das ein Beweis für irgendetwas ist. Cookies, IP und viele andere Faktoren können dazu beitragen, dass Sie passieren, bevor sie auf Mausbewegungen zurückgreifen. Ich habe keine Lust, es zu testen, aber wenn Sie einen neuen Computer von einer neuen IP-Adresse aus starten und die Maus überhaupt nicht verwenden, würde ich wetten, dass dies fehlschlagen würde.
Caimen
13
Beachten Sie, dass Sie auch darauf tippen und die Leertaste drücken können.
JSideris
74

Es wurde ein neues Papier 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 Highlights:

  • 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 basierend auf Anforderungen 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 wahrscheinlich einige Verhaltensweisen basierend auf IPs ein.

Ein weiteres interessantes Ergebnis ist, dass Google eine VM in JavaScript ausführt, die einen Großteil des reCAPTCHA-Codes und -Verhaltens verschleiert. Diese VM wird als Botguard bezeichnet und dient zum Schutz anderer Dienste neben reCAPTCHA:

https://github.com/neuroradiology/InsideReCaptcha

UPDATE 2017

Ein kürzlich veröffentlichtes Papier (ab August) wurde auf WOOT 2017 veröffentlicht und erreicht eine Genauigkeit von 85% bei der Lösung von noCAPTCHA reCAPTCHA-Audio-Herausforderungen:

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

UPDATE 2018

Google führt reCAPTCHA v3 ein, das wie eine "Human Score Prediction Engine" aussieht, 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 ausgefüllt wird.

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

Barbolo
quelle
4
mouse events don't affect the resultsDas ist interessant, da ich (und ich glaube viele andere) gedacht hatte, dass dies die Hauptsache ist, die die Ergebnisse beeinflusst. Ich dachte, auf dem Handy sollten Benutzer anstelle des Kontrollkästchens alle Bilder auswählen, die gleich sind, da auf einem Touchscreen keine Mausbewegungen ausgeführt werden. Beim erneuten Betrachten des einführenden Blogposts scheint dies jedoch möglicherweise nicht der Fall zu sein. Vielleicht besteht die Auswahl von Bildern darin, verzerrten Text einzugeben und nicht ein Kontrollkästchen zu aktivieren. Wissen Sie (oder jemand), ob reCAPTCHA jemals das einfache Aktivieren eines Kontrollkästchens auf dem Handy erlaubt?
Nateowami
Mausereignisse wirken sich auf die Ergebnisse aus. Wenn Sie Tabund drücken Enter, um das Kontrollkästchen zu aktivieren, wird das Bild-Captcha angezeigt, damit Sie es anhand eines Kriteriums auswählen können.
mbomb007
1
@ mbomb007 Mausereignisse können sich auf die Ergebnisse auswirken, drücken jedoch Tabund Enterzeigen das Bild-Captcha nicht immer an. Die meiste Zeit drücken Tabund Enterwird akzeptiert
Manish Ojha
24

Meine Bots laufen gut gegen ReCaptcha.

Hier meine Lösung.

Lassen Sie Ihren Bot diese Schritte ausführen:

Schreiben Sie zuerst eine menschliche Mausbewegungsfunktion, 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 jeden Recpatcha die folgenden Schritte aus:

  1. Wenn Sie zuerst die VPN-Switch-IP verwenden

  2. Löschen Sie alle Browser-Cookies

  3. Löschen Sie den gesamten Browser-Cache

  4. Stellen Sie eines dieser Useragents nach dem Zufallsprinzip ein:

    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 menschlichen Maus. Bewegen Sie die Funktion jedes Mal von einem zufälligen Punkt in das Ich bin kein Roboterbild mit einem anderen 10x10-Zufallsbereich

  1. Dann klicken Sie immer mit zufälliger Verzögerung zwischen

    WM_LBUTTONDOWN

    und

    WM_LBUTTONUP

  2. Screenshot von Image Captcha machen

  3. Screenshot senden an

    http://www.deathbycaptcha.com

    oder

    https://2captcha.com

und lassen sie lösen.

  1. Nachdem Sie Click-Cooridinate vom Captcha-Solver erhalten haben, bewegen Sie sich mit Ihrer Human-Mouse-Move-Funktion und klicken Sie auf Recaptcha-Bilder

  2. Verwenden Sie Ihre Human Mouse Move Funktion, um sich zu bewegen, und klicken Sie auf die Schaltfläche Recaptcha Verify

In 75% werden alle Versuche von Recaptcha gelöst

Chears Google

Tom

Ingo
quelle
2
Warum brauchen Sie die "Human Mouse Move Function"? Es erscheint unnötig, Ihr Ziel zu erreichen.
Barbolo
9
Die Funktion „Menschliche Mausbewegung“ ist der wichtigste Punkt. Google erkennt im Captcha Mousespeed, MouseWay, MouseButton Ereignisse nach unten und oben, Clickpositions, Mouse EntryPoint in das Captcha, ... und sendet diese Informationen per Javascript an die Google-Datenbank mit vielen Millionen echten menschlichen Mausbewegungen. Nach der Interpretation all dieser erfassten Informationen wird das Captcha als gelöst markiert, nur wenn der Google-Algorithmus angibt, dass es sich um einen Menschen handelt.
Ingo
3
@ barbolo: Bitte überprüfen Sie diesen offiziellen Google Blog. security.googleblog.com/2014/12/… -> Google sagt: "Um dem entgegenzuwirken, haben wir im vergangenen Jahr ein erweitertes Backend für die Risikoanalyse für reCAPTCHA entwickelt, das das gesamte Engagement eines Nutzers für CAPTCHA aktiv berücksichtigt - vor, während und nach - um festzustellen, ob dieser Benutzer ein Mensch ist. "
Ingo
6
Schritt 8 verwendet eine externe API, in der Menschen das Captcha für Sie lösen. Der Bot löst nichts.
Andrea Lazzarotto
14
Ist es nur ich oder ist es für andere beunruhigend und faszinierend, dass Bot-Autoren Stack Overflow verwenden, um reCAPTCHAs zu lösen (und darüber zu debattieren!)?
Oger Psalm33
3

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

Laut Google geht es darum, Informationen vor, während und nach dem Kämmen zu kämmen, 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 Fingerabdruck, eine Zeichenfolge, die aus dem Benutzerverhalten berechnet wird. Ich denke, es gibt möglicherweise ein Feld über diese Kontrollkästchenposition. Ich denke, dieses Kontrollkästchen befindet sich in einem Koordinatensystem, das zufällig vom Google-Backend generiert und mit dem öffentlichen Schlüssel meiner Website verschlüsselt wurde. Ein Roboter kann also einen Ort in diesem Feld "erraten / berechnen". Wenn der Websitebesitzer jedoch die GET-Abfrage mit einem privaten Schlüssel durchführt, um die Benutzeridentität zu überprüfen, entschlüsselt Google das Koordinatensystem und sagt, ob der Benutzer auf die richtige Stelle klickt. Nur ein möglicher Rechtsklick (mit einigen Offsets ist es ein quadratisches Kästchen) in diesem zufälligen Koordinatensystem, das nur Google und Website-Eigentümern gehört.

Hakamami
quelle
Wenn der Browser gut genug ist, um die Box tatsächlich anzuzeigen und Klicks zu erkennen, warum kann ein Hacking-Roboter dann nicht dasselbe tun? Ich könnte jedoch die Position des Kontrollkästchens auf eine sehr genaue Position (in Dezimalstellen) setzen. Wenn also ein Klick mit denselben Dezimalstellen erkannt wird, bedeutet dies, dass es sich um einen Roboter handelt, der sich nicht die Mühe gemacht hat, der Klickposition zufällige Dezimalstellen hinzuzufügen. Aber auch das ist nicht kinderleicht.
Domino
Google verwendet angeblich einen "Lern" -Algorithmus, sodass einige Kunden mit denselben Merkmalen, die den gleichen allgemeinen Weg und die gleiche allgemeine Zeit zu erreichen scheinen und dies 100.000 Mal am Tag geschieht, wahrscheinlich nicht legitim sind.
Sirenen
1
Es sollte relativ einfach sein, das Klicken in den quadratischen Bereich zu simulieren. Es spielt keine Rolle, wie Google die Daten vor dem Senden verschlüsselt.
Eugene C
0

Bitte beachten Sie, dass Google auch reCaptcha zusammen mit verwendet

Canvas fingerprinting 

Benutzer / Browser ohne Cookies eindeutig zu erkennen!

Ingo
quelle