jueves, 6 de octubre de 2011

Metasploit Framework

Si como dice mi compañero Leo, un exploit 0-day es el equivalente digital a un “puto tomahawk”, Metasploit sería el equivalente digital a un destructor.

Un pequeño glosario para empezar:

Vulnerabilidad: Error en el software que permite a un atacante comprometer su seguridad.

Exploit: Código que aprovecha una vulnerabilidad.

Payload: Carga útil de un exploit. La acción que ejecuta el exploit una vez la vulnerabilidad ha sido aprovechada con éxito.

Shellcode: Conjunto de ordenes en un lenguaje de bajo nivel (normalmente ensamblador) que son inyectados en un programa para conseguir que se ejecute una operación para la que ha sido programado.

Los payloads que se utilizan normalmente para aprovechar vulnerabilidades de corrupción de memoria (desbordamientos de búfer, errores de manejo de punteros, etc.) se construyen en forma de shellcode.

Post-explotación: Acciones que se ejecutan una vez el exploit ha tenido éxito. Por ejemplo: robar credenciales, abrir puertas traseras, ocultar la presencia del intruso, etc.


A groso modo Metasploit es una herramienta para desarrollar y lanzar exploits. Pero no solo es un framework de desarrollo, también es una plataforma unificada de explotación y hacking.

Suministra al programador y al hacker entre otras cosas:
• Una gran colección de exploits ya desarrollados y probados.
• Payloads (shellcodes) para varias plataformas y con multitud de funcionalidades.
• Scripts de post-explotación para tareas habituales de hacking.
• Multitud de módulos auxiliares para realizar distintas pruebas de seguridad.
• Funciones de red y procesado de múltiples protocolos.
• Conectividad con otras herramientas de ataque.
• Un interfaz de ataque uniforme.
• Un payload multipropósito con funcionalidades de rootkit (Meterpreter) que se instala en los sistemas explotados para interactuar remotamente sobre los mimos.



Esto convierte a Metasploit en la plataforma de lanzamiento ideal para cualquier exploit, ya que no solo le ofrece al programador una gran variedad de utilidades para mejorar su exploit sino que también le ofrece a la persona que va a lanzar los exploits una plataforma unificada y de uso sencillo.

Antes de Metasploit la programación y el uso de exploits era un proceso artesanal. El programador tomaba una vulnerabilidad de partida y empezaba a desarrollar un pequeño programa para aprovecharla. El programador tenía que desarrollar a medida los payloads y adaptarlos manualmente a cada plataforma.

Cada desarrollador además utilizaba un lenguaje de programación diferente. Y el estilo del código cambiaba mucho. La mayoría de exploits eran desarrollados para consumo del propio desarrollador y eran difíciles de utilizar y modificar para otros hackers.

Con la aparición de Metasploit la mayor parte de la comunidad de desarrolladores de exploits cuenta con una herramienta común en la que programar sus herramientas y ofrecérselas al resto de hackers.

Esto ha hecho que el uso de exploits se haya convertido en una tarea mucho más simple y al alcance de muchos usuarios no especialistas en seguridad.

Metasploit no es la única herramienta de este estilo, existen otros frameworks de explotación similares en cuanto a potencia pero de carácter comercial. Los más conocidos:
• Immunitysec Canvas
• Core Impact

Es difícil realizar una comparativa rápida entre ellos, pero a grandes rasgos:
• Las ventajas principales de Metasploit son su versión gratuita y el soporte de una gran comunidad de usuarios y desarrolladores.
• Canvas ha sido tradicionalmente considerado el más puntero. Entre sus desarrolladores se encuentran algunos de los considerados como números uno en el mundo de la programación de exploit.
• Core Impact es tal vez el más corporativo y menos underground de los tres. Su funcionalidad estrella son los agentes que se instalan en los equipos comprometidos y facilitan el realizar la labor de metástasis de la intrusión (conseguir acceso a otros equipos no accesibles de la red aprovechando el sistema comprometido).

Existen otros frameworks de explotación, algunos comerciales y otros de código libre, pero todavía no tienen la madurez de estos tres.

Cualquiera de estos frameworks podría servir como base para que una organización construya su propia plataforma de lanzamiento de exploits. Implementando sus propios exploits 0-day o payloads y sin tener que hacerlos públicos; obviamente.

1 comentario:

  1. Reconozco que nunca he usado uno de estos frameworks ni he desarrollado ningún exploit (que yo sepa ;) ) ni nada parecido.

    Me ha gustado el glosario de términos, quieras que no siempre es bueno refrescar los conceptos sobre todo para gente que no esta muy puesta en el tema y le parece todo muy complejo.

    Y... puestos a pedir... estaría bien poner algún ejemplo del uso de Metasploit. Por ejemplo, ¿para que "me" podría servir? y ver como hacer algo con Metasploit paso a paso porque para los no iniciados incluso sería complicado de encontrar/instalar/configurar/usar.

    :D

    ResponderEliminar