Proxytunnel
Construit un tunnel TCP à travers des proxies HTTP(S) standards via la méthode CONNECT, utilisé pour faire pivoter du trafic SSH ou autre à travers un proxy d'entreprise restrictif. Builds a TCP tunnel through standard HTTP(S) proxies via the CONNECT method, used to pivot SSH or other traffic out through a restrictive corporate proxy.
↗ https://github.com/proxytunnel/proxytunnelOverview
Proxytunnel connects to a standard HTTP or HTTPS proxy and issues a CONNECT request to tunnel an arbitrary TCP connection through it — most commonly used to get SSH (or other traffic) out of a network whose only permitted outbound path is via a corporate HTTP proxy. It’s a lightweight alternative to full SOCKS-based pivoting when the only egress available is an HTTP CONNECT-capable proxy.
Common Usage
Tunnel a raw TCP connection to a remote SSH server through an HTTP proxy
proxytunnel -p proxy.corp.local:8080 -d ssh-server.example.com:22 -a 2222
Then SSH through the local tunnel endpoint
ssh -p 2222 user@localhost
Tunnel through an HTTPS (TLS) proxy instead of plain HTTP
proxytunnel -p proxy.corp.local:443 -e -d ssh-server.example.com:22 -a 2222
Authenticate to the proxy with Basic auth credentials
proxytunnel -p proxy.corp.local:8080 -P user:pass -d ssh-server.example.com:22 -a 2222
SSH ProxyCommand Integration
# ~/.ssh/config
Host pivot
HostName ssh-server.example.com
Port 22
ProxyCommand proxytunnel -p proxy.corp.local:8080 -d %h:%p
Then simply:
ssh pivot
Options
-p HOST:PORT proxy server address and port
-d HOST:PORT destination host:port to tunnel to
-a PORT local port to bind the tunnel to (standalone mode)
-P USER:PASS proxy Basic authentication credentials
-e use TLS/SSL when connecting to the proxy
-X use NTLM authentication against the proxy
-v verbose output
-q quiet mode
Tips
- Proxytunnel is often the difference-maker on engagements where egress is locked down to an authenticated corporate proxy that only permits HTTPS-looking traffic (443) — SSH over the tunnel looks like ordinary HTTPS CONNECT traffic to network monitoring.
- Combine with
-ewhen the corporate proxy itself requires TLS on the client-facing side. - Works well as an SSH
ProxyCommand, letting normalssh/scp/sftpusage transparently ride through the tunnel.
Help / Man page
Usage: proxytunnel [options]
-p, --proxy=host:port proxy server to connect to
-d, --dest=host:port destination host to tunnel to
-a, --standalone=port run standalone, bind to local port
-P, --proxy-auth=user:pass proxy authentication credentials
-X, --ntlm use NTLM proxy authentication
-e, --encrypt-proxy use SSL/TLS to the proxy
-E, --encrypt-dest use SSL/TLS to the destination
-z, --quiet suppress non-error output
-v, --verbose verbose output
-h, --help display this help and exit
Vue d’ensemble
Proxytunnel se connecte à un proxy HTTP ou HTTPS standard et émet une requête CONNECT pour tunneliser une connexion TCP arbitraire à travers celui-ci : le plus souvent utilisé pour faire sortir du SSH (ou un autre trafic) d’un réseau dont le seul chemin sortant autorisé passe par un proxy HTTP d’entreprise. C’est une alternative légère au pivoting complet basé sur SOCKS lorsque la seule sortie disponible est un proxy compatible HTTP CONNECT.
Utilisation courante
# Tunneliser une connexion TCP brute vers un serveur SSH distant à travers un proxy HTTP
proxytunnel -p proxy.corp.local:8080 -d ssh-server.example.com:22 -a 2222
# Puis se connecter en SSH via le point d'entrée local du tunnel
ssh -p 2222 user@localhost
# Tunneliser via un proxy HTTPS (TLS) plutôt qu'en HTTP simple
proxytunnel -p proxy.corp.local:443 -e -d ssh-server.example.com:22 -a 2222
# S'authentifier auprès du proxy avec des identifiants Basic Auth
proxytunnel -p proxy.corp.local:8080 -P user:pass -d ssh-server.example.com:22 -a 2222
Intégration avec ProxyCommand SSH
# ~/.ssh/config
Host pivot
HostName ssh-server.example.com
Port 22
ProxyCommand proxytunnel -p proxy.corp.local:8080 -d %h:%p
Ensuite, simplement :
ssh pivot
Options
-p HOST:PORT proxy server address and port
-d HOST:PORT destination host:port to tunnel to
-a PORT local port to bind the tunnel to (standalone mode)
-P USER:PASS proxy Basic authentication credentials
-e use TLS/SSL when connecting to the proxy
-X use NTLM authentication against the proxy
-v verbose output
-q quiet mode
Conseils
- Proxytunnel fait souvent la différence sur les missions où la sortie réseau est verrouillée derrière un proxy d’entreprise authentifié qui n’autorise que du trafic ressemblant à du HTTPS (443) : le SSH via le tunnel ressemble, pour la surveillance réseau, à du trafic HTTPS CONNECT ordinaire.
- Combinez avec
-elorsque le proxy d’entreprise lui-même exige du TLS côté client. - Fonctionne bien comme
ProxyCommandSSH, permettant àssh/scp/sftpde transiter de manière transparente à travers le tunnel.
Aide / Page de manuel
Usage: proxytunnel [options]
-p, --proxy=host:port proxy server to connect to
-d, --dest=host:port destination host to tunnel to
-a, --standalone=port run standalone, bind to local port
-P, --proxy-auth=user:pass proxy authentication credentials
-X, --ntlm use NTLM proxy authentication
-e, --encrypt-proxy use SSL/TLS to the proxy
-E, --encrypt-dest use SSL/TLS to the destination
-z, --quiet suppress non-error output
-v, --verbose verbose output
-h, --help display this help and exit