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

84

Tengo un formulario de correo electrónico del sitio web. Utilizo un CAPTCHA personalizado para evitar el spam de los robots. A pesar de esto, sigo recibiendo spam.

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

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


Estoy seguro de que los correos electrónicos provienen del formulario, porque se envían desde mi remitente de correo electrónico que sirve 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 interesaba la situación general de cómo los robots vencen a estas tecnologías. Acabo de decir esta situación como un ejemplo, para que pueda entender mejor lo que estoy preguntando.

totymedli
fuente
86
Quiero contrarrestar su pregunta: ¿cómo pueden los humanos vencer a CAPTCHA? Más a menudo, entonces no me lleva varias veces, muchas veces, superarlo.
Pieter B
14
Si alguien piensa que esta pregunta merece un voto negativo, al menos explíqueme por qué.
totymedli
10
@Blrfl, no entiendo cómo esto está fuera de tema.
47
Si quieres que respondamos tu pregunta, primero prueba que no eres un robot.
Pete Kirkham
77
@Blrfl Sin embargo, tiene todo que ver con el desarrollo de software de calidad.
Izkata

Respuestas:

72

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

  • Use granjas humanas, es decir, pida a las personas que llenen CAPTCHA por dinero, tal como lo hace ProTypers .

  • Use un OCR.

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

Por cierto, el artículo del W3C Inaccesibilidad de CAPTCHA: Alternativas a las pruebas visuales de Turing en la Web explica también cómo los CAPTCHA podrían verse comprometidos:

[...] Uno de los primeros ataques documentados al sistema fue un estudiante de Carnegie Mellon, quien asoció las imágenes de CAPTCHA con el acceso a un sitio web para adultos, obteniendo así trabajo humano gratuito 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 88% y 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 su propio CAPTCHA fue demasiado fácil para OCR, o si hubo un error que fue explotado con éxito.

  • Si usa un mecanismo CAPTCHA popular, cambiar a uno personalizado u otro popular podría evitar el OCR.

Técnicamente, nada impediría las granjas humanas: puede crear GIF animados en los que varios cuadros muestran texto diferente muy rápidamente, y el usuario solo puede ver un cuadro, puede distorsionar o doblar el texto en todas las direcciones o encontrar nuevas formas alternativas de prevenir OCR de reconocer el texto, aún los humanos pagados por resolver CAPTCHA los resolverán con éxito.

Es posible que desee pasar del CAPTCHA visual al sonido (si no está usando ambos, y debería hacerlo), pero esto significa que los usuarios con discapacidad auditiva no podrían usar su aplicación.


FrustratedWithFormsDesigner y GalacticCowboy mencionados en los comentarios CAPTCHA específicos del dominio. Traté de encontrar material sobre cuán efectivos son, pero sin éxito, así que aquí está solo mi opinión personal:

  1. Los CAPTCHA específicos de 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. Noto 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 aparece en una foto. No tengo idea de quién es esta actriz, así que lo único que puedo hacer es abandonar el sitio web (o pasar los próximos dos minutos usando Google Images).

    Otro ejemplo: un sitio web pide dar un sinónimo de "misterioso". Por fácil que parezca para una persona sin discapacidad que habla inglés con fluidez, sería imposible de resolver sin ayuda externa para las personas que no hablan bien el inglés o las personas con algunas discapacidades del desarrollo, sin contar el hecho de que encontrar sinónimos o antónimos Siempre complicado.

  2. La mayoría de esos problemas específicos de dominio se pueden resolver mediante programación. Ambos ejemplos que di se resuelven fácilmente utilizando recursos externos (imágenes de Google y diccionario de sinónimos). El que trata sobre los transistores que FrustratedWithFormsDesigner da como ejemplo es mejor, pero aún puede resolverse con un bot hecho a medida.

  3. Ninguno se resiste a las granjas humanas.

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

Arseni Mourzenko
fuente
44
+1 por notar que no hay CAPTCHA garantizado para funcionar
Neil
8
He visto algunas captchas novedosas que son muy específicas del dominio. Uno de ellos mostraba imágenes de resistencias y el usuario tenía que ingresar la resistencia (había un enlace a una página de ayuda para personas que no sabían cómo leer las bandas de color de las resistencias). Otro tenía una imagen de un pequeño fragmento de notación musical y el usuario tenía que ingresar ciertas notas (como "notas en el segundo acorde solamente"). Todavía son jugables, pero el costo para los spammers podría no valer la pena.
FrustratedWithFormsDesigner
2
@MainMa había una publicación en un informe técnico en alguna parte sobre alguien que había diseñado un bot que vencía a los captchas de forma notablemente rápida, porque ignoraba lo visual y en su lugar interpretaba las señales de audio, por lo que terminaría teniendo que agregar estática al audio uno, lo que lo hace aún más difícil para los usuarios de todos modos
RhysW
@RhysW: el artículo del W3C que mencioné también menciona que pasar de las imágenes al audio no resuelve el problema del bot e incluso podría facilitar las cosas para los bots.
Arseni Mourzenko
24
Granjas Humanas. ¿Por qué estoy imaginando Matrix?
LarsTech
37

