Como os robôs podem vencer os CAPTCHAs?

84

Eu tenho um formulário de e-mail do site. Eu uso um CAPTCHA personalizado para evitar spam de robôs. Apesar disso, ainda recebo spam.

Por quê? Como os robôs vencem o CAPTCHA? Eles usam algum tipo de OCR avançado ou simplesmente obtêm a solução de onde estão armazenados?

Como posso evitar isso? Devo mudar para outro tipo de CAPTCHA?


Tenho certeza de que os emails são provenientes do formulário, porque são enviados pelo remetente do email que atende as mensagens do formulário. Além disso, o estilo da letra é o mesmo.

Para o registro, estou usando PHP + MySQL, mas não estou procurando uma solução para esse problema. Eu estava interessado na situação geral de como os robôs vencem essas tecnologias. Eu apenas contei essa situação como exemplo, para que você possa entender melhor o que estou perguntando.

totymedli
fonte
86
Quero responder à sua pergunta: como os humanos podem vencer o CAPTCHA: mais frequentemente do que isso não me leva várias vezes, muitas vezes, muitas vezes para superar.
Pieter B
14
Se alguém acha que essa pergunta merece voto negativo, pelo menos me explique o porquê.
totymedli
10
@ Blrfl, eu não entendo como isso está fora do tópico.
47
Se você quiser que respondamos sua pergunta, primeiro prove que você não é um robô.
Pete Kirkham
7
@Blrfl, no entanto, tem tudo a ver com o desenvolvimento de software de qualidade.
Izkata

Respostas:

72

Duas maneiras mais fáceis de passar pelo CAPTCHA:

  • Use fazendas humanas, ou seja, peça às pessoas para preencher CAPTCHAs por dinheiro, assim como os ProTypers .

  • Use um OCR.

Também pode haver um bug no mecanismo CAPTCHA ou no aplicativo circundante, permitindo que alguém ignore o CAPTCHA.

A propósito, o artigo W3C Inacessibilidade do CAPTCHA: Alternativas aos Testes de Visual Turing na Web explica também como os CAPTCHAs podem ser comprometidos:

[...] Um dos primeiros ataques documentados ao sistema foi realizado por um aluno de Carnegie Mellon, que associou imagens do CAPTCHA ao acesso a um site adulto, ganhando assim mão de obra humana gratuita para quebrar a autenticação. [...]

Projetos externos [...] mostraram metodologias e resultados indicando que muitos dos sistemas podem ser derrotados por computadores com precisão entre 88% e 100%, usando o reconhecimento óptico de caracteres.

Então, como você pode impedir esses ataques?

  • Se você possui seu CAPTCHA implementado personalizado, tente mudar para um popular, como o reCAPTCHA .

    Isso ajudará se o seu próprio CAPTCHA for muito fácil para OCR ou se houver um erro que foi explorado com êxito.

  • Se você usar um mecanismo CAPTCHA popular, mudar para um mecanismo customizado ou outro popular pode impedir o OCR.

Tecnicamente, nada impediria farms humanos: você pode criar GIFs animados em que vários quadros exibem texto diferente muito rapidamente, e apenas um quadro é realmente visível pelo usuário, você pode distorcer ou dobrar o texto em todas as direções ou encontrar novas formas alternativas de evitar OCRs por reconhecerem texto, ainda humanos pagos pela solução de CAPTCHAs os resolverão com sucesso.

Você pode passar do CAPTCHA visual para o som (se você já não estiver usando os dois, e deveria), mas isso significa que os usuários com deficiência auditiva não conseguiriam usar o aplicativo.


