Um único host comprometido em uma rede interna é inútil sem um caminho de pivô confiável. Túneis SOCKS5 sobre SSH fornecem o método de menor latência e mais independente de ferramenta para movimento lateral — no entanto, a maioria dos operadores os configura incorretamente ou deixa rastros forenses que uma equipe azul competente detectará em segundos. Em 2024, um proxy SOCKS5 configurado corretamente ainda supera os proxies HTTP CONNECT em throughput TCP bruto, e com ferramentas como proxychains-ng e Chisel, você pode rotear nmap, Metasploit e scripts personalizados através de uma única sessão SSH sem tocar nas regras de firewall do alvo.
Por que SOCKS5 sobre SSH supera o redirecionamento de porta
O redirecionamento de porta local estático (-L) força você a mapear cada serviço remoto para uma porta local antes de poder interagir com ele. Se você precisar escanear uma sub-rede /24, teria que criar 254 redirecionamentos separados. O redirecionamento dinâmico SOCKS5 (-D) resolve isso expondo um proxy SOCKS5 local que roteia qualquer conexão TCP através do túnel SSH até o host remoto. O protocolo é definido na RFC 1928 e lida com autenticação, UDP (opcional) e IPv6. Na prática, você obtém um único listener local — tipicamente em 127.0.0.1:1080 — e toda ferramenta que suporta proxies SOCKS pode usá-lo. A sobrecarga é insignificante: a criptografia do SSH adiciona talvez 5-10% de CPU, mas a latência é muito menor que a de uma VPN ou de um redirecionamento reverso de porta através de um web shell.
Configurando um Listener SOCKS5 em um Ponto de Apoio Linux
Suponha que você tenha um shell em um host Linux dentro da rede alvo. A maneira mais rápida de estabelecer um pivô é executar ssh -D 1080 -N -f user@your-listener do host comprometido de volta para sua máquina de ataque. Mas isso requer acesso SSH de saída, que pode estar bloqueado. Em vez disso, execute o redirecionamento dinâmico da sua máquina de ataque para o host comprometido:
ssh -D 1080 -N -f compromised_user@compromised_host
Isso abre um proxy SOCKS5 na sua porta local 1080. Agora configure o proxychains-ng (/etc/proxychains.conf) para usar esse proxy:
socks5 127.0.0.1 1080
Em seguida, execute qualquer ferramenta TCP através do túnel:
proxychains4 nmap -sT -Pn -p 445,3389 10.10.10.0/24
Observe que nmap requer -sT (varredura TCP connect) porque o SOCKS5 não suporta pacotes SYN brutos. Para o Metasploit, defina setg Proxies socks5:127.0.0.1:1080 e todos os módulos auxiliares e de exploração serão roteados através do pivô. Essa técnica funciona em ambientes CTF como Hack The Box ou Proving Grounds, onde o objetivo é alcançar uma segunda sub-rede.
Chisel, Ligolo-ng e os Trade-Offs
Quando o SSH não está disponível — talvez o alvo execute Windows ou não tenha servidor SSH — ferramentas alternativas de tunelamento preenchem a lacuna. Chisel usa um cliente e servidor baseados em Go que tunelam TCP sobre HTTP/HTTPS. Execute o servidor na sua máquina de ataque: chisel server -p 8000 --reverse. No host comprometido, execute o cliente: chisel client your_ip:8000 R:socks. Isso fornece um listener SOCKS5 no lado do servidor. O Chisel é rápido e funciona através de filtros de saída restritivos, mas seu tráfego não é criptografado por padrão — envolva-o em TLS ou use SSH se você se importa com opsec.
Ligolo-ng adota uma abordagem diferente: ele cria um túnel de rede na Camada 3 usando interfaces TUN/TAP. Em vez de SOCKS5, você roteia faixas inteiras de IP através do pivô. Isso significa que você pode executar nmap -sS (varredura SYN) sem proxychains. O trade-off é a sobrecarga administrativa: você precisa de root em ambas as extremidades, e a configuração do túnel requer adicionar rotas na sua máquina de ataque. Para CTFs onde você controla ambos os lados, o Ligolo-ng é mais rápido. Em engajamentos reais, a abordagem SOCKS5 é mais portátil porque funciona sem privilégios elevados no host pivô.
Sinais de Detecção que Atacantes Deixam para Trás
Todo método de pivô deixa artefatos. O redirecionamento dinâmico SSH cria um socket de escuta no host comprometido — ss -tlnp mostra um processo ssh vinculado a 127.0.0.1:1080. As Blue teams podem correlacionar isso com conexões SSH de saída para um IP externo. O processo cliente do Chisel é nomeado chisel por padrão — trivial de detectar com monitoramento de processos. O Ligolo-ng requer um dispositivo TUN (ip link show), o que é anormal em um servidor.
Pior, muitos operadores esquecem de limpar. A sessão SSH permanece até que o host remoto a mate ou a conexão caia. O Proxychains não deixa artefatos locais, mas o próprio tráfego nmap — varreduras de porta incomuns originadas de um host que normalmente não varre — dispara alertas de IDS. O erro mais comum é reutilizar a porta padrão SOCKS5 1080. Altere-a para uma porta efêmera alta (por exemplo, ssh -D 53421) e crie um alias para a configuração do proxychains para evitar deixar um arquivo de configuração padrão. Em um CTF, nada disso importa. Em um teste de penetração real, esses sinais são como você é pego.