PORTFORWARDING CON METASPLOIT

El concepto de portforwarding consiste básicamente en el direccionamiento de todos los paquetes que viajan por medio de un puerto determinado hacia una maquina remota que eventualmente procesa dichos paquetes y devuelve una respuesta, tipicamente, los puertos son creados localmente en la maquina del atacante y actúan como listeners ante aplicaciones que ejecuta el atacante en su maquina (como por ejemplo un navegador web) una vez el atacante ejecuta su aplicación especificando el puerto que actuá como listener, la redireccion de los paquetes por medio de dicho puerto la ejecuta metasploit, frecuentemente lo que intenta hacer, es redirigir dichos paquetes a una sesión meterpreter que corresponde a una maquina previamente comprometida, una vez se realiza esta redireccion de paquetes por medio del puerto del listener, es posible establecer otro nivel de redirección, esta vez desde una maquina comprometida hacia otra por medio de meterpreter, los pasos generales para realizar esto son:

1. Conseguir una consola meterpreter comprometiendo una maquina remota.

2. Utilizar el comando portfwd de meterpreter para establecer el puerto local que se encontrará en estado de escucha, esperando conexiones.

meterpreter > portfwd -h
Usage: portfwd [-h] [add / delete / list] [args]OPTIONS:

-L <opt> The local host to listen on (optional).

-h Help banner.

-l <opt> The local port to listen on.

-p <opt> The remote port to connect to.

-r <opt> The remote host to connect to.

meterpreter > portfwd add -l 25000 -p 80 -r 192.168.1.35

[*] Local TCP relay created: 0.0.0.0:25000 <-> 192.168.1.35:80

Como puede apreciarse, se ha indicado un puerto (25000) en la maquina del atacante (192.168.1.33) que estará a la espera de nuevas conexiones, y en cuanto una conexión sea establecida a dicho puerto, los paquetes serán redirigidos hacia la sesión Meterpreter que corresponde a la maquina comprometida (192.168.1.34) en dicha sesión se ha indicado el puerto y host remoto (192.168.1.35), que será quien realmente reciba los paquetes enviados desde la maquina del atacante. Cabe anotar que para el host remoto (que es realmente una maquina en el segmento de red de la maquina comprometida) los paquetes que recibidos tienen como origen la dirección IP de la maquina comprometida (192.168.1.34) y no recibe ningun tipo de información relacionada con la máquina del atacante.

El puerto remoto que se ha indicado es el 80, partiendo de la base de que se trata de un servidor web como ISS, Apache o Tomcat, se puede abrir un navegador web desde la maquina del atacante e indicar la ruta http://127.0.0.1:25000 esto provocará que la petición sea recibida en el otro extremo por la maquina objetivo (192.168.1.35:80), esto es solamente un ejemplo, pero la extensión de esta misma técnica puede abarcar diferentes escenarios de ataque y diferentes tipos de software, un ejemplo podria ser perfectamente un servicio SSH donde la maquina objetivo (192.168.1.35) confia en la maquina comprometida (192.168.1.34) de esta manera si existe un agente de autenticación establecido en la maquina comprometida con la clave privada almacenada en su cache para acceder a la maquina objetivo (192.168.1.35) el atacante tendrá acceso directo al servicio SSH de la maquina objetivo.