¿Cómo pueden los robots vencer a los CAPTCHAs?

84

Tengo un formulario de correo electrónico del sitio web. Uso un CAPTCHA personalizado para evitar el spam de los robots. A pesar de esto, todavía recibo spam.

¿Por qué? ¿Cómo vencen los robots al CAPTCHA? ¿Utilizan algún tipo de OCR avanzado o simplemente obtienen la solución desde donde se almacena?

¿Cómo puedo prevenir esto? ¿Debo cambiar a otro tipo de CAPTCHA?

Estoy seguro de que los correos electrónicos provienen del formulario, ya que se envían desde mi remitente de correo electrónico que contiene los mensajes del formulario. También el estilo de letra es el mismo.

Para el registro, estoy usando PHP + MySQL, pero no estoy buscando una solución a este problema. Me interesó la situación general de cómo los robots superan estas tecnologías. Acabo de explicar esta situación como ejemplo, para que pueda comprender mejor lo que estoy preguntando.

    
pregunta totymedli 06.03.2013 - 13:42

7 respuestas

72

Dos formas más fáciles de superar CAPTCHA:

  • Use granjas humanas, es decir, pida a las personas que llenen los CAPTCHA por dinero, al igual que ProTypers .

  • Use un OCR.

También puede haber un error en el propio mecanismo CAPTCHA o en la aplicación que lo rodea, lo que permite que alguien pase por alto el CAPTCHA.

Por cierto, el artículo de W3C Inaccesibilidad de CAPTCHA: Alternativas a las Pruebas de Visual Turing en la Web explica también cómo se pueden comprometer los CAPTCHA:

  

[...] Uno de los primeros ataques documentados en el sistema fue por un estudiante de Carnegie Mellon, quien asoció las imágenes de CAPTCHA con el acceso a un sitio web para adultos, obteniendo así mano de obra humana gratuita para descifrar la autenticación. [...]

     

Los proyectos externos [...] han mostrado metodologías y resultados que indican que muchos de los sistemas pueden ser derrotados por computadoras con una precisión de entre el 88% y el 100%, utilizando el reconocimiento óptico de caracteres.

Entonces, ¿cómo puedes prevenir esos ataques?

  • Si tiene su CAPTCHA implementado personalizado, puede intentar pasar a uno popular, como reCAPTCHA .

    Esto ayudará si tu propio CAPTCHA fue demasiado fácil de OCR, o si hubo un error que se explotó con éxito.

  • Si utiliza un mecanismo CAPTCHA popular, el cambio a uno personalizado u otro popular podría impedir el OCR.

Técnicamente, nada impediría las granjas humanas: puede crear GIF animados donde varios marcos muestran diferentes textos muy rápidamente, y el usuario solo puede ver un único marco, puede distorsionar o doblar el texto en todas las direcciones o encontrar una alternativa nueva. maneras de evitar que los OCR reconozcan el texto, los humanos aún pagados por resolver los CAPTCHA los resolverán con éxito.

Es posible que desee pasar de CAPTCHA visual al sonido (si aún no está usando ambos, y debería), pero esto significa que los usuarios con discapacidades auditivas no podrán usar su aplicación.

