banner

[Pivoting] Exploración de una Red remota utilizando un pivote con #Metasploit (I)

                                       
Indice:

-[Pivoting] Exploración de una Red remota utilizando un "pivote" con #Metasploit (I)
-[Pivoting] Exploración de una Red remota utilizando un "pivote" con #Metasploit (II)

                                                                               

Hace ya cierto tiempo publique un artículo donde jugaba con #Metasploit para reproducir la vulnerabilidad LNK que utilizó Stuxnet para propagarse e infectar otros equipos vía USB.

Ayer 4/Mar/2013 durante mi charla en el I Taller de Hacking Ético organizado por ACONSA y por la Universidad de Córdoba, prepare un escenario  (véase la imagen inferior) para demostrar como se puede realizar una intrusión a un Sistema que aparentemente se encuentra bien protegido.

En la demostración utilice la capacidad que ofrece metasploit de utilizar un equipo ya comprometido para usarlo como punto de entrada y/o ataque a otros elementos de la red a la que pertenece, es decir, utilizarlo de "pivote" para redireccionar el tráfico y atacar otros puntos de la red interna de una empresa.


ESCENARIO

Para que os podáis poner en situación os explicaré brevemente el contexto en el que se realizo el taller, para ello que mejor que una imagen para ilustrar el escenario.

Escenario charla "Vulnerabilidades vs Exploits"
Para el taller, prepare 4 máquinas virtuales:


  • ATACANTE: Un maquina virtual con BT5 instalada y actualizada. Especialmente con metasploit configurado.
  • USR_A: Un equipo WindowsXP SP3, con Java 6 update 13 instalado (sin actualizar por supuesto), y para facilitar la demostración sin antivirus instalado.
  • USR_ADMIN: Un equipo Windows XP SP3, sin antivirus y configurado con carpetas de red compartidas con el equipo USR_A.
  • ROUTER / FIREWALL: En esta ocasión utilice el router/firewall vyatta 6.0. Con la configuración que  aparece en la imagen superior, y os explico a continuación.


Configuración del Router / Firewall:

Con el objetivo de crear un entorno de trabajo "real", he utilizado un router/firewall para generar tres zonas diferentes: PUBLIC, PRIVATE y DMZ. La zona PUBLIC sería la zona de acceso público y simularía la conexión a Internet, la zona DMZ, es la Intranet de la empresa, mientras que la zona Private, es la zona destinada a la conexión de los usuarios de la empresa.

Cada zona, se encuentra configurada en el cortafuegos para controlar el flujo de tráfico entre las mismas, es decir:


  • DMZ: No se permite la conexión con Internet en ninguno de los sentidos, y se tiene limitado el acceso desde la zona PRIVATE, a los puertos 80, 443, 21, 22, 23, 139, 445, es decir, solamente se tiene permitido el tráfico a los protocolos: HTTP, HTTPS, TELNET, SSH, FTP, SMB (carpetas compartidas de Windows).
  • PRIVATE: Se permite la conexión con Internet al completo, al ser un ejemplo, didáctico he creído conveniente, ilustrar que ocurre cuando no se controla la salida de tráfico desde la red interna (PVT) a Internet (PUBLIC). 
*Por supuesto, no se permite establecer ninguna conexión desde la zona PUBLICA hacia la DMZ, o PRIVATE.

Con esta configuración, se sabe que la empresa no proporciona ningún servicio publico a Internet (WEB), y que sus empleados pueden navegar libremente por Internet. Además, tienen protegidos sus servidores internos (Intranet-DMZ) con unas reglas de cortafuegos "relativamente estrictas".

Una vez que nos encontramos en "situación" y tenemos claro cuál será nuestro objetivo (realizar una intrusión en la red interna de la empresa, a ser posible en la DMZ), estamos en condiciones de ver como se puede realizar esto en tres FASES:
  • F1: El engaño - Acceder a la red interna aprovechando el eslabón más débil de la cadena el usuario.
  • F2: Explorar la red interna, utilizando el equipo comprometido como un "pivote".
  • F3: Atacar nuestro objetivo y obtener la información.

DEMOSTRACIÓN - EJEMPLO PRÁCTICO


Para iniciar la intrusión, he utilizado una vulnerabilidad conocida de JAVA, ya que últimamente esta siendo activamente utilizada "in the wild", o lo que es lo mismo, en Internet. Es por ello que me ha parecido muy propio utilizar JAVA como el vector de entrada al Sistema, con lo que podría prepararse un email, enviado a contactos de la empresa, que se podría haber obtenido mediante las redes sociales, y/o otras técnicas de recolección de información.

