¡Seguimos saltando! Portfwd para pivotar con Metasploit

La semana pasada hablábamos de las posibilidades de tunelizar conexiones, saltar entremáquinas y poder explotar vulnerabilidades, aprovechándonos para ello de la técnica de pivoting y utilizando SSH para ello. Nos quedaba una segunda parte que comentar y no quería dejarlo pasar mucho tiempo, por lo que hoy hablaremos del Port-Forwarding desde el propio Meterpreter de Metasploit y la creación de rutas con route en el propio Metasploit.

Como mencioné en el artículo de la semana pasada, en Highon.Coffee podemos encontrar un interesante Cheatsheet, a modo de resumen de estas técnicas, pero es altamente vital que tú lo pruebes e intentes entender cómo está funcionando por debajo todo lo que has montado.


Hoy nos centraremos en dos partes que quedaban por mostrar en el artículo anterior. En este caso, partimos de un escenario en el que hay una máquina comprometida y necesitamos hacer port-forwarding. Para utilizar este forwarding utilizaremos a Meterpreter. El escenario propuesto es el siguiente:

·      Máquina Kali Linux. Seremos nosotros, con una interfaz de red con dirección IP 192.168.0.31.
·      Máquina Windows XP, Sí XP, el cual nos vale como pivote. La máquina Windows XP tendrá una interfaz de red en la dirección IP 192.168.0.26 y otra interfaz conectada en la dirección IP 10.0.0.4. Esta máquina está conectada a dos redes, como se puede ver.
·      Máquina Windows 7. Esta máquina tendrá configurada una dirección IP 10.0.0.3. Esta máquina tiene conectividad con la máquina Windows XP, pero no con la Kali Linux.

PoC: Usando portfwd desde Meterpreter

Antes de ejemplificar el uso de portfwd desde Meterpreter, vamos a ver un resumen de las opciones del comando portfwd:

·      Add. Esta opción permite añadir una nueva regla para hacer forwarding.
·      Delete. Esta opción permite eliminar una regla.
·      List. Esta opción permite listar las reglas de forwarding que hay configuradas.
·      Flush. Esta opción elimina las reglas que haya configuradas.


Como se ve en la imagen, el comando portfwd, aparte de las opciones, tiene argumentos. Estos argumentos son utilizados conjuntamente con las opciones explicadas anteriormente.

Utilizando este comando con las opciones que nos interesen podremos reenviar el tráfico a través de la máquina Windows XP, el cuál es el punto de partida en este escenario, para que llegue a la máquina Windows 7. Para ello, por ejemplo, si queremos hacer que nuestro Kali utilice el puerto 3389 local, para que todo el tráfico que llegue a este puerto se reenvíe a través del pivote, en este caso la máquina Windows XP, hacia el puerto 3389 de la máquina Windows 7 o 10.0.0.3 se puede ejecutar el siguiente comando: portfwd add l [puerto local] p [puerto remoto] r [dirección IP remota].


Si ejecutamos un netstat tulpn en nuestra terminal de Kali Linux podremos ver como el puerto 3389 se encuentra a la escucha en nuesta máquina. Como se puede ver en la imagen, el puerto 3389 se ha abierto y es ruby quién tiene el puerto mediante el proceso 1723. Es Metasploit quién gestionará ese forwarding.


Bien, si en la auditoría se necesitase pivotar para poder utilizar, por ejemplo, Pass the hash sobre la máquina Windows 7 se podría configurar la siguiente regla para poder llegar al FTP portfwd add l 445 p 445 r 10.0.0.3. Además, configuramos una regla extra en el puerto 8888 local, la cual redirige al puerto 4444 de la máquina Windows 7 con el objetivo de que, si se consigue un Meterpreter de tipo bind, éste se encuentre en dicho puerto.


Ahora, configuramos el módulo de psexec que se encuentra en Metasploit. Como datos de interés o a recalcar hay que resaltar que RHOST apunta a 0.0.0.0 y RPORT es 445, qué es dónde tenemos el forward. Tras configurar el módulo con un Meterpreter de tipo bind, se lanza con el usuario y hash adecuado contra la máquina Windows 7. Gracias al forwarding configurado anteriormente, pasará por la máquina Windows XP y el Meterpreter que se ejecuta en dicha máquina lo llevará hacia la máquina Windows 7.

Como se puede ver en la imagen, no conseguimos sesión y esto es por qué el Meterpreter se ha atado al puerto 4444 de la máquina Windows 7, y el módulo handler que se ejecuta implícitamente con cada módulo de tipo exploit de Metasploit no puede alcanzar la máquina Windows 7, por esta razón se necesita una nueva regla, en este caso la que configuramos en el puerto 8888 hará el forward hacia el puerto 4444 de la máquina Windows 7.


Configuramos el módulo handler para recoger el Meterpreter que está a la escucha en la máquina Windows 7. Como se puede ver en la imagen, utilizamos el puerto 8888 local para lograr la conexión con el puerto 4444 de la máquina Windows 7. El port-forwarding a través del Meterpreter colocado en Windows XP está funcionando correctamente.


Route para amplificar los puertos

Si en vez de utilizar port-forwarding queremos amplificar el camino, podemos utilizar el comando route para indicar a Metasploit como llegar a redes a las que no se pueden llegar sin el pivote o la máquina comprometida, que es la que abre el camino.


Para añadir una ruta nueva solamente hay que utilizar la instrucción route add [red] [máscara de red] [SID], dónde SID es el identificador de la sesión. Es decir, si quisiéramos enviar peticiones o tráfico a la red 10.0.0.0, en este caso, debería crear la siguiente entrada route add 10.0.0.0 255.0.0.0 [SID].

Cómo se ha podido ver las técnicas de tunelización, de port-forwarding, de enrutamiento asociadas a las vulnerabilidades y exploits nos permiten abarcar una gran parte dentro de la organización a auditar. Sin duda, técnicas que deben conocer los pentesters para su día a día.