Come funziona Google reCAPTCHA v2 dietro le quinte?


303

Questo post fa riferimento a Google ReCaptcha v2 (non l'ultima versione)

Recentemente Google ha introdotto un sistema di verifica "captcha" semplificato ( video ) che consente agli utenti di passare il "captcha" semplicemente facendo clic su di esso.

Ma come può differenziare un bot da una persona semplicemente con un clic?

In base a questa risposta (presupponendo un'implementazione simile), inizialmente "recaptcha" genera una chiave nascosta e la collega a un elemento di input nascosto e rende pigramente anche una casella di controllo (non una casella di controllo effettiva inputma a div) con la stessa chiave che quando si fa clic, invia una richiesta asincrona (XHR) ai server back-end di Google per contrassegnarla come chiave di verifica valida (ovvero una chiave che deve essere convalidata quando viene inviato il modulo).

Ma perché i robot non possono automatizzare quel clic (almeno, i bot basati su browser)?

Come potrebbe funzionare?


1
Probabilmente simile al modo in cui stavano inviando semplici captcha agli umani e hard captcha ai robot
mukunda,

1
Il modo in cui l'ho capito è - c'è ancora un captcha, ma se non fai richieste sospette - non dovrai mai risolverlo.
Kelm,

@Louie Cosa è stato "rubato"? Qualcuno ha posto la stessa domanda e ha collegato lo stesso (e unico) post, ma è formulato in modo leggermente diverso e nessuna delle risposte è la stessa. Inoltre, la domanda originale di Quora è stata pubblicata il 3 dicembre, un giorno prima di questa domanda. Quello che sembra essere il problema?
mercoledì

10
@CiroSantilli 六四 事件 法轮功 che diamine? il link non c'è più
TechLife,

14
@TechLife vero! Sembra essersi spostato su github.com/neuroradiology/InsideReCaptcha ? Promemoria per sé: forchetta sempre roba.
Ciro Santilli 10 冠状 病 六四 事件 法轮功

Risposte:


200

Questa è una speculazione, ma basata sul riferimento di Google al "motore di analisi del rischio" che usano ( http://googleonlinesecurity.blogspot.com/2014/12/are-you-robot-introducing-no-captcha.html )

Suppongo che osservi come ti sei comportato prima di fare clic, in che modo il cursore si spostava sulla strada per il controllo (percorso organico / accelerazione), su quale parte della casella di controllo veniva cliccata (luoghi casuali o morta al centro ogni volta), browser impronta digitale, cookie e contenuti di Google, cronologia delle posizioni dei clic legata all'impronta digitale o all'account se ne rileva uno ecc.

È abbastanza difficile falsificare un comportamento "organico" in modo tale da ingannare un motore di rilevamento dei modelli di apprendimento continuo. Nei casi in cui non è sicuro, viene comunque richiesto di abbinare una stringa CAPTCHA effettiva.


73
Sembra giusto e dovrebbe spiegare perché devo sempre digitare una stringa sul mio PSVita con le levette. Non si muove come un normale mouse.
Domino,

3
Mi chiedo come Google reagirebbe a una quantità sufficiente di comportamento organico registrato.
Markus Malkusch,

16
Il movimento del mouse sicuramente non contribuisce a questo. Posiziona il cursore nel punto in cui appare la casella di controllo. Vai al sito senza spostare il cursore. Fai clic sulla casella di controllo e passerà.
Derek 功夫 會 功夫

3
@Derek, non penso che sia la prova di nulla. Cookie, IP e molti altri fattori potrebbero contribuire a farti passare prima che ricadano nel movimento del mouse. Non ho voglia di testarlo, ma se dovessi licenziare un nuovo computer da un nuovo IP e non usare affatto il mouse, sono disposto a scommettere che fallirebbe.
Caimen

13
Si noti che è anche possibile tab su di esso e premere spazio.
JSideris,

74

È stato rilasciato un nuovo documento con numerosi test contro reCAPTCHA:

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

Alcuni punti salienti:

  • Mantenendo attivo un cookie per +9 giorni (navigando sui siti con risorse di Google), è possibile passare reCAPTCHA facendo clic sulla casella di controllo;
  • Non ci sono restrizioni basate su richieste per IP;
  • L'agente utente del browser deve essere reale e Google esegue test sull'ambiente per assicurarsi che corrisponda all'agente utente;
  • Google verifica se il browser può eseguire il rendering di una tela;
  • La risoluzione dello schermo e gli eventi del mouse non influiscono sui risultati;

Google ha già risolto la vulnerabilità dei cookie e probabilmente sta limitando alcuni comportamenti basati sugli IP.

Un'altra scoperta interessante è che Google esegue una VM in JavaScript che offusca gran parte del codice e del comportamento di reCAPTCHA. Questa macchina virtuale è nota come botguard e viene utilizzata per proteggere altri servizi oltre a reCAPTCHA:

https://github.com/neuroradiology/InsideReCaptcha

AGGIORNAMENTO 2017

Un recente articolo (da agosto) è stato pubblicato su WOOT 2017 ottenendo una precisione dell'85% nella risoluzione delle sfide audio di noCAPTCHA reCAPTCHA:

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

AGGIORNAMENTO 2018

Google sta introducendo reCAPTCHA v3, che assomiglia a un "motore di previsione del punteggio umano" calibrato per sito Web. Può essere installato in diverse pagine di un sito Web (funzionando come uno script di Google Analytics) per aiutare reCAPTCHA e il proprietario del sito Web a comprendere il comportamento degli umani rispetto ai robot prima di riempire un reCAPTCHA.

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


4
mouse events don't affect the resultsÈ interessante, poiché io (e credo molti altri) avevo pensato che fosse la cosa principale che ha influenzato i risultati. Ho pensato sul cellulare anziché sulla casella di controllo, gli utenti sono stati invitati a selezionare tutte le immagini che sono simili, perché non ci sono movimenti del mouse su un touchscreen. Tuttavia, guardando di nuovo il post introduttivo sul blog, sembra che potrebbe non essere il caso. Forse selezionare le immagini è invece di digitare un testo distorto, non invece di selezionare una casella. Sai (o qualcuno) sapere se reCAPTCHA consente mai di selezionare semplicemente una casella sul cellulare?
Nateowami,

Gli eventi del mouse influiscono sui risultati. Se si preme Tabe Enterper selezionare la casella di controllo, verranno mostrate le immagini captcha per la selezione in base a un criterio.
mbomb007,

1
@ mbomb007 Gli eventi del mouse potrebbero influire sui risultati ma premendo Tabe Enternon mostreranno continuamente il captcha dell'immagine. Il più delle volte preme Tabe Enterviene accettato
Manish Ojha

24

I miei robot funzionano bene contro ReCaptcha.

Ecco la mia soluzione.

Lascia che il tuo Bot esegua questi passaggi:

Per prima cosa scrivi una funzione di spostamento del mouse umano per spostare il mouse come una B-Spline (chiedimi il codice sorgente). Questo è il punto più importante.

Utilizzare anche per risultati migliori una VPN come https://www.purevpn.com

Per ogni Recpatcha fai questi passi:

  1. Se si utilizza prima lo switch IP VPN

  2. Cancella tutti i cookie del browser

  3. Cancella tutta la cache del browser

  4. Imposta uno di questi Useragent in modo casuale:

    un. Mozilla / 5.0 (compatibile; 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 Sposta il mouse con il mouse umano Sposta la funzione Funktion da un punto casuale all'immagine Io non sono un robot ogni volta con un intervallo casuale 10x10 diverso

  1. Quindi fare clic sempre con un ritardo casuale tra

    WM_LBUTTONDOWN

    e

    WM_LBUTTONUP

  2. Cattura screenshot da Image Captcha

  3. Invia screenshot a

    http://www.deathbycaptcha.com

    o

    https://2captcha.com

e lascia che risolvano.

  1. Dopo aver ricevuto i clic cooridinati dal solutore captcha, usa la funzione Sposta mouse umano per spostarti e fai clic su Recaptcha Images

  2. Usa il mouse umano Sposta Funktion per spostarti e fai clic sul pulsante Verifica Recaptcha

Nel 75% tutti i trys Recaptcha saranno risolti

Chears Google

Tom


2
Perché hai bisogno della "Funzione di spostamento del mouse umano"? Sembra superfluo raggiungere il tuo obiettivo.
barbolo,

9
La funzione 'Human Mouse Move' è il punto più importante. Google rileva all'interno del captcha Mousespeed, MouseWay, MouseButton su e giù Eventi, Clickpositions, Mouse EntryPoint nel captcha, ... e invia queste informazioni tramite Javascript al database di Google con molti milioni di veri e propri tracciati di Mousemove umani. Dopo aver interpretato tutte queste informazioni acquisite, Captcha contrassegnerà come risolto, solo se l'algoritmo di Google dice che era un essere umano.
Ingo,

3
@ barbolo: controlla questo blog ufficiale di Google security.googleblog.com/2014/12/… -> Google dice "Per contrastare questo, l'anno scorso abbiamo sviluppato un backend Advanced Risk Analysis per reCAPTCHA che considera attivamente l'intero coinvolgimento di un utente con il CAPTCHA —Prima, durante e dopo — per determinare se quell'utente è un essere umano. "
Ingo

6
Il passaggio 8 utilizza un'API esterna in cui gli umani risolvono il captcha per te. Il bot non sta risolvendo nulla.
Andrea Lazzarotto,

14
Sono solo io, o è sia inquietante che affascinante per chiunque altro che gli autori di bot stiano usando Stack Overflow per aiutare a risolvere (e discutere su!) ReCAPTCHAs?
Ogre Salmo33,

3

Posso presentare la mia ipotesi, dal momento che questa non è una tecnologia aperta.

Google afferma che si tratta di pettinare le informazioni prima, durante e dopo per distinguere l'uomo dal robot. Ma sono più interessato a quel clic finale sulla casella di controllo.

Supponiamo che i dati POST (CAPTCHA risolti) abbiano un campo chiamato fingerprint, una stringa calcolata dal comportamento dell'utente. Penso che ci possa essere un campo su quella posizione della casella di controllo. Immagino che questa casella di controllo sia in un sistema di coordinate generato casualmente dal back-end di Google e crittografato dalla chiave pubblica del mio sito. Pertanto, un robot può "indovinare / calcolare" una posizione su questa casella, ma quando il proprietario del sito esegue la query GET con chiave privata per verificare l'identità dell'utente, Google decodificherà il sistema di coordinate e dirà se l'utente fa clic nel posto giusto. Quindi, solo un possibile clic con il pulsante destro del mouse (con alcuni offset, è una casella quadrata) in questo sistema di coordinate casuali di proprietà di Google e dei proprietari di siti.


Se il browser è abbastanza buono da mostrare effettivamente la casella e rilevare i clic, allora perché un robot hacker non sarebbe in grado di fare lo stesso? Potrei tuttavia impostare la posizione della casella di controllo su una posizione molto precisa (in decimali), quindi se viene rilevato un clic con gli stessi decimali, significa che è un robot che non si è preoccupato di aggiungere decimali casuali alla posizione del clic. Ma di nuovo, non è infallibile.
Domino,

Google sta presumibilmente utilizzando un algoritmo di "apprendimento" in modo che se alcuni clienti con le stesse caratteristiche sembrano toccare lo stesso percorso generale e il tempo generale per arrivarci ed è successo 100.000 volte al giorno, probabilmente non sono legittimi.
Sirene,

1
Dovrebbe essere relativamente facile simulare il clic nell'area quadrata. Non importa in che modo Google crittografa i dati prima dell'invio.
Eugene C,

0

Ricorda che anche Google utilizza reCaptcha insieme a

Canvas fingerprinting 

riconoscere in modo univoco Utente / Browser senza cookie!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.