FrustratedWithFormsDesigner e GalacticCowboy mencionados nos comentários CAPTCHAs específicos do domínio. Eu tentei encontrar algum material sobre o quão eficaz isso é, mas sem sucesso, então aqui está apenas minha opinião pessoal:

  1. Os CAPTCHAs específicos do domínio podem ser extremamente irritantes quando usuários reais não têm idéia da resposta.

    Exemplo: estou visitando uma página em um site orientado a filmes. Percebo um erro em um artigo e quero comentar sobre ele para notificar o autor sobre o erro. O formulário de comentários me pede, como mecanismo CAPTCHAs, para fornecer o nome da atriz exibida em uma foto. Eu não tenho idéia de quem é essa atriz, então a única coisa que posso fazer é deixar o site (ou passar os próximos dois minutos usando o Google Imagens).

    Outro exemplo: um site pede para dar um sinônimo de "misterioso". Por mais fácil que pareça para uma pessoa não deficiente que fala inglês fluentemente, seria impossível resolver sem ajuda externa para pessoas que não falam bem o inglês ou pessoas com alguma deficiência no desenvolvimento, sem contar o fato de que encontrar sinônimos ou antônimos é sempre complicado.

  2. A maioria desses problemas específicos de domínio pode ser resolvida programaticamente. Os dois exemplos que dei são facilmente resolvidos usando recursos externos (Google Images e dicionário de sinônimos). Aquele sobre transistores, dado como exemplo pelo FrustratedWithFormsDesigner, é melhor, mas ainda pode ser resolvido com um bot personalizado.

  3. Ninguém resiste a fazendas humanas.

  4. Eles geram dados, assim como os CAPTCHAs de texto comum desenham caracteres distorcidos; nesse caso, o algoritmo de geração pode ser explorado para ajustar os bots, ou eles encontram dados em algum lugar, assim como o reCAPTCHA pega o texto dos livros digitalizados , e nesse caso o bot pode use esses dados contra ele (por exemplo, se você usar palavras de um dicionário, solicitando ao usuário que forneça sinônimos, o bot poderá usar o mesmo dicionário para obter 100% de sucesso).

Arseni Mourzenko
fonte
4
+1 para notar que não há nenhuma CAPTCHA garantido para trabalhar
Neil
8
Eu já vi alguns captchas novos que são muito específicos do domínio. Um deles exibia imagens de resistores e o usuário precisava inserir a resistência (havia um link para uma página de ajuda para pessoas que não sabiam ler faixas de cores do resistor). Outro tinha uma imagem de um pequeno trecho de notação musical e o usuário precisava inserir certas notas (como "notas apenas no segundo acorde"). Eles ainda podem ser jogados, mas o custo para os remetentes de spam pode não valer a pena.
FrustratedWithFormsDesigner
2
@MainMa, havia um post em um relatório técnico em algum lugar sobre alguém que havia projetado um bot que superava captchas notavelmente rápido, porque ignorava o visual e, em vez disso, interpretava as sugestões de áudio com ele, então você acabaria adicionando estática ao um áudio, o que torna ainda mais difícil para os usuários de qualquer maneira
RhysW
@RhysW: o artigo do W3C que mencionei também menciona que a mudança de imagens para áudio não resolve o problema do bot e pode até facilitar as coisas para os bots.
Arseni Mourzenko
24
Fazendas humanas. Por que estou imaginando a Matrix?
LarsTech #
37

Adicionando à resposta do MainMa ...

Os spammers induzem os outros a fazer o CAPTCHA por eles

Basicamente, os spammers criam um site warez ou pornô que parece ter um CAPTCHA, mas não é um CAPTCHA real. Um bot puxa o CAPTCHA do site que deseja spam (ou, de outra forma, explora) e o exibe no site warez ou em um site pornô em que alguém o completa. Em seguida, o valor CAPTCHA é passado de volta ao bot ...

Um pouco mais sobre spammers

Eu uso o reCAPTCHA e descobri que é basicamente inútil. Também uso um filtro de spam personalizado que captura o spam que passou pelo reCAPTCHA e preciso analisá-lo a cada poucos dias para detectar falsos positivos.

Meu fórum também é totalmente personalizado e recebe muito pouco tráfego. Não acredito que alguém tenha codificado um ataque específico ao meu site. Ainda assim, meu filtro de spam captura 2k mensagens de spam por dia! Nenhum é exibido no site. Os spammers não se beneficiam de me enviar spam, mas ainda assim o fazem.

Consigo ver padrões nas tentativas de envio de spam porque registro tudo. Posso lhe dizer isso: deixando de lado como eles ultrapassam o CAPTCHA, os spammers estão claramente usando uma técnica de força bruta que varia os campos que são preenchidos e o tipo de dados e combinações de palavras que preenchem esses campos. Aparentemente, eles fazem isso tão barato (incluindo ignorar o CAPTCHA) que nem vale a pena fazer uma análise dos sites individuais para ver se o que eles estão fazendo está ou não funcionando.

Ano após ano, eles continuam segmentando meu site com milhares de mensagens de spam por dia apenas para receber uma a cada mês, e essa é excluída manualmente um dia depois. É tão barato para spam!

Essa será uma batalha nos próximos anos. Especialmente para sites moderadores pequenos como o meu.


EDIT 22/6/2017 : Quero acrescentar que, desde este post, o Google reformulou completamente o reCAPTCHA e, até o momento em que este artigo foi escrito, vinha funcionando perfeitamente. Embora eu suspeite que exista um pouco de falsos positivos ou que seja doloroso para os usuários, pois o post caiu um pouco desde que eu o implementei. As 2 grandes mudanças são

