16 Marzo, 2017 a las 19:11

Una de las principales dudas que nos surgen cuando hacemos una auditoría de pentesting y vulnerar un sistema es qué hacer ahora que estamos dentro. Bien, el procedimiento dice que tenemos que volver al punto inicial de la auditoría y recabar información para seguir penetrando a otros sistemas dentro de la red del equipo vulnerado. Para esta segunda parte y poder vulnerar otros sistemas Metasploit (y mas concretamente meterpreter) nos ofrece varias posibilidades.

El primer paso sería obtener las direcciones IP de otros hosts y servidores, para ello podemos hacer uso de técnicas conocidas, como ver la tabla arp (arp -a), trasferencia de zona contra los DNS, etc. Para este ejemplo y ya que estamos con Metasploit vamos a hacer uso del auxiliar arp_scanner que, básicamente, nos permite hacer un escaneo arp contra una sesión de meterpreter. Su uso es sencillo y lo podemos resumir en esta imagen:

Como veis, básicamente cargamos el auxiliar con el comando use, posteriormente establecemos el rango de IPs a escanear y la session de meterpreter donde lanzar el escaneo. Por último lo ejecutamos con el comando run.

Una vez tenemos un listado de IPs el siguiente paso es poder acceder con Metasploit (u otras herramientas) a esos hosts. Una opción inviable es subir nuestras herramientas a la máquina vulnerada por que llamaría la atención y podríamos ser detectados rápidamente. Para evitar tener que hacer esto meterpreter nos facilita dos herramientas utilísimas: Portfwd, con la que podremos redirigir puertos y route, que nos permitirá enrutar el trafico de una IP de la red a través de la máquina comprometida.

Enrutar el tráfico de la red local a través de la máquina comprometida.

Supongamos que queremos acceder a la máquina con IP 10.10.10.128, esta máquina no se encuentra expuesta en Internet, pero nosotros hemos comprometido una máquina cuya IP es la 11.11.11.132 y que comparte red local con la que queremos vulnerar. En principio la máquina 10.10.10.128 nos es inaccesible ya que no está en nuestra red local ni expuesta a internet, pero gracias a route podemos crear una ruta para acceder a las máquinas de esa red local enrutando todo el tráfico por la máquina que hemos vulnerado y que si se encuentra en esa red. El comando es simple:

Obviamente deberemos cambiar la IP por la correspondiente a la red local de la máquina víctima. Ahora que tenemos el enrutado podremos hacer uso de los diferentes auxiliares o exploits contra dicha IP, por ejemplo podemos lanzarle un escaneo de puertos con un auxiliar.

A destacar que este enrutamiento solo admite conexiones TCP por lo que tendremos problemas si intentamos otro tipo de conexiones.

Sacando el enrutamiento fuera de Metasploit con socks4a y proxychains

A veces las herramientas de metasploit pueden parecernos insuficientes o producirnos una especie de “claustrofobia” no poder salirnos del framework para continuar con nuestra auditoría, por suerte contamos socks4a, un módulo de Metasploit que nos crea un proxy SOCKS4 hacia la tabla de enrutamiento de Metasploit, de forma que podamos sacar cualquier programa por ese proxy y acceder por tanto a los recursos de la red enrutada. El uso no puede ser mas sencillo, lo cargamos y lo ejecutamos con run, no hay nada que configurar por esa parte.

Perfecto, ahora si configuramos cualquier aplicación poniendo como proxy nuestra dirección IP podremos conectar contra recursos de la red remota, pero claro, hay multitud de herramientas(como nmap) que no permiten configurar un proxy, para eso tenemos una utilidad fuera de metasploit llamada proxychains.

Proxychains es una herramienta muy potente que nos permite redirigir las conexiones de cualquier proceso hacia un proxy. Lo primero es añadir el proxy que queremos usar en el fichero /etc/proxychains.conf, para ello lo editamos y dejamos únicamente una línea que diga:

socks4  127.0.0.1 1080

No hace falta mucha explicación: tipo de proxy, IP del proxy y puerto. La IP es 127.0.0.1 por que el proxy recordemos que lo hemos montado en nuestra propia máquina. Una vez hecho solo falta lanzar el comando que queramos sacar por el proxy precedido de “proxychains”, por ejemplo si queremos lanzar un nmap sería algo así.

Fijaos que aunque use nmap utilizo el modificador -sT para forzar conexiones TCP y así evitar problemas.

Reenvío de puertos con portfwd

A veces no obtenemos buenos resultados con determinados programas y proxychains, esto lo he notado en algún software como Nessus que por el uso que hace de las conexiones no da buenos resultados, para estos casos podemos reenviar los puertos de una determinada máquina a nuestro equipo. Siguiendo con nuestro ejemplo vamos a enrutar el tráfico del puerto 21 del equipo 10.10.10.128 a nuestro equipo usando el mismo puerto. Una vez creemos este enrutamiento podremos acceder por FTP a 127.0.0.1:3389 y la conexión se enrutará hacia el equipo 10.10.10.128 a la que en primera instancia no teníamos acceso (por ser redes diferentes).

Los parámetros, como veis, muy sencillos: El puerto de nuestro equipo donde enrutar, el puerto del equipo remoto y la IP del equipo remoto. Y funciona:

Como veis, la combinación de las diferentes técnicas pueden sernos de gran ayuda de cara a una fase de post explotación de un sistema.

Acerca de Miguel Díaz

Informático, enamorado de la programación, diseño Web y el deporte.
Categorías: Internet, Pentesting, Seguridad. Etiquetas: , , , , , , , , .

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *