BLOG

Cómo los ciberdelincuentes eluden el CAPTCHA

 Miniatura
Publicado el 12 de julio de 2017


El CAPTCHA (prueba de Turing pública completamente automatizada para distinguir computadoras de humanos) fue diseñado originalmente para evitar que bots, malware e inteligencia artificial (IA) interactúen con una página web. En los años 90, esto significaba prevenir los robots de spam. En estos días, las organizaciones utilizan CAPTCHA en un intento de prevenir ataques automatizados más siniestros como el credential stuffing.

Sin embargo, casi tan pronto como se introdujo el CAPTCHA, los ciberdelincuentes desarrollaron métodos efectivos para evitarlo. Los buenos respondieron con CAPTCHAs “reforzados”, pero el resultado sigue siendo el mismo: la prueba que intenta detener la automatización se elude con la automatización.

Hay varias formas de vencer el CAPTCHA. Un método común es utilizar un servicio de resolución de CAPTCHA, que utiliza mano de obra humana de bajo costo en países en desarrollo para resolver imágenes CAPTCHA. Los ciberdelincuentes se suscriben a un servicio de soluciones CAPTCHA, que se integran en sus herramientas de automatización a través de API y completan las respuestas en el sitio web de destino. Estas empresas sospechosas son tan omnipresentes que muchas de ellas pueden encontrarse con una rápida búsqueda en Google, entre ellas:

  • Muerte por CAPTCHA
  • 2Captcha
  • Kolotibablo
  • ProTypers
  • Antigate

Este artículo utilizará 2Captcha para demostrar cómo los atacantes integran la solución para orquestar ataques de credential stuffing .

2Captcha

Al acceder al sitio 2Captcha.com, el espectador ve la imagen a continuación, preguntándole si desea 1) trabajar para 2Captcha o 2) comprar 2Captcha como servicio.

Cómo los ciberdelincuentes eluden el CAPTCHA

Opción 1 – Trabajar para 2Captcha

Para trabajar para 2Captcha, simplemente regístrese para obtener una cuenta, proporcionando una dirección de correo electrónico y una cuenta de PayPal para depósitos de pago. Durante una prueba, una cuenta fue validada en cuestión de minutos.

Los nuevos trabajadores deben tomar un curso de capacitación único que les enseña cómo resolver CAPTCHA rápidamente. También proporciona consejos sobre cuándo el caso importa y cuándo no. Después de completar la formación con suficiente precisión, el trabajador puede comenzar a ganar dinero.

Cómo los ciberdelincuentes eluden el CAPTCHA

Después de seleccionar “Iniciar trabajo”, el trabajador es llevado a la pantalla del espacio de trabajo, que se muestra arriba. Luego se le proporciona al trabajador un CAPTCHA y se le solicita que envíe una solución. Una vez resuelto correctamente, el dinero se deposita en un “monedero” electrónico, y el trabajador puede solicitar el pago cuando lo desee. Aparentemente no hay fin para la cantidad de CAPTCHA que aparecen en el espacio de trabajo, lo que indica una demanda constante del servicio.

Cómo los ciberdelincuentes eluden el CAPTCHA

Los trabajadores de 2Captcha tienen incentivos para enviar soluciones correctas, de forma muy similar a como se incentiva a un conductor de Uber a brindar un servicio excelente: calificaciones de los clientes. Los clientes de 2Captcha califican la precisión de las soluciones CAPTCHA que recibieron. Si la calificación de un trabajador de 2Captcha cae por debajo de un cierto umbral, será expulsado de la plataforma. Por el contrario, los trabajadores con las calificaciones más altas serán recompensados durante períodos de baja demanda al recibir prioridad en la distribución de CAPTCHA.

Opción 2 – 2Captcha como servicio

Para utilizar 2Captcha como servicio, un cliente (es decir, un atacante) integra la API de 2Captcha en su ataque para crear una cadena de suministro digital, que alimenta automáticamente los rompecabezas CAPTCHA desde el sitio de destino y recibe soluciones para ingresar en el sitio de destino.

2Captcha proporciona scripts de ejemplo para generar llamadas API en diferentes lenguajes de programación, incluidos C#, JavaScript, PHP, Python y más. A continuación se reproduce el código de ejemplo escrito en Python:

