INTRODUCCION A METASPLOIT

Introducción a Metasploit

Metasploit es un Framework multiplataforma escrito en Ruby que abstrae las tareas típicas de una intrusión, ofreciendo un esquema modular donde combinar e integrar distintos tipos de exploits y herramientas de acceso y control de equipos y servicios comprometidos. Incluye también módulos adicionales para las fases de rastreo y enumeración.

Arquitectura de Metasploit

Metasploit sigue una arquitectura modular, organizada alrededor de un núcleo que estructura la aplicación y ofrece las funcionalidades básicas.

MsfArch.png

Diagrama completo de la arquitectura de Metasploit

Exploits

Piezas de código que explotan una vulnerabilidad concreta que permite un acceso no previsto. Suelen ser específicas del sistema operativo y de la versión concreta del servicio, aunque hay algunos exploits independientes de la plataforma.

Su uso principal es como ”vector” para la inyección de un payload específico que ofrezca al atacante algún tipo de acceso y/o control del equipo comprometido.

Piezas de código que permiten algún tipo de acceso o control sobre un equipo que ha sido comprometido mediante la explotación de alguna vulnerabilidad. Suelen ser específicos del sistema operativo, aunque algunos basados en Java o lenguajes de Script son independientes de la plataforma.

Payloads

Uno de los payloads más potentes que ofrece Metasploit es Meterpreter. Se trata de un payload que ofrece un intérprete de comandos en el sistema comprometido, complementado con una serie de comandos específicos que soportan tareas típicas de una intrusión (recopilación de información del sistema comprometidos, keylogger, ocultación de rastros, etc).

Auxiliary

Módulos auxiliares que automatizan tareas complementarias empleadas habitualmente en test de intrusión. Fundamentalmente se trata de diversos tipos de escáneres: escáner de puertos genéricos ó escáneres específicos para aplicaciones/servicios concretos.

También se proveen módulos para recopilar credenciales de acceso basados en diccionarios o romper contraseñas, enumeradores de directorios, herramientas para recopilación de información de red y una colección de fuzzers que generan cadenas de entrada aleatorias con las que detectar posibles vulnerabilidades en la validación de entradas.

Post

Piezas de código específicas de cada arquitectura o aplicación que automatizan tareas relativas al mantenimiento, extensión y/o ocultación del acceso a equipos comprometidos.

Fundamentalmente ofrecen funcionalidades para recopilar información del sistema comprometidos (servicios, usuarios, archivos, …), para escalar privilegios obteniendo credenciales de administrador o para ocultar el rastro de la explotación.

Nops

Módulos complementarios usados para generar distintos tipos de códigos NOP (No operation) para diferentes arquitecturas y CPUs a utilizar en el código de los exploits y sus respectivos payloads.

Encoders

Módulos complementarios utilizados para ofuscar y ocultar el código de los exploits y sus respectivos payloads empleando diversos tipos de codificación. Son un mecanismo de evasión para evitar la detección del ataque por parte de IDS (sistemas de detección de intrusiones) o antivirus.

msfconsole

Hay diferentes interfaces para el framework Metasploit, cada uno con sus ventajas y desventajas. Como tal, no hay una interfaz perfecta para usar con MSF, aunque msfconsole es la única forma soportada para acceder a la mayoría de las características del Framework. Es por eso que, de ahora en adelante, vamos a hablar solamente de la utilización de msfconsole.

Screenshot_2015-03-19_10-33-59.png

Pantalla de bienvenida de msfconsole

Obteniendo ayuda

Escribiendo “help” o “?” en el command promp de msf, mostrará una lista de los comandos disponibles junto una descripción de su uso.

Screenshot_2015-03-19_10-35-15.png

Salida del comando ‘help’

Autocompletado

Una de las características más útiles de msfconsole es la completación con la tecla ‘Tab’. Con la gran variedad de módulos disponibles, puede ser difícil recordar el nombre exacto y ruta de algún módulo en particular que se quiera usar. Como en la mayoría de los shells, escribiendo lo que sabes y presionando “Tab” mostrará una lista de las opciones disponibles o se auto completará la palabra si hay una sola opción.

Comando “show”

Introduciendo “show” en el prompt de msfconsole mostrará cada módulo disponible en Metasploit.

Hay una variedad de comandos “show” que podemos utilizar, pero los que vamos a utilizar con más frecuencia son “show auxiliary”, “show exploits” y “show payloads”.

Como podemos ver, hay muchos payloads disponibles. Afortunadamente cuando estamos utilizando un exploit determinado, usando “show payloads” solo veremos los payloads que son compatibles para ese particular exploit.

Por ejemplo, si es un exploit para Windows, no se mostrarán los payloads para Linux.

Si hemos seleccionado un módulo específico, podemos utilizar el comando “show options” para mostrar las opciones disponibles y/o requeridas para ese módulo en específico.

Si no estamos seguros de si un sistema operativo es vulnerable a un particular exploit, podemos ejecutar el comando “show targets” dentro del contexto de un módulo de exploit para ver qué objetivos están soportados.

Screenshot_2015-03-19_10-39-43.png

Los objetivos para el exploit ms08_067_netapi

Si deseamos seguir mejorando un exploit, podemos ver las opciones avanzadas ejecutando “show advanced”.

Comando “search”

El msfconsole incluye una funcionalidad de búsqueda basada en expresiones regulares. Si tenemos alguna idea general de lo que estamos buscando, podemos buscarlo con “search”.

Screenshot_2015-03-19_10-41-23.png

La ayuda del comando ‘search’ nos muestra sus múltiples opciones

Comando “info”

El comando “info” proporciona información detallada sobre un determinado módulo incluyendo todas las opciones, objetivos, y otras informaciones.

Screenshot_2015-03-19_10-45-19.png

Información del exploit ms08_067_netapi

Comando “use”

Cuando se ha decidido por un módulo en particular, utilizamos el comando “use” para seleccionarlo.

Comando “connect”

Utilizando el comando “connect” con una dirección IP y un número de puerto, podemos conectarnos a un host remoto desde msfconsole igual como si usaramos netcat o telnet.

Comando “set”

El comando “set” es usado para configurar las opciones del módulo que actualmente estamos utilizando.

Screenshot_2015-03-19_10-47-23.png

Definición de la variable ‘RHOST’

Comando “check”

No hay muchos exploits que lo soporten, pero hay una opción de “check” la cual comprueba si el objetivo es vulnerable a un exploit en particular en lugar de explotarla.

Variables globales

Con el fin de no escribir mucho durante un pentest, podemos establecer variables globales dentro de msfconsole. Podemos hacer esto con el comando “setg”. Una vez que se ha establecido, la podemos utilizar en muchos exploits y módulos auxiliares a nuestro gusto. También la podemos guardar para usarlo la próxima vez que utilicemos msfconsole.

Sin embargo, ciertos datos no son guardados, así que siempre debemos revisar las opciones definidas antes de usar “run” o “exploit”. Por el contrario, podemos usar el comando “unsetg” para eliminar una variable global. Metasploit no es sensible a las mayúsculas (es lo mismo definir una variable en mayúsculas que en minúsculas)

Comando “exploit/run”

Para lanzar un exploit, podemos usar el comando “exploit” mientras que si usamos un módulo auxiliar, el uso correcto es “run” aunque “exploit” funciona también.

Comando “back”

Cuando hayamos terminado de usar un módulo, o si seleccionamos el módulo equivocado, podemos usar el comando “back” para salir de ese contexto. Esto, sin embargo no es requerido, porque podemos cambiar de módulo estando dentro de otro. Como recordatorio, las variables son cambiadas si son establecidas globalmente.

Comando “resource”

Algunos ataques como Karmetasploit usan archivos adicionales que se pueden cargar a través de msfconsole usando el comando “resource”. Estos archivos son unos scripts básicos para msfconsole. Ejecutan los comandos del archivo en secuencia.

Comando “irb”

Si ejecutamos el comando “irb”, cambiará al modo de edición de scripts en ruby, donde podremos usar comandos y crear scripts en el momento.

Payloads

Metasploit contiene muchos tipos diferentes de payloads, cada uno cumple un rol único dentro del framework. Echemos un vistazo a los varios tipos de payloads disponibles para hacernos una idea de cuándo debería utilizarse cada uno.

En Línea (No Efectuado, Non Staged)

Un payload único conteniendo el exploit y el código shell (shellcode) completo para la tarea seleccionada. Los payloads en línea son más estables por diseño que sus contrapartes porque contienen todo en uno. Sin embargo algunos exploits no soportan el tamaño resultante de estos payloads.

Efectuado (Staged)

Los payloads staged trabajan conjuntamente con los payloads stage para llevar a cabo una tarea específica. Un staged establece un canal de comunicación entre el atacante y la víctima y lee en un payload efectuado lo que debe ejecutar en el host remoto.

Meterpreter

Meterpreter, es el diminutivo de Meta-Interpreter, y es un payload avanzado, multi-facético, que opera por medio de inyección en librerías dinámicas (dll). El Meterpreter reside completamente en la memoria del host remoto y no deja rastros en el disco duro, haciéndolo muy difícil de detectar con técnicas forenses convencionales. Los scripts y plugins se pueden cargar y descargar dinamicamente segun se necesitan. El desarrollo de Meterpreter es muy poderoso y en constante evolución.

PassiveX

PassiveX es un payload que puede ayudar a evitar cortafuegos con la salida restringida. Esto lo realiza utilizando un control ActiveX para crear una instancia oculta de Internet Explorer. Utilizando el nuevo control ActiveX, se comunica con el atacante por medio de peticiones y respuestas HTTP.

NoNX

El bit NX (No eXecute) es una característica incorporada en algunas CPUs para prevenir que se ejecute código en ciertas áreas de la memoria, En Windows, NX esta implementado como Data Execution Prevention (DEP), Prevención de Ejecución de Datos. Los payloads NoNX de Metasploit están diseñados para evitar DEP.

Ord

Los payloads Ordinales son payloads staged basados en Windows que tienen distintas ventajas y desventajas. Las ventajas son que trabajan en cualquier sabor y lenguaje de Windows a partir de Windows 9x sin la definición explícita de una dirección de retorno. También son extremadamente pequeños. Sin embargo, dos desventajas muy específicas hacen que no sean la opción por defecto. La primera reside en el hecho de que ws2_32.dll se carga en el proceso que está siendo explotado antes de la explotación. La segunda es que es un poco menos estable que los otros stageds.

IPv6

Los payloads IPv6 de Metasploit, como indica su nombre, han sido construidos para funcionar sobre redes IPv6.

Inyeccion DLL Reflectiva

La Inyección DLL Reflectiva es una técnica mediante la cual un staged payload es inyectado en un proceso corriendo en la memoria del host comprometido, sin tocar nunca el disco duro del host. Ambos payloads VNC y Meterpreter hacen uso de la inyección DLL reflectiva.

Uso Rápido

Como un ejemplo rápido de utilización de Metasploit, podemos citar lo siguientes pasos:

  1. use nombre_del_exploit
  2. set payload_a_utilizar
  3. set variables_que_correspondan
  4. exploit

Screenshot_2015-03-19_11-19-38.png

Tomando el control de un Windows XP a través del exploit ms08_067_netapi

Bind vs Reverse

En muchos de los payloads disponibles podremos observar las palabras ‘bind’ o ‘reverse’. Siempre veremos una o la otra, nunca las dos juntas.

Esto hace referencia al método de conexión que utiliza el payload para comunicarse con el atacante.

Bind: Abren un puerto (lo ponen en ‘escucha’) y esperan la conexión por parte del atacante.

Reverse: Hace que la víctima inicie una conexión saliente hacia el sistema del atacante.

Esta diferencia, aunque parezca menor, es de suma importancia al momento de seleccionar un payload. Y su elección va a depender de cómo puedan conectarse los sistemas involucrados (víctima y atacante).

En el caso de que la víctima tenga una dirección IP pública y no cuente con un firewall habilitado (o lo tenga mal configurado) y el atacante no posea una dirección IP pública, seguramente va a ser recomendable un payload del tipo ‘bind’, para abrir un puerto en la víctima y que el atacante pueda conectarse.

En el caso de que la víctima posea un firewall y el atacante posea una dirección IP pública, será recomendable la utilización de un payload ‘reverse’.

Estos dos casos enumerados no son los únicos, pero sirven para clarificar un poco en qué momentos puede ser conveniente uno u otro tipo de payload.

Comandos Útiles

A continuación tenemos una lista de comandos que van a ser de utilidad una vez que hayamos tomado el control de un sistema remoto y tengamos una sesión de Meterpreter.

ps

Muestra una lista de todos los procesos activos del sistema.

Screenshot_2015-03-19_14-25-17.png

ipconfig / ifconfig

Muestra la configuración de red

Screenshot_2015-03-19_14-26-42.png

arp

Muestra la tabla de asociaciones ARP

Screenshot_2015-03-19_14-27-50.png

sysinfo

Muestra información general sobre el sistema

Screenshot_2015-03-19_14-28-52.png

upload / download

Sirven para subir y bajar archivos (respectivamente).

Screenshot_2015-03-19_14-32-35.png

migrate

Permite migrar el proceso de Meterpreter (que se ejecuta ‘pegándose’ a otro proceso, para no ser detectado).

Esto se utiliza, generalmente, para migrar a un proceso que no debería ser terminado, en el caso de que actualmente Meterpreter se esté ejecutando dentro de un proceso que posiblemente termine (como un proceso de navegador web).

Screenshot_2015-03-19_14-35-55.png

En el caso de que el proceso en el cual se está ejecutando Meterpreter, sea terminado, se cerrará nuestra sesión, como podemos ver en la siguiente imagen.

Screenshot_2015-03-19_14-37-48.png

shell

Permite abrir una shell (línea de comandos).

Screenshot_2015-03-19_14-38-54.png

keyscan

Inicia un proceso keylogger (captura las teclas presionadas por los usuarios del sistema).

Screenshot_2015-03-19_14-57-36.png

screenshot

Captura la pantalla de la víctima.

Screenshot_2015-03-19_14-58-34.png

webcam

Los comandos “webcam_*” permiten acceder a las webcam del sistema vulnerado.

Screenshot_2015-03-19_15-12-39.png

0 Votes: 0 Upvotes, 0 Downvotes (0 Points)

Loading Next Post...
Follow
Search Trending
Popular Now
Loading

Signing-in 3 seconds...

Signing-up 3 seconds...

Cart
Cart updating

ShopYour cart is currently is empty. You could visit our shop and start shopping.