Utiliser les variables globales pour l'efficacité dans Metasploit

Kali LinuxBeginner
Pratiquer maintenant

Introduction

Lorsque vous travaillez avec le Metasploit Framework, vous avez souvent besoin de définir diverses options pour différents modules, telles que LHOST (l'hôte local sur lequel écouter) et LPORT (le port local). Définir ces options de manière répétée pour chaque module peut être fastidieux. Metasploit propose une fonctionnalité appelée variables globales pour résoudre ce problème. En définissant une variable globalement, elle sera automatiquement appliquée à tout module qui utilise cette option, améliorant ainsi considérablement l'efficacité de votre flux de travail.

Dans ce laboratoire, vous apprendrez comment définir, utiliser et annuler les variables globales dans la console Metasploit.

Utiliser la commande setg pour définir un LHOST global

Dans cette étape, vous allez démarrer la console Metasploit et définir une variable globale pour LHOST. La commande setg est utilisée pour définir une variable qui persistera entre différents modules au sein de la même session msfconsole.

Tout d'abord, trouvons l'adresse IP de votre environnement de laboratoire. Cette IP sera utilisée comme valeur pour LHOST.

hostname -I | awk '{print $1}'

Vous verrez une sortie similaire à celle-ci (votre adresse IP sera différente) :

192.168.3.123

Notez cette adresse IP. Maintenant, démarrez la console Metasploit Framework. Le drapeau -q est utilisé pour le mode "silencieux" (quiet), qui supprime la bannière de démarrage.

msfconsole -q

Votre invite changera pour msf6 >. Maintenant, définissons la variable LHOST globalement. Utilisez la commande setg suivie du nom de la variable et de l'adresse IP que vous venez de trouver.

Note : Veuillez remplacer YOUR_IP_ADDRESS par l'adresse IP réelle obtenue avec la commande hostname -I.

setg LHOST YOUR_IP_ADDRESS

Vous devriez voir un message de confirmation :

LHOST => YOUR_IP_ADDRESS

Cette commande a maintenant stocké votre adresse IP comme valeur globale LHOST pour cette session. Pour vérifier cela, vous pouvez utiliser la commande show avec le drapeau -g, qui affiche toutes les variables définies globalement.

show -g

La sortie listera toutes les variables globales :

Global
=======

  Name   Value
  ----   -----
  LHOST  YOUR_IP_ADDRESS

Sélectionner un nouveau module d'exploitation

Dans cette étape, vous allez sélectionner un module d'exploitation pour voir comment la variable globale est automatiquement appliquée. Nous utiliserons le gestionnaire de charge utile générique, exploit/multi/handler, comme premier exemple. Ce module est couramment utilisé pour écouter les connexions entrantes.

Dans l'invite msfconsole, utilisez la commande use pour sélectionner le module :

use exploit/multi/handler

Après avoir exécuté la commande, votre invite changera pour refléter le module actuellement sélectionné :

msf6 exploit(multi/handler) >

Cela indique que vous êtes maintenant dans le contexte du module exploit/multi/handler. Toutes les options que vous définissez ou affichez seront spécifiques à ce module, mais il héritera également de toutes les variables globales pertinentes.

Observer que la valeur LHOST est déjà renseignée

Maintenant que vous avez un module chargé, vérifions ses options pour voir si notre variable globale LHOST a été appliquée.

Dans cette étape, vous utiliserez la commande show options pour afficher la configuration du module actuel.

Depuis l'invite msf6 exploit(multi/handler) >, exécutez la commande suivante :

show options

Vous verrez un tableau d'options pour ce module. Recherchez la variable LHOST. Vous remarquerez que sa valeur est déjà définie sur l'adresse IP que vous avez configurée globalement à la première étape.

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

Comme vous pouvez le constater, vous n'avez pas eu besoin d'utiliser la commande set LHOST pour ce module car la valeur globale a été automatiquement héritée. C'est la puissance de l'utilisation des variables globales.

Utiliser la commande unsetg pour supprimer une variable globale

Dans cette étape, vous apprendrez comment supprimer une variable globale. Si vous n'avez plus besoin qu'une variable soit appliquée globalement, vous pouvez utiliser la commande unsetg. Ceci est utile lorsque vous souhaitez revenir à la définition des options par module ou nettoyer la configuration de votre session.

Depuis l'invite Metasploit, exécutez la commande unsetg suivie du nom de la variable que vous souhaitez supprimer.

unsetg LHOST

Cette commande supprimera la variable LHOST de la portée globale. Vous verrez un message de confirmation :

Unsetting LHOST...

Maintenant, si vous exécutez à nouveau show options pour le même module, vous verrez que la valeur de LHOST est maintenant vide.

show options

La sortie montrera maintenant que LHOST n'a aucune valeur définie.

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

Vous devriez maintenant définir LHOST localement pour ce module en utilisant la commande set si vous souhaitiez l'utiliser.

Discuter de l'utilisation des options globales par rapport aux options locales

Dans cette dernière étape, nous discuterons des différences pratiques entre la définition des variables locales et globales et quand utiliser chacune d'elles. Comprendre cela vous aidera à travailler plus efficacement dans Metasploit.

Variables Locales (utilisation de set)

  • Portée : Une variable définie avec la commande set (par exemple, set RHOSTS 10.10.10.1) est locale au module actuellement chargé.
  • Comportement : Lorsque vous passez à un nouveau module en utilisant la commande use, cette variable locale est supprimée. Le nouveau module aura sa propre valeur par défaut ou vide pour cette option.
  • Quand l'utiliser : Utilisez set pour les options spécifiques à une cible ou à un module unique. L'exemple le plus courant est RHOSTS (l'adresse IP de l'hôte distant/cible), qui change presque toujours pour chaque exploit que vous utilisez. D'autres exemples incluent TARGETURI ou un USERNAME spécifique.

Variables Globales (utilisation de setg)

  • Portée : Une variable définie avec la commande setg (par exemple, setg LHOST 192.168.3.123) est globale pour toute la session msfconsole.
  • Comportement : La variable et sa valeur seront automatiquement héritées par tout module qui utilise ce nom d'option. Elle persiste même lorsque vous changez de module.
  • Quand l'utiliser : Utilisez setg pour les options qui sont susceptibles de rester les mêmes tout au long de votre session. LHOST en est l'exemple parfait, car l'adresse IP de votre machine d'attaque ne change généralement pas. LPORT peut également être un bon candidat pour une variable globale si vous utilisez systématiquement le même port d'écoute.

Résumé des commandes :

  • set <VARIABLE> <VALEUR> : Définit une variable uniquement pour le module actuel.
  • setg <VARIABLE> <VALEUR> : Définit une variable globalement pour tous les modules de la session.
  • unset <VARIABLE> : Efface une variable locale dans le module actuel.
  • unsetg <VARIABLE> : Efface une variable globale.

En utilisant stratégiquement set pour les options spécifiques à la cible et setg pour les options à l'échelle de la session, vous pouvez minimiser la configuration répétitive et vous concentrer davantage sur le processus d'exploitation.

Vous pouvez maintenant quitter la console Metasploit.

exit

Résumé

Dans ce laboratoire, vous avez appris à utiliser efficacement les variables globales dans le Metasploit Framework pour rationaliser votre flux de travail. Vous avez pratiqué l'utilisation de la commande setg pour définir un LHOST global, observé comment il était automatiquement renseigné dans différents modules, et utilisé la commande unsetg pour le supprimer. Vous avez également appris les différences clés entre les variables locales (set) et globales (setg), vous permettant de faire des choix de configuration plus efficaces lors d'un test d'intrusion. Maîtriser ce concept simple peut vous faire gagner un temps considérable et réduire les erreurs dans des scénarios complexes.