Cómo los ciberdelincuentes eluden el CAPTCHA

Integración de 2CAPTCHA en un ataque automatizado

¿Cómo utilizaría un atacante 2Captcha en un ataque de credential stuffing ? El siguiente diagrama muestra cómo interactúan las diferentes entidades en un proceso de omisión de CAPTCHA:

Cómo los ciberdelincuentes eluden el CAPTCHA

Proceso técnico:

  1. El atacante solicita la fuente iframe del CAPTCHA y la URL utilizada para incrustar la imagen del CAPTCHA del sitio de destino y la guarda localmente.
  2. El atacante solicita un token API del sitio web 2Captcha
  3. El atacante envía el CAPTCHA al servicio 2Captcha mediante HTTP POST y recibe un ID de Captcha, que es un ID numérico atribuido a la imagen CAPTCHA que se envió a 2Captcha. El ID se utiliza en el paso 5 para una solicitud API GET a 2Captcha para recuperar el CAPTCHA resuelto.
  4. 2Captcha asigna el CAPTCHA a un trabajador que luego lo resuelve y envía la solución a 2Captcha.
  5. El atacante programa un script para hacer ping a 2Captcha usando el ID de CAPTCHA (cada 5 segundos hasta que se resuelva). 2Captcha luego envía el CAPTCHA resuelto. Si la solución aún se está resolviendo, el atacante recibe una publicación de 2Captcha indicando “CAPTCHA_NOT_READY” y el programa vuelve a intentarlo 5 segundos después.
  6. El atacante envía una solicitud de inicio de sesión al sitio de destino con los campos completos (es decir, un conjunto de credenciales de una lista robada) junto con la solución CAPTCHA.
  7. El atacante itera este proceso con cada imagen CAPTCHA.

Combinado con marcos de prueba web como Selenium o PhantomJS, un atacante puede parecer que interactúa con el sitio web de destino de manera similar a la humana, eludiendo eficazmente muchas medidas de seguridad existentes para lanzar un ataque de credential stuffing .

Monetización y ecosistema criminal

Con una solución tan elegante, ¿cómo se ve el ecosistema financiero y cómo gana dinero cada parte?

Monetización: Solucionador de CAPTCHA

Trabajar como solucionador de CAPTCHA está lejos de ser lucrativo. Según las métricas proporcionadas en el sitio web de 2Captcha, es posible calcular el siguiente pago:

Suponiendo que toma 6 segundos por CAPTCHA, un trabajador puede enviar 10 CAPTCHA por minuto o 600 CAPTCHA por hora. En un día de 8 horas eso son 4800 CAPTCHA. Basándonos en lo que ganamos durante nuestra prueba como empleados de 2Captcha (aproximadamente $0,0004 por solución), esto equivale a $1,92 por día.

Esto es una pérdida de tiempo para las personas que viven en países desarrollados, pero para quienes viven en lugares donde unos pocos dólares por día pueden rendir relativamente mucho, los servicios de resolución de CAPTCHA son una forma fácil de ganar dinero.

Monetización: Atacante

El atacante paga al tercero, 2Captcha, por soluciones CAPTCHA en paquetes de 1000. Los atacantes pujan por las soluciones y pagan entre 1 y 5 dólares por paquete.

Muchos atacantes utilizan servicios de resolución de CAPTCHA como un componente de un ataque de credential stuffing más grande, lo que justifica el gasto. Por ejemplo, supongamos que un atacante está lanzando un ataque para probar un millón de credenciales de Pastebin en un sitio objetivo.  En este escenario, el atacante necesita omitir un CAPTCHA con cada conjunto de credenciales, lo que costaría aproximadamente $1000.  Suponiendo una tasa de reutilización de credenciales exitosa del 1,5 %, el atacante puede apoderarse de más de 15 000 cuentas, todas las cuales pueden monetizarse.

Monetización: 2Captcha

2Captcha recibe el pago del atacante por cada 1000 CAPTCHA. Como se mencionó anteriormente, los clientes (es decir, los atacantes) pagan entre $1 y $5 por cada 1000 CAPTCHA. Luego, servicios como 2Captcha toman una parte del precio de la oferta y distribuyen el resto entre su fuerza laboral humana. Dado que los servicios de resolución de CAPTCHA se utilizan como una solución a gran escala, las ganancias se acumulan considerablemente. Incluso si 2Captcha sólo recibe $1 por cada 1000 CAPTCHAs resueltos, obtienen un mínimo de 60 centavos por paquete. Los propietarios de estos sitios suelen estar en países en desarrollo, por lo que los ingresos aparentemente bajos son sustanciales.

¿Qué pasa con el reCAPTCHA invisible de Google?

En marzo de este año, Google lanzó una versión mejorada de su reCAPTCHA llamada “Invisible reCAPTCHA”. A diferencia de “no CAPTCHA reCAPTCHA”, que requería que todos los usuarios hicieran clic en el infame botón “No soy un robot”, Invisible reCAPTCHA permite que los usuarios humanos conocidos pasen y solo envía un desafío de imagen reCAPTCHA a los usuarios sospechosos.

Se podría pensar que esto dejaría perplejos a los atacantes porque no podrían ver cuándo están siendo puestos a prueba. Sin embargo, apenas un día después de que Google presentara Invisible reCAPTCHA, 2CAPTCHA escribió una publicación en su blog sobre cómo vencerlo.

La forma en que Google sabe que un usuario es humano es si el usuario ha visitado previamente la página solicitada, lo que Google determina comprobando las cookies del navegador. Si el mismo usuario comenzó a usar un nuevo dispositivo o borró recientemente su caché, Google no tiene esa información y se ve obligado a emitir un desafío reCAPTCHA.

Para que un atacante automatice un ataque de credential stuffing usando 2Captcha, necesita garantizar un desafío CAPTCHA. Por lo tanto, una forma de evitar reCAPTCHA invisible es agregar una línea de código al script de ataque que limpia el navegador con cada solicitud, garantizando así un desafío reCAPTCHA solucionable.

Lo un poco complicado de Invisible reCAPTCHA es que el desafío CAPTCHA está oculto, pero hay una solución. El CAPTCHA se puede “encontrar” utilizando la herramienta del navegador “inspeccionar elemento”. De esta forma, el atacante puede enviar un POST a 2Captcha que incluye un parámetro que detalla dónde se encuentra el CAPTCHA oculto. Una vez que el atacante recibe la solución CAPTCHA de 2Captcha, Invisible reCAPTCHA puede ser derrotado mediante automatización de una de dos maneras:

  1. Acción de JavaScript que llama a una función para proporcionar el token resuelto con el envío del formulario de página
  2. El código HTML cambia directamente en la página web para sustituir un fragmento de código CAPTCHA normal con la entrada del token resuelto.

El hecho de que se pueda eludir el reCAPTCHA invisible no se debe a que hubiera un fallo fatal en el diseño del CAPTCHA más nuevo. El problema es que cualquier prueba de Turing inversa es inherentemente superable cuando se conocen las condiciones de aprobación.

Mientras existan CAPTCHAS, seguirá habiendo servicios como 2Captcha porque la economía juega muy bien en manos de los delincuentes. Aprovechar la mano de obra humana de bajo costo minimiza el costo de hacer negocios y permite a los cibercriminales obtener ganancias que pueden ascender a millones de dólares a gran escala. Y siempre habrá regiones del mundo con costos laborales baratos, por lo que la demanda constante asegura un suministro constante del lado de 2Captcha.

El mundo no necesita desarrollar un mejor CAPTCHA, ya que todo este enfoque tiene limitaciones fundamentales. En lugar de ello, deberíamos reconocer esas limitaciones e implementar defensas donde las condiciones del pase son desconocidas o al menos difíciles de determinar para los atacantes.

Fuentes

Holmes, Tamara E. “Estadísticas de tarjetas prepago y tarjetas de regalo”. TarjetasDeCrédito.com . Creditcards.com, 01 de diciembre de 2015. Web.

Caza, Troya. “Rompiendo CAPTCHA con humanos automatizados”. Entrada de blog. Troy Hunt . Troy Hunt, 22 de enero de 2012. Web.

Motoyama, Marti, Kirill Levchenko, Chris Kanich y Stefan Savage. Re: CAPTCHAs: comprensión de los servicios de resolución de CAPTCHA en un contexto económico . Actas del 19.º Simposio de Seguridad USENIX, Washington DC. Impreso.