Uso de variables globales para la eficiencia en Metasploit

Kali LinuxBeginner
Practicar Ahora

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_ADDRESS con la dirección IP real del comando hostname -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 set para opciones que son específicas de un solo objetivo o módulo. El ejemplo más común es RHOSTS (la IP del host/objetivo remoto), que casi siempre cambia para cada exploit que utiliza. Otros ejemplos incluyen TARGETURI o un USERNAME especí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 de msfconsole.
  • 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 setg para opciones que probablemente permanezcan iguales durante toda su sesión. LHOST es el ejemplo perfecto, ya que la dirección IP de su máquina atacante generalmente no cambia. LPORT tambié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.