Meterpreter

¿Qué es Meterpreter?

Meterpreter no es un módulo de msfconsole en sí mismo. Es un payload avanzado de Metasploit, es decir, un tipo especial de código que se ejecuta en la máquina víctima una vez que se ha explotado con éxito una vulnerabilidad o se ha ejecutado un payload.

El nombre viene de "Meta-Interpreter", porque actúa como un "intérprete" remoto que te permite interactuar con la máquina comprometida de forma muy poderosa.

¿Qué hace?

Cuando un payload Meterpreter se ejecuta en la máquina víctima, establece una sesión de control hacia el atacante (por ejemplo, en tu msfconsole, que corre un handler esperando esa conexión).

Una vez que la sesión está activa, Meterpreter te permite ejecutar comandos de post-explotación muy avanzados, mucho más que una simple shell:

  • Navegar el sistema de archivos.

  • Subir y descargar archivos.

  • Ejecutar comandos del sistema.

  • Capturar capturas de pantalla.

  • Registrar las pulsaciones de teclas (keylogger).

  • Manipular procesos (migrar a otros procesos para mantenerse oculto).

  • Capturar hashes y credenciales.

  • Ejecutar exploits locales para escalar privilegios.

  • Extenderse con scripts y módulos adicionales.

Además, Meterpreter está diseñado para ser sigiloso y difícil de detectar. Por ejemplo:

  • Se ejecuta en memoria (sin tocar disco, si se configura así).

  • Puede cifrar su comunicación con el atacante.

  • Puede cambiar de proceso para evadir detección.

¿Para qué se utiliza?

Meterpreter es el payload ideal cuando querés:

  1. Post-explotación: después de obtener un acceso inicial, usar Meterpreter te da herramientas mucho más potentes que una simple shell (cmd.exe o powershell.exe).

  2. Escalada de privilegios: como en Driver, una vez que tenés Meterpreter podés usar el local_exploit_suggester, migrar procesos, y ejecutar exploits de privilegio como ricoh_driver_privesc.

  3. Movimientos laterales: desde una sesión Meterpreter, podés pivotear hacia otras máquinas en la red.

  4. Persistencia: podés configurar Meterpreter para que te mantenga una puerta trasera persistente si es necesario.

Ver máquinas Driver (HTB), Acces (HTB), Optimum (HTB), Devel (HTB), Forest (HTB)

Opciones de configuración del módulo exploit/multi/handler

📌 ExitOnSession

ExitOnSession es una opción de configuración del módulo exploit/multi/handler, que controla el comportamiento del listener después de que se establece una sesión (por ejemplo, una sesión Meterpreter).

Por defecto, ExitOnSession está en true, es decir:

  • Si ExitOnSession = true → cuando se abre una sesión con éxito (por ejemplo, Meterpreter), el listener se detiene automáticamente y ya no acepta más conexiones.

  • Si ExitOnSession = false → el listener permanece activo, incluso después de recibir una o varias sesiones, y sigue escuchando para recibir más.

¿Qué efecto tiene en configuraciones false?

Cuando usás set ExitOnSession false, estás diciendo:

"Aunque me llegue una sesión Meterpreter, quiero que el handler siga abierto, listo para recibir más conexiones."

Esto es muy útil en situaciones como:

  • CTFs, donde podés querer subir y ejecutar el payload varias veces para probar diferentes cosas.

  • Si tenés varios equipos o procesos que pueden conectarse a tu listener.

  • Si querés reintentar el ataque sin tener que volver a configurar y lanzar el handler.

¿Me cambia algo importante en el funcionamiento general?

  • No cambia nada en cómo funciona el listener ni en cómo funciona la sesión Meterpreter que ya hayas recibido. La sesión se establece igual.

  • La diferencia es que el listener sigue abierto en lugar de cerrarse.

  • En un CTF, esto es deseable, porque si el primer intento de ejecutar un payload.exe en el equipo comprometido no nos da la sesión, podemos volver a ejecutarlo sin necesidad de relanzar el handler.

En resumen

  • set ExitOnSession false es simplemente una configuración para que el listener quede persistente después de recibir una sesión.

  • No cambia el funcionamiento del payload ni de la sesión Meterpreter.

  • Es una buena práctica en CTFs y pruebas, porque evita que tengas que reconfigurar el handler cada vez que reintentes la ejecución del payload.

  • Si configuras ExitOnSession false, el handler permanece activo. Entonces podés:

    • Ejecutar payload.exe una vez → recibís la primera sesión Meterpreter.

    • Ejecutar payload.exe otra vez → recibís una segunda sesión Meterpreter (Metasploit abrirá otra sesión nueva, por ejemplo session 2).

    • Y así sucesivamente.

Last updated