El logo de Metasploit sobre un fondo de código fuente y la pregunta "¿Qué es Metasploit y su uso en hacking?" en letras blancas.
Descubre qué es Metasploit y cómo se utiliza en pruebas de penetración y hacking ético.

¿Qué es Metasploit y Cómo se Usa en Hacking y Ciberseguridad?

Metasploit es un framework usado principalmente para realizar pruebas de penetración, actividades dirigidas a verificar la seguridad de un sistema mediante la simulación de ataques reales. Al ser un proyecto de código abierto, los usuarios tienen acceso a su código fuente y pueden personalizarlo según sus necesidades. Su interfaz gráfica amigable lo hace accesible incluso para quienes no poseen un conocimiento profundo de las pruebas de penetración. Estas características lo convierten en una herramienta de referencia para los profesionales de la seguridad informática.

¿Qué es Metasploit?

Metasploit Framework es un conjunto de herramientas para pruebas de penetración y hacking ético. Se utiliza para vulnerar sistemas y redes, ejecutar código malicioso u obtener acceso a información. Está escrito en Ruby, ofrece ejemplos de código pre-construidos y permite crear tus propios exploits. Se maneja a través de la línea de comandos o una interfaz gráfica.

Fue creado por el hacker HD Moore y actualmente es propiedad de Rapid7. Es de código abierto y gratuito, aunque existe una versión de pago. A veces se le abrevia como MSF y viene incluido por defecto en Kali Linux.

Una representación gráfica de un cráneo en código binario junto al logo de Metasploit, todo sobre un fondo negro.
Metasploit: Una herramienta poderosa para la seguridad, la prueba de penetración y el análisis de vulnerabilidades.

Orígenes de Metasploit

Metasploit nació en 2003 gracias al trabajo de los desarrolladores H. D. Moore, Matt Miller y Dean McNamee. Inicialmente concebido como una herramienta de red portátil escrita en Perl, fue completamente reescrito en Ruby en 2007 para mejorar su flexibilidad y rendimiento. El 21 de octubre de 2009, el proyecto fue adquirido por Rapid7, una empresa líder en ciberseguridad con sede en Boston. En agosto de 2011, con el lanzamiento de la versión 4.0, Metasploit avanzó con la introducción de numerosos exploits y herramientas de soporte.

¿Quién usa Metasploit?

  • Pentesters (especialistas en pruebas de penetración).
  • Especialistas en seguridad de la información.
  • Hackers éticos (white hat), que no utilizan las vulnerabilidades encontradas para su propio beneficio.

¿Para qué sirve Metasploit Framework?

Metasploit ayuda a crear y ejecutar planes de ataque. Se utiliza para trabajar con exploits (código que aprovecha las vulnerabilidades de un sistema) para acceder a datos, rastrear o modificar el funcionamiento de un sistema o red. Sirve para:

  • Pruebas de penetración (pentesting): intentar vulnerar un sistema o red para identificar sus debilidades.
  • Buscar vulnerabilidades para acceder a un sistema.
  • Acceder a ejemplos de código listos para usar.
  • Escribir tu propio software malicioso o espía.
  • Planificar y ejecutar ataques, y gestionarlos.

Estructura de Metasploit

Diagrama que muestra la arquitectura modular de Metasploit Framework. Se ilustran las diferentes capas, incluyendo Módulos (Exploits, Payloads, Encoders, Nops, Aux), MSF Base, MSF Core, Interfaces (Consola, CLI, Web, GUI), Librerías (Rex), Plugins y Herramientas.
Comprende la estructura de Metasploit y su funcionamiento.

Metasploit Framework se compone de:

  • Bibliotecas: Rex (para operaciones básicas), MSF Core y MSF Base (núcleo del framework).
  • Módulos: Exploits, payloads, etc.
  • Herramientas: Software adicional.
  • Plugins: Complementos adicionales.
  • Interfaces: Interacción con el usuario (consola o interfaz gráfica).

Metasploit incluye una amplia gama de herramientas diseñadas para acelerar las operaciones de pruebas de penetración. Entre las más importantes se encuentran:

  • Aircrack: Utilizado para probar la seguridad de las redes inalámbricas;
  • Metasploit Unleashed: Una guía avanzada que ofrece tutoriales y análisis sobre el uso del framework;
  • Wireshark: Una herramienta de análisis del tráfico de red;
  • Ettercap: Empleado para ejecutar ataques de tipo man-in-the-middle y análisis avanzado de protocolos de red;

Además de las herramientas, el framework está estructurado en sistemas de archivos organizados para soportar las operaciones de pruebas de penetración. En su interior se encuentran:

  • Diversos tipos de datos, como binarios, wordlists, imágenes y plantillas;
  • Comandos de utilidad, incluyendo plugins, herramientas de hardware y volcados de memoria;
  • Bibliotecas, scripts y recursos necesarios para el correcto funcionamiento del framework;
  • Módulos de exploit, indispensables para configurar y lanzar los ataques;
  • Plugins, o extensiones diseñadas para automatizar tareas complejas o repetitivas;
  • Documentación, que ofrece detalles útiles para comprender y utilizar al máximo el framework;

Metasploit posee dos tipos de shell para interactuar con el sistema a atacar: blind shell y reverse shell. Veamos cada una con más detalle.

Blind Shell

En esta configuración, el sistema víctima abre un listener, un componente que permanece a la espera de conexiones entrantes. Posteriormente, el atacante se conecta al listener para obtener una shell remota (remote shell) en el sistema comprometido. Sin embargo, esta configuración presenta un riesgo significativo: el listener está expuesto, permitiendo que cualquiera se conecte y potencialmente ejecute comandos maliciosos.

No son iguales: Diferencia entre Bind Shell y Reverse Shell

Reverse Shell

Esta configuración es mucho más segura que la blind shell. En este caso, el listener se configura en la máquina del atacante, mientras que el sistema comprometido realiza una conexión activa hacia el listener del atacante. De esta manera, solo el atacante puede gestionar la conexión y obtener el control remoto del sistema atacado.

Anteriormente, escribimos un artículo al respecto: Cómo Utilizar Reverse Shell en Metasploit

Exploits, payloads y cómo usarlos

A la fecha, Metasploit incluye miles de exploits para una amplia gama de software y plataformas (Android, PHP, Java, Cisco y Firefox). También ofrece cientos de payloads, divididos en categorías: payloads de command shell, payloads estáticos, payloads dinámicos y payloads meterpreter (ofrecen control total de una sesión remota).

Ejemplo de exploit de un sistema objetivo

Para realizar un exploit, se debe:

  1. Identificar la vulnerabilidad: Verificar si el sistema objetivo es vulnerable a un exploit específico.
  2. Seleccionar y configurar el exploit: Configurar el exploit según las necesidades del ataque.
  3. Asociar un payload: Combinar el exploit con un payload compatible (Metasploit suele sugerir el más adecuado).
  4. Ejecutar el exploit: Ejecutar el ataque, aprovechando la vulnerabilidad para alcanzar el objetivo.

Antes de seleccionar el exploit y el payload, es fundamental recopilar información detallada sobre el sistema objetivo (sistema operativo, servicios de red activos y sus configuraciones). Se usan técnicas como port scanning y TCP/IP stack fingerprinting, con herramientas como Nmap (un potente escáner de red).

Esta fase de recopilación de información (reconocimiento) es esencial para preparar un ataque dirigido y aumentar las probabilidades de éxito. Software como Nessus y OpenVAS son cruciales para la identificación de vulnerabilidades. Metasploit analiza los datos proporcionados por estas herramientas, comparándolos con las vulnerabilidades presentes en su base de datos de exploits. Metasploitable (una máquina virtual basada en Ubuntu) permite probar las funcionalidades de Metasploit en un entorno seguro.

Contextos de uso de Metasploit

Metasploit se usa tanto para ataque (red teaming) como para defensa (blue teaming):

  • Pruebas de penetración: Identificar vulnerabilidades en sistemas y aplicaciones.
  • Verificación de parches: Probar la eficacia de los parches recientemente instalados.
  • Pruebas de regresión: Asegurarse de que las actualizaciones o modificaciones no hayan introducido nuevas vulnerabilidades.
  • Ingeniería de seguridad: Reforzar los sistemas contra amenazas complejas.

¿Qué necesitas saber para aprender Metasploit?

  • Sistemas y redes: Conocimiento de vulnerabilidades, protocolos de red, arquitectura de sistemas operativos y redes, transmisión de datos, cifrado y configuración.
  • Teoría de pentesting y hacking: Funcionamiento de los ataques.
  • Bases de datos: Creación, configuración y manejo de bases de datos.
  • Ruby: Aunque no es estrictamente necesario al principio (se puede usar Python), es el lenguaje en el que está escrito Metasploit.
  • Linux: Aunque funciona en otros sistemas operativos, se utiliza con mayor frecuencia en Linux, especialmente Kali Linux, por su flexibilidad y capacidad de adaptación para tareas de pentesting.

Cómo empezar con Metasploit

Necesitas un sistema separado para practicar, preferiblemente Kali Linux con Metasploit ya instalado y sin antivirus ni firewalls que puedan interferir. Puedes descargar e instalar Kali Linux o instalar Metasploit desde el sitio web oficial de Rapid7 en un sistema de prueba. Al primer inicio, configura la base de datos y luego puedes comenzar a trabajar. Los cursos pueden ayudarte a comprender la seguridad de red, la teoría y la práctica.

Captura de pantalla de la interfaz de línea de comandos (CLI) de Metasploit Framework.
Explora la interfaz de línea de comandos de Metasploit.

Formas de usar Metasploit

Se puede acceder o utilizar Metasploit de varias maneras. El método más común que uso es la consola interactiva de Metasploit. Esta se activa escribiendo sudo msfconsole en la línea de comandos de Kali. También hay otros métodos.

Interfaz gráfica (Metasploit Community/Pro)

Si prefieres una interfaz gráfica, la versión Community y Pro de Metasploit ofrecen una interfaz web que puedes usar desde tu navegador. Para iniciarla, asegúrate de que los servicios necesarios estén corriendo:

> service postgresql start
> msfdb init

Luego, accede a la interfaz web siguiendo las instrucciones en el sitio de Rapid7. No es tan flexible como msfconsole, pero es útil si te sientes más cómodo con una GUI.

Otras herramientas

Existen herramientas como Cobalt Strike (comercial) que integran Metasploit para entornos más avanzados, pero para este curso nos enfocaremos en msfconsole, ya que es la forma más poderosa y directa de usar Metasploit. Dominar la línea de comandos es clave para cualquier hacker o especialista en ciberseguridad.

Módulos

Metasploit tiene seis tipos diferentes de módulos:

  • payloads: El código que dejaremos en el sistema hackeado. Algunas personas lo llaman listener, rootkit, etc. En Metasploit se les llama payloads. Estas payloads incluyen shells de comandos, Meterpreter, etc. Las payloads pueden ser multietapa, integradas, NoNX (en algunos procesadores modernos evita la función “No ejecutar”), PassiveX (evita las reglas limitadas del firewall saliente) e IPv6.
  • exploits: El shellcode que explota una vulnerabilidad o debilidad del sistema. Dependen del sistema operativo, del Service Pack (SP), del servicio, del puerto e incluso de la aplicación. Se clasifican por sistema operativo, por lo que un exploit de Windows no funcionará en un sistema operativo Linux y viceversa.
  • post: Módulos que podemos usar después de explotar un sistema.
  • nops: Abreviatura de No OPerationS. En los procesadores x86, esto suele indicarse con el hexadecimal 0x90. Simplemente significa “no hacer nada”. Esto puede ser crucial en la creación de un desbordamiento de búfer. Podemos ver los módulos nops con el comando show.
> show nops
  • auxiliary: Incluye miles de módulos que no encajan en ninguna de las otras categorías. Incluyen cosas como fuzzers, escáneres, ataques de denegación de servicio y mucho más.
  • encoders: Módulos que nos permiten codificar nuestros payloads de diferentes maneras para evitar el antivirus y otros dispositivos de seguridad. Podemos ver los encoders escribiendo:
> show encoders

Metasploit tiene muchos encoders incorporados. Aunque shikata_ga_nai era un favorito en el pasado, los antivirus modernos son más efectivos contra él. Herramientas externas como Veil o Hyperion pueden ser más útiles para evasión avanzada.

  • evasion: Este módulo te permite crear payloads que intentan evadir sistemas como Windows Defender. Utilizan técnicas como cifrado, ofuscación y aleatorización para evitar detección. Sin embargo, la efectividad depende del antivirus y las actualizaciones de seguridad del objetivo.

Comandos clave

Veamos algunos de estos comandos clave. Podemos obtener una lista de comandos escribiendo help en el prompt de metasploit (msf6).