1) Eles estão usando imagens em vez de texto (então não há mais OCR)

2) Eles a combinam com a atividade dos usuários em todo o site que usa o reCAPTCHA. Portanto, se você passar pelo reCAPTCHA no site A, vá para o Site B, talvez nem seja necessário que você prove que é humano! Além disso (eu acho), se você estiver atingindo muitos reCAPTCHAs em muitos sites, isso também será sinalizado. Tenho certeza de que ele está usando outros tipos de IA com base na atividade dos usuários.

Tenho certeza de que é apenas uma questão de tempo até que os spammers superem isso também ...

Idiotas
fonte
Este é provavelmente o argumento mais forte para o reCAPTCHA em um site pequeno: o Google tem muito mais recursos para acompanhar as técnicas atuais de spam.
Stephen C. Aço
15

Alguma vez você já tentou usar captcha gato-cachorro? Eu tenho um fórum que tinha captcha padrão e mudou e não tenho spam de convidados desde então.insira a descrição da imagem aqui

gato-cachorro-homem
fonte
12

É possível que seu site esteja sendo direcionado por uma força de trabalho explorada e barata e que um ser humano esteja inserindo manualmente suas frases CAPTCHA.

Se a solução que você está usando não for muito sofisticada, é possível que o invasor esteja reconhecendo a imagem.

Também é possível que você tenha um bug em algum lugar do código que permita que o CAPTCHA seja ignorado.

Não assuma que um robô está batendo no seu CAPTCHA. Pense no seu sistema de forma holística e veja se ele foi comprometido.

Sam
fonte
Eu combinaria esquemas de imagem e CSS que os humanos não seriam capazes de resolver facilmente.
Erik Reppen
2
Duas palavras ... Turk mecânico. A Amazon fez do captcha crash um empreendimento incrivelmente barato.
Michael Brown
10

Outros discutiram como os spammers contornam os CAPTCHAs. Aqui estão algumas dicas sobre como evitar isso :

Observe que não há bala de prata e os spammers parecem estar um passo à frente do jogo. Então você terá que usar uma combinação de várias técnicas

  1. Use uma forma de pote de mel
  2. Use uma pergunta CAPTCHAs ou lógica. Perguntas básicas como "maçã, peixe, mão, seis - qual delas faz parte do corpo"
  3. Tenha um atraso. Se o formulário for publicado dentro de 5 segundos após o carregamento da página ignorar a solicitação, a maioria dos robôs será publicada em menos de um segundo
  4. Tenha algum monitoramento de endereço IP - se você notar uma aranha rastreando seu site que não está em uma lista branca (google, bing), coloque na lista negra e bane seu endereço IP. De preferência, isso seria dinâmico / automatizado em código / software
Daveo
fonte
6

Para ecoar as outras respostas, é provável que você encontre bots que usam fazendas humanas para inserir os captchas para eles.

Recentemente, discuti uma técnica (e lançou um módulo Drupal que o acompanha) que bloqueia os bots de spam exigindo JavaScript do lado do cliente. Tanto quanto sei, isso funcionou com 100% de eficiência em todos os sites que usaram esse código. A idéia é usar o AJAX para gerar um hash exclusivo e enviá-lo junto com os outros dados do formulário. Depois, calcule o mesmo hash no back-end após o envio do formulário e compare os dois valores.

Detalhes completos no meu blog (coincidentemente, desde que você mencionou o uso do PHP + MySQL, estas são as mesmas tecnologias descritas lá) - Versão do módulo: Badbot; eliminando spam ...

Yuriy Babenko
fonte
1
Isso funcionará até que se espalhe e o spammer use o navegador sem cabeça.
Xavier Combelle 31/03
1
Como o uso de um navegador sem cabeça muda alguma coisa?
Tatiana Racheva #
-2

Se o seu site é twitter e alguém o segmentou especificamente (em vez de um bot o encontrar), você pode parar de ler ...

Caso contrário, pode valer a pena não fazer com que seu formulário NÃO pareça um formulário. 1. Não tenha campos com 'email' no tipo, nome ou espaço reservado, use nomes curtos ou enganosos para todos os campos. 2. Não use um elemento de formulário html real e o botão enviar. Em vez disso, use o AJAX para publicá-lo com o clique de uma div normal (estilizada para se parecer com um botão). 3. Não coloque o evento onclick no html, adicione um ouvinte em JavaScript. 4. Use JavaScript para preencher todas as dicas 'digite seu endereço de email aqui', pois é possível que os bots não atinjam o JS ao arrastar páginas (não tenho certeza sobre isso, mas eu faço mesmo assim).

David Gilbertson
fonte