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.