Como os robôs podem vencer os CAPTCHAs?

84

Eu tenho um formulário de e-mail no 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 apenas obtêm a solução de onde ela está armazenada?

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

Tenho certeza de que os e-mails estão vindo do formulário, porque ele é enviado pelo meu remetente de e-mail que exibe 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 este problema. Eu estava interessado na situação geral como os robôs superavam essas tecnologias. Eu acabei de contar essa situação como um exemplo, para que você possa entender melhor sobre o que estou perguntando.

    
por totymedli 06.03.2013 / 13:42
fonte

7 respostas

72

Duas maneiras mais fáceis de passar pelo CAPTCHA:

  • Use farms humanos, ou seja, peça para as pessoas preencherem CAPTCHAs por dinheiro, exatamente como ProTypers .

  • Use um OCR.

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

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

[...] One of the first documented attacks on the system was by a Carnegie Mellon student, who associated CAPTCHA images with access to an adult Web site, thus gaining free human labor to crack the authentication. [...]

External projects [...] have shown methodologies and results indicating that many of the systems can be defeated by computers with between 88% and 100% accuracy, using optical character recognition.

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

  • Se você tiver seu CAPTCHA implementado personalizado, tente mover para um popular, como reCAPTCHA .

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

  • Se você usa um mecanismo CAPTCHA popular, a migração para um personalizado ou para outro popular pode impedir o OCR.

Tecnicamente, nada impediria fazendas humanas: você pode criar GIFs animados onde vários quadros exibem texto diferente muito rapidamente, e somente um quadro é realmente visível pelo usuário, você pode distorcer ou entortar o texto em todas as direções ou encontrar novas alternativas maneiras de impedir que os OCRs reconheçam texto, os seres humanos ainda pagos pela resolução dos CAPTCHAs os resolverão com êxito.

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

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

  1. CAPTCHAs específicos de 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 um mecanismo CAPTCHA, 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 Imagens do Google).

    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 inglês bem ou pessoas com deficiências de 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 de forma programática. Ambos os exemplos que dei são facilmente resolvidos usando recursos externos (Google Images e sinônimos). Aquele sobre transistores dado como um exemplo por FrustratedWithFormsDesigner é melhor, mas ainda pode ser provavelmente resolvido com um bot feito sob medida.

  3. Nenhum resiste a fazendas humanas.

  4. Ou eles geram dados, assim como os CAPTCHAs de texto comum desenham caracteres distorcidos, caso em que o algoritmo de geração pode ser explorado para sintonizar os bots, ou eles encontram dados em algum lugar, assim como reCAPTCHA obtém texto de livros digitalizados , caso em que o bot pode usar esses dados contra ele (por exemplo, se você pegar palavras de um dicionário, perguntar o usuário para fornecer sinônimos, o bot pode usar o mesmo dicionário para ter 100% de sucesso).

por 06.03.2013 / 13:51
fonte
37

Adicionando a resposta da MainMa ...

Os spammers induzem os outros a fazer o CAPTCHA para eles

Basicamente, os criadores de spam criam um site warez ou um site pornô que parece ter um CAPTCHA, mas não é um CAPTCHA real. Um bot puxa o CAPTCHA do site que ele quer spam (ou explora), e então o exibe no site warez ou em um site pornô onde alguém o completa para eles. Então o valor de CAPTCHA é passado de volta ao seu bot ...

Um pouco mais sobre os Spammers

Eu uso reCAPTCHA e descobri que é basicamente inútil. Também uso um filtro de spam personalizado que detecta o spam que passou do reCAPTCHA, e preciso revisá-lo em intervalos de alguns dias em busca de falsos positivos.

Meu fórum também é todo escrito 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 deles é exibido no site. Spammers não se beneficiam de spam me, mas eles ainda fazem.

Eu posso ver os padrões nas tentativas de spam, porque eu registro tudo. Eu posso lhe dizer isto: deixando de lado como eles passam do CAPTCHA, os spammers estão claramente usando uma técnica de força bruta variando os campos que são preenchidos e o tipo de dados e misturas de palavras que povoam esses campos. Aparentemente eles fazem isso de forma tão barata (incluindo contornar o CAPTCHA) que nem mesmo pagam para fazer uma análise dos sites individuais para ver se o que eles estão fazendo é ou não está funcionando.

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

Esta vai ser uma batalha nos próximos anos. Particularmente para pequenos sites de moderadores individuais como o meu.

EDIT 22/06/2017 : Eu quero acrescentar que, desde o post, o google reformulou completamente o reCAPTCHA e, até o momento, ele tem funcionado perfeitamente. Embora eu suspeite que há um pouco de falsos positivos ou é uma dor para os usuários como post caiu um pouco desde que eu o implementei. As duas grandes mudanças são

1) Eles estão usando Imagens em vez de texto (Então, não há mais OCR)

2) Eles estão combinando com a atividade dos usuários em todos os sites que usam o reCAPTCHA. Então, se você passar pelo reCAPTCHA no site A e, em seguida, for para o Site B, talvez nem mesmo lhe peça para provar que você é humano! Além disso, acho que, se você estiver exibindo muitos reCAPTCHAs em muitos sites, também o sinalizará. Tenho certeza de que está usando outros tipos de inteligência artificial baseados na atividade dos usuários também.

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

    
por 06.03.2013 / 15:02
fonte
15

Você já tentou usar o captcha do cão de gato? Eu tenho um fórum que tinha captcha padrão e mudei e não tenho spams convidados desde então.

    
por 28.04.2014 / 22:05
fonte
12

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

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

Também é possível que você tenha um bug em algum lugar no seu código que esteja permitindo que o CAPTCHA seja ignorado.

Não faça a suposição de que um robô está vencendo seu CAPTCHA. Pense no seu sistema de forma holística e veja se ele foi comprometido.

    
por 06.03.2013 / 13:49
fonte
10

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

Note que não há marcadores 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 de CAPTCHAs ou lógica. Perguntas básicas como "maçã, peixe, mão, seis - qual delas é uma parte do corpo"
  3. Tem um atraso. Se o formulário for postado dentro de 5 segundos do carregamento da página, ignore a solicitação, a maioria dos robôs postará 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), em seguida, coloque a lista negra e banir seu endereço IP. De preferência, isso seria dinâmico / automatizado em código / software
por 07.03.2013 / 13:07
fonte
6

Para repetir as outras respostas, você provavelmente encontrará bots que usam farms humanos para inserir os captchas para eles.

Recentemente, eu discuti uma técnica (e lancei um módulo Drupal que acompanha) que bloqueia os bots de spam, exigindo JavaScript do lado do cliente. Até onde eu 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 e, em seguida, calcular o mesmo hash no backend depois que o formulário for enviado e comparar os dois valores.

Detalhes completos no post do 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 ...

    
por 07.03.2013 / 02:02
fonte
-2

Se o seu site é twitter, e alguém o direcionou especificamente (em vez de um bot encontrá-lo), então você pode parar de ler ...

Caso contrário, pode valer a pena não fazer com que seu formulário NÃO se pareça com um formulário. 1. Não tem campos com 'e-mail' 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 botão de envio. Em vez disso, use o AJAX para publicá-lo no 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 o JavaScript para preencher qualquer dica 'insira seu endereço de e-mail aqui', já que é possível que bots não estejam realmente acionando o JS ao arrastar páginas (não tenho certeza sobre isso, mas faço isso de qualquer maneira).

    
por 04.11.2013 / 02:55
fonte