Introducción
Al trabajar con Metasploit Framework, a menudo necesita configurar varias opciones para diferentes módulos, como LHOST (el host local en el que escuchar) y LPORT (el puerto local). Configurar estas opciones repetidamente para cada módulo puede consumir mucho tiempo. Metasploit proporciona una función llamada variables globales para abordar esto. Al configurar una variable globalmente, se aplicará automáticamente a cualquier módulo que utilice esa opción, mejorando significativamente la eficiencia de su flujo de trabajo.
En este laboratorio, aprenderá a configurar, usar y eliminar variables globales dentro de la consola de Metasploit.
Usar el comando setg para configurar un LHOST global
En este paso, iniciará la consola de Metasploit y configurará una variable global para LHOST. El comando setg se utiliza para establecer una variable que persistirá en diferentes módulos dentro de la misma sesión de msfconsole.
Primero, encontremos la dirección IP de su entorno de laboratorio. Esta IP se utilizará como valor para LHOST.
hostname -I | awk '{print $1}'
Verá una salida similar a esta (su dirección IP será diferente):
192.168.3.123
Recuerde esta dirección IP. Ahora, inicie la consola de Metasploit Framework. La bandera -q se utiliza para el modo "silencioso" (quiet), que suprime el banner de inicio.
msfconsole -q
Su prompt cambiará a msf6 >. Ahora, configuremos la variable LHOST globalmente. Utilice el comando setg seguido del nombre de la variable y la dirección IP que acaba de encontrar.
Nota: Por favor, reemplace
YOUR_IP_ADDRESScon la dirección IP real del comandohostname -I.
setg LHOST YOUR_IP_ADDRESS
Debería ver un mensaje de confirmación:
LHOST => YOUR_IP_ADDRESS
Este comando ha almacenado ahora su dirección IP como un valor global de LHOST para esta sesión. Para verificar esto, puede usar el comando show con la bandera -g, que muestra todas las variables configuradas globalmente.
show -g
La salida listará todas las variables globales:
Global
=======
Name Value
---- -----
LHOST YOUR_IP_ADDRESS
Seleccionar un nuevo módulo de exploit
En este paso, seleccionará un módulo de exploit para ver cómo se aplica automáticamente la variable global. Utilizaremos el manejador de carga útil genérico, exploit/multi/handler, como nuestro primer ejemplo. Este módulo se utiliza comúnmente para escuchar conexiones entrantes.
Dentro del prompt de msfconsole, use el comando use para seleccionar el módulo:
use exploit/multi/handler
Después de ejecutar el comando, su prompt cambiará para reflejar el módulo seleccionado actualmente:
msf6 exploit(multi/handler) >
Esto indica que ahora se encuentra en el contexto del módulo exploit/multi/handler. Cualquier opción que configure o muestre será específica para este módulo, pero también heredará cualquier variable global relevante.
Observe que el valor de LHOST ya está poblado
Ahora que tiene un módulo cargado, revisemos sus opciones para ver si nuestra variable global LHOST se aplicó.
En este paso, utilizará el comando show options para mostrar la configuración del módulo actual.
Desde el prompt msf6 exploit(multi/handler) >, ejecute el siguiente comando:
show options
Verá una tabla de opciones para este módulo. Busque la variable LHOST. Notará que su valor ya está configurado con la dirección IP que configuró globalmente en el primer paso.
Module options (exploit/multi/handler):
Name Current Setting Required Description
---- --------------- -------- -----------
Payload options (generic/shell_reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST YOUR_IP_ADDRESS yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Wildcard Target
Como puede ver, no necesitó usar el comando set LHOST para este módulo porque el valor global se heredó automáticamente. Este es el poder de usar variables globales.
Usar el comando unsetg para eliminar una variable global
En este paso, aprenderá cómo eliminar una variable global. Si ya no necesita que una variable se aplique globalmente, puede usar el comando unsetg. Esto es útil cuando desea volver a configurar opciones por módulo o desea limpiar la configuración de su sesión.
Desde el prompt de Metasploit, ejecute el comando unsetg seguido del nombre de la variable que desea eliminar.
unsetg LHOST
Este comando eliminará la variable LHOST del ámbito global. Verá un mensaje de confirmación:
Unsetting LHOST...
Ahora, si ejecuta show options nuevamente para el mismo módulo, verá que el valor de LHOST está vacío.
show options
La salida ahora mostrará que LHOST no tiene ningún valor establecido.
Module options (exploit/multi/handler):
Name Current Setting Required Description
---- --------------- -------- -----------
Payload options (generic/shell_reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Wildcard Target
Ahora necesitaría establecer LHOST localmente para este módulo usando el comando set si quisiera usarlo.
Discutir cuándo usar opciones globales versus locales
En este último paso, discutiremos las diferencias prácticas entre establecer variables locales y globales y cuándo usar cada una. Comprender esto le ayudará a trabajar de manera más efectiva en Metasploit.
Variables Locales (usando set)
- Ámbito: Una variable establecida con el comando
set(por ejemplo,set RHOSTS 10.10.10.1) es local al módulo cargado actualmente. - Comportamiento: Cuando cambia a un nuevo módulo usando el comando
use, esta variable local se descarta. El nuevo módulo tendrá su propio valor predeterminado o vacío para esa opción. - Cuándo usar: Use
setpara opciones que son específicas de un solo objetivo o módulo. El ejemplo más común esRHOSTS(la IP del host/objetivo remoto), que casi siempre cambia para cada exploit que utiliza. Otros ejemplos incluyenTARGETURIo unUSERNAMEespecífico.
Variables Globales (usando setg)
- Ámbito: Una variable establecida con el comando
setg(por ejemplo,setg LHOST 192.168.3.123) es global para toda la sesión demsfconsole. - Comportamiento: La variable y su valor serán heredados automáticamente por cualquier módulo que utilice ese nombre de opción. Persiste incluso cuando cambia de módulo.
- Cuándo usar: Use
setgpara opciones que probablemente permanezcan iguales durante toda su sesión.LHOSTes el ejemplo perfecto, ya que la dirección IP de su máquina atacante generalmente no cambia.LPORTtambién puede ser un buen candidato para una variable global si utiliza consistentemente el mismo puerto de escucha.
Resumen de Comandos:
set <VARIABLE> <VALOR>: Establece una variable solo para el módulo actual.setg <VARIABLE> <VALOR>: Establece una variable globalmente para todos los módulos en la sesión.unset <VARIABLE>: Borra una variable local en el módulo actual.unsetg <VARIABLE>: Borra una variable global.
Al usar estratégicamente set para opciones específicas del objetivo y setg para opciones de toda la sesión, puede minimizar la configuración repetitiva y centrarse más en el proceso de explotación.
Ahora puede salir de la consola de Metasploit.
exit
Resumen
En este laboratorio, aprendió a usar variables globales de manera efectiva en el Metasploit Framework para optimizar su flujo de trabajo. Practicó el uso del comando setg para definir un LHOST global, observó cómo se completaba automáticamente en diferentes módulos y utilizó el comando unsetg para eliminarlo. También aprendió las diferencias clave entre variables locales (set) y globales (setg), lo que le permite tomar decisiones de configuración más eficientes durante una prueba de penetración. Dominar este concepto simple puede ahorrar una cantidad significativa de tiempo y reducir errores en escenarios complejos.


