Comprendre et utiliser les charges utiles staged vs stageless dans Metasploit

Kali LinuxBeginner
Pratiquer maintenant

Introduction

Dans le monde des tests d'intrusion avec le Metasploit Framework, une charge utile (payload) est le code qui s'exécute sur le système cible après qu'une vulnérabilité a été exploitée avec succès. Comprendre les différents types de charges utiles est crucial pour un engagement réussi. Les deux catégories principales de charges utiles sont les "staged" (par étapes) et les "stageless" (sans étapes).

Une charge utile staged est envoyée en deux parties : un petit "stager" initial et une "stage" finale plus volumineuse. Le rôle du stager est d'établir une connexion de retour vers la machine de l'attaquant, puis de télécharger le reste de la charge utile. Une charge utile stageless, en revanche, est un paquet unique et autonome qui inclut tout le code nécessaire pour s'exécuter sur la cible.

Dans ce laboratoire, vous acquerrez une expérience pratique avec les deux types. Vous utiliserez la console Metasploit pour sélectionner chaque type de charge utile, observer leurs différences clés, notamment en termes de taille, et découvrir les avantages et les inconvénients de l'utilisation de chacune.

Sélectionner une charge utile staged comme windows/meterpreter/reverse_tcp

Dans cette étape, vous lancerez la console Metasploit Framework et sélectionnerez un gestionnaire d'exploit générique. Ensuite, vous le configurerez pour utiliser une charge utile staged courante. Nous utilisons le module exploit/multi/handler car c'est un écouteur universel, parfait pour démontrer les charges utiles sans avoir besoin d'une cible vulnérable spécifique.

Tout d'abord, ouvrez votre terminal et démarrez la console Metasploit. Nous utiliserons l'indicateur -q (quiet) pour ignorer la bannière de démarrage.

msfconsole -q

Une fois que vous voyez l'invite Metasploit (msf6 >), vous devez sélectionner le gestionnaire d'exploit.

use exploit/multi/handler

Ensuite, configurons la charge utile. Le nom d'une charge utile staged est généralement formaté comme plateforme/stage/stager. Par exemple, windows/meterpreter/reverse_tcp signifie que la plateforme est Windows, la charge utile finale (stage) est Meterpreter, et la méthode de connexion initiale (stager) est un shell TCP inversé.

Définissez la charge utile staged avec la commande suivante :

set payload windows/meterpreter/reverse_tcp

Vous verrez un message de confirmation payload => windows/meterpreter/reverse_tcp. Pour en être sûr, vous pouvez afficher la configuration actuelle.

show options

Vous verrez la charge utile listée dans les options. Nous n'avons pas besoin de définir LHOST ou LPORT car nous n'exécutons pas réellement l'exploit ; nous examinons simplement les propriétés de la charge utile.

