Docly Child

4.2.4. Msfconsole: Comandos básicos módulos

Tabla de contenidos:

Metasploit: Msfconsole

Las prácticas de este bloque se van a realizar con la consola de línea de comandos de Metasploit denominada msfconsole, pues permite aprovechar al máximo el potencial del framework. En el bloque de Information Gathering and Scanning ya se ha dedicado un capítulo para usar de forma rápida los módulos de auxiliary y las opciones de hosts, etc. En esta sección se va a ampliar el uso e información de los comandos básicos. Desde la terminal de Kali Linux, para iniciar msfconsole se introduce el siguiente comando (con el parámetro –q si se quiere inicio rápido):

				
					msfconsole
				
			

Nota: Es altamente recomendable no iniciar msfconsole como usuario root. Si se inicia algún tipo de servicio de red con Metasploit que se exponga a Internet y este es vulnerado en una contraofensiva, el sistema entero podría llegar a estar muy comprometido al obtener el presunto atacante altos privilegios con root

Una de las características de msfconsole es que permite el uso de casi todos los comandos que pueden usarse en la bash (terminal) de Linux. Esto incluye comandos comunes como comprobar la IP (ifconfig), gestionar diferentes servicios o limpiar las líneas de comandos y output generado durante el proceso de explotación.

msfconsole (1)

Con el comando help se pueden ver las diferentes opciones de comandos, siendo de especial interés los referidos al uso de módulos. En los dos siguientes puntos se va explicar el comando de búsqueda de módulos (search) y las diferentes opciones para seleccionar, configurar y usar un módulo.

				
					msf > help
				
			
msfconsole (2)

4.2.4.1. Msfconsole: Search Command

El comando search de la terminal msfconsole de Metasploit permite realizar búsquedas de módulos de forma muy eficiente a partir del uso de parámetros. Para obtener información acerca de este comando se usa la siguiente  instrucción (en msfconsole):

				
					msf > search -h
				
			
search msfconsole

En la información de uso de search se muestran algunos de los parámetros (keywords) o criterios de búsqueda que se pueden incluir. En la imagen se señalan algunos de los más representativos para obtener módulos concretos después de realizar un escaneo de puertos y servicios en una red informática. Los resultados se muestran en formato de tablas, siendo las columnas las indicadas con el círculo rojo (también se pueden ordenar los resultados en función de estas):

search msfconsole keywords

La potencia de este motor de búsqueda está basado en la definición del código del módulo, que es capaz de indexar las diferentes opciones a través de los valores definidos en la función def initialize y que se muestran con el comando info una vez seleccionado el módulo (se verá en siguiente punto).

search y opciones del módulo

Sin más preámbulos, las opciones del comando permiten introducir texto de forma libre para buscar en todo el código del módulo, combinando con las diferentes opciones de parámetros (keywords). Estos parámetros se pueden repetir si es el caso (p. ej.: si se desea buscar para dos puertos diferentes se tendrá que introducir dos veces port:<puerto> port:<puerto>).

				
					msf > search –h [texto] [opcion1:valor1] [opcion2:valor2] (...) [opcionN:valorN] 
				
			

Como se puede intuir, los resultados dependerán en gran medida de los inputs introducidos, aunque si se conocen las características del target para el cual se tiene que buscar algún Exploit no debería resultar complicado. En el siguiente ejemplo se ha buscado un Exploit para un host Linux de los años 2020 y 2021, cuyo rango sea excelente y la descripción esté asociada a un servicio HTTP (web). El resultado arroja hasta 56 resultados con las columnas ya indicadas arriba, aunque podría afinarse más todavía con otros parámetros:

				
					msf > search http platform:Linux type:exploit rank:excellent date:2021 date:2022
				
			
Ejemplo search msfconsole

A continuación algunos comentarios y recomendaciones para los parámetros de búsqueda más útiles:

Parámetro

Descripción

Ejemplos

cve

