sábado, 29 de abril de 2017

[STEP-BY-STEP] Eternalblue desde Metasploit - Hacking Windows 7



Tras una semana movida entre charlas y diferentes publicaciones sobre el leak de la NSA, hoy sábado nadie se interpuso entre mi cama y yo, así que pude dormir por fin más de 8 horas seguidas jaja. 
El día 18 del presente mes escribí un paper explicando paso a paso cómo aprovechar el exploit Eternalblue para obtener una Shell de Empire/Meterpreter en un Windows 7 o Windows Server 2008. A una velocidad sorprendente el paper fue publicado por exploit-db en las dos versiones que lo redacté (inglés y español) aquí les dejo los links por si no lo han leído:  https://www.exploit-db.com/docs/41897.pdf (español) || https://www.exploit-db.com/docs/41896.pdf (inglés).  

Algunas horas después se me ocurrió contactar a mi compañero de Eleven Paths, Pablo González (@pablogonzalezpe), para charlar sobre una potencial integración de este exploit a Metasploit. Nos pusimos manos a la obra y unas 48hs después el módulo ya era un hecho ;) 

Me tomaré unos minutos para explicar paso a paso como se utiliza y dejar algunas aclaraciones en el camino. 
En principio, vuelvo a mencionar, que lo que hemos hecho es una INTEGRACIÓN, NO UNA PORTACIÓN. ¿Qué significa eso? Que estamos integrando los binarios originales de Eternalblue y Doublepulsar para poder utilizarlos fácilmente desde Metasploit. Hacer una portación completa de los exploits lleva mucho tiempo de reversing sobre estos binarios, ya que aún no sabemos que hacen realmente, cuando eso se conozca, seguramente se hará una portación del 100% en Metasploit. Mientras tanto, podemos aprovechar nuestro módulo para utilizar Eternalblue fácilmente :) 

Requisitos:
Linux con las siguientes herramientas:
  • Metasploit Framework 
  • WINE con soporte para ejecutables de 32bits.


Paso 1: descargar el módulo.

Para ello ejecutamos desde una terminal: “git clone https://github.com/ElevenPaths/Eternalblue-Doublepulsar-Metasploit.git”.

En la carpeta descargada, tendremos el script en Ruby (eternalblue_doublepulsar.rb) que es el módulo para Metasploit. También encontraremos una carpeta llamada “deps” donde están los binarios de Eternalblue y Dublepulsar junto con algunas dependencias y 2 archivos XML que los hicimos nosotros para poder pasarle parámetros “customizados” a los exploits.



Paso 2: Añadir el módulo a Metasploit.

Para añadir el módulo a Metasploit, lo único que debemos hacer es copiar el script en Ruby (eternalblue_doublepusar.rb) a la carpeta del framework donde se encuentran los exploits para SMB de Windows.

Una vez hecho esto, si ejecutamos “msfconsole” veremos que tendremos un nuevo exploit disponible.

Paso 3: seleccionar el módulo y configurar los parámetros.

Al seleccionar el módulo con el comando “use exploits/windows/smb/eternalblue_doublepulsar” y hacer un “show options” veremos que tenemos que configurar los siguientes parámetros:


Los parámetros DOUBLEPULSARPATH y ETERNALBLUEPATH reciben de valor la ruta de la carpeta “deps” que hemos descargado previamente:



Luego, el parámetro PROCESSINJECT recibe el nombre del proceso donde va a ser inyectado en la máquina target el payload que seleccionemos posteriormente (por ejemplo, un meterpreter).

Algo sumamente importante aquí, es que si nuestro target es x64 debemos cambiar el proceso wlms.exe a lsass.exe. Si no hacemos esto, la explotación fallará.

Por el contrario, si es un x86, debemos dejarlo en wlms.exe. Sin embargo, al impactar, es muy posible que el equipo target se quiera reiniciar (eso se produce por cierta inestabilidad en la DLL generada por Metasploit, si fuera una de Empire eso no ocurre). Pero podemos evitar que el target se reinicie si le indicamos a Meterpreter que al recibir la conexión inversa ejecute un script.rc con el siguiente comando:

execute -f cmd.exe -a "cmd.exe /c shutdown -a"
 
Con eso cancelamos el “shutdown” que los sistemas x86 quieren llevar a cabo cuando se les inyecta una DLL generada por Metasploit.
En mi caso voy a impactar un x64 así que no es necesario hacer eso, simplemente reemplazo el proceso wlms.exe por lsass.exe.




 Por supuesto, he cambiado también la arquitectura del target a través del parámetro TARGETARCHITECTURE.

A continuación indicamos el RHOST y RPORT esto es, la IP de la máquina target y el puerto de SMB (default: 445).


El último parámetro a setear en el módulo es el WINEPATH que es justamente, la carpeta donde se encuentra el “drive_c” de WINE:



Finalmente nos queda indicar el payload que vamos a utilizar, este puede ser cualquiera de los que existen disponibles para Windows. En mi caso utilizaré un payload de meterpreter con conexión reversa vía TCP:



Todos los parámetros con su correcta configuración han quedado de la siguiente manera:




Ahora si, ya podemos ejecutar “exploit” y obtener la Shell de meterpreter en el sistema objetivo.




That’s all :-) obtuvimos una sesión de meterpreter en un Windows 7 SP1 tan solo con conocer su dirección IP. Vuelvo a decir, que este es un exploit “de la vieja escuela” que me ha recordado mucho al ms08_067 con el cual obtenemos una Shell remota en Windows XP con la misma facilidad que lo hemos hecho ahora en Windows 7.

Espero que se diviertan y buen finde!.

Author: Sheila A. Berta


3 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. Hola, Sheila muy buen post lo estuve probando y me dice lo siguiente "Exploit completed, but no session was created." sabes a que se deba te lo agradecería.

    ResponderEliminar
  3. Hola, Sheila he descargado el repositorio de HitHub pero cuando quiero hacer uso de el exploit no me aparece en la lista del SMB, ya lo he copiado ahi pero no me aparece, sabras a que se debe eso?

    ResponderEliminar