msf6 exploit(multi/handler) > show options

Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Payload options (windows/meterpreter/reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
   LHOST                      yes       The listen address (an interface may be specified)
   LPORT     4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Wildcard Target

Observer la petite taille de la charge utile staged

Dans cette étape, vous utiliserez la commande info pour inspecter les détails de la charge utile staged que vous avez sélectionnée. Le détail le plus important à remarquer est sa taille.

Toujours dans la console Metasploit avec la charge utile windows/meterpreter/reverse_tcp sélectionnée, tapez la commande info :

info

Metasploit affichera des informations détaillées sur la charge utile, y compris son nom, sa plateforme, son architecture et sa taille. Faites défiler la sortie et trouvez la ligne "Payload size".

msf6 exploit(multi/handler) > info

       Name: Windows Meterpreter, Reverse TCP Stager
     Module: payload/windows/meterpreter/reverse_tcp
   Platform: Windows
       Arch: x86
Needs Admin: No
 Total size: 354
       Rank: Normal

Provided by:
  skape <stephen_fewer@harmonysecurity.com>
  sf <stephen_fewer@harmonysecurity.com>

Basic options:
Name      Current Setting  Required  Description
----      ---------------  --------  -----------
EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
LHOST                      yes       The listen address (an interface may be specified)
LPORT     4444             yes       The listen port

Description:
  Connect back to the attacker and spawn a Meterpreter server (staged).
  Listen for a connection from the stager and send the second stage.

Remarquez que la Total size est très petite (par exemple, 354 octets). C'est la caractéristique principale d'une charge utile staged. Ce petit morceau de code, le stager, est conçu uniquement pour se connecter à votre machine et télécharger le stage Meterpreter, beaucoup plus volumineux. Cette petite taille le rend idéal pour s'adapter aux contraintes de mémoire serrées de certaines exploitations.

Sélectionner le même exploit et une charge utile stageless comme windows/meterpreter_reverse_tcp

Maintenant, passons à une charge utile stageless pour voir la différence. Le nom d'une charge utile stageless est généralement formaté comme plateforme/type_de_charge_utile, utilisant un underscore _ au lieu d'un second slash /. Cette convention de nommage vous aide à les identifier rapidement.

Dans la même session msfconsole, utilisez à nouveau la commande set payload, mais cette fois pour la version stageless : windows/meterpreter_reverse_tcp.

set payload windows/meterpreter_reverse_tcp

Vous verrez la confirmation payload => windows/meterpreter_reverse_tcp. Remarquez l'underscore dans le nom. Cette charge utile unique contient le serveur Meterpreter complet et la logique de connexion, le tout en un seul paquet.

Vérifions à nouveau les options pour confirmer le changement.

show options

La sortie reflétera maintenant la charge utile stageless nouvellement sélectionnée.

msf6 exploit(multi/handler) > show options

Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Payload options (windows/meterpreter_reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
   LHOST                      yes       The listen address (an interface may be specified)
   LPORT     4444             yes       The listen port

...

Vous êtes maintenant passé avec succès d'une charge utile staged à une charge utile stageless.

Observer la taille plus importante de la charge utile stageless

Dans cette étape, vous allez inspecter la charge utile stageless que vous venez de sélectionner et comparer sa taille à celle de la charge utile staged de l'étape 2.

Comme précédemment, utilisez la commande info pour obtenir les détails de la charge utile actuelle.

info

Examinez la sortie et localisez la ligne "Payload size".

msf6 exploit(multi/handler) > info

       Name: Windows Meterpreter, Reverse TCP Inline
     Module: payload/windows/meterpreter_reverse_tcp
   Platform: Windows
       Arch: x86
Needs Admin: No
 Total size: 999335
       Rank: Normal

Provided by:
  skape <stephen_fewer@harmonysecurity.com>
  sf <stephen_fewer@harmonysecurity.com>

Basic options:
Name      Current Setting  Required  Description
----      ---------------  --------  -----------
EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
LHOST                      yes       The listen address (an interface may be specified)
LPORT     4444             yes       The listen port

Description:
  Connect back to the attacker and spawn a Meterpreter server (inline).
  This payload is a single executable and does not need to download a
  second stage.

Comme vous pouvez le constater, la Total size est considérablement plus importante (par exemple, 999335 octets, soit près de 1 Mo) par rapport à la taille de quelques centaines d'octets de la charge utile staged. Cela est dû au fait que la charge utile stageless contient l'intégralité des fonctionnalités de Meterpreter. Elle n'a pas besoin de télécharger quoi que ce soit d'autre après son exécution.

Maintenant que vous avez constaté la différence principale, vous pouvez quitter la console Metasploit.

exit

Discussion des avantages et inconvénients de chaque type de charge utile

Dans cette dernière étape, nous allons résumer les avantages et les inconvénients des charges utiles staged et stageless. Comprendre ces compromis est essentiel pour choisir le bon outil pour un scénario spécifique. Il n'y a pas de commandes à exécuter dans cette étape ; elle est destinée à la compréhension conceptuelle.

Charges utiles Staged (par exemple, windows/meterpreter/reverse_tcp)

Avantages :

  • Petite taille : Le stager initial est très petit. C'est un avantage significatif lorsque l'exploit a une taille de tampon ou un espace mémoire très limité pour la charge utile.
  • Discrétion (Étape initiale) : Le petit stager est moins susceptible d'être détecté par des solutions antivirus basées sur des signatures simples par rapport à une charge utile volumineuse et riche en fonctionnalités.

Inconvénients :

  • Connexions multiples : Elles nécessitent une deuxième connexion pour télécharger la charge utile principale. Cela génère plus de trafic réseau et offre une autre opportunité aux pare-feux, aux systèmes de détection d'intrusion (IDS) ou aux administrateurs réseau de détecter et de bloquer l'attaque.
  • Moins stable : La connexion peut être fragile. Si la connexion est interrompue pendant le téléchargement de la charge utile secondaire, l'exploit échouera.
  • Problèmes de rappel (Callback) : La machine cible doit être capable de contacter la machine de l'attaquant sur le réseau pour télécharger la charge utile, ce qui peut poser problème dans des réseaux très restreints.

Charges utiles Stageless (par exemple, windows/meterpreter_reverse_tcp)

Avantages :

  • Fiabilité et stabilité : Comme tout est regroupé en un seul paquet, la charge utile est plus autonome et stable. Elle n'a besoin d'établir qu'une seule connexion, et une fois qu'elle est en cours d'exécution, elle ne dépend pas du téléchargement d'autres composants.
  • Fonctionne dans des environnements restreints : Une fois que la charge utile est livrée à la cible, elle peut s'exécuter sans avoir besoin de télécharger quoi que ce soit d'autre, ce qui est utile si la cible a un accès Internet sortant limité ou inexistant.

Inconvénients :

  • Grande taille : Leur grande taille est leur principal inconvénient. Elles peuvent ne pas tenir dans l'espace mémoire autorisé par de nombreux exploits, ce qui les rend inutilisables dans ces cas.
  • Plus facile à détecter : Un exécutable unique et volumineux est souvent plus facile à analyser et à signaler comme malveillant par les solutions antivirus et de sécurité, en raison de sa taille et de ses signatures.

En résumé, vous devriez choisir une charge utile staged lorsque vous traitez des exploits qui ont des contraintes de taille. Choisissez une charge utile stageless lorsque la fiabilité est primordiale et que la méthode d'exploit peut gérer une taille de charge utile plus importante.

Résumé

Dans ce laboratoire, vous avez exploré la différence fondamentale entre les charges utiles staged et stageless au sein du Metasploit Framework.

Vous avez commencé par lancer msfconsole et sélectionner une charge utile staged, windows/meterpreter/reverse_tcp. Vous avez observé sa très petite taille, conçue pour être un stager léger. Ensuite, vous êtes passé à son équivalent stageless, windows/meterpreter_reverse_tcp, et avez noté sa taille considérablement plus importante, car elle contient la charge utile entière dans un seul paquet.

Enfin, vous avez examiné les avantages et les inconvénients de chaque type, apprenant que le choix entre les deux implique un compromis entre la taille, la discrétion et la fiabilité. Les charges utiles staged sont petites mais nécessitent une deuxième connexion, tandis que les charges utiles stageless sont volumineuses mais plus stables et autonomes. Ces connaissances sont essentielles pour prendre des décisions efficaces lors des engagements de tests d'intrusion.