Búsqueda de un módulo asociado a una vulnerabilidad del registro CVE (Common Vulnerabilities and Exposures). Permite buscar por los dígitos de año y así obtener un listado por años (por ejemplo) y rastrear esta vulnerabilidad con alguna herramienta como Shodan o similar. 

CVE-2021-45056; 2022

check

Para los módulos de tipo exploit, indica si se puede testear si el servicio es vulnerable o no, normalmente empleando para ello un módulo de tipo auxiliary

yes; no

date

Referido a la columna Disclosure date, que traducido es fecha de divulgación o similar. Puede resultar útil como en cve para determinadas prácticas.

2021

name

La mayoría de vulnerabilidades en CVE tienen algún nombre asociado para identificarlas, en algunos casos muy específicos (Eternal Blue) y en otros una simple referencia al servicio, versión y al tipo de vulnerabilidad. En Metasploit se puede identificar también el nombre del módulo por una descripción que guardará relación con la vulnerabilidad.

Texto a indicar

platform

Indica el Sistema Operativo de forma general

Windows; Linux; OSX; Android

port

Indica el puerto en el que opera el módulo de forma predeterminada antes de configurarlo.

22; 443; 3033

rank

Indica la calidad o probabilidad de éxito del módulo. Es un parámetro muy relativo.

excellent; good; average

target

Indicada algun dato específico relacionado con el tipo o marca del servicio y su versión, o bien la versión del sistema operativo. Existen muchas opciones por lo que si no se sabe de antemano que se quiere buscar no va a resultar muy útil y es mejor buscar la referencia simplemente por texto, que indexa a la descripción y puede dar un resultado similar.

apache; windows 7; putty; wireshark; …

type

Indica el tipo de módulo.

exploit; auxiliary; payload; …

4.2.4.2. Mfsconsole: selección y configuración de módulo

A continuación se va explicar de forma genérica como seleccionar y configurar un módulo antes de usarlo, así como algunas recomendaciones. Existen multitud de manuales de uso de Metasploit que normalmente enfocan de forma práctica cómo usar un Exploit (incluyendo caso en laboratorio que termina con una sesión de Meterpreter) pero se suelen omitir detalles generales i/o interesantes. En este punto se hará un anticipo de muchos aspectos genéricos de un módulo para posteriormente ampliar los detalles y pasar a la práctica de forma rápida habiendo ya introducido las diferentes nociones.

Para seleccionar un módulo se debe emplear el comando use. La forma más práctica es realizar una búsqueda con el comando search y seleccionar alguna de las opciones añadiendo el parámetro de la columna # del resultado, que es un número. Una vez seleccionado el módulo, cambia la cabecera de la consola, poniendo el nombre del módulo entre paréntesis. Además, si el módulo es de tipo Exploit por defecto suele venir con la configuración de un payload. En el ejemplo de abajo se ha buscado un exploit para el SO Linux, para una vulnerabilidad de tipo RCE en el 2021:

				
					msf > search name:rce type:exploit platform:linux date:2021 check:yes rank:excellent
msf > use <#>

				
			
Comando use mfsconsole

Una vez se ha seleccionado el módulo, se puede volver a deseleccionar con el comando back. También se puede seleccionar directamente un módulo si se conoce el nombre, que se corresponde a la parte final de la secuencia de clasificación de módulos de Metasploit

				
					msf > back
msf > use <module_name>

				
			
Comando use mfsconsole (2)

Una vez seleccionado el módulo, si no se conoce de antemano para que tipo de vulnerabilidad o especificidad ha sido diseñado se recomienda emplear el comando info. En la imagen de abajo se ha recortado parte del contenido (que también se ve con el comando options, que se mostrará a continuación), pero conviene destacar las secciones de parámetros que son usados en la búsqueda, los targets disponibles y una descripción que proporciona información de la vulnerabilidad si es un Exploit (normalmente incluye referencias o el código CVE). En el ejemplo de abajo, la vulnerabilidad RCE está diseñada para el servicio de IGEL OS, que de acuerdo a la información en Internet es un servicio proporcionado por una empresa especializada en servicios de virtualización en cloud.

				
					msf (module) > info
				
			
