¿Qué tan fuerte es visualCaptcha?

8

Me gusta la interacción del usuario de visualCaptcha , pero estoy cuestionando la cantidad de protección que ofrece:

Dado que solo hay 5 imágenes (por defecto), ¿no es simplemente una cuestión de 1 en 5 para obtener la imagen correcta?

Además, todo el proceso se inicia mediante el envío de una solicitud start/X , donde X es el número de opciones para generar. Por lo que puedo decir, un bot podría iniciar con X = 2 en lugar de 5 y obtener el 50% de los intentos correctos.

    
pregunta Jasny - Arnold Daniels 13.03.2015 - 21:44
fuente

5 respuestas

6

Hay dos debilidades considerables en la demostración en vivo que hacen que sea bastante trivial romperlas:

  1. Solo hay 5 respuestas posibles a la pregunta de captcha, por lo que un bot tiene un 20% de probabilidad de resolver el captcha seleccionando un símbolo aleatorio. La demostración no me prohibió después de elegir una respuesta incorrecta más de 20 veces seguidas, por lo que no hay ninguna razón por la que un bot no pueda seguir adivinando hasta obtener una respuesta correcta por casualidad.
  2. Solo hay un conjunto muy limitado de imágenes que no se modifican de ninguna manera. Aparecen bajo diferentes URL, pero siempre tienen el mismo aspecto, por lo que un robot puede identificarlos cargando y decodificando las imágenes. Además, el sistema se refiere a cada imagen con la misma palabra cada vez. Eso permitiría simplemente decirle al bot qué palabra significa qué imagen.

Algunas ideas para fortalecer el captcha:

  • Pídale al usuario que marque múltiples objetos y solo déjelos pasar cuando marcaron estos y solo estos objetos. Eso haría que la adivinación aleatoria sea mucho menos eficiente.
  • Prohibir las direcciones IP durante unos minutos después de muchas respuestas incorrectas seguidas
  • Usa un conjunto de imágenes mucho más grande
  • Use un diccionario de cadenas aún más grande para referirse a ellas
  • Use algoritmos de alteración de imagen con parámetros aleatorios para alienar las imágenes un poco, de modo que sea más difícil reconocerlas automáticamente

Ten en cuenta que ningún captcha es verdaderamente irrompible. Todo lo que puede esperar es aumentar el esfuerzo que un atacante necesita invertir para romperlo. Pero eso puede ser todo lo que necesitas. Los captchas son una de las pocas áreas donde la seguridad a través de la oscuridad puede pagar. Los spammers buscan frutas de baja altura. Cuando usas una solución oscura de captcha casera y no eres un objetivo particularmente valioso, muchos spammers serán demasiado perezosos para averiguarlo. Cuando usted sea un objetivo particularmente valioso, solo contratarán a un grupo de personas de un país del tercer mundo para resolver sus captchas. Y no puede defenderse de esto sin hacer que su sitio web sea inutilizable para los usuarios habituales.

    
respondido por el Philipp 13.03.2015 - 22:16
fuente
2

Para probarlo, he escrito un pequeño bot que intenta publicar la demostración visual de captcha .

Si primero inicia la sesión de captcha, decir es que solo quiere 2 opciones usando http://demo.visualcaptcha.net/start/2 . A continuación, elige uno de los dos resultados posibles y publica en http://demo.visualcaptcha.net/try .

Resultado:

✓☓☓✓✓✓☓☓☓☓☓☓☓✓✓☓☓☓☓☓✓☓✓✓☓✓✓☓✓✓☓✓✓✓✓✓☓✓☓✓✓✓☓✓☓✓☓✓✓✓
☓✓✓☓✓☓✓✓☓☓✓☓✓✓☓☓✓☓✓✓✓☓✓☓☓✓✓☓✓☓✓☓☓☓☓☓✓✓☓☓✓☓☓✓☓✓☓☓☓✓
✓☓☓✓✓✓☓✓☓☓✓☓☓✓☓☓☓☓☓☓✓✓✓☓✓☓✓☓☓☓✓✓☓✓☓☓✓✓☓☓☓✓✓☓✓☓☓✓✓✓
☓✓☓✓✓☓☓✓✓☓☓☓✓☓☓✓☓✓☓✓✓☓☓☓✓✓☓✓☓✓✓✓✓✓✓✓✓✓☓☓✓☓☓☓✓✓☓✓✓☓
☓✓☓☓✓✓✓✓☓✓✓✓☓✓✓☓☓✓☓✓✓✓✓☓☓✓✓✓☓☓✓☓✓☓✓✓✓☓✓✓☓☓✓☓✓☓☓☓☓☓
Of the 250 tries, I succeeded 127 times and failed 123 times.

