martes, julio 21, 2020

Módulo de Eternalblue-Doublepulsar en Metasploit Dockerizado

Hace más de tres años, mi ex-compañera Sheila A. Berta me comentó de hacer una integración del exploit de Eternalblue para Metasploit. Algo que, rápidamente, pudiéramos utilizar de forma automática para, por ejemplo, hacer una PoC. Un día y medio después tenía el módulo preparado. El equipo de Ideas Locas se puso en marcha e hicimos el módulo. Lo hablé con Sheila y lo probamos en varios escenarios. El artículo donde se presentó el módulo fue publicado hace esos tres años.

Figura 1: Módulo de Eternalblue-Doublepulsar en Metasploit Dockerizado

Hay alguna curiosidad que contar durante estos tres años. Lo primero es lo mediático que llegó a ser esta vulnerabilidad, considerada, y no sin falta de razón, como el nuevo netapi de la vulnerabilidad del SMB en Windows XP. El clásico ms08_067 que tanto juego dio y que tanto aportó a enseñar vulnerabilidades críticas en protocolos que millones de máquinas utilizan diariamente. Dicho lo dicho, Eternalblue estaba a la altura, o incluso más, del ms08-067.

Figura 2: Famoso MS08-067

Como segunda curiosidad es la de usuarios que han descargado y hecho “fork” en el repositorio de Github. Al principio no era más que un módulo no oficial de Metasploit que utilizaríamos para pruebas de concepto y explicar la vulnerabilidad y, de repente, encontramos que el proyecto casi cuenta con 1K de “favs” o “stars” y con más de 500forks”. Muchos usuarios que nos escriben y nos piden ciertas mejoras en el módulo, cuando ya os digo que se hizo en una tarde y un rato más.

Figura 3: Repositorio GitHub del módulo del exploit de EternalBlue-DoublePulsar

Por no tener, no le pusimos ni un Readme al repositorio porque sería algo de prueba, algo de “usar y tirar” esperaríamos al módulo oficial de Metasploit, el que la gente de Rapid 7 liberase. El tiempo pasó y pasó y ese módulo no llegaba. 

Figura 4: Metasploit para Pentesters Gold Edition

Lo nuestro no era una migración, era una simple integración que utilizaba Wine para poder ejecutar el binario de Eternalblue y el de Doublepulsar. Al fin y al cabo, algo sencillo.

Echando un ojo a la implementación del módulo

A modo de “revival” vamos a ver los pasos que hacia el módulo. Vemos que no era una migración, ni mucho menos y quedaba claro en la descripción del módulo: 

“** THIS IS AN INTEGRATION OF THE ORIGINAL EXPLOIT,
IT'S NOT THE FULL PORTATION **”

 Más claro, imposible. A continuación os dejo las diferentes partes que definían la función exploit:

1. Personalización del XML de Eternalblue: Esto era porque el exploit leía un fichero XML de dónde cogía los datos para llevar a cabo la explotación.

Figura 5: Personalización del XML de Eternalblue

2. Configuración del sistema operativo target: El exploit original de Eternalblue podía funcionar contra diferentes sistemas operativos, pero había que “indicarle” cual sería el objetivo.

Figura 6: Configuración del SO target

3. Personalización del fichero XML para Doublepulsar: Una vez lanzado el exploit de Eternalblue había que lanzar Doublepulsar para la conexión. Se generaba una DLL que se inyectaba en un proceso, todo esto iba detallado en la siguiente parte.

Figura 7: Configuración del XML para Doublepulsar

4. Lanzamiento del exploit y obtención de la posible inyección: Como veis no fue algo complejo, era meter el funcionamiento del exploit (del binario) en un módulo de Metasploit.

Figura 8: Ejecución de exploit

No era una migración, solo una sencilla integración o automatización para poder utilizarlo con Metasploit y poder simplificar el proceso de configuración.

MorterueloCON 2019

Una gran sorpresa me la llevé al asistir a una de las charlas de MorterueloCON del año 2019. La gente de MorterueloCON había lanzado un nuevo espacio en el que un “Rookie” explicaría algunas técnicas o cosas con las que hubiera estado trabajando en un reto. Me senté a ver la charla y empezó a hablar del vector de ataque de Eternalblue, lo había utilizado en su reto. Sacan a Metasploit a jugar y esperé encontrarme con el módulo oficial, el cual no he tocado mucho, y mi sorpresa es mayúscula cuando veo que el módulo se llamada eternalblue_doublepulsar.

Figura 9: Libro de Hacking con Metasploit: Advanced Pentesting

Seguí viendo la charla, la cual estuvo entretenida y el chico lo hizo muy bien. Llegó el momento de las preguntas y tuve que preguntarle. Levanté la mano. Mi buen amigo Rafa Otal me dijo “pórtate bien”. “Yo siempre me porto bien”. Le dije. Y le pregunté:

 “¿Por qué has utilizado ese módulo en vez del oficial que viene con Metasploit?” 

Realmente hay más de uno oficial, hay varias implementaciones. La respuesta del chico fue, aún más sorprendente. 

"Busqué en Internet y éste era el que me funcionaba. 
   No me funcionó el oficial, pero éste sí. "

Al final, uno puede ser sorprendido en cualquier momento y por cualquier mente. Sin duda, una parte de mí sintió satisfacción porque la gente utilice o pruebe lo que uno hace. Así que le agradecí que utilizara nuestro módulo, que os recuerdo que fue una PoC rápida y que seguimos recomendando el uso del módulo oficial en cualquier Ethical Hacking o auditoría.

Docker

Durante el confinamiento más exhaustivo he estado intensificando mis conocimientos en Docker y todo lo que ello aporta. Uno de los problemas que veía al repositorio de Eternalblue_Doublepulsar o que más “issues” nos generaba en el repositorio es la configuración de los directorios de Wine o la típica frase que dice: 

“Se lanza pero no hace nada”.

Bueno, pensé que quizá es interesante que tengamos un Dockerfile y que puedas generar una imagen con todo lo necesario y que luego puedas lanzar tu contenedor para darle uso al módulo.

Figura 10: Libro de Docker: SecDevOps de 0xWord escrito
por Fran Ramírez, Elias Grande y Rafael Troncoso

La idea es que con el Dockerfile puedas generar la imagen con todas las dependencias en su estructura de carpetas necesaria y que tengas un Metasploit framework disponible donde ya venga metido el módulo de Eternalblue_Doublepulsar.  Una vez generada la imagen de Docker puedes hacer uso del contenedor cómo quieras y cuando quieras. 

Figura 11: Descarga del contenedor

Si miramos las imágenes de Docker, veremos una nueva con repositorio metasploit y tag eternalblue_doublepulsar. Cuando lancemos nuestro contenedor veremos una shell y la posibilidad de acceder a Metasploit o una msfconsole y que si nos dirigimos a exploit/windows/smb observaremos nuestro módulo allí preparado. 

Figura 12: Ejecución del proceso completo

Por detrás, todas las dependencias, como wine, instaladas y configuradas. El proceso puede llevar unos minutos, ya que son ocho pasos y hay mucha descarga que realizar.

Figura 13: Ejecución dockerizada

Ahora podemos ejecutarlo dockerizado  con la instrucción:

docker run --rm -it -p [puerto para  reverse shell] metasploit:eternalblue_doublepulsar.

La primera vez que ejecutamos el módulo veremos mensajes de Wine. No está mal, es que Wine se ejecuta por primera vez, pero sigue siendo totalmente funcional la configuración.

Figura 14: Explotando con Eternalblue-Doublepulsar

Sin más, si probáis y nos dais vuestra opinión, bienvenida es. Esperemos que esto simplifique el uso del módulo.

Saludos,

Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root",  “Pentesting con Powershell” y de "Empire: Hacking Avanzado en el Red Team", Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDCO de Telefónica.  Para consultas puedes usar el Buzón Público para contactar con Pablo González

Figura 15: Contactar con Pablo González

No hay comentarios:

Entrada destacada

10 maneras de sacarle el jugo a tu cuenta de @MyPublicInbox si eres un Perfil Público

Cuando doy una charla a algún amigo, conocido, o a un grupo de personas que quieren conocer MyPublicInbox , siempre se acaban sorprendiendo ...

Entradas populares