Comando info msfconsole

Una vez estudiado el módulo con la información obtenida, antes de usar se debe parametrizar o lo que se llama en argot setear. En el caso de un módulo de tipo Exploit con un payload se puede llegar a configurar el menos 5 bloques de parámetros agrupados en básicos y avanzados. Para cada uno de estos bloques Metasploit organiza la información de acuerdo a estas 4 columnas: nombre del parámetro (Name), valor actual (Current Setting), si es o no obligatorio (Required) y una breve descripción (Description). Los parámetros a configurar dependerán del diseño del módulo, información que está recogida en el script o código.

Los bloques básicos para la configuración estándar son para el módulo, el payload y el target. La información de los parámetros de estos bloques se obtiene con el comando options. A continuación una breve descripción de estos y los más habituales:

				
					msf (module) > options
				
			

Options

Descripción

Parámetros habituales

Module options

Parametrizar la parte específica del módulo

RHOSTS: Para indicar la dirección IP de los targets (sea privada o pública).

RPORT: Para indicar el puerto en el que opera el servicio del target. 

SRVHOST: Para indicar la IP local en el que se va a crear un servicio auxiliar para el módulo. Si se trata de la máquina donde opera Metasploit se pondrá por defecto 0.0.0.0.

SRVPORT: Para indicar el puerto local en que opera el servicio auxiliar creado.

Payload options

Parametrizar la parte específica del payload.

LHOST: Si es un payload de tipo reverse, para indicar la IP local desde el cual se va a establecer una conexión con el target y obtener una shell (si es el caso). Se recomienda añadir el parámetro IP local obtenido por el comando ifconfig.

LPORT: Puerto local para establecer el servicio  del payload. En Metasploit es habitual poner por defecto el 4444, aunque se puede poner otro.

Exploit target

Parametrizar el tipo de target.

target: Es un único parámetro (target) para indicar propiedades específicas del tipo de versión del software para el cual se va a usar el módulo.

Parámetro options módulo Metasploit

Los otros dos bloques de parámetros se corresponden a la configuración avanzada del módulo y el payload. En puntos siguientes se va a estudiar algunos de estos parámetros aunque como el nombre indica requieren conocimientos avanzados. Para ver estos parámetros se usa el comando advanced.

				
					msf (module) > advanced
				
			
Parámetro advanced módulo Metasploit

Al ser parámetros cuyo nombres (Name) es univoco, se pueden setear (i.e., incluir un valor) utilizando la siguiente secuencia de comandos (a tener en cuenta que el target será siempre uno):

				
					msf (module)> set [nombre_parametro] [valor_parametro]
				
			
Setear opciones en módulo Metasploit

Otro aspecto a tener en cuenta para configurar un módulo de tipo Exploit es el payload a incluir. Como ya se ha indicado más arriba, los exploits en Metasploit suelen incluir por defecto algún payload. No obstante, este se puede cambiar, pues como se ha indicado en la introducción un mismo payload puede resultar útil para diferentes exploits y viceversa. Una característica de Metasploit es proponer qué payloads pueden ir bien en función del Exploit, y después seleccionar alguno. Para ello se utilizan los comandos siguientes, pudiendo emplear la función use de nuevo para seleccionar en esta ocasión el payload (Nota: También se puede usar el nombre del payload en vez del número):

				
					msf (module) > show payloads
msf (module) > set payload [#]
msf (module) > set payload [payload_name]

				
			
Setear payload en módulo Exploit de Metasploit

Una vez configurado el módulo, se puede ver como ha quedado la parametrización usando de nuevo los comandos options o advanced. Si se ha cambiado el payload, los valores de configuración pueden haber cambiado también. Ahora el módulo ya estaría listo para ser usado.

Opciones seteadas en módulo Metasploit