Como o Google reCAPTCHA v2 funciona nos bastidores?

303

Esta postagem refere-se ao Google ReCaptcha v2 (não a versão mais recente)

Recentemente, o Google introduziu um sistema de verificação "captcha" simplificado ( vídeo ) que permite que os usuários passem o "captcha" apenas clicando nele.

Mas como ele pode diferenciar um bot de uma pessoa com apenas um clique?

De acordo com esta resposta (assumindo uma implementação semelhante), no início "recaptcha" gera uma chave oculta e a anexa a um elemento de entrada oculto, além de preguiçosamente renderizar uma caixa de seleção (não uma caixa de seleção real, inputmas a div) com a mesma chave que quando clicada, envia uma solicitação assíncrona (XHR) aos servidores de back-end do Google para marcá-la como uma chave de verificação válida (ou seja, uma chave que precisa ser validada quando o formulário é enviado).

Mas por que os robôs não podem automatizar esse clique (pelo menos, robôs baseados em navegador)?

Como isso pode funcionar?

everlasto
fonte
1
Provavelmente, semelhante à maneira como eles estavam enviando captchas simples para os seres humanos, e duros captchas para bots
Mukunda
1
Do jeito que eu entendi, ainda existe um captcha, mas, a menos que você faça pedidos suspeitos, nunca precisará resolvê-lo.
Kelv4
@ Louis O que foi "roubado"? Alguém fez a mesma pergunta e vinculou a mesma (e única) postagem - mas está redigida de maneira um pouco diferente e nenhuma das respostas é a mesma. Além disso, a pergunta original do Quora foi postada em 3 de dezembro, um dia antes dessa pergunta. Oque parece ser o problema?
wchargin
10
@CiroSantilli 六四 事件 法轮功 o que diabos? o link acabou
TechLife
14
@TechLife true! Parece ter mudado para github.com/neuroradiology/InsideReCaptcha ? Lembrete para si mesmo: sempre garfo coisas.
Ciro Santilli escreveu:

Respostas:

200

