Un seul hôte compromis sur un réseau interne est inutile sans un chemin de pivot fiable. Les tunnels SOCKS5 via SSH offrent la méthode la plus faible latence et la plus indépendante des outils pour le mouvement latéral — pourtant la plupart des opérateurs les configurent mal ou laissent des miettes de pain forensiques qu'une équipe bleue compétente repérera en quelques secondes. En 2024, un proxy SOCKS5 correctement configuré surpasse encore les proxys HTTP CONNECT pour le débit TCP brut, et avec des outils comme proxychains-ng et Chisel, vous pouvez router nmap, Metasploit et des scripts personnalisés à travers une seule session SSH sans toucher aux règles du pare-feu de la cible.
Pourquoi SOCKS5 via SSH surpasse le redirection de ports
Le redirection de ports locale statique (-L) vous oblige à mapper chaque service distant sur un port local avant de pouvoir interagir avec lui. Si vous devez scanner un sous-réseau /24, vous devriez créer 254 redirections distinctes. Le redirection dynamique SOCKS5 (-D) résout ce problème en exposant un proxy SOCKS5 local qui route toute connexion TCP à travers le tunnel SSH vers l'hôte distant. Le protocole est défini dans la RFC 1928 et gère l'authentification, UDP (optionnel) et IPv6. En pratique, vous obtenez un seul écouteur local — généralement sur 127.0.0.1:1080 — et tout outil supportant les proxys SOCKS peut l'utiliser. La surcharge est négligeable : le chiffrement SSH ajoute peut-être 5-10% de CPU, mais la latence est bien inférieure à celle d'un VPN ou d'un redirection de port inverse via un shell web.
Configuration d'un écouteur SOCKS5 sur un point d'appui Linux
Supposons que vous ayez un shell sur un hôte Linux dans le réseau cible. Le moyen le plus rapide d'établir un pivot est d'exécuter ssh -D 1080 -N -f user@your-listener depuis l'hôte compromis vers votre machine d'attaque. Mais cela nécessite un accès SSH sortant, qui peut être bloqué. Au lieu de cela, exécutez le redirection dynamique depuis votre machine d'attaque vers l'hôte compromis :
ssh -D 1080 -N -f compromised_user@compromised_host
Cela ouvre un proxy SOCKS5 sur votre port local 1080. Configurez maintenant proxychains-ng (/etc/proxychains.conf) pour utiliser ce proxy :
socks5 127.0.0.1 1080
Exécutez ensuite tout outil TCP via le tunnel :
proxychains4 nmap -sT -Pn -p 445,3389 10.10.10.0/24
Notez que nmap nécessite -sT (scan TCP connect) car SOCKS5 ne prend pas en charge les paquets SYN bruts. Pour Metasploit, définissez setg Proxies socks5:127.0.0.1:1080 et tous les modules auxiliaires et d'exploitation seront routés via le pivot. Cette technique fonctionne dans les environnements CTF comme Hack The Box ou Proving Grounds où l'objectif est d'atteindre un second sous-réseau.
Chisel, Ligolo-ng et les compromis
Lorsque SSH n'est pas disponible — peut-être que la cible tourne sous Windows ou n'a pas de serveur SSH — des outils de tunneling alternatifs comblent le vide. Chisel utilise un client et un serveur basés sur Go qui tunnelisent TCP sur HTTP/HTTPS. Lancez le serveur sur votre machine d'attaque : chisel server -p 8000 --reverse. Sur l'hôte compromis, lancez le client : chisel client your_ip:8000 R:socks. Cela vous donne un écouteur SOCKS5 côté serveur. Chisel est rapide et fonctionne à travers des filtres de sortie restrictifs, mais son trafic n'est pas chiffré par défaut — enveloppez-le dans TLS ou utilisez SSH si l'opsec vous importe.
Ligolo-ng adopte une approche différente : il crée un tunnel réseau au niveau 3 en utilisant des interfaces TUN/TAP. Au lieu de SOCKS5, vous routez des plages IP entières via le pivot. Cela signifie que vous pouvez exécuter nmap -sS (scan SYN) sans proxychains. Le compromis est la surcharge administrative : vous avez besoin des droits root sur les deux extrémités, et la configuration du tunnel nécessite d'ajouter des routes sur votre machine d'attaque. Pour les CTF où vous contrôlez les deux côtés, Ligolo-ng est plus rapide. Dans les engagements réels, l'approche SOCKS5 est plus portable car elle fonctionne sans privilèges élevés sur l'hôte pivot.
Signaux de détection que les attaquants laissent derrière eux
Chaque méthode de pivot laisse des artefacts. Le redirection dynamique SSH crée une socket d'écoute sur l'hôte compromis — ss -tlnp montre un processus ssh lié à 127.0.0.1:1080. Les équipes bleues peuvent corréler cela avec des connexions SSH sortantes vers une IP externe. Le processus client de Chisel est nommé chisel par défaut — trivial à détecter avec une surveillance des processus. Ligolo-ng nécessite un périphérique TUN (ip link show), ce qui est anormal sur un serveur.
Pire encore, de nombreux opérateurs oublient de nettoyer. La session SSH reste jusqu'à ce que l'hôte distant la tue ou que la connexion soit interrompue. Proxychains ne laisse aucun artefact local, mais le trafic nmap lui-même — des scans de ports inhabituels provenant d'un hôte qui ne scanne normalement pas — déclenche des alertes IDS. L'erreur la plus courante est de réutiliser le port SOCKS5 par défaut 1080. Changez-le pour un port éphémère élevé (par exemple ssh -D 53421) et créez un alias pour la configuration proxychains afin d'éviter de laisser un fichier de configuration par défaut. Dans un CTF, rien de tout cela n'a d'importance. Dans un test de pénétration réel, ces signaux sont la façon dont vous vous faites prendre.