lunes, 24 de octubre de 2011

Uso táctico de Metasploit Framework

En respuesta a mi post anterior un lector pedía un ejemplo práctico del uso de Metasploit. Y como el blog es de temática militar vamos a empezar por ahí. En futuros artículos intentaré explicar a con más detalles técnicos cómo podemos utilizar Metasploit en la práctica.

Decíamos metafóricamente que Metasploit sería el equivalente en ciberguerra a lo que es un destructor a nivel naval; ¿Pero qué características tiene en común con un destructor?

Que me corrijan los expertos en tecnología naval, pero a groso modo los destructores son buques rápidos y versátiles pero con gran potencia de fuego.

Metasploit como decíamos cumple estas características: Es una herramienta flexible (de código libre), de uso simple (aunque para especialistas por supuesto) y que puede ser equipada con múltiples exploits (potencia de fuego) para atacar objetivos importantes.

El escenario

Por ejemplo supongamos que tenemos un escenario donde nuestro objetivo es conseguir acceso a la correspondencia de un alto directivo (este será nuestro objetivo primario).

Analizado el escenario, con información obtenida de fuentes públicas en Internet, decidimos que la forma más sencilla de conseguir este objetivo es infiltrar un troyano en el equipo de algún colaborador directo de ese directivo (estos serán los objetivos intermedios). Ya que hemos averiguado que se utilizan habitualmente en la compañía sistemas Windows antiguos sin parchear.

Para conseguir infectar estos equipos necesitaremos aprovechar una vulnerabilidad que nos permita introducir un malware en el sistema. Aquí es donde entra en juego Metasploit.

Tenemos 2 formas principales de lanzar un exploit contra el equipo que queremos infectar:
• Enviar el exploit directamente a la víctima. Por ejemplo dentro de un email.
• Que la víctima recoja el exploit. Por ejemplo dejándolo en un servidor web y convenciendo a la víctima para que visite la página donde está.

Optamos por la segunda opción ya que los clientes de correo habituales como Outlook o Thunderbird pueden ser difíciles de explotar y los antivirus de correo podrían parar el ataque (aunque hay formas de saltárselos).

El exploit

Así que lo que haremos será configurar un servidor en Internet en el que instalaremos:
• Un pequeño servidor web que al recibir una conexión detectara la versión del navegador que conecta, seleccionara el exploit más adecuado y le pasara la orden a Metasploit.
• Una instancia de Metasploit framework que generara el exploit adecuado y que en caso de tener éxito se encargará de ejecutar el payload en el equipo atacado.

El exploit a utilizar dependerá de varios factores: La versión del navegador, el tipo de sistema operativo, si el usuario utiliza antivirus, etc. Podremos incluso lanzar varios a la vez para aumentar las probabilidades de éxito. Todo ello será necesario programarlo en Metasploit.

Podremos también utilizar los exploits que ya vienen programados con Metasploit o desarrollar los nuestros propios. Esto nos llevara más tiempo, pero reducirá las posibilidades de ser detectados.

También necesitaremos que el usuario visite nuestro servidor web “trampa”. Para hacerlo necesitaremos algo de ingeniería social para convencer a los usuarios de que visiten con su navegador la dirección de una página cebo.

Para ello podremos por ejemplo publicar una nota en un foro que sabemos es frecuentado por los trabajadores de la empresa a atacar, con la esperanza de que alguno visite nuestra página.

El payload

Como el objetivo es instalar un troyano en el equipo atacado. La función del payload será sencilla, consistirá en descargar y ejecutar el instalador del malware.

El propio Metasploit ya incorpora un payload con esta funcionalidad (download_exec) de forma que no necesitaremos desarrollo adicional.

Aunque también podríamos añadirle funciones avanzadas, como por ejemplo que el payload desactive el antivirus del equipo antes de descargar el instalador.

La infección

Una vez esta todo montado solo tenemos que esperar a que alguien visite la dirección de nuestra página y ver si el exploit ha funcionado.

Para ello utilizaremos una herramienta de control remoto o RAT (como por ejemplo PoisonIvy o el propio módulo Meterpreter de Metasploit) configurada para conectar a otro equipo que tendremos conectado en Internet con el software de control.

