Herramienta Metasploit y Msfvenom

Herramienta Metasploit 

Metasploit es un framework “open source” de Explotación y Postexplotación en infraestructuras y sistemas. Escrito en lenguaje Ruby contiene herramientas orientadas a la explotación de vulnerabilidades. Además mantiene una gran base de datos de exploits de vulnerabilidades conocidas así como herramientas de generación de payloads específicos. También, contiene plugins específicos para integrarlo con motores de Bases de Datos, Nessus y nmap.

Dispone de dos interfaces de acceso:

  • msfconsole: Interfaz de acceso en modo consola, es la opción por defecto.
  • armitage: Interfaz gráfica de acceso, se ha de instalar a parte.

Módulos principales
Metasploit está organizado en cinco módulos principales que desgranamos a continuación:

  • Auxiliary: Módulos de apoyo que nos proporcionan herramientas propias de la Fase de Enumeración y Escaneo así como otras herramientas para realizar ataques de fuerza bruta.
  • Exploits: Contienen todos los exploits presentes en la plataforma Metasploit, se encuentran organizados en un modelo de carpetas jerárquico en base a Sistemas Operativos y Software afectado.
  • Payloads: En este módulo se engloban todos los distintos payloads que maneja Metasploit, acciones simples como la creación de usuarios o grupos, modificación de configuración. Y distintas Shell inversas non-staged y staged así como la Sellcode propia de Metasploit llamada meterpreter.
  • Encoders: Su objetivo es modificar el código del payload con la intención de ofuscarlo y evadir elementos de seguridad como Antivirus o IDS.
  • Post: Estos son todos los módulos de Postexplotación disponibles en Metasploit. Nos ayudan en las actividades posteriores a la explotación de un sistema y su objetivo está relacionado con la transferencia de ficheros, ejecución de técnicas para lograr persistencia en la víctima, automatización de procesos, técnicas de elevación de privilegios, etc.

Uso de Metasploit
Metasploit dispone de un acceso por consola a través de la herramienta msfconsole. En este submódulo se introducirán las opciones básicas de uso de msfconsole.

Para poder acceder a msfconsole sólo hay que invocarla desde la línea de comandos:

$ msfconsole

Se iniciará el intérprete de la consola msfconsole, podemos indicar el comando help para comprobar el listado de comandos disponible.

La lista de comandos disponibles es bastante extensa. Sin embargo introduciremos los más importantes:

  • Search

El comando search sirve para realizar búsquedas en los módulos de Metasploit. La búsqueda se realiza en los campos de nombre y descripción por lo que si se buscara por el término “Windows” se incluirían todos los resultados que contengan la palabra Windows en el nombre del módulo o en la descripción:

msf > search Término_a_buscar

  • Info

El comando info proporciona información detallada sobre un módulo en particular de Metasploit sobre el que se consulta. Normalmente se utiliza para ver la descripción de un módulo antes de seleccionarlo para su uso, el target al que va destinado así como las opciones de configuración del módulo (IP y Puerto de la víctima, credenciales en caso de ser necesarias, etc.):

msf > info ruta_del_modulo_a_consultar

  • Show

Show sirve para mostrar todos los módulos disponibles en Metasploit. También se puede filtrar por categorías de módulos. Por ejemplo, si quisiéramos mostrar todos los módulos auxiliares emplearemos el siguiente comando:

msf > show auxiliary

De la misma manera, podemos mostrar todos los exploits existentes en Metasploit:

msf > show exploits

Por otro lado, cuando tenemos seleccionado un módulo (con el comando use) también podemos mostrar las opciones del módulo mediante el comando show options:

msf > show options

Los Sistemas Operativos contra los que se puede lanzar el exploit que tenemos seleccionado:

msf > show targets

Incluso podemos indicar que nos muestre los distintos payloads compatibles para el
exploit seleccionado:

msf > show payloads

  • Use

Una vez que se ha localizado el módulo que queremos utilizar (mediante el comando search o show) el comando use sirve para seleccionar el módulo y configurar las variables necesarias para su correcto funcionamiento (con el comando set):

msf > use nombre_del_modulo

  • Set

El comando set sirve para configurar las opciones de cada módulo y establecer un valor adecuado para el correcto funcionamiento del módulo (Recordad que hemos visto que con el comando show options podíamos ver las opciones del módulo que tengamos seleccionado):

msf (ms09_050_smb2_negotiate_func_index) > set nombre_de_la_variable valor_de_la_variable

  • Exploit o Run

Sirve para ejecutar el módulo seleccionado una vez se han configurado las variables necesarias de manera correcta.

Para obtener un listado completo de los comandos de Metasploit y su uso específico podéis acceder al siguiente enlace (https://www.offsec.com/metasploit-unleashed/msfconsole-commands/).

Herramienta Msfvenom

La herramienta msfvenom es una herramienta incluida en la suite Metasploit que se utiliza para generar los payloads utilizados por el propio Metasploit. También es posible generar estos payloads por separado y en numerosos formatos de salida:

  • Formato binario: Ejecutable .exe o una librería .dll, un fichero compilado de java .jar
  • Formato interpretado: Script en Python, PowerShell, ShellScript, VBScript. 

Tanto Metasploit como msfvenom se encuentran preinstalados en la distribución de Linux Kali. Sin embargo, dado que se encuentra desarrollado bajo el lenguaje de programación Ruby, se puede instalar en cualquier sistema que disponga de un motor de Ruby instalado (incluso en Microsoft Windows.)

Podremos invocar la ayuda de msfvenom con el parámetro -h:

$ msfvenom -h

Opciones de msfvenom
Como podemos comprobar en el output anterior, msfvenom dispone de varias opciones de configuración para generar un payload. Desde las opciones de selección y configuración del exploit hasta la configuración del formato de salida. Si nos fijamos, los payloads de Metasploit y de msfvenom son los mismos. Esto es debido a que Metasploit utiliza msfvenom para generar el payload.

A continuación se muestran las opciones de configuración del payload y el comando para obtener el listado de las mismas:

  • Listar los payloads disponibles:

$ msfvenom -l payloads

  • Listar las plataformas soportadas para la generación del payloads:

$ msfvenom -l plattforms

  • Listar todas las arquitecturas soportadas para la generación del payload:

$ msfvenom -l archs

  • Listar todos los formatos de salida en los que se puede generar el payload:

$ msfvenom -l formats

  • E incluso si queremos que se le aplique algún tipo de codificación al payload para tratar de pasar desapercibido podemos listar todos los encoders disponibles:

$ msfvenom -l encoders

Generar el payload con msfvenom
A la hora de generar el payload, msfvenom dispone de distintos operadores para indicar cada opción de generación del exploit. Por ejemplo el siguiente comando genera un payload “bind reverse Shell” para un sistema Windows con una arquitectura de 32 bits, le aplica el encoder shikata_ga_nai tres veces y excluyendo el badchar “null” (x00 en hexadecimal). Por último el resultado de salida es un script en el lenguaje Python:

$ msfvenom -a x86 --platform Windows -p windows/shell/bind_tcp -e x86/shikata_ga_nai -b '\x00' -i 3 -f python

En el siguiente enlace podéis obtener más información sobre las capacidades y uso de la herramienta msfvenom (https://www.offsec.com/metasploit-unleashed/msfvenom/).