Skip to main content

[Pivoting] Port forwarding

Introduction

Dans le cas d'une compromission d'une infrastructure où une machine cible n'est pas directement accessible, il va falloir établir un tunnel entre vous et la machine cible en passant par une machine intermédiaire, qui a elle, accès à la machine cible.

On va devoir mettre en place un reverse proxy sur la machine intermédiaire pour pouvoir router les paquets sur la ou les machines cibles.

image.png

SSH

Il est possible de faire du port forwarding avec le service SSH.

La machine intermédiaire doit être munie d'un serveur SSH et vous devez avoir des accès SSH pour vous connecter dessus.

Local port forwarding

image.png

ssh -L <LOCAL_PORT>:<DESTINATION_IP>:<DST_PORT> <REMOTE_USER>@<REMOTE_IP>

Vous devriez pouvoir accéder à votre service via localhost:<LOCAL_PORT>

Le tunnel restera ouvert tant que la session SSH est active.

Chisel

Prérequis

  • Trouvez un port non utilisé (absent de cette liste) :
(netstat -punta || ss -n -t -p -u)

Installation

Voici le lien github de l'outil :

Vous pouvez installer l'outil sur le poste intermédiaire si vous avez les droits root grâce à la commande suivante :

curl https://i.jpillora.com/chisel! | bash

Téléchargez le binaire (version 19.1) :

curl -O -L https://github.com/jpillora/chisel/releases/download/v1.9.1/chisel_1.9.1_linux_amd64.gz && gunzip chisel_1.9.1_linux_amd64.gz && mv chisel_1.9.1_linux_amd64 chisel && chmod +x chisel

Port forwarding

  • Sur le pc intermédiaire, lancez la commande suivante :
./chisel server -p <LISTENER_PORT>
  • Puis sur le pc de l'attaquant, exécutez la commande suivante :
./chisel client <LISTENER_IP>:<LISTENER_PORT> <LOCAL_PORT>:<TARGET_IP>:<TARGET_PORT>

Sur la machine de l'attaquant vous pourrez accéder au service via localhost:<LOCAL_PORT>

Reverse port forwarding

  • Sur le poste de l'attaquant :
./chisel server <INTERMEDIATE_IP> -p <INTERMEDIATE_PORT> --reverse
  • Puis sur le pc intermédiaire, exécutez la commande suivante :
./chisel client <LISTENER_IP>:<LISTENER_PORT> R:<LOCAL_PORT>:<TARGET_IP>:<TARGET_PORT>

Sur la machine de l'attaquant vous pourrez accéder au service via localhost:<LOCAL_PORT>

Socat

Installation

Voici le github du projet :

Pour télécharger le binaire :

curl -o socat -L https://github.com/3ndG4me/socat/releases/download/v1.7.3.3/socatx64.bin && chmod +x socat

Manuel

Un tas d'options est disponible et permet de faire du port forwarding.

Vous trouverez tous les exemples ici :

http://www.dest-unreach.org/socat/doc/socat.html#EXAMPLES