VisualCaptcha es claramente muy inseguro.

Usar un número fijo de imágenes (por ejemplo, 5), en lugar de dejar que el cliente elija el número de imágenes, ayudaría a reducir los intentos exitosos a 1 en 5. Aunque reconozco que no es suficiente para la mayoría de los casos de uso. p>

<?php

/**
 * Try posting to the visualCaptcha demo
 * @return boolean  true if posted successfully
 */
function tryVisualCaptcha()
{
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_COOKIEJAR, "/tmp/visualcaptcha-cookies.txt");
    curl_setopt($curl, CURLOPT_COOKIEFILE, "/tmp/visualcaptcha-cookies.txt");

    curl_setopt($curl, CURLOPT_URL, "http://demo.visualcaptcha.net/start/2");
    $ret = curl_exec($curl);
    $result = json_decode($ret);

    $post = [$result->imageFieldName => $result->values[0]];

    curl_setopt($curl, CURLOPT_URL, "http://demo.visualcaptcha.net/try");
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));
    curl_exec($curl);

    $info = curl_getinfo($curl);
    return strpos($info['redirect_url'], 'validImage') !== false;
}

// Main
$results = [0 => 0, 1 => 0];

for ($i = 1; $i <= 250; $i++) {
    $success = tryVisualCaptcha();
    $results[(int)$success]++;

    echo $success ? "✓" : "☓", $i % 50 === 0 ? "\n" : "";
}

echo "Of the ", array_sum($results), " tries, I succeeded ", $results[1],
  " times and failed ", $results[0], " times.\n";
    
respondido por el Jasny - Arnold Daniels 13.03.2015 - 22:56
fuente
1

Todo lo que uno tendría que hacer es dividir el captcha en imágenes individuales y realizar una búsqueda de imágenes de Google de cada imagen y la palabra de destino. Y simplemente elija el que tenga más resultados. A partir de ese momento, estoy bastante seguro de que se podría obtener una precisión bastante alta.

Puedes hacer una búsqueda

"Type below the answer to what you hear" OBJECT

donde OBJETO es la palabra de la imagen.

Ejemplos: Lamp , Car , Lock , marca .

    
respondido por el Damian Nikodem 14.03.2015 - 15:27
fuente
1

VisualCaptcha es una excelente solución para UX, pero se puede romper con una tasa de éxito del 100%.

Como Prueba de concepto, hay un pequeño script para romper el 100% de VisualCaptcha incluido en esta entrada de blog

Existen varias técnicas para aumentar la seguridad de VisualCaptcha. Estas técnicas no se integrarán en el "núcleo" de VC, pero un desarrollador puede decidir implementarlas si es necesario, como se discutió con Bruno Bernardino .

    
respondido por el ycam 11.07.2016 - 18:27
fuente
-1

Revelación completa: soy el "inventor" de visualCaptcha.

En primer lugar, me encanta ver a tanta gente interesada y usar visualCaptcha. Ha estado recibiendo mucha atención y amor en los últimos 6 meses. Es sorprendente ver a más y más personas que lo usan e interesados en mejorar y "descifrarlo".

Quiero que todos entiendan el problema que visualCaptcha resuelve es la Experiencia de usuario de Captchas, mientras que no es inseguro (o tan inseguro como la mayoría de los captchas visuales, cuando se creó este).

Si necesitas un captcha muy seguro, hay muchos por ahí, como ReCaptcha, pero tus usuarios obtendrán una peor experiencia (aunque Google ha estado trabajando duro en eso, buenas cosas).

En última instancia, depende de usted decidir qué es lo más importante para su caso de uso.

Philip destacó que no valía la pena que los spammers rompieran tu captcha. Una de las grandes cosas de visualCaptcha es la personalización. Puedes cambiar fácilmente cómo funciona (URL, imágenes, cantidad de imágenes, etc.) y por lo tanto, siempre será más difícil para ellos molestarse en crear algo que lo agriete.

Además, muchos sitios web gubernamentales conocidos en todo el mundo utilizan versiones personalizadas de visualCaptcha con gran éxito. No ha habido una queja de que se haya "roto" por un bot. Y cuando eso suceda, ayudaremos a prevenirlo.

Algunas otras URL como referencia: enlace enlace

    
respondido por el Bruno Bernardino 14.03.2015 - 21:11
fuente

Lea otras preguntas en las etiquetas