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.
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.
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 500 “forks”. 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.
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 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 500 “forks”. 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:
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.
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.
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.
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.
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.
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.
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é:
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.
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 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.
Ahora podemos ejecutarlo dockerizado con la instrucción:
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:
Publicar un comentario