Isso é especulação, mas com base na referência do Google ao "mecanismo de análise de risco" que eles usam ( http://googleonlinesecurity.blogspot.com/2014/12/are-you-robot-introducing-no-captcha.html )

Eu suponho que ele analise como você se comportou antes de clicar, como o cursor se moveu para a verificação (caminho orgânico / aceleração), em que parte da caixa de seleção foi clicada (locais aleatórios ou sempre no centro), navegador impressão digital, cookies e conteúdo do Google, clique no histórico de localização vinculado à sua impressão digital ou conta, se detectar uma etc.

É bastante difícil falsificar o comportamento "orgânico" de tal maneira que enganaria um mecanismo de detecção de padrões de aprendizado contínuo. Nos casos em que não há certeza, ele ainda solicita que você corresponda a uma sequência CAPTCHA real.

AgmLauncher
fonte
73
Isso parece certo e deve explicar por que eu sempre tenho que digitar uma string no meu PSVita com os paus. Não se move como um mouse normal.
Domino
3
Estou imaginando como o Google reagiria a uma quantidade enorme e suficiente de comportamento orgânico registrado.
Markus Malkusch
16
O movimento do mouse definitivamente não contribui para isso. Coloque o cursor exatamente no local em que a caixa de seleção apareceria. Navegue até o site sem mover o cursor. Clique na caixa de seleção e ela será aprovada.
Derek朕會功夫
3
@ Derek, não acho que isso seja prova de nada. Cookies, IP e muitos outros fatores podem contribuir para permitir que você passe antes que eles voltem ao movimento do mouse. Não tenho vontade de testá-lo, mas se você disparar um computador novo a partir de um IP novo e não usar o mouse, estou disposto a apostar que ele falhará.
Caimen
13
Observe que você também pode tabular e pressionar espaço.
JSideris
74

Um novo artigo foi lançado com vários testes contra o reCAPTCHA:

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

Alguns destaques:

  • Ao manter um cookie ativo por +9 dias (navegando em sites com recursos do Google), você pode transmitir o reCAPTCHA apenas clicando na caixa de seleção;
  • Não há restrições baseadas em solicitações por IP;
  • O agente do usuário do navegador deve ser real e o Google executa testes no seu ambiente para garantir que ele corresponda ao agente do usuário;
  • O Google testa se o navegador pode renderizar um Canvas;
  • A resolução da tela e os eventos do mouse não afetam os resultados;

O Google já corrigiu a vulnerabilidade dos cookies e provavelmente está restringindo alguns comportamentos baseados em IPs.

Outra descoberta interessante é que o Google executa uma VM em JavaScript que ofusca grande parte do código e comportamento do reCAPTCHA. Esta VM é conhecida como botguard e é usada para proteger outros serviços além do reCAPTCHA:

https://github.com/neuroradiology/InsideReCaptcha

ATUALIZAÇÃO 2017

Um artigo recente (de agosto) foi publicado no WOOT 2017, atingindo 85% de precisão na solução dos desafios de áudio noCAPTCHA reCAPTCHA:

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

ATUALIZAÇÃO 2018

O Google está introduzindo o reCAPTCHA v3, que parece um "mecanismo de previsão de pontuação humana" calibrado por site. Ele pode ser instalado em diferentes páginas de um site (funcionando como um script do Google Analytics) para ajudar o reCAPTCHA e o proprietário do site a entender o comportamento de humanos versus bots antes de preencher um reCAPTCHA.

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

barbolo
fonte
4
mouse events don't affect the resultsIsso é interessante, pois eu (e acredito que muitos outros) achamos que era a principal coisa que afetava os resultados. Pensei no celular, em vez da caixa de seleção, os usuários foram solicitados a selecionar todas as imagens semelhantes, porque não há movimentos do mouse na tela sensível ao toque. No entanto, olhando para o post introdutório novamente, parece que pode não ser o caso. Talvez selecionar imagens seja em vez de digitar texto distorcido, não em vez de marcar uma caixa. Você (ou alguém) sabe se o reCAPTCHA permite simplesmente marcar uma caixa no celular?
Nateowami
Eventos de mouse afetam os resultados. Se você pressionar Tabe Enterpara marcar a caixa de seleção, ele mostrará as imagens captcha para você selecioná-las com base em um critério.
mbomb007
1
@ mbomb007 Os eventos do mouse podem afetar os resultados, mas pressionar Tabe Enternão mostrará a captura de imagem o tempo todo. Na maioria das vezes pressionando Tabe Enteré aceito
Manish Ojha
24

Meus Bots estão rodando bem contra o ReCaptcha.

Aqui está a minha solução.

Deixe seu bot fazer isso Passos:

Primeiro, escreva uma função de movimentação do mouse humano para mover o mouse como um B-Spline (solicite o código-fonte). Este é o ponto mais importante.

Use também para obter melhores resultados uma VPN como https://www.purevpn.com

Para cada Recpatcha, siga estas etapas:

  1. Se você usar o IP do switch VPN primeiro

  2. Limpar todos os cookies do navegador

  3. Limpar tudo Cache do navegador

  4. Defina um destes Useragents por Random:

    uma. Mozilla / 5.0 (compatível; 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 Mova o mouse com o mouse humano Mova a função de um RandomPoint para a imagem Eu não sou um robô toda vez com diferentes intervalos aleatórios de 10x10

  1. Então clique sempre com atraso aleatório entre

    WM_LBUTTONDOWN

    e

    WM_LBUTTONUP

  2. Capturar captura de tela do Image Captcha

  3. Enviar captura de tela para

    http://www.deathbycaptcha.com

    ou

    https://2captcha.com

e deixá-los resolver.

  1. Depois de receber o clique cooridado do captcha solver, use o mouse humano mover Funktion para mover e clique em Recaptcha Images

  2. Use a função Mover do mouse humano para mover e clique no botão Verificar novamente.

Em 75%, todos os trys Recaptcha serão resolvidos

Chears Google

Tom

Ingo
fonte
2
Por que você precisa da "Função Mover mouse humano"? Parece desnecessário atingir seu objetivo.
barbolo
9
A função 'Movimento do mouse humano' é o ponto mais importante. O Google detecta dentro do captcha Mousespeed, MouseWay, MouseButton para baixo e para cima Events, Clickpositions, Mouse EntryPoint no captcha, ... e envia essas informações via Javascript para o Google Database com muitos milhões de rastreamentos humanos reais de Mousemove. Depois de interpretar todas essas informações capturadas, o Captcha marcará como resolvido, apenas se o algoritmo do Google disser que era humano.
Ingo
3
@ barbolo: verifique este blog oficial do Google security.googleblog.com/2014/12/… -> O Google diz "Para combater isso, no ano passado, desenvolvemos um back-end de análise de risco avançada para o reCAPTCHA que considera ativamente todo o envolvimento de um usuário com o CAPTCHA - antes, durante e depois - para determinar se esse usuário é humano. "
Ingo
6
A etapa 8 usa uma API externa na qual os humanos resolvem o captcha para você. O bot não está resolvendo nada.
Andrea Lazzarotto
14
Sou apenas eu, ou é perturbador e fascinante para qualquer outra pessoa que os escritores de bot estejam usando o Stack Overflow para ajudar a resolver (e debater sobre!) ReCAPTCHAs?
Ogre Psalm33
3

Posso apresentar meu palpite, já que essa não é uma tecnologia aberta.

O Google diz que é sobre pentear informações de antes, durante e depois para distinguir humano de robô. Mas estou mais interessado no clique final na caixa de seleção.

Digamos, os dados do POST (CAPTCHA resolvido) possuem um campo chamado impressão digital, uma sequência calculada a partir do comportamento do usuário. Eu acho que pode haver um campo sobre esse local da caixa de seleção. Acho que essa caixa de seleção está em um sistema de coordenadas gerado aleatoriamente pelo back-end do Google e criptografado pela chave pública do meu site. Portanto, um robô pode "adivinhar / calcular" um local sobre essa caixa, mas quando o proprietário do site faz a consulta GET com chave privada para verificar a identidade do usuário, o Google descriptografa o sistema de coordenadas e diz se o usuário clica no lugar certo. Portanto, apenas um clique com o botão direito do mouse (com algumas compensações, é uma caixa quadrada) neste sistema de coordenadas aleatório de propriedade apenas do Google e dos proprietários do site.

hakunami
fonte
Se o navegador é bom o suficiente para mostrar a caixa e detectar cliques, por que um robô de hackers não seria capaz de fazer o mesmo? No entanto, eu poderia definir a posição da caixa de seleção para uma posição muito precisa (em decimais); portanto, se um clique for detectado com os mesmos decimais, significa que é um robô que não se incomodou em adicionar decimais aleatórios à posição do clique. Mas, novamente, isso não é infalível.
Domino
O Google supostamente está usando um algoritmo de 'aprendizado' para que, se alguns clientes com as mesmas características pareçam seguir o mesmo caminho geral e tempo geral para chegar lá e isso acontecer 100.000 vezes por dia, provavelmente não sejam legítimos.
Sirens
1
Deve ser relativamente fácil simular cliques na área quadrada. Não importa como o Google criptografa os dados antes de enviá-los.
21415 Eugene C
0

Lembre-se de que o Google também usa o reCaptcha junto com

Canvas fingerprinting 

reconhecer exclusivamente Usuários / Navegadores sem cookies!

Ingo
fonte