El caso es que partimos, del punto en el que el USR_A recibirá un e-mail "malicioso" con una URL que explotará la vulnerabilidad que tiene en su Sistema, en especial JAVA 6 update 13 (CVE-2010-0886CVE-2010-1423).

FASE 1: Creación de la URL para explotar la vulnerabilidad de JAVA.

¿Cómo preparamos metasploit para explotar esa vulnerabilidad de JAVA en el equipo de USR_A? 

Utilizando el exploit basado en "navegadores" denominado: java_ws_arginject_altjvm, este exploit iniciará en nuestro equipo ATACANTE un servidor que explotará la vulnerabilidad  JAVA anteriormente mencionada.

A continuación os dejo una captura de pantalla de la preparación de la URL maliciosa.
Fase 1: Preparación de JAVA exploit - URL maliciosa
Una vez que tenemos "preparado" nuestro equipo para recibir las conexiones de las posibles victimas, solo queda esperar a que "piquen" en nuestra trampa. En nuestro ejemplo practico, es el usuario A (USR_A) quién cae en nuestras redes, observen la siguiente imagen:

Fase 1: URL con JAVA - Ataque exitoso.
FASE 2: Utilizando el equipo comprometido para explorar la red interna de la empresa.

Una vez que se tiene el control del equipo USR_A, se realiza una pequeña investigación de la victima, como por ejemplo:

  • Información del Sistema.
  • Direccionamiento IP del equipo dentro de la red.
  • Conexiones que tiene el equipo con otros elementos de la red interna.
Esto se consigue fácilmente utilizando los comando básico de "meterpreter", que es la shell avanzada que se ha utilizado para ejecutar en el equipo remoto a través de la vulnerabilidad de JAVA.



meterpreter> sysinfo
meterpreter> netstat
meterpreter> arp

Con estos tres comandos de meterpreter, obtenemos información, con el comando arp y netstat, averiguamos:
  1. IP_USR_A: 192.168.3.3 
  2. Tiene una conexión 445 con 192.168.2.3
Hasta el momento es la información que se ha obtenido del equipo comprometido, ahora vamos a configurar "metasploit" para explorar la red interna a través de nuestra puerta de entrada , el usuario A.

Puesto que tenemos comprometido el usuario A, estamos en condiciones de utilizar dicho equipo como puerta de entrada, y scannear la red interna en busca de otros objetivos. Es lo que se conoce con el nombre de la técnica del "pivoting".

Para conseguir este efecto, necesitamos que "metasploit" rute (redirija)  los paquetes (nuestro tráfico de red) a través de la conexión que tiene establecida con el equipo remoto comprometido, en este caso USR_A. 

Para ello ejecutamos el siguiente comando:

metasploit> route add 192.168.2.0 255.255.255.0 1

donde:
  • 1 es el identificador de nuestra sesión de "meterpreter" activa.
  • 192.168.2.0/24 es la subred objetivo, dada la pista obtenida al realizar el netstat.


Ahora se tiene configurado "metasploit" para que el tráfico de red con destino 192.168.2.0/24 (subred interna de la empresa objetivo) sea enviado a través del equipo comprometido USR_A, ser por tanto utilizado como pivote.

En este punto, se tiene una ligera pista sobre un objetivo situado en otro segmento de red dentro de la empresa, se trata de 192.168.2.3, pero por el momento solo tenemos conocimiento de tener una conexión establecida en el puerto 445, normalmente utilizado en la conexión de carpetas compartidas en windows, bajo el protocolo SMB.

En el siguiente artículo, se utilizará al usuario A (USR_A) como "pivote" para realizar un scaneado de la IP objetivo 192.168.2.3 con nmap, y atacar con un exploit remoto ...

¿Te lo vas a perder?

