Si hablamos de PowerShell Empire Project y de Metasploit Framework hablamos de dos de los grandes proyectos de la ciberseguridad. El primero es una realidad en la parte de post-explotación, con diversos proyectos para diferentes entornos, tal y como se puede ver en su Github. El segundo, el framework de explotación más conocido en el sector.
Del primero - de PowerShell Empire - ya os he escrito varios artículos en por aquí en este blog. Del segundo... os he escrito decenas de posts y un par de libros que tenéis publicados en 0xWord :)
- PowerShell Empire: El Imperio Contraataca
- PowerShell Empire: Post-explotación++ en redes Windows
- PoweerShell Empire GUI: Un interfaz al más puro estilo Armitage
- PowerShell Empire: Trabajando el Pass-the-hass con Mimikatz
- Metasploit para Pentesters (4ª Edición)
- Hacking con Metasploit
Aprovechando el paso por la Ekoparty 2018, tendré el honor de poder hablar de uac-a-mola y de ibombshell, además de Empire, he querido hacer un artículo para mostrar cómo es la integración entre Empire y Metasploit, al menos con algunos métodos disponibles en esta magnífica herramienta de Empire. Los proyectos de uac-a-mola e ibombshell son proyectos que han nacido y que se mantienen en ElevenPaths, tal y como se puede ver en el Github de ElevenPaths.
Figura 2: Presentación de UAC-a-Mola
En la Figura 2 tenéis el vídeo de la primera presentación del proyecto uac-a-mola, y a continuación os dejo el paper que hicimos de ibombshell, publicado en el canal SlideShare de ElevenPaths.
Ahora, vamos con la integración entre Empire Project y Metasploit Framework, para lo que vamos a repasar primero una serie de métodos que tenemos disponibles.
Code Execution: metasploitpayload
Este método es sencillo. Partiendo de la base de disponer de un agente de Empire en la máquina Windows se puede utilizar un módulo llamado codeexecution/invoke_metasploitpayload. Las opciones que presenta este módulo son simples, hay que indicar la URL dónde estará a la escucha el módulo de Metasploit exploit/multi/script/web_delivery. Además, hay que indicar el nombre del agente de Empire que ejecutará este código.
Entendiendo que partimos de un escenario en el que tenemos un listener de tipo http a la escucha, que un agente de Empire se ha ejecutado en la máquina Windows y que se quiere pasar la sesión del agente a un Meterpreter se puede utilizar este módulo comentado anteriormente para ello.
Como se puede ver tenemos una sesión producida por un agente de Powershell. Ahora, se puede utilizar el módulo codeexecution/invoke_metasploitpayload para ejecutar una petición a endpoint generado con web_delivery en Metasploit. El código que se recoja será un Meterpreter escrito en Powershell, el cual proporcionará una sesión de Meterpreter en nuestra sesión de Metasploit.
En la siguiente imagen se puede ver cómo se configura el módulo multi/script/web_delivery con un URIPATH y algunos parámetros más. Si se observa la configuración del módulo metasploitpayload de Empire y éste, se puede ver como apuntan al mismo puerto, al mismo URIPATH y a la misma máquina. Esto es fundamental.
A continuación, se muestran las opciones configuradas del módulo metasploitpayload de Empire. Encajan con lo configurado en web_delivery de Metasploit. Desde el agente 5N4TV7XU se hará una petición a la URL http://10.0.0.1:8888/ configurado por el módulo web_delivery para responder con un código en Powershell, que será un Meterpreter. Este Meterpreter se conectará al puerto 4444 de la máquina 10.0.0.1, dónde se encuentra el handler de Metasploit.
Cuando ejecutamos el módulo se recibe la petición en el módulo web_delivery. El mensaje que obtenemos es ‘Delivering Payload’ y, a partir de ahí, obtenemos la sesión de Meterpreter. Cómo se puede ver en la imagen, disponemos de la sesión y las posibilidades que el Meterpreter ofrece.
MSF Foreign Listeners
Este método es más antiguo, pero eficaz. Quizá no tan rápido o sencillo como el de utilizar el web_delivery a través de un módulo de Empire, pero nos permite entender las posibilidades de los Listeners de Empire.
Utilizamos el módulo listeners/meterpreter. La configuración, como se puede ver en la imagen, es sencilla. Hay que indicar el puerto y el host. En este instante, se dispone de un listener de tipo http, que es el que se ha utilizado en el apartado anterior para recibir la conexión con el agente y se dispone de un nuevo listener de tipo Meterpreter. Éste será el encargado de generar la conexión con el handler de Metasploit y permitir obtener una sesión de Meterpreter desde la consola de Metasploit.
Aprovecharemos el agente que ya tenemos para generar un nuevo proceso, por ejemplo, un cmd.exe o un notepad.exe. ¿Con qué objetivo? Poder inyectar una shellcode que se conecte al listener de Meterpreter de Empire y se tome el control en el handler de Metasploit. Utilizaremos el reverse_http, aunque también se podría utilizar el reverse_https.
El módulo management/runas permite al agente de Empire poder crear un proceso, por ejemplo, indicándole la ruta c:\windows\system32\cmd.exe. Una vez se crea el proceso, con el PID asociado, se debe utilizar en el módulo code_execution/invoke_shellcode. También se puede llegar a este módulo a través del comando injectshellcode. Como se puede ver en la Figura 10.
En la parte de Metasploit tendremos un handler configurado para el Meterpreter de tipo reverse_http en el puerto 8088, tal y como se puede ver en la imagen superior. Se obtiene la sesión de Meterpreter.
La integración entre las herramientas son importantes y como se ve Empire aporta diferentes opciones. Algunas muy interesantes como la inyección de DLL. Además, es bidireccional de Metasploit también se puede conseguir un agente de Empire y de Empire se puede conseguir una sesión de Metasploit. En el vídeo de arriba tienes el ejemplo completo.
Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advance Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDO de Telefónica.
Figura 1: Cómo integrar Empire Project con Metasploit en un pentesting |
Del primero - de PowerShell Empire - ya os he escrito varios artículos en por aquí en este blog. Del segundo... os he escrito decenas de posts y un par de libros que tenéis publicados en 0xWord :)
- PowerShell Empire: El Imperio Contraataca
- PowerShell Empire: Post-explotación++ en redes Windows
- PoweerShell Empire GUI: Un interfaz al más puro estilo Armitage
- PowerShell Empire: Trabajando el Pass-the-hass con Mimikatz
- Metasploit para Pentesters (4ª Edición)
- Hacking con Metasploit
Aprovechando el paso por la Ekoparty 2018, tendré el honor de poder hablar de uac-a-mola y de ibombshell, además de Empire, he querido hacer un artículo para mostrar cómo es la integración entre Empire y Metasploit, al menos con algunos métodos disponibles en esta magnífica herramienta de Empire. Los proyectos de uac-a-mola e ibombshell son proyectos que han nacido y que se mantienen en ElevenPaths, tal y como se puede ver en el Github de ElevenPaths.
Figura 2: Presentación de UAC-a-Mola
En la Figura 2 tenéis el vídeo de la primera presentación del proyecto uac-a-mola, y a continuación os dejo el paper que hicimos de ibombshell, publicado en el canal SlideShare de ElevenPaths.
Figura 3: iBombShell: Dynamic Remote Shell
Ahora, vamos con la integración entre Empire Project y Metasploit Framework, para lo que vamos a repasar primero una serie de métodos que tenemos disponibles.
Code Execution: metasploitpayload
Este método es sencillo. Partiendo de la base de disponer de un agente de Empire en la máquina Windows se puede utilizar un módulo llamado codeexecution/invoke_metasploitpayload. Las opciones que presenta este módulo son simples, hay que indicar la URL dónde estará a la escucha el módulo de Metasploit exploit/multi/script/web_delivery. Además, hay que indicar el nombre del agente de Empire que ejecutará este código.
Figura 4: Método MetasploitPayload |
Entendiendo que partimos de un escenario en el que tenemos un listener de tipo http a la escucha, que un agente de Empire se ha ejecutado en la máquina Windows y que se quiere pasar la sesión del agente a un Meterpreter se puede utilizar este módulo comentado anteriormente para ello.
Figura 5: Listener http con agent configurado en Kali Linux |
Como se puede ver tenemos una sesión producida por un agente de Powershell. Ahora, se puede utilizar el módulo codeexecution/invoke_metasploitpayload para ejecutar una petición a endpoint generado con web_delivery en Metasploit. El código que se recoja será un Meterpreter escrito en Powershell, el cual proporcionará una sesión de Meterpreter en nuestra sesión de Metasploit.
En la siguiente imagen se puede ver cómo se configura el módulo multi/script/web_delivery con un URIPATH y algunos parámetros más. Si se observa la configuración del módulo metasploitpayload de Empire y éste, se puede ver como apuntan al mismo puerto, al mismo URIPATH y a la misma máquina. Esto es fundamental.
Figura 6: Configuración de módulo web_delivery en Metasploit |
A continuación, se muestran las opciones configuradas del módulo metasploitpayload de Empire. Encajan con lo configurado en web_delivery de Metasploit. Desde el agente 5N4TV7XU se hará una petición a la URL http://10.0.0.1:8888/ configurado por el módulo web_delivery para responder con un código en Powershell, que será un Meterpreter. Este Meterpreter se conectará al puerto 4444 de la máquina 10.0.0.1, dónde se encuentra el handler de Metasploit.
Figura 7: Options de metasploitpayload en Empire |
Cuando ejecutamos el módulo se recibe la petición en el módulo web_delivery. El mensaje que obtenemos es ‘Delivering Payload’ y, a partir de ahí, obtenemos la sesión de Meterpreter. Cómo se puede ver en la imagen, disponemos de la sesión y las posibilidades que el Meterpreter ofrece.
Figura 8: Sesión de Meterpreter obtenida |
MSF Foreign Listeners
Este método es más antiguo, pero eficaz. Quizá no tan rápido o sencillo como el de utilizar el web_delivery a través de un módulo de Empire, pero nos permite entender las posibilidades de los Listeners de Empire.
Utilizamos el módulo listeners/meterpreter. La configuración, como se puede ver en la imagen, es sencilla. Hay que indicar el puerto y el host. En este instante, se dispone de un listener de tipo http, que es el que se ha utilizado en el apartado anterior para recibir la conexión con el agente y se dispone de un nuevo listener de tipo Meterpreter. Éste será el encargado de generar la conexión con el handler de Metasploit y permitir obtener una sesión de Meterpreter desde la consola de Metasploit.
Figura 9: Listener de tipo Meterpreter |
Aprovecharemos el agente que ya tenemos para generar un nuevo proceso, por ejemplo, un cmd.exe o un notepad.exe. ¿Con qué objetivo? Poder inyectar una shellcode que se conecte al listener de Meterpreter de Empire y se tome el control en el handler de Metasploit. Utilizaremos el reverse_http, aunque también se podría utilizar el reverse_https.
Figura 10: Ejecución de la shellcode |
El módulo management/runas permite al agente de Empire poder crear un proceso, por ejemplo, indicándole la ruta c:\windows\system32\cmd.exe. Una vez se crea el proceso, con el PID asociado, se debe utilizar en el módulo code_execution/invoke_shellcode. También se puede llegar a este módulo a través del comando injectshellcode. Como se puede ver en la Figura 10.
Figura 11: Sesión de Meterpreter obtenida en Metasploit que se ejecuta en un Kali Linux |
En la parte de Metasploit tendremos un handler configurado para el Meterpreter de tipo reverse_http en el puerto 8088, tal y como se puede ver en la imagen superior. Se obtiene la sesión de Meterpreter.
Figura 12: PoC de integración entre Empire Project & Metasploit Framework
Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advance Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDO de Telefónica.
No hay comentarios:
Publicar un comentario