ACTUALIZADO A DÍA 28/01/2021
COMANDOS Y CONCEPTOS BÁSICOS
MetaSploit Framework se puede ejecutar de diferentes formas:
  • Utilizando msfconsole y lanzando una a una las instrucciones desde el interprete, algo que resulta cómodo y conocido.
  • Desde línea de comandos con msfconsole y la opción “-x”, en donde se admiten cada una de las instrucciones que ejecutará el interprete de forma automática. Por ejemplo, se podría lanzar el comando msfconsole -x “use exploit/multi/handler; set PAYLOAD windows/x64/meterpreter/reverse_tcp; set LHOST 10.10.10.10; set LPORT 4444; exploit -j”. Estas instrucciones se ejecután de forma secuencial, por lo tanto no será necesario escribir una a una desde el interprete de meterpreter.
  • Utilizando un “resource bundle” que representa una forma muy similar al uso de la opción “-x”, solamente que en este caso se utiliza la opción “-r” y se envía un fichero de texto, que típicamente tendrá extensión “.rb” aunque no es obligatorio. Dicho fichero tendrá en cada línea, una instrucción valida para el interprete de msfconsole y dichas instrucciones se ejecutarán de forma secuencial, por lo tanto, del mismo modo que ocurre con la opción “-x” el orden es importante.
En Metasploit Framework existen algunos conceptos que hay que tener claros, a continuación se explican rápidamente.
AUXILIARY: Un módulo auxiliar es un programa que permite obtener información sobre el objetivo con el fin de detectar posibles vulnerabilidades o fugas de información, este tipo de programas son útiles para establecer una estrategia de ataque sobre un sistema objetivo. Son especialmente útiles en la etapa de fingerprinting para facilitar el proceso de enumeración de posibles vulnerabilidades y posterior explotación.
EXPLOIT: Un exploit es un programa que explota una o varias vulnerabilidades en un software determinado, frecuentemente es utilizado para ganar acceso a un sistema y tener un nivel de control sobre él.PAYLOAD: La carga útil representa un conjunto de instrucciones que acompañan a un exploit y que se ejecutarán para aprovechar la vulnerabilidad. La elección de un buen payload es una decisión muy importante a la hora de mantener el nivel de acceso obtenido en un sistema. En el entorno del sistema comprometido pueden existir mecanismos de seguridad perimetral que pueden dificultar la actividad de muestras maliciosas, por este motivo algunos payloads se ejecutan completamente en memoria y no escriben nada en disco para evitar la detección (fileless) y además, pueden incluir rutinas de ofuscación que hacen puedan pasar inadvertidos más fácilmente.

COMANDOS DE MSFCONSOLE:

help: Tal como su nombre indica permite obtener ayuda en un contexto determinado (exploit o módulo).
back: Permite salir del contexto actual de ejecución (exploit o modulo)
check: Aunque no todos los exploits lo soportan, permite ver si un objetivo determinado es vulnerable al exploit que se encuentra actualmente seleccionado en la consola.
connect: Al igual que se puede realizar una conexión TCP por medio de telnet o netcat, este comando permite establecer una conexión a un host remoto y enviar ficheros si es lo que desea, también soporta SSL si se le indica la opción -s
msf> connect 192.168.1.34 23
exploit: Comando utilizado para realizar la ejecución del exploit cargado en el contexto de la consola.
run: Comando utilizado para realizar la ejecución del módulo/auxiliary cargado en el contexto de la consola.
irb: Permite ejecutar el interprete de Ruby para metasploit, de este modo se pueden ingresar comandos y crear scripts al vuelo, esta característica es muy interesante para conocer la estructura interna del framework.
jobs: Se trata de módulos que se encuentran en ejecución en segundo plano o “background”. Este comando permite listar y terminar trabajos existentes.
load: Permite cargar un plugin desde el directorio de plugins ubicado en la ruta de instalación, recibe como parámetro el nombre del plugin.
unload: Descarga un plugin cargado, recibe como parámetro el nombre del plugin a descargar.
loadpath: Trata de cargar un directorio donde se encuentran ubicados módulos, plugins o exploits externos al framework, de esta forma es posible tener exploits, payloads, etc. en un directorio independiente. Sin embargo, no hay que olvidar que en MSF se crea un directorio en <USER_HOME>/.msf4 en el que se pueden ubicar los módulos desarrollados.
resource: Carga un fichero de script que es posteriormente utilizado por algún exploit o modulo que depende de él.
route: Permite establecer las tablas de enrutamiento de las sesiones de Metasploit generadas. Funciona similar al comando route de Linux, permite adicionar subredes, mascaras de red y gateways.
info: Despliega información adicional de un módulo o exploit seleccionado anteriormente en la consola, incluyendo todas las opciones, objetivos y otra información.
set: Permite establecer opciones del módulo o exploit seleccionado con el fin de introducir la información necesaria para su correcta ejecución.
unset: Elimina el valor actual de una variable del exploit o módulo en uso.
sessions: Permite listar, interactuar y terminar sesiones generadas por módulos o exploits, estas sesiones pueden ser consolas a máquinas remotas VNC, BASH, PowerShell, Python, Meterpreter etc. con la opción -l se pueden listar las sessiones generadas, -i <number> permite iniciar la interacción con el número de consola establecido. Hay que tener en cuenta que la opción “-u” permite actualizar una sesión plana (plain shell) a una sesión Metepreter si es posible.
search: permite ejecutar una búsqueda basada en expresiones regulares con un texto que pueda coincidir con el nombre de un módulo o exploit.
show: Permite mostrar las diferentes opciones para módulos, exploits y payloads.
msf> show auxiliary
msf> show exploits
msf> show payloads
msf> show options
msf> show targets
msf> show advanced
msf> show encoders
msf> show nops
msf> show evasion

setg: Permite definir variables globales que serán empleadas por todos los módulos o exploits cargados, de esta forma es posible definir variables bastante comunes como LHOST, RHOST, LPORT, RPORT, etc. en una única interacción con la consola sin escribir lo mismo una y otra vez.
save: Permite almacenar de forma permanente las variables globales establecidas con el comando setg y las variables especificas de cada exploit en uso.
use: Permite establecer el exploit o modulo a usar en la consola de metasploit.

Estos son los comandos más comunes de Metasploit Framework y será suficiente para comenzar una interacción básica con el framework.

Un saludo y Happy Hack!
Adastra.