13 comentarios :

  1. Hola. Muy buena explicación. Dado mis pocos conocimientos, me surge la duda de que si en ese entorno empresarial existiera el típico router que es el que da acceso a internet proporcionado por cualquier operador telefónico, se podría realizar esa conexión con meterpreter? A mi parecer no se podría, pues abría que abrir los puertos correspondientes en el router para establecer la conexión entre atacante y víctima

    ResponderEliminar
  2. Hola, Willisi

    Si el Router que da acceso a Intenet tiene configuración por defecto NAT, sin cortafuegos activado en el flujo de salida de datos (desde la red interna a Internet). Se podría sin problemas, y sin tener que abrir ningún puerto en el router al tratarse de una SHELL Inversa, conexión iniciada desde la red interna hacia el atacante.

    El atacante, será el encargado de configurar adecuadamente su red para poder recibir la conexiones.

    En cualquier caso, el ejemplo arriba expuesto se ha realizado dentro de un entorno virtual, con un router configurado sin cortafuegos de salida. Simulando un posible entorno real.

    Por supuesto, para llevar a cabo este tipo de acciones en el mundo real se debe de contar con la correspondiente autorización escrita.

    Gracias, por tu comentario.
    Un Saludo.

    ResponderEliminar
  3. Entendido. Gracias a tí por la respuesta. Saludos

    ResponderEliminar
  4. En la actualidad que persona natural o empresa no tiene activado su firewall o sin antivirus, creo que eso ya no se da ahora la mayoria de usuarios como mínimo tienen Un antivirus y El firewall activado ¿No existe otra manera de vulnerar windows 7 ó Xp?

    ResponderEliminar
  5. Hola, Kike

    Ciertamente, es muy probable que nadie tenga un Windows XP, y menos aún lo tenga sin antivirus, ni firewall. Es un ejemplo didáctico, en el blog encontrarás otros artículos que hablan de como evadir el antivirus ... el resto lo dejo a vuestra imaginación.

    Ten en cuanta que es un artículo didáctico.

    Un Saludo.

    ResponderEliminar
  6. Hola Julián Gonzalez, Buenas tardes gracias por tu respuesta anterior. Ahora te hago otra pregunta ¿Realmente se puede vulnerar windows XP, Windows 7, Windows 8 con un exploit? agradezco por anticipado vuestra respuesta ya que esto del pentesting me esta gustando mucho aprender. ¡Gracias por tu información!

    ResponderEliminar
  7. Hola, Kike

    > Windows 7/8 si utilizas un exploit para JAVA .. (sin AV activado) puedes probar a ver que ocurre...

    Un Saludo.

    ResponderEliminar
  8. Buenas noches Julián ya probe pero los Antivirus lo detectan como una Url Maliciosa ¿Álguna otra opción?

    ResponderEliminar
    Respuestas
    1. Hola, Kike

      Ahora entra la labor de "Pentester" que es averiguar cómo conseguir que el AV no lo detecte! .. Suerte!

      Un Saludo.

      Eliminar
  9. Quiza con veil-evasion.... pero yo quisiera ir un paso mas halla.
    que pasaría si envezde atacar mediante una inyección hiciéramos un ataque directamente al router mediante su ip publica?
    Seria posible hacer como un metasploit + mitm sin estar conectado directamente a la red atraves de el pivote?
    Excelente trabajo un saludo.

    ResponderEliminar
    Respuestas
    1. Hola David,

      Si consigues explotar una vulnerabilidad existente en el router, puedes optar por otras opciones en lugar de realizar pivoting, la idea original del pivoting es utilizar un elemento vulnerable para atacar / alcanzar otro objetivo dentro de la "subred" de la victima.

      En el caso que planteas, atacando el router directamente y hacer un ataque MITM, no estarías haciendo pivoting, y sería posible siempre y cuando el elemento "objeto" del ataque tenga una vulnerabilidad explotable con la capacidad suficiente para realizar lo que propones!

      Un Saludo.

      Eliminar
  10. Hola, disculpa, tengo que abrir puertos en mi router para poder realizar conexiones?

    ResponderEliminar
    Respuestas
    1. Hola,

      Abrir puertos en tu router, si siempre y cuando se vayan a realizar conexiones desde Internet hacia tu router. Esto por supuesto dependerá de lo que tengas pensado realizar y cómo!

      No obstante, en la mayoría de los router domesticos, tienen los puertos de entrada cerrado y de salida abiertos, Por lo que las Shell reversa, suele ser la mejor opción para la "intrusión" en el sistema, sin embargo, el handler (servidor) deberá permitir la entrada de tráfico en el puerto configurado.

      Espero haber respondido a tu pregunta.

      Por supuesto este articulo es de carácter académico y no me hago responsable del uso inapropiado o no autorizado que pueda hacerse del mismo.

      Eliminar