FrustratedWithFormsDesigner y GalacticCowboy mencionado en los comentarios CAPTCHAs específicos del dominio. Traté de encontrar algún material sobre qué tan efectivos son, pero sin éxito, así que aquí está mi opinión personal:

  1. Los CAPTCHA específicos del dominio pueden ser muy molestos cuando los usuarios reales no tienen idea de la respuesta.

    Ejemplo: estoy visitando una página en un sitio web orientado al cine. Noté un error en un artículo y quiero comentarlo para notificar al autor sobre el error. El formulario de comentarios me pide, como mecanismo de CAPTCHA, que proporcione el nombre de la actriz que se muestra en una foto. No tengo idea de quién es esta actriz, por lo que lo único que puedo hacer es abandonar el sitio web (o pasar los próximos dos minutos utilizando Google Images).

    Otro ejemplo: un sitio web solicita dar un sinónimo de "misterioso". Por más sencillo que parezca para una persona sin impedimentos que habla inglés con fluidez, sería imposible resolver sin ayuda externa para las personas que no hablan bien el inglés o las personas con alguna discapacidad del desarrollo, sin tener en cuenta el hecho de que encontrar sinónimos o antónimos siempre es complicado.

  2. La mayoría de esos problemas específicos de dominio se pueden resolver mediante programación. Los dos ejemplos que proporcioné se resuelven fácilmente utilizando recursos externos (imágenes de Google y diccionario de sinónimos). El de los transistores dado como ejemplo por FrustratedWithFormsDesigner es mejor, pero todavía puede resolverse con un bot a medida.

  3. Ninguno se resiste a las granjas humanas.

  4. O bien generan datos, al igual que los CAPTCHAs de texto ordinarios dibujan caracteres distorsionados, en cuyo caso el algoritmo de generación puede ser explotado para ajustar los bots, o encuentran datos en algún lugar, como reCAPTCHA toma texto de libros escaneados , en cuyo caso el bot puede usar estos datos en su contra (por ejemplo, si toma palabras de un diccionario, pregunte para que el usuario proporcione sinónimos, el bot puede usar el mismo diccionario para tener un 100% de éxito).

respondido por el Arseni Mourzenko 06.03.2013 - 13:51
37

Agregando a respuesta de MainMa ...

Los spammers engañan a otros para que hagan el CAPTCHA por ellos

Básicamente, los spammers configuran un sitio warez o un sitio porno que parece tener un CAPTCHA, pero no es un CAPTCHA real. Un bot extrae el CAPTCHA del sitio al que desean enviar spam (o explotar), y luego lo muestra en el sitio warez o en un sitio de pornografía donde alguien lo completa por ellos. Luego, el valor CAPTCHA se pasa de nuevo a su bot ...

Un poco más sobre Spammers

Utilizo reCAPTCHA , y he encontrado que básicamente no vale la pena. También utilizo un filtro de correo no deseado personalizado que captura el correo no deseado que ha pasado reCAPTCHA, y necesito revisarlo cada pocos días para detectar falsos positivos.

Mi foro también está escrito a medida y recibe muy poco tráfico. No creo que nadie haya codificado un ataque específico a mi sitio. Sin embargo, mi filtro de spam captura 2k mensajes de spam al día! Ninguno se muestra en el sitio. Los spammers no obtienen ningún beneficio de enviarme correo basura, pero aún así lo hacen.

Puedo ver patrones en los intentos de spamming porque lo registro todo. Les puedo decir esto: dejando de lado cómo pasan el CAPTCHA, los spammers están utilizando claramente una técnica de fuerza bruta que varía los campos que se completan y el tipo de datos y combinaciones de palabras que pueblan esos campos. Aparentemente, lo hacen de manera tan económica (incluida la omisión de CAPTCHA) que ni siquiera vale la pena hacer un análisis de los sitios individuales para ver si lo que están haciendo está funcionando o no.

Año tras año, continúan apuntando a mi sitio con miles de mensajes de spam al día solo para recibir uno a través de cada mes, y ese se elimina manualmente un día después. ¡Es tan barato como spam!

Esta será una batalla en los próximos años. Especialmente para los sitios de moderador de una sola persona como el mío.

EDITAR 22/2/2017 : Quiero agregar que, desde esta publicación, Google ha renovado por completo reCAPTCHA y, hasta el momento, ha estado funcionando a la perfección. Aunque sospecho que hay un poco de falsos positivos o es un dolor para los usuarios, ya que la publicación ha disminuido un poco desde que lo implementé. Los 2 grandes cambios son

1) Están usando imágenes en lugar de texto (así que no más OCR)

2) Lo están combinando con la actividad de los usuarios en todo el sitio que utiliza reCAPTCHA. Por lo tanto, si pasa por reCAPTCHA en el sitio A, luego vaya al sitio B, ¡puede que ni siquiera le indique que demuestre que es un ser humano! También (creo) si está golpeando demasiados reCAPTCHA en demasiados sitios, también lo marcará. Estoy seguro de que también está utilizando otros tipos de IA basados en la actividad de los usuarios.

Estoy seguro de que es solo cuestión de tiempo hasta que los spammers también superen esto ...

    
respondido por el Morons 06.03.2013 - 15:02
15

¿Alguna vez has intentado usar el gato-perro captcha? Tengo un foro que tenía captcha estándar y lo cambié, y desde entonces no tengo spam.

    
respondido por el cat-dog-man 28.04.2014 - 22:05
12

Es posible que su sitio esté siendo dirigido por una fuerza laboral ultra barata explotada y que un ser humano esté ingresando manualmente sus frases de CAPTCHA.

Si la solución que está utilizando no es demasiado sofisticada, es posible que su atacante esté reconociendo la imagen.

También es posible que tenga un error en algún lugar de su código que permita que se omita el CAPTCHA.

No asuma que un robot está superando a su CAPTCHA. Piense en su sistema de manera integral y vea si se ha comprometido.

    
respondido por el Sam 06.03.2013 - 13:49
10

Otros han discutido cómo los spammers evitan los CAPTCHA. Aquí hay algunos consejos sobre ¿Cómo puedo evitar esto? :

Tenga en cuenta que no hay una bala de plata y los spammers parecen estar un paso por delante del juego. Así que tendrás que usar una combinación de múltiples técnicas

  1. Usa una forma de tarro de miel
  2. Use una pregunta de CAPTCHA o lógica. Preguntas básicas como "manzana, pescado, mano, seis - cuál de estas es una parte del cuerpo"
  3. Tener un retraso. Si el formulario se publica dentro de los 5 segundos posteriores a la carga de la página, ignore la solicitud, la mayoría de los robots publicarán en menos de un segundo
  4. Realice un seguimiento de la dirección IP: si observa que una araña está rastreando su sitio web que no está en una lista blanca (google, bing), entonces haga una lista negra y prohíba su dirección IP. Preferiblemente esto sería dinámico / automatizado en código / software
respondido por el Daveo 07.03.2013 - 13:07
6

Para repetir las otras respuestas, es probable que encuentres bots que usan granjas humanas para ingresar los captchas por ellos.

Recientemente he discutido una técnica (y lancé un módulo Drupal adjunto) que bloquea los robots de spam al requerir JavaScript del lado del cliente. Que yo sepa, esto ha funcionado con una eficiencia del 100% en todos los sitios que han utilizado este código. La idea es utilizar AJAX para generar un hash único y enviarlo junto con los otros datos del formulario, y luego calcular ese mismo hash en el backend una vez que se envíe el formulario, y comparar los dos valores.

Detalles completos en la publicación de mi blog (casualmente, como mencionó que usaron PHP + MySQL, estas son las mismas tecnologías que se describen allí) - Versión del módulo: Badbot; eliminando el spam ...

    
respondido por el Yuriy Babenko 07.03.2013 - 02:02
-2

Si su sitio es twitter, y alguien lo ha dirigido específicamente (en lugar de que un bot lo encuentre), puede dejar de leer ...

De lo contrario, podría valer la pena no hacer que su formulario NO se vea como un formulario. 1. No tenga campos con 'correo electrónico' en el tipo, nombre o marcador de posición, use nombres cortos o engañosos para todos los campos. 2. No utilice un elemento de formulario html y un botón de envío reales. En su lugar, utilice AJAX para publicarlo en el clic de un div normal (diseñado para parecerse a un botón). 3. No ponga el evento onclick en el html, agregue una escucha en JavaScript. 4. Use JavaScript para completar cualquier sugerencia 'ingrese su dirección de correo electrónico aquí', ya que es posible que los bots no activen JS cuando se rastrean páginas (no estoy seguro en esto, pero lo hago de todos modos).

    
respondido por el David Gilbertson 04.11.2013 - 02:55

Lea otras preguntas en las etiquetas