> help

Ten en cuenta que podemos acceder a este menú de ayuda con “?”.

  • use: El comando use carga un módulo. Por ejemplo, si quisiera cargar el módulo exploit/windows/smb/ms17_010_eternalblue (un exploit famoso para Windows), escribiría:
> use exploit/windows/smb/ms17_010_eternalblue
  • show: Ya lo hemos visto antes. Después de cargar un módulo, el comando show puede ser muy útil para heredar información adicional sobre el módulo. Las tres que uso con más frecuencia son: show options, show payloads y show target. Veamos primero show payloads.
> show payloads

Este comando, cuando se usa después de seleccionar tu exploit, te mostrará todas las payloads compatibles con ese exploit. Si ejecutas este comando antes de seleccionar un exploit, te mostrará TODAS las payloads, una lista MUY larga.

  • show options: Este comando también es muy útil para ejecutar un exploit. Muestra todos los parámetros que deben configurarse antes de ejecutar el módulo. Estos parámetros incluyen cosas como direcciones IP, ruta URI, puerto, etc.
  • show targets: Un comando menos utilizado es “mostrar objetivos”. Cada exploit tiene una lista de objetivos con los que funcionará. Usando el comando show target, podemos obtener su lista. En este caso, el objetivo se selecciona automáticamente, pero algunos exploits tienen hasta 100 objetivos diferentes, y el éxito a menudo dependerá de elegir el correcto. Estos objetivos pueden estar definidos por el sistema operativo, el Service Pack y el idioma, entre otras cosas.
  • info: El comando info es simple. Cuando lo escribes después de seleccionar un módulo, te muestra información clave sobre el módulo, incluyendo los parámetros que deben configurarse, la cantidad de espacio de payload y una descripción del módulo. Normalmente lo ejecuto siempre después de seleccionar mi exploit.
  • search: El comando search es súper útil para encontrar módulos en la enorme base de datos de Metasploit (¡más de 3000 módulos!). Puedes buscar por palabras clave, pero para ser más preciso, usa:
    • platform: El sistema operativo para el que está diseñado el módulo;
    • type: El tipo de módulo, que incluye exploits, nops, payloads, post, encoders, etc.
    • name: Si conoces el nombre del módulo, puedes buscar por su nombre.

La sintaxis es la palabra clave seguida de dos puntos y luego el valor, por ejemplo:

> search type:exploit platform:windows smb

Esto buscará exploits para Windows relacionados con SMB, como el famoso EternalBlue.

  • set: Este comando se usa para establecer parámetros en el módulo que has seleccionado. Por ejemplo, si miramos arriba el comando show options, veremos muchos parámetros que deben establecerse, como RHOSTS, LHOST, RPORT. Podemos establecer cualquiera de ellos usando el comando set:
> set RHOSTS 192.168.1.100
  • unset: Este comando anula un parámetro establecido previamente:
> unset RHOSTS
  • exploit: Después de cargar nuestro exploit y configurar todas las opciones necesarias, la última acción es “exploit”. Esto envía el exploit al sistema objetivo y, si tiene éxito, establece la payload.
  • back: Podemos usar el comando back para “retroceder” en nuestro proceso. Por ejemplo, si decidimos que no queremos usar el exploit cargado, escribimos back, y esto lo deselecciona.
  • exit: El comando exit termina msfconsole y vuelve a la shell BASH.

En muchos exploits, verás los siguientes parámetros (variables):

  • RHOSTS: El host remoto o la IP de destino
  • LHOST: El host local o la dirección IP del atacante
  • RPORT: El puerto remoto o el puerto de destino
  • LPORT: El puerto local o el puerto del atacante

Todos ellos se pueden establecer con el comando SET seguido del nombre de la variable y luego el valor.

> set RHOSTS 192.168.1.100

Aunque esta no es una lista completa de los comandos de Metasploit, con estos podrás realizar la mayoría de las funciones. Cuando necesitemos otro comando en este curso, lo presentaré en su momento, pero esto es todo lo que probablemente necesitarás por ahora.

Conclusiones

Metasploit es un software esencial para los expertos en ciberseguridad, especialmente útil para realizar pruebas de penetración con eficacia y precisión. Ve la documentación oficial aquí, o la guía de uso de Kali Linux.

¿Necesitas más tutoriales? Te tenemos cubierto:

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda