Aprende a usar el Metasploit Framework

En un artículo previo hablamos acerca de los Frameworks de Explotación o, en inglés, Hacking Frameworks. En el post de hoy revisaremos con mayor detalle uno de ellos: el Metasploit Framework.

Breve historia de Metasploit

De acuerdo con Wikipedia (2018), el autor inicial de Metasploit fue el reconocido experto en seguridad de redes y programador de código abierto, H.D. Moore. Moore creó el Metasploit Project en el año 2003 como un esfuerzo por poner al alcance del público una herramienta completa para efectuar tareas de pentesting de forma semi-automatizada, dado que hasta entonces – si bien existían herramientas individuales para realizar tareas específicas – los frameworks de explotación completos, eran todos comerciales.

No fue sino hasta 2009, que entró en la escena la empresa Rapid 7, la cual adquirió el proyecto con el compromiso de mantener la versión Framework como un proyecto de código abierto, tema que hasta el día de hoy se ha cumplido.

En ese lapso Rapid 7 desarrolló otras versiones a partir de Metasploit Framework como son las versiones Community, Express y Professional; anunciando en Junio de 2018 el fin de la versión Express en favor de la versión Professional.

Componentes de Metasploit

El Metasploit Framework, o MSF, está compuesto de módulos de diversos tipos que pueden guardar información en una base de datos Postgres. Dicha base se incluye con el MSF y la primera vez que se inicia el programa de setup, este crea la estructura de tablas requeridas. La interacción del usuario con el MSF se realiza a través de interfaces propias en línea de comandos como el msfconsole y msfcli. No obstante, las versiones Community, Professional y la extinta Express, se acceden a través de una interfaz web. Adicionalmente, existe una interfaz gráfica de código abierto que se integra con el MSF denominada Armitage. La empresa que desarrolla Armitage, Fast and easy hacking, provee también una versión pagada llamada Cobalt Strike que, entre otras cosas, automatiza ciertas tareas de pentesting. En la siguiente figura se observan los componentes de Metasploit.

Los módulos del MSF pueden ser de distintos tipos:

  • Auxiliares
  • Exploits
  • Payloads
  • Post
  • Noop

Los módulos auxiliares se usan para realizar tareas puntuales como por ejemplo: escanear objetivos, detectar servicios, efectuar enumeración, realizar ataques de claves, etc. Los módulos de tipo exploit, por otro lado, tal y como su nombre sugiere, sirven para explotar vulnerabilidades en sistemas remotos. Una particularidad de los exploits es que requieren que se les asigne un payload (en español, carga).

Un payload es un tipo de módulo especial que contiene un código que realiza una tarea específica en una plataforma particular. Dicho payload es usualmente ejecutado en el host víctima como fase final de un exploit, luego de que la vulnerabilidad ha sido explotada. Un payload puede hacer cosas como abrir un shell, agregar un usuario, capturar claves, etc.

Un módulo de tipo post sirve para realizar tareas de post-explotación; es decir, una vez que ya hemos logrado explotar una vulnerabilidad y tenemos una sesión abierta en el sistema víctima. Algunos ejemplos de tareas que podrían efectuarse con un módulo post: listar directorios, subir/bajar archivos, colocar un backdoor, extraer hashes, etc.

Finalmente, los módulos noop, también llamados módulos de no-operación, son un concepto avanzado que no pretendo explicar con detalle ahora, pero de forma breve se usan para mantener consistente el tamaño de un payload.

Comandos del msfconsole

La interfaz msfconsole permite interactuar de forma sencilla con el MSF a través de un prompt que acepta comandos. Para ver la ayuda de comandos escribimos help o el signo de interrogación (?). La siguiente tabla muestra los comandos principales disponibles en el msfconsole.

Un elemento importante del MSF es la capacidad de contar con espacios de trabajo (workspaces) que permiten mantener separada la información referente a los hosts auditados de diferentes clientes. El comando workspace permite ver, crear, borrar y alternar espacios de trabajo.

Un comando a resaltar es db_nmap, el cual no es más que el viejo y conocido escáner de puertos NMAP, portado al MSF para guardar la información recabada sobre los hosts auditados en las tablas del espacio de trabajo activo.