martes, noviembre 28, 2017

¡Seguimos saltando! Metasploit Port-Forwarding #Metasploit #hacking #pentesting

La semana pasada hablábamos de las posibilidades de tunelizar conexiones, saltar entre má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 y la creación de rutas con route en el propio Metasploit.

Figura 1: ¡Seguimos saltando! Metasploit Port-Forwarding

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.

Figura 2: Cheatsheet con técnicas de pivoting

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.

Figura 3: Ayuda de port-forwarding en Meterpreter

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 Linux 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].

Figura 4: Creación de una ruta de puertos con portfwd

Si ejecutamos un netstat –tulpn en nuestra terminal de Kali Linux podremos ver como el puerto 3389 se encuentra a la escucha en nuestra 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.

Figura 5: netstat -tulpn

Si en la auditoría se necesitase pivotar para poder utilizar, por ejemplo, Pass the hash [más sobre esto en el libro de  Hacking Windows] 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.

Figura 6: Regla para pivotar

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.

Figura 7: Configurando el exploit pero no se consigue sesión

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.

Figura 8: Configuración del handler para recoger la sesión Meterpreter

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.

Figura 9: Ayuda del comando route

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]. Para finalizar, vamos a dejaros un video resumen de port-forwarding desde Meterpreter para que veáis el campo que nos permite abarcar.

Figura 10: PoC Metasploit port-forwarding

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 en los proyectos de Ethical Hacking.

Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”,  Hacking Windows, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths

No hay comentarios:

Publicar un comentario