Agregando a la respuesta de MainMa ...

Los spammers engañan a otros para que hagan 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 que desea enviar spam (o explota) y luego lo muestra en el sitio de warez o en un sitio porno donde alguien lo completa para ellos. Luego, el valor CAPTCHA se devuelve a su bot ...

Un poco más sobre los spammers

Yo uso reCAPTCHA , y he descubierto que básicamente no sirve para nada. También utilizo un filtro de correo no deseado personalizado que detecta el correo no deseado que pasó por 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. ¡Aún así, 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 correos no deseados, pero aún lo hacen.

Puedo ver patrones en los intentos de envío de spam porque lo registro todo. Puedo decirte esto: dejando de lado cómo pasan el CAPTCHA, los spammers claramente están usando una técnica de fuerza bruta que varía los campos que se completan y el tipo de datos y mezclas de palabras que pueblan esos campos. Aparentemente, lo hacen de manera tan económica (incluso evitando el 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 cada mes, y ese se elimina manualmente un día después. ¡Es tan barato como spam!

Será una batalla en los años venideros. Particularmente para pequeños sitios moderadores de un solo hombre como el mío.


EDITAR 22/06/2017 : Quiero agregar que desde esta publicación, Google ha renovado por completo reCAPTCHA y, al momento de escribir este artículo, ha estado funcionando perfectamente. Aunque sospecho que hay un poco de falsos positivos o es un dolor para los usuarios, ya que la publicación se ha reducido un poco desde que la 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 todos los sitios que usan reCAPTCHA. Entonces, si pasa el reCAPTCHA en el sitio A, vaya al Sitio B, ¡es posible que ni siquiera le pida que demuestre que es humano! Además (creo) que si está golpeando demasiados reCAPTCHA en demasiados sitios, también lo marcará. Estoy seguro de que también está utilizando otros tipos de IA en función de la actividad de los usuarios.

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

Imbéciles
fuente
Este es probablemente el argumento más fuerte para reCAPTCHA para un sitio web pequeño: Google tiene muchos más recursos para mantenerse al día con las técnicas actuales de spam.
Stephen C. Steel
15

¿Alguna vez has intentado usar captcha gato-perro? Tengo un foro que tenía captcha estándar y lo cambió y desde entonces no tengo spam de invitados.ingrese la descripción de la imagen aquí

gato-perro-hombre
fuente
12

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

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

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

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

Sam
fuente
Combinaría esquemas de imagen y CSS que los humanos no podrían resolver fácilmente.
Erik Reppen
2
Dos palabras ... mecánico turco. Amazon ha hecho que el bloqueo de captcha sea un esfuerzo increíblemente barato.
Michael Brown
10

Otros han discutido cómo los spammers eluden los CAPTCHA. Aquí hay algunos consejos sobre cómo puedo evitar que esto :

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

  1. Usa una maceta de miel
  2. Use una pregunta 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 monitoreo de la dirección IP: si observa una araña que rastrea su sitio web que no está en una lista blanca (google, bing), entonces ponga en la lista negra y prohíba su dirección IP. Preferiblemente esto sería dinámico / automatizado en código / software
Daveo
fuente
6

Para hacerse eco de las otras respuestas, es probable que encuentre bots que usan granjas humanas para ingresar a los captchas por ellos.

Recientemente he discutido una técnica (y lancé un módulo Drupal adjunto) que bloquea los bots de correo no deseado al requerir JavaScript del lado del cliente. Hasta donde sé, esto ha funcionado con un 100% de eficiencia en todos los sitios que han utilizado este código. La idea es usar AJAX para generar un hash único y enviarlo junto con los otros datos del formulario, y luego calcular el mismo hash en el back-end una vez que se envía el formulario, y comparar los dos valores.

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

Yuriy Babenko
fuente
1
Eso funcionará hasta que se generalice y el spammer use un navegador sin cabeza.
Xavier Combelle
1
¿Cómo cambia algo el uso de un navegador sin cabeza?
Tatiana Racheva el
-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 parezca 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 use un elemento de formulario html real y el botón de enviar. En su lugar, use AJAX para publicarlo con el clic de un div normal (con el estilo de un botón). 3. No coloque el evento onclick en el html, agregue un oyente en JavaScript. 4. Use JavaScript para completar los consejos 'ingrese su dirección de correo electrónico aquí', ya que es posible que los bots en realidad no activen JS al rastrear páginas (no estoy seguro en este caso, pero lo hago de todos modos).

David Gilbertson
fuente