Mostrando entradas con la etiqueta exploits. Mostrar todas las entradas
Mostrando entradas con la etiqueta exploits. Mostrar todas las entradas

viernes, 19 de septiembre de 2014

El tamaño sí importa

Hace unos meses se dio a conocer que se había vendido un exploit 0-day para móviles basados en el iOS de Apple por $500.000 dólares. ¿El comprador? Una agencia gubernamental indeterminada.

Ese mismo precio pueden llegar a tener algunos exploits exclusivos para el Internet Explorer de Microsoft.

http://www.economist.com/news/business/21574478-market-software-helps-hackers-penetrate-computer-systems-digital-arms-trade


Si miramos los tipos de vulnerabilidades más cotizadas, veremos un curioso patrón. No son precisamente aquellas que afectan a bases de datos o a software financiero o corporativo, son las que afectan a software típico de usuario: móviles, navegadores, sistemas operativos de escritorio, herramientas ofimáticas, plugins de java o flash, lectores de pdf.

http://www.forbes.com/sites/andygreenberg/2012/03/23/shopping-for-zero-days-an-price-list-for-hackers-secret-software-exploits/

Esto nos da una pista sobre el tipo de ataques que les gusta utilizar a las organizaciones que tienen recursos económicos avanzados para sus actividades de ataque, los pesos pesados de las operaciones ofensivas.

En el otro lado tenemos las técnicas utilizadas por los grupos pequeños, como las empleadas para comprometer inicialmente a Target o a HBgary. Simples inyecciones de SQL llevadas a cabo de manera manual. 

Los “grandes” prefieren los ataques indirectos cuando se enfrentan a un oponente menor. Les gusta infectar PCs o móviles de usuario, utilizando técnicas de intrusión avanzadas y herramientas caras (una edición básica del Finfisher de Gamma o una del Davinci de Hackingteam suelen costar más de $100.000 dólares y dependiendo de las opciones adicionales pueden llegar a multiplicar esta cifra increíblemente).

Mientras tanto los “pequeños” cuando se enfrentan a un oponente mayor suelen utilizar ataques frontales clásicos, realizados con un enfoque artesanal.

Este patrón no es casual y se repite en la mayoría de casos conocidos que hemos podido analizar.

¿Para qué puede servirnos este patrón? Pues por ejemplo para realizar un perfil del atacante en casos de intrusión o para realizar análisis de atribución en el caso de incidentes conocidos.

También nos sirve para diseñar nuestra estrategia defensiva. Si tememos el ataque de un oponente mayor, debemos invertir más en proteger nuestros equipos de usuario. En cambio sí tememos el ataque de un oponente pequeño, debemos invertir más en proteger nuestro perímetro y nuestros servidores.

Por supuesto esto no es una regla fija, pero si un indicador interesante que puede complementar otros análisis.

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.

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.