Si todo ha ido bien y se han conseguido infectar algunos equipos, habrá que comprobar si los sistemas infectados corresponden a los usuarios que eran nuestro objetivo intermedio.

El objetivo final

Si hemos tenido suerte y alguno de los equipos infectados es de un colaborador directo del usuario a monitorizar, tendremos acceso a los segmentos internos de la red de la empresa. Y si el equipo infectado comparte el mismo segmento de red que el equipo del objetivo primario podremos utilizar un sniffer para espiar su correo.

Un sniffer es un programa que se encarga de recoger y analizar el tráfico de una red. En las redes que habitualmente encontraremos en una empresa (de tipo Ethernet) un sniffer normalmente solo puede ser utilizado dentro del segmento local de red.

Conseguido

Si todo sale según lo previsto tendremos acceso al correo del directivo capturando el tráfico con su servidor de email.

Además lo habremos conseguido sin atacar directamente su equipo, reduciendo la probabilidad de ser detectados. Y todo gracias a la versatilidad y potencia de Metasploit.

8 comentarios:

  1. Interesante artículo. Pero me hago unas cuantas preguntas. ¿Para engañar a metasploit o derivados podríamos modificar el navegador y al sistema operativo para que envien notificación sobre versiones falsas? Por ejemplo, que Win 7 contestase que es Win 777 o Firefox 8 que es Firefox 97.

    ResponderEliminar
  2. Gracias por el post, me siento identificado :D

    Me ha gustado la forma de definir el escenario, las necesidades y como ir consiguiendo objetivos. La teoría genial! aunque soy algo torpe y me falta lo más básico ya que imagino que casi todo el mundo que lee este blog conoce Metasploit y lo tiene instalado pero ¿como se instala? ¿como se prueba? ¿como se ejecutan los scripts?... he estado curioseando por la web de metasploit pero es bastante técnico por eso pedia un ejemplo "paso a paso".

    Gracias nuevamente

    ResponderEliminar
  3. La deteccion de la version del browser se suele hacer a partir de la cabecera 'User-Agent' que envia el propio navegador. Que normalmente es posible cambiar. Aunque no tiene mucho sentido como medida de proteccion, lo mas sencillo es simplemente actualizar a una version que no presente vulnerabilidades.

    Por si te interesa hacerlo en firefox:
    http://johnbokma.com/mexit/2004/04/24/changinguseragent.html

    ResponderEliminar
  4. Fossie: Seguramente escriba algun articulo mas sobre Metasploit. Intentare hacerlo mas basico y mas practico. Pero por la tematica del blog no puedo llegar a explicar todo, ni siquiera como instalarlo y como probarlo.

    Para eso ya tienes bastante info en Internet, p.e.:
    http://horusint.wordpress.com/2010/07/24/metasploit-installation-ubuntu/
    http://www.metasploit-es.com.ar/index.php/Curso_de_Metasploit_Unleashed_en_Espa%C3%B1ol

    Un saludo

    ResponderEliminar
  5. Gracias por la info Ramon, el curso de metasploit parece muy interesante.

    Es que cuando se habla de Metasploit se mezclan muchas cosas y uno no sabe que parte es linux, que parte es Metasploit, que parte son otras herramientas... (soy de Windows :( )

    ResponderEliminar
  6. Sobre lo que comentaba "Anonimo" de ocultar el User-Agent pues tampoco lo veo mal. Cuanta menos información se de al "enemigo" mejor aunque también hay que tener en cuenta que hay muchas páginas legales que utilizan esa información para ayudarnos en la navegación con lo que nos estaríamos poniendo obstáculos nosotros mismos.

    ResponderEliminar
  7. En alguna que otra herramienta de "ataque" que he programado, siempre detecto la versión del navegador por Javascript, de esta forms, que yo sepa, no se puede ocultar o al menos es bastante difícil. Ocultar el User-Agent no es nada efectivo contra un "ataque serio".

    ResponderEliminar
  8. Mi pregunta va desde el punto de vista de una potencial "víctima". ¿Es posible detectar mediante algún chequeo si tu equipo ha sido monitorizado con estas técticas?
    Gracias por tu atención y un saludo.

    ResponderEliminar