jueves, 24 de noviembre de 2011

[Hack] Las paginas juegan con nuestros datos -Obtener Contraseñas-

Hace un tiempo hablé de como obtener datos de elementos html a la hora de diseñar una web, y luego sobre lo cuidadoso que hay que ser al usar las variables como $_server[] en php.
Hoy un poco mas allá le voy a mostrar ejemplos reales, donde las paginas administran nuestra contraseña de forma insegura.
---
Verán, existen 5 casos prácticos de como autentifican nuestra contraseñas.

1)"Envían la contraseña en texto limpio y la comparan con el texto almacenado": Este es el peor de los casos, nuestra contraseña se envía en texto sin codificarse y en la base de datos existe nuestra contraseña de la misma forma. Es decir que nuestra contraseña viaja por la red y cualquiera (que sepa como) o cualquiera que pueda acceder a la base de datos, puede ver las contraseñas y el usuario.
2)"Envían la contraseña en texto limpio y la almacenan codificada": De esta forma, la contraseña al menos, quien tenga acceso a la base de datos no podrá saber nuestra contraseña.
3)"Envían la contraseña cifrada y se decifra en el servidor": La contraseña viaja cifrada y al interceptar los datos no es legible a simple vista, pero quien tenga acceso a la base de datos sabe nuestra contraseña.
4)"Envían la contraseña cifrada y la almacenan cifrada": Si bien nadie tiene acceso a la contraseña real, un atacante podría modificar la cabecera para enviar el dato codificado y lograr acceder a nuestra cuenta.
5)"Utilizar un certificado de autenticación": Este es el ejemplo claro de hotmail.

Ahora que entendieron los diferentes casos, hay que aclarar que existen diferentes algoritmos de encriptacion.
-Algoritmos débiles: Por lo general se cifran y decifran con el mismo algoritmo. Son conocidos. Ejemplo base64 .
-Algoritmos fuertes: De hash, permiten cifrar un texto dando como resultado una cadena de caracteres de una longitud determinada y no son capaces de decifrarce. Al tener una longitud determinada para "infinitas combinaciones de texto" presentan colisiones de de hash es decir alguna combinación se repite (como MD5 vulnerable a la paradoja de cumpleaños) pero que se soluciona al añadirle una cadena llamada SALT.
Ejemplos MD5, SHA-1, BLOWFISH, AES etc.

---
Los Sniffers:
Antiguamente cuando no existían las redes wirelles como hoy en dia, y la velocidad de conexion era lenta. Los dispositivos mas conocidos para conectar varias maquinas eran los Hubs, los expertos sabían que los paquetes de una maquina se enviaban a todos los dispositivos conectados al hub (inundación de paquetes). Por lo tanto, aquel que modificaba la tarjeta ethernet para trabajar en modo promiscuo y capas de reconocer los paquetes, podía ver todo el tráfico y con ello las contraseñas. Con la llegada de los switch y los routers esto cambió. Capaces de distinguir los equipos, el protocolo ARP de resolución de direcciones en realidad solo lo dificultó un poco.
¿Estamos realmente seguros?
La realidad que un atacante puede modificar la tabla ARP (envenenamiento arp).
Cuando una ip no se encuentra en la tabla, se envía la ip a todas las maquinas y el equipo responde con su direccion mac. De esta forma, se engaña al equipo haciendo que el trafico pueda pasar previamente por el equipo atacante (man in the middle) y luego reenviar los datos sin que el usuario se lo sospeche.
Para que esto se puede realizar, las tarjetas de red deben soportar captura de paquetes, la librería winpcap realiza la conexión a bajo nivel con la tarjeta de red.
Si te gusta la programación como a mí, puedes programar en C# tu propia utilidad para capturar paquetes y filtrarlos. En cambio si eres un Script kiddie seguro quieres un programa, en ese caso debes bajarte un sniffer. Lamentablemente como borre la aplicación que estaba programando voy a utilizar "cain y abel" como ejemplo.

Como esto no es un tutorial del cain y abel, simplemente vamos a analizar las salidas.

  • En esta imagen se puede ver como los datos son pasados en texto limpio.



  • En la primera imagen la pagina vulnerable, luego la contraseña enviada en el conocido base64, y desencriptada al final.




  • En estas, se observa que está codificado en md5. Con un poco de suerte, alguna servicio de descifrado encontrará el password. O con un Pc lo suficientemente potente y una base de datos de tablas rainbow el password saldría en unos segundos o minutos.

  • Ejemplo de windows live en la maquina víctima. Estos certificados también son vulnerables pero ya es otro tema.

Si te pareció impactante tambien deberias ver como pueden interseptar sms online. Por ultimo me queda decir no confíen sus datos a una red publica, asegúren su red. Y a todos los diseñadores y webmaster utilicen encriptacion y comprobación, tanto del lado del login como del lado del servidor. Después de todo, los usuarios son los que hacen a las paginas.

8 comentarios:

  1. Hola estamos haciendo en mi clase un ejemplo de una web simple y quisiera saber de donde bajo el sniffer para robar las contraseñas, es para un ejemplo!. Bajo cualquier sniffer o tiene que tener algo en particular? GRacias!

    ResponderEliminar
  2. Veráz la idea no es hacer un tutorial de sniffer pero bueno lo explico rapidamente. Como comenté en la entrada para que realmente funcióne, el ataque conciste en el envenenamiento arp y el man of middle. Existe muchos sniffer y para distintas utilidades. El "Cain y Abel" permite automatizar estas tareas (Otros sniffers pasivos para que realmente funcionen debe hacerce un envenenamiento previamente). Te dejo un resumen:
    1-Iniciar el sniffer "icono de placa de red"
    2-Ir a la pestaña sniffer y agregar los equipos con el icono "+"
    3-Ir a la pestaña de abajo "Arp" y hacer click en el icono "+" para seleccionar el equipo.
    4-Iniciar el ataque con el icono de "radiactivo"
    5-En la pestaña de abajo "password" aparecen las distintas credenciales ftp, smtp, http etc

    La pagina del autor http://www.oxid.it/cain.html

    Saludos!

    ResponderEliminar
  3. Oye, como puedo evitar que me hackeen de esta forma? quiero saber si hay alguien usando mi wifi

    ResponderEliminar
  4. Primero intenta cambiar la contraseña, usar una contraseña segura y de lo posible wpa-psk. Luego si solo usas para equipos tuyos no mas, puedes ir a la opciones de filtrado por mac, para colocar las mac de las pc de tu red. La mac la obtenes introduciondo en consola ipconfig /all
    Si quieres averiguar quien está conectado, basta con descargarce un scanner de ip y correrlo.
    Sino entra a las opciones del router y busca en la parte de red la opcion de estado o similar, para ver los equipos.
    Si quieres hacer tus paginas mas seguras, puedes descargar algun tipo de extension para el firefox como Priv3 o alguna similar. Buscá por la red.

    Saludos

    ResponderEliminar
  5. y ahora cuando son paginas receptoras de contraseñas.? como es el proceso.?

    ResponderEliminar
  6. Creo que no entiendo del todo tu pregunta. ¿A que te refieres con paginas receptoras?
    ---
    En el articulo se muestra como interceptar los datos enviados.
    En cambio, (nose si lo que preguntas) un fake, scamm o xploit es una pagina similar que envia los datos a un script en php.
    Este obtiene los datos con
    $u=$_POST[usuario];
    $p=$_POST[password};
    Abre un archivo de textos con
    $guardar=fopen('nombre.txt', a);
    Se cargan los datos
    fwrite($guardar,' '.$u,' '.$p);
    Y se guardar el archivo
    fclose($guardar);

    Por lo que es realmente sencillo, sabiendo un minimo de diseño web.

    Saludos

    ResponderEliminar
  7. hola estoy en un curso avanzado de informatica, y este temario estamos dando como hackear contraseñas y eso, existe de verdad algun programa o alguna manera de conseguir contraseñas, o es todo un timo?

    ResponderEliminar
  8. Que tal, Un programa donde pongas el correo de alguien y te aparesca la contraseña no existe. Muchos aprovechan el desconocimiento de los usuarios y hacen este tipo de engaño, añadiendo virus.

    Por otro lado existen keyloggers (http://gonzac-studios.blogspot.com/2009/12/no-siempre-estamos-seguros-keyloggers.html) que se instalan en una maquina y registra todo lo que se escribe en ella.
    Y los Rat (Programas de administracion remota) que permiten controlar completamente un Pc donde este instalado desde otro.
    Pero hay que convertirlos en troyanos, modificando el codigo para que un antivirus no lo detecte. Y Luego buscar la forma de alguien lo instale.

    Si estas en la misma Red, con un programa sniffer capturas todo lo que se envia y puede que captures la contraseña. Como explique en este articulo.

    Saludos

    ResponderEliminar