El pasado viernes 14 de Abril - viernes santo en España - The Shadow Brokers publicó una gran cantidad de herramientas pertenecientes al Arsenal de la NSA. Se puede encontrar dichas herramientas en el repositorio de Github de misterch0c.
Mi compañera en ElevenPaths Sheila A. Berta (@UnaPibaGeek) publicó en Exploit-DB un paper, también con versión en inglés, en el que se explica cómo explotar la vulnerabilidad Eternalblue & Doublepulsar para obtener una Shell apoyándose en Powershell Empire para lograr, posteriormente, un Meterpreter de Metasploit. Gran trabajo, sin duda, de Sheila.
Sheila formuló una pregunta interesante en su paper y es: ¿Por qué Eternalblue & Doublepulsar? La respuesta es sencilla, ya que entre los exploits que se publicaron, Eternalblue es el único que se puede utilizar para atacar sistemas Windows 7 y Windows Server 2008 R2 sin necesidad de autenticación. Por lo que, Eternalblue es el exploit que nos permitirá aprovecharnos de un fallo de seguridad en el protocolo SMB para que, posteriormente, Doublepulsar pueda inyectar remotamente, por ejemplo, una DLL, ya que existen otras posibilidades.
Dichoe esto, el pasado jueves mis compañeros Sheila y Claudio Caracciolo (@holesec) me preguntaron por la posibilidad de hacer una migración del exploit Eternalblue que es utilizado en Fuzzbunch en el leak a mi querido Metasploit. El gusto por la seguridad y por la tecnología nos puede y nos pusimos de forma rápida y ágil manos a la obra en ElevenPaths.
Tras revisar paso a paso el trabajo de Sheila, empecé a hacer mis pequeñas pruebas. El pasado jueves no sabíamos bien qué cosa hacía el exploit de Eternalblue, y observando Fuzzbunch vimos que lo único que hacen es lanzar el binario contra un target concreto. No tenemos el código del exploit para poder portarlo completamente. Entonces, el plan era migrar la configuración de los binarios y la ejecución de éstos para que desde Metasploit se pudiera hacer. Manos a la obra.
FuzzBunch: Loader de binarios
Analizando FuzzBunch te das cuenta que se genera una serie de ficheros XML asociados a un proyecto en curso y que esos ficheros XML son los que tienen los parámetros y opciones con las que se lanzan los binarios, en este caso, exploits o payloads. El primer objetivo era entender bien los archivos XML, ver qué era lo necesario y poder ejecutar el binario sin utilizar FuzzBunch.
De los tres ficheros XML que se generan, acabé viendo que el importante es el de InConfig o configuración de entrada, ya que es el que el exploit lee para poder ejecutarse. En la imagen siguiente puede verse como, al lanzar el binario por sí solo, no se encuentra el fichero XML de configuración y el exploit no es lanzado. Sin embargo, cuando le ponemos el fichero XML correctamente, el binario es lanzado con la configuración indicada en el archivo de configuración InConfig.
En la siguiente imagen, se puede ver el contenido del fichero InConfig.XML para Eternalblue. En él se indican los tipos de datos, las posibilidades y los valores que tienen los atributos o variables.
Analizando esto llegamos a una conclusión: Podríamos hacer un módulo de Metasploit que implemente la configuración del XML de Eternalblue, posteriormente el de Doublepulsar que será muy similar, generar una DLL con el Payload que el usuario elija en Metasploit y lanzar ambos binarios, el exploit y el paylaod.
Otro problema: ¿Windows?
Por el camino surgió otro problema, y es que el exploit Eternalblue y Doublepulsar son binarios para Windows. Le pregunté a Sheila y ella me contestó "¿Quién utiliza Metaspoit en Windows?". Con la boca chica pensé en confesar que yo algunas veces (te toca torear en pelear en el campo de batalla que te toca), pero ella estaba en lo cierto, generalmente Metasploit se utiliza en sistemas Linux. Además, nosotros queríamos hacerlo con nuestro querido Kali Linux.
La respuesta aquí no se hizo esperar, nos tocaría tirar de Wine para que el módulo de Metasploit lo utilice y pueda lanzar los binarios con sus configuraciones. Hay que tener en cuenta que para que el módulo funcione correctamente en sistemas Kali Linux tenemos que tener instalado Wine con compatibilidad para binarios de 32 bits.
Detectar víctimas vulnerables a Eternalblue
El pasado martes 17 de Abril se publicó un módulo auxiliary de Metasploit que permite detectar en una red si alguno de los equipos es vulnerable al CVE-2017-010, es decir, a Eternalblue. Decidí probar el módulo y ver un poco cómo estaba hecho y la sensación es que la liberación del código del exploit está muy cerca.
Si eres un personal de IT te recomendamos que apliques los parches de seguridad para esta vulnerabilidad lo antes posible las máquinas de tu empresa o dominio, ya que es una vulnerabilidad crítica que podría ser explotada por cualquiera, al no requerir la interacción por parte del usuario, solamente disponer de conectividad con la máquina.
Nuestro módulo para Metasploit: eternalblue_doublepulsar o eternal11
La historia del nombre del módulo nos daría para otro artículo entre Sheila y yo, pero baste decir que le pusimos eternal11. El algoritmo utilizado para este caso os lo dejo aquí en un sencillo pseudocódigo:
Ha sido divertido pasar unas horas locas trabajando en esto e intentando hacer un módulo que pueda ayudar a auditar los sistemas Microsoft dónde Eternalblue sigue presente. En el siguiente vídeo tienes una demostración de este módulo funcionando.
Y también la tienes disponible la PoC para los equipos Windows 7 y Windows Server 2008 R2 en versiones x64, que también funciona, como podéis ver en este vídeo.
Actualiza lo antes posible todos tus sistemas Microsoft Windows vulnerables y protégete de las amenazas que han surgido con este leak de exploits. Quiero agradecer el trabajo de mi compañera Sheila A. Berta y como viene en la descripción del módulo:
Autor: Pablo González Pérez (@pablogonzalezpe)
Escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths
Figura 1: Hackear Windows 7 & Windows Server 2008 R2 con ternalblue y Doublepulsar de ShadowBroker usando Metasploit |
Mi compañera en ElevenPaths Sheila A. Berta (@UnaPibaGeek) publicó en Exploit-DB un paper, también con versión en inglés, en el que se explica cómo explotar la vulnerabilidad Eternalblue & Doublepulsar para obtener una Shell apoyándose en Powershell Empire para lograr, posteriormente, un Meterpreter de Metasploit. Gran trabajo, sin duda, de Sheila.
Sheila formuló una pregunta interesante en su paper y es: ¿Por qué Eternalblue & Doublepulsar? La respuesta es sencilla, ya que entre los exploits que se publicaron, Eternalblue es el único que se puede utilizar para atacar sistemas Windows 7 y Windows Server 2008 R2 sin necesidad de autenticación. Por lo que, Eternalblue es el exploit que nos permitirá aprovecharnos de un fallo de seguridad en el protocolo SMB para que, posteriormente, Doublepulsar pueda inyectar remotamente, por ejemplo, una DLL, ya que existen otras posibilidades.
Figura 3: Lista de exploits para Windows publicados por Shadowbroker |
Dichoe esto, el pasado jueves mis compañeros Sheila y Claudio Caracciolo (@holesec) me preguntaron por la posibilidad de hacer una migración del exploit Eternalblue que es utilizado en Fuzzbunch en el leak a mi querido Metasploit. El gusto por la seguridad y por la tecnología nos puede y nos pusimos de forma rápida y ágil manos a la obra en ElevenPaths.
Tras revisar paso a paso el trabajo de Sheila, empecé a hacer mis pequeñas pruebas. El pasado jueves no sabíamos bien qué cosa hacía el exploit de Eternalblue, y observando Fuzzbunch vimos que lo único que hacen es lanzar el binario contra un target concreto. No tenemos el código del exploit para poder portarlo completamente. Entonces, el plan era migrar la configuración de los binarios y la ejecución de éstos para que desde Metasploit se pudiera hacer. Manos a la obra.
FuzzBunch: Loader de binarios
Analizando FuzzBunch te das cuenta que se genera una serie de ficheros XML asociados a un proyecto en curso y que esos ficheros XML son los que tienen los parámetros y opciones con las que se lanzan los binarios, en este caso, exploits o payloads. El primer objetivo era entender bien los archivos XML, ver qué era lo necesario y poder ejecutar el binario sin utilizar FuzzBunch.
De los tres ficheros XML que se generan, acabé viendo que el importante es el de InConfig o configuración de entrada, ya que es el que el exploit lee para poder ejecutarse. En la imagen siguiente puede verse como, al lanzar el binario por sí solo, no se encuentra el fichero XML de configuración y el exploit no es lanzado. Sin embargo, cuando le ponemos el fichero XML correctamente, el binario es lanzado con la configuración indicada en el archivo de configuración InConfig.
Figura 4: Ejemplo sn y con el fichero InConfig.xml |
En la siguiente imagen, se puede ver el contenido del fichero InConfig.XML para Eternalblue. En él se indican los tipos de datos, las posibilidades y los valores que tienen los atributos o variables.
Figura 5: Contenido de InConfig.XML |
Analizando esto llegamos a una conclusión: Podríamos hacer un módulo de Metasploit que implemente la configuración del XML de Eternalblue, posteriormente el de Doublepulsar que será muy similar, generar una DLL con el Payload que el usuario elija en Metasploit y lanzar ambos binarios, el exploit y el paylaod.
Otro problema: ¿Windows?
Por el camino surgió otro problema, y es que el exploit Eternalblue y Doublepulsar son binarios para Windows. Le pregunté a Sheila y ella me contestó "¿Quién utiliza Metaspoit en Windows?". Con la boca chica pensé en confesar que yo algunas veces (te toca torear en pelear en el campo de batalla que te toca), pero ella estaba en lo cierto, generalmente Metasploit se utiliza en sistemas Linux. Además, nosotros queríamos hacerlo con nuestro querido Kali Linux.
La respuesta aquí no se hizo esperar, nos tocaría tirar de Wine para que el módulo de Metasploit lo utilice y pueda lanzar los binarios con sus configuraciones. Hay que tener en cuenta que para que el módulo funcione correctamente en sistemas Kali Linux tenemos que tener instalado Wine con compatibilidad para binarios de 32 bits.
Detectar víctimas vulnerables a Eternalblue
El pasado martes 17 de Abril se publicó un módulo auxiliary de Metasploit que permite detectar en una red si alguno de los equipos es vulnerable al CVE-2017-010, es decir, a Eternalblue. Decidí probar el módulo y ver un poco cómo estaba hecho y la sensación es que la liberación del código del exploit está muy cerca.
Figura 6: Uso del modulo auxiliary (cve-2017-010) en Metasploit |
Si eres un personal de IT te recomendamos que apliques los parches de seguridad para esta vulnerabilidad lo antes posible las máquinas de tu empresa o dominio, ya que es una vulnerabilidad crítica que podría ser explotada por cualquiera, al no requerir la interacción por parte del usuario, solamente disponer de conectividad con la máquina.
Nuestro módulo para Metasploit: eternalblue_doublepulsar o eternal11
La historia del nombre del módulo nos daría para otro artículo entre Sheila y yo, pero baste decir que le pusimos eternal11. El algoritmo utilizado para este caso os lo dejo aquí en un sencillo pseudocódigo:
• Disponemos de un SKELETON del fichero XML de Eternalblue. Este SKELETON contiene una serie de palabras clave, por ejemplo %RPORT%, %RHOST%, %TIMEOUT%.
Figura 7: Skeleton.XML de Eternalblue |
• Cada vez que invocamos la función exploit este fichero es copiado con el nombre Eternalblue-2.2.0.xml, el cual es el que utiliza el binario para leer los valores.
• Una vez copiado el fichero con el nombre original, se sustituye en el fichero las palabras clave por los valores que el usuario introduzca en los atributos de Metasploit. Por ejemplo, si el usuario configura RHOST apuntando a la dirección 10.0.0.10, el campo %RHOST% del fichero XML será sustituido por la dirección IP real. Así ocurre con todos los campos.
• Ocurre igual con el XML de Doublepulsar. Tenemos un SKELETON dónde se irán sustituyendo los valores, en este caso los valores personalizables son: %RHOST%, %RPORT%, %TIMEOUT%, %TARGETARCHITECTURE%, %DLLPAY%, %PROCESSINJECT%.
• A continuación, se genera una DLL con el Payload que se haya setteado con Set PAYLOAD. La DLL se almacenará dónde se indique en el atributo PathDLLInjection del módulo.
• Después, se lanzan los binarios: primero Eternalblue y después Doublepulsar.El módulo desarrollado tiene las siguientes opciones avanzadas:
• TargetArchitecture: Podrá elegirse entre x86 y x64. Le indica a Doublepulsar la arquitectura dónde inyectará la DLL.
• PathEternalBlue: Indica la ruta dónde se encuentra el binario de Eternalblue. Hay que recordar que el sistema, si estamos en Linux, debe contar con Wine. Por otro lado, hay que tener cuidado con las dependencias que tiene el binario, librerías en x86 o x64, tienen que ser accesibles por el binario, y por Wine en el caso de Linux.
• PathDoublePulsar: Indica la ruta dónde se encuentra el binario de Doublepulsar.
• PathDLLInjection: Indica la ruta dónde se almacenará la DLL. Además, este path se incluirá en el XML de Doublepulsar para que el binario sepa de dónde cargarla. • NameDLL. Nombre que se le dará a la DLL. Por defecto es eternal11.dll.
• ProcessInject: Proceso en el que se hará la inyección de la DLL.Y por fin, cuando lancemos el módulo contra un sistema vulnerable al CVE-2017-010 de Windows 7 o Windows Server 2008R2 veremos algo parecido a esto que podéis ver en la imagen siguiente.
Figura 8: Explotación con éxito del módulo de eternal11 sobre un Windows vulnerable |
Ha sido divertido pasar unas horas locas trabajando en esto e intentando hacer un módulo que pueda ayudar a auditar los sistemas Microsoft dónde Eternalblue sigue presente. En el siguiente vídeo tienes una demostración de este módulo funcionando.
Figura 9: PoC de explotación de Eternalblue y Doublepulsar con Metasploit
Figura 10: PoC de explotación de Eternalblue y Doublepulsar con Metasploit
sobre Windows 7 y Windows Server 2008 R2 en versiones x64.
sobre Windows 7 y Windows Server 2008 R2 en versiones x64.
Actualiza lo antes posible todos tus sistemas Microsoft Windows vulnerables y protégete de las amenazas que han surgido con este leak de exploits. Quiero agradecer el trabajo de mi compañera Sheila A. Berta y como viene en la descripción del módulo:
“** THIS IS AN INTEGRATION OF THE ORIGINAL EXPLOIT, IT'S NOT THE FULL PORTATION**”
Autor: Pablo González Pérez (@pablogonzalezpe)
Escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths
Me encantó el artículo, muy completo, detallado y sencillo.
ResponderEliminarGracias
que tal chema, subiras video o el archivo de como hacer la migración de Eternalblue & Double pulsar a Metasploit, y si es así cuando seria publico
ResponderEliminarChicos puede ser que falta el modulo de explotacion para descargar?
ResponderEliminarsi claro, lo andube buscando desde ayer, pero aun no lo subian, apenas observe que el modulo lo podemos encontrar en el video que subio sheila en el twitter de Pablo, pues queda ma´s que agradecer a estas excelentes personas por su gran trabajo que realizan día con día, soy admirador y seguidor de sus investigaciones día con día ya que son el gran ejemplo en esta rama de la informatica. Felicidades
ResponderEliminarChema deberías de mandar tus publicaciones al encargado de seguridad de Telefónica que creo que no se entera de lo que escribes, porque en todos los blogs hablan de que el exploit que han usado para quebrar la seguridad de Telefónica es el Eternalblue que se aprovecha del fallo CVE-2017-010 en SMB que es de lo que precisamente tu escribes en este post.
ResponderEliminarMandaselos Chema y asi tu jefe de seguridad los prueba con esos "módulo auxiliary de Metasploit que permite detectar en una red si alguno de los equipos es vulnerable" y no os vuelve a pasar, tiene gracia que tu empresa sufra un bug del que tu has hablado previamente.
lol chema, lo tenias facil para salir airoso simplemente con un yo ya avisé en abril.
ResponderEliminarbueno el autor es pablo gonzalez. asi q mal por chema si no lee su propio blog
EliminarBuenas para un favor
ResponderEliminarEs para saver como se llama este tipo de xploits el cual nos dan una shell de meterpreter sin interactuar con la victima y cuales tipos de exploits como estos hay ademas de eternal blue y el ms08_067.
Hola, Alguién sabe cómo hacer con el antivirus? Cuando lo tengo desactivado logro una conexión de meterpreter, de lo contrario Avast antivirus bloquea la conexión.
ResponderEliminarEspero alguién pueda darme la solución! Gracias!
Rodrigo Bruno busca payloads 100% FUD para no ser detectado por el antivirus, si no me equivoco existe un payload generado en python con reverse_tcp que no es detectado ni por windows 10